์ด๋๋ฆฌ์์ ์ก๊ธํ๋ค๊ณ ํ์ ๋ ๊ณ์ ์ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง ์๋์์ ์ค๋ช ํฉ๋๋ค.
ํธ๋์ญ์ ์ด ํ์์ ์ ๋๋ก ๋ง๋์ง(์ฆ, ์ฌ๋ฐ๋ฅธ ๊ฐ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง) ์ฒดํฌํ๊ณ , ์๋ช ์ด ์ ํจํ์ง, nonce๊ฐ ๋ฐ์ ์ฒ ๊ณ์ ์ nonce์ ์ผ์นํ๋์ง๋ฅผ ์ฒดํฌ. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ค๋ฅ๋ฅผ ๋ฐํ
gaslimit * gasprice ๋ก ํธ๋์ญ์ ์์๋ฃ๋ฅผ ๊ณ์ฐํ๊ณ , ์๋ช ์ผ๋ก๋ถํฐ ๋ฐ์ ์ฒ ์ฃผ์๋ฅผ ๊ฒฐ์
๋ฐ์ ์ฒ ๊ณ์ ์๊ณ ์์ ์์์ ๊ตฌํ ํธ๋์ญ์ ์์๋ฃ๋ฅผ ๋นผ๊ณ ๋ฐ์ ์ nonce๋ฅผ ์ฆ๊ฐ. ๋ฐ์ ์ฒ ์๊ณ ๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ฐํ
GAS = gaslimit ์ผ๋ก ์ด๊ธฐํ ํ ํ, ํธ๋์ญ์ ์์ ์ฌ์ฉ๋ ๋ฐ์ดํธ์ ๋ํ ๊ฐ์ ์ง๋ถํ๊ธฐ ์ํด ๋ฐ์ดํธ๋น gas์ ํน์ ์์ ์ฐจ๊ฐ
๋ฐ์ ์ฒ ๊ณ์ ์์ ์์ ์ฒ ๊ณ์ ์ผ๋ก ํธ๋์ญ์ ๊ฐ์ ๋ณด๋. ์์ ์ฒ ๊ณ์ ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์๋ก ์์ฑ
์์ ์ฒ ๊ณ์ ์ด ์ปจํธ๋ํธ๋ฉด, ์ปจํธ๋ํธ์ ์ฝ๋๋ฅผ ๋๊น์ง, ๋๋ GAS๊ฐ ๋ชจ๋ ์๋ชจ๋ ๋ ๊น์ง ์ํ
๋ฐ์ ์ฒ๊ฐ ์ถฉ๋ถํ โ๋'์ ๊ฐ์ง๊ณ ์์ง ๋ชปํด์ ๊ฐ ์ ์ก์ด ์คํจํ๊ฑฐ๋, ์ฝ๋ ์ํ์ GAS๊ฐ ๋ถ์กฑํ๋ฉด, ๋ชจ๋ ์ํ ๋ณ๊ฒฝ๋ฅผ ์์ํ๋ก ๋๋ ค๋์. ๋จ, ์์๋ฃ(์ฝ๋๋ฅผ ์ํํ GAS)๋ ์ ์ธ๋๊ณ ์ด ์์๋ฃ๋ ์ฑ๊ตด์ ๊ณ์ ์ ๋ํด์ง๊ฒ ๋จ. ๊ทธ ์ธ์๋, ๋ชจ๋ ๋จ์์๋ ๋ชจ๋ GAS์ ๋ํ ์์๋ฃ๋ฅผ ๋ฐ์ ์ฒ์๊ฒ ๋๋ ค์ฃผ๊ณ , ์๋ชจ๋ GAS์ ์ง๋ถ๋ ์์๋ฃ๋ฅผ ์ฑ๊ตด์์๊ฒ ๋ณด๋
์๋์ ๊ฐ์ด ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ํ ๋ณํ ํจ์์ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ปจํธ๋ํธ ๊ณ์ ์ storage๋ 0์ด๋ผ๊ณ ๊ฐ์ .
ํธ๋์ญ์ ์ ์๋์ ๊ฐ์ด ํ๋๋ฅผ ๊ฐ์ง๊ณ ์ ๋ฌ๋๋ค๊ณ ๊ฐ์
- value = 10 ether
- gaslimit = 2000
- gasprice = 0.001ether
- data = 64๋ฐ์ดํธ(0-31 ๋ฐ์ดํธ๊น์ง๋ ์ซ์ 2๋ฅผ ๋ํ๋ด๊ณ , 32-63 ๋ฐ์ดํธ๋ CHARLIE ๋ผ๋ ๋ฌธ์์ด)
ํธ๋์ญ์ ์ ์ด 170๋ฐ์ดํธ ๊ธธ์ด๋ฅผ ๊ฐ์ง๊ณ , ๋ฐ์ดํธ๋น GAS์์๋ฃ๋ 5๋ผ๊ณ ๊ฐ์
์ฝ๋ ์คํ ์, index ์ค์ ์์ ์ GAS์์๋ฃ๋ 187GAS๋ก ๊ฐ์
ํธ๋์ญ์ ์ด ์ ํจํ๊ณ ํ์์ด ์ ๋๋ก ๋ง๋์ง ํ์ธ
ํธ๋์ญ์ ๋ฐ์ก์ฒ๊ฐ ์ต์ 2000 * 0.001 = 2 ether๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ณ ์ ํจํ ๊ฒฝ์ฐ, ๋ฐ์ก์ฒ์ ๊ณ์ ์์ 2ether๋ฅผ ์ฐจ๊ฐ
GAS = 2000์ผ๋ก ์ด๊ธฐํ ํ ํ, ํธ๋์ญ์ ์ฒ๋ฆฌ ์์๋ฃ์ธ 850 GAS๋ฅผ ์ฐจ๊ฐํ๋ฉด 1150 GAS๊ฐ ๋จ์
๋ฐ์ก์ฒ ๊ณ์ ์์ ๋ณด๋ด๊ณ ์ ํ๋ 10ether๋ฅผ ์ฐจ๊ฐํ๊ณ ์ด๊ฒ์ ์ปจํธ๋ํธ ๊ณ์ ์ ๋ํจ
์ฝ๋(์ด๋ฏธ ์์ฑ๋์ด ์๋ ์ปจํธ๋ํธ ์ฝ๋)๋ฅผ ์คํ. ์ด ๊ฒฝ์ฐ๋ ๊ฐ๋จํ๋ฐ, ์ปจํธ๋ํธ์ index 2์ ํด๋นํ๋ ์คํ ๋ฆฌ์ง๊ฐ ์ฌ์ฉ๋์๋์ง ํ์ธํ๊ณ (์ด ๊ฒฝ์ฐ, ์ฌ์ฉ๋์ง ์์) index 2์ ํด๋นํ๋ ์คํ ๋ฆฌ์ง ๊ฐ์ CHARLIE ๋ก ์ค์ . ์ด ์์ ์ ํ๋ GAS ์์๋ฃ๋ฅผ ์ฐจ๊ฐํ๋ฉด, ๋จ์์๋ GAS์ ์์ 1150 - 187 = 963
963*0.001 = 0.963 ether๋ฅผ ์ก์ ์ฒ์ ๊ณ์ข๋ก ๋๋๋ ค์ฃผ๊ณ , ๊ฒฐ๊ณผ์ํ๋ฅผ ๋ฐํ
ํธ๋์ญ์ ์ ์์ ์ฒ์ ์ปจํธ๋ํธ๊ฐ ์์ผ๋ฉด, ์ด ํธ๋์ญ์ ์์๋ฃ๋ ์ ๊ณต๋ gasprice์ ํธ๋์ญ์ ์ ๋ฐ์ดํธ ์๋ฅผ ๊ณฑํ ๊ฐ๊ณผ ๊ฐ์์ง๊ณ , ํธ๋์ญ์ ๊ณผ ํจ๊ป ๋ณด๋ด์ง ๋ฐ์ดํฐ๋ ๊ด๋ จ์ด ์์ด์ง๊ฒ ๋ฉ๋๋ค. ์ฆ, ์ ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ช ํ๋ฉด ์์ ์ฒ์ ์ปจํธ๋ํธ๊ฐ ์์ผ๋ฉด 1150 GAS๊ฐ ์ด ์์๋ฃ์ด๊ณ ์ฝ๋๋ฅผ ์คํ์ํฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ 187GAS ์์๋ฃ๋ฅผ ์ฌ์ฉํ์ง ์๊ฒ ๋ฉ๋๋ค.
๋ฉ์์ง๋ ํธ๋์ญ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง ๋ฐฉ์์ผ๋ก, ์ํ๋ฅผ ์๋ ์ํ๋ก ๋๋๋ฆฐ๋ค๋ ๊ฒ์ ์ฃผ๋ชฉํด์ผ ํฉ๋๋ค. ๋ฉ์์ง ์คํ์ GAS๊ฐ ๋ถ์กฑํ๊ฒ ๋๋ฉด ๋ฉ์์ง ์คํ๊ณผ ์คํ์ ์ํด ๋ฐ์๋ ๋ค๋ฅธ ๋ชจ๋ ์คํ๋ค์ ์๋๋๋ก ๋๋๋ ค์ง๊ฒ ๋์ง๋ง, ๊ทธ ๋ถ๋ชจ ์คํ์ ๋๋๋ ค์ง ํ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ปจํธ๋ํธ๊ฐ ๋ค๋ฅธ ์ปจํธ๋ํธ๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, A๊ฐ 100 GAS๋ฅผ ๊ฐ์ง๊ณ B๋ฅผ ํธ์ถํ๋ฉด, A์ ์คํ์ ์ต๋ 100 GAS๋ง ์๋๋ค๋ ๊ฒ์ ๋ณด์ฅ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ปจํธ๋ํธ๋ฅผ ์์ฑํ๋ CREATE๋ผ๋ opcode๋ฅผ ๋ณด๋ฉด, ์คํ ๋ฐฉ์์ ๋์ฒด๋ก CALL๊ณผ ์ ์ฌํ๋, ์คํ ๊ฒฐ๊ณผ๋ ์๋ก ์์ฑ๋ ์ปจํธ๋ํธ์ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ๋ค๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ฝ๋ ์คํ์ ์ด๋ฏธ ์์ฑ๋์ด ์๋ ์ปจํธ๋ํธ์ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฏธ ์์ฝ๋์ด ์๋ ์์ ์ ์คํํ๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
์ด๋๋ฆฌ์ ์ปจํธ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ ์ฝ๋๋ ์ด๋๋ฆฌ์ ๋ฒ์ถ์ผ ๋จธ์ ์ฝ๋ ๋๋ EVM ์ฝ๋๋ก ๋ถ๋ฆฌ๋ ๋ก์ฐ-๋ ๋ฒจ, ์คํ ๊ธฐ๋ฐ์ ๋ฐ์ดํธ์ฝ๋ ์ธ์ด๋ก ์์ฑ๋ฉ๋๋ค. ์ด ์ฝ๋๋ ์ฐ์๋ ๋ฐ์ดํธ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ๊ฐ๊ฐ์ ๋ฐ์ดํธ๋ ์ฐ์ฐ(operation)์ ๋ํ๋ ๋๋ค. ๋ณดํต, ์ฝ๋ ์คํ์ 0๋ถํฐ ์์ํ๋ ํ๋ก๊ทธ๋จ ์นด์ดํฐ(pc)๋ฅผ ํ๋์ฉ ์ฆ๊ฐ ์ํค๋ฉด์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ์ฐ์ ์ํํ๋๋ก ๊ตฌ์ฑ๋ ๋ฌดํ ๋ฃจํ์ด๊ณ ์ฝ๋์ ๋ง์ง๋ง์ ๋๋ฌํ๊ฑฐ๋ ERROR, STOP, RETURN ๋ช ๋ น์ ๋ง๋๋ฉด ์คํ์ ๋ฉ์ถ๊ฒ ๋ฉ๋๋ค. ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ๊ฐ์ง ํ์ ์ ๊ณต๊ฐ์ ์ ๊ทผํ ์ ์์ด์ผ ํฉ๋๋ค.
EVM ์ฝ๋์ ๊ณต์ ์คํ ๋ชจ๋ธ์ ๋จ์ํ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. EVM์ด ์คํ๋๋ ๋์ ๋ชจ๋ ๊ณ์ฐ ์ํ๋ (block_state, transaction, message, code, memory, stack, pc, gas) ์ผ๋ก ํํ๋ก ์ ์๋ ์ ์๊ณ , block_state๋ ๋ชจ๋ ๊ณ์ ์ ํฌํจํ๋ ์ ์ญ์ํ(global state)๋ก์ ์๊ณ (value)์ ์ ์ฅ์(storage)๋ฅผ ํฌํจํฉ๋๋ค. ๋ฌดํ ๋ฃจํ์ ์ํด ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์คํ ํ ๋, code์ pc(ํ๋ก๊ทธ๋จ ์นด์ดํฐ)๋ฒ์งธ ๋ฐ์ดํธ์ ํ์ฌ ๋ช ๋ น์ด ์คํ๋๊ณ (pc ๊ฐ ์ฝ๋์ ๊ธธ์ด๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฌ๋ฉด pc๋ 0์ผ๋ก ์ด๊ธฐํ), ์คํ๋๋ ๊ฐ๊ฐ์ ๋ช ๋ น์ ํํ์ ์ด๋ป๊ฒ ๋ณํ์ํฌ์ง์ ๋ํ ์์ ์ ์ ์๋ฅผ ์๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ADD๋ ์คํ์์ ๋๊ฐ์ ์์ดํ ์ ๊บผ๋ด(pop), ๊ทธ ํฉ์ ๊ตฌํ ํ ๋ค์ ์คํ์ ๋ฃ๊ณ (push) GAS๋ฅผ 1๋งํผ ๊ฐ์์ํค๊ณ , pc๋ 1 ์ฆ๊ฐ์ํต๋๋ค. SSTORE ๋ ์คํ์์ ๋๊ฐ์ ์์ดํ ์ ๊บผ๋ด ์ด ์์ดํ ์ ์ฒซ๋ฒ์งธ ๊ฐ์ด ๊ฐ๋ฆฌํค๋ ์ปจํธ๋ํธ ์ ์ฅ์ ์ธ๋ฑ์ค์ ๋๋ฒ์งธ ์์ดํ ์ ๋ฃ์ต๋๋ค.