VDS์ปจ์ผ์์ค ์คํ ๊ณ์ฝ ๋ฐ ์จ ์ฒด์ธ ๊ณผ์
์ปจ์ผ์์ค ์คํ ๊ณ์ฝ ์์ฝ
์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ด๋ ๋ธ๋ก์ฒด์ธ ย ๋ถ์ผ์ ์์ฃผ ๋ถ๋ฅธ ์ค๋งํธ ๊ณ์ฝ์ด๋ค. ๊ทธ๋ฐ๋ฐ VDS ๊ณ ์ ํ์ด ์ง๊ธ๊น์ง ์ด ๊ณ์ฝ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ ์ด ์ผ๋ง๋ ์ค๋งํธํ์ง ์๊ณ ๊ทธ๋ฅ ํ ํ ์ค์ํ ๋ถ์ฐํ ๋คํธ์ํฌ์ ์ฝ๋๋ฅผ ํธ์ฐฌ์ ํตํด ์ด๋ฃจ์ด์ง ํฉ์ ํ์์ ๋ํ ์์ ํ๋ก๊ทธ๋จ์ด์ด์ ์ด ๋จ์ด๊ฐ ๋๋ฌด ๋ง์ผํ
์ฑ์ง์ด ์๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ ์ค์ฌ๊ตฌ์์ ๊ณผํ์ ์ธ ์ฐ๊ตฌ ์ ์ ์ผ๋ก ์ด ์ค๋งํธ ๊ณ์ฝ์ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ผ๋ก ๋ถ๋ฅด๋ฉด ๋์ฑ ์ ๋นํ ๊ฒ ๊ฐ๋ค. ์ด๋ฅผ ํตํด ํ ์ค์ํ ํฉ์ ํ์์ ๋ณธ์ง์ ํํํ ๋ฟ๋ง ์๋๋ผ ์ธ๋ฅ๊ฐ ๋ฏธ๋์ ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์ด ย AI์ค๋งํธ ๊ธฐ์ ๊ณผ ๊ฒฐํฉํ ๋ ๋ช
์ฌ ์ค๋ช
์ด ์ด๋ ค์ด ๊ฒ์ ๊ทน๋ณตํ ์ ์๋ค.
ย ๊ฑด์ผ์์ค ์คํ ๊ณ์ฝ์ด๋ ์ฌ๋ฌ ๋ถ์ผ์์ ์ฌ์ฉํ ์ ์๊ณ ์๋ฅผ ๋ค๋ฉด ๊ธ์ฉ ๋ถ์ผ, ๊ต์ก ๋ถ์ผ, ํ์ ์ฒด๊ณ, ์ฌ๋ฌผ ์ธํฐ๋ท, ์ธํฐ๋ท ์ผ ๋น์ฆ๋์ค ๋ฑ ๋ถ์ผ์์ ๋ธ๋ก ์ฒด์ธ ๊ธฐ์ ์ ํตํด ํ ์ ํ ๋ถ์ฐํ ๋คํธ์ํฌ์์ ์์ ์ฝ๋ ํธ์ฐฌํ ๋ฐฉ๋ฒ์ ํตํด ํ ์ 3๋ฐ์ด ํ์๊ฐ ์๋ ํ์์ ์ฐธ์ฌํ ์๋ฐฉ ํน์ ๋ค๋ฐฉ์ด ํฉ์ํ ํ๋์ ์คํํ๋ค๋ ์คํฌ๋ฆฝํธ์ด๋ค. ์ด ๊ฒ์ด ๊ณ์ฝ์ ์ฐธ์ฌํ ๋ชจ๋ ์ฌ๋๋ค์ ์ํ ๊ถ์ต์ ์์ ,ํ์ค์ด,๊ณตํํ๊ฒ ์คํํ ์ ์๋ค.
ย ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ด ๋ธ๋ก ์ฒด์ธ ๋ถ์ผ์ ๋ฐ์ ์ ๋ํด ์์ฉ์ ๋น ๋ฅธ ์๋๋ก ์ค์ํ ์ญํ ์ ๋ด๋นํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํตํด ๊ณ ์์๋ค์ ๋์ฑ ์๊ทน์ ์ผ๋ก ์ด ๋ฐ์ ์ฐธ์ฌํ๊ฒ ์๊ทนํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ธ๋ก ์ฒด์ธ ๊ธฐ์ ์ ์ํ ํ์ค์ ์ธ ์ ํ ์ฒดํ์ ์ญ์ฌ์ ์ผ๋ก ์ ๊ณ ํ๊ฒ ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ๋ค ์ด๋๋ฆฌ์ด ๊ณ ์ ํ์ด ํ์ํ ๊ณตํ์ผ๋ก ๋ถํฐ ์์ํ๊ณ ์ด ์ ์ฒด ๋ถ์ผ๋ฅผ ์ํด ์ ๊ตญ๋ฉด์ ์ด๋ ธ๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ ๋ฐ ์ฐ๊ฒฐ์
ย ์ด๋๋ฆฌ์ ๊ฐ์ ์ปดํจํฐ(EVM)์ด ํ 256 ๋นํธ ๊ธธ์ด์ ๋จธ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ ์คํ์ ์ํด ํ ๊ฐ์ ์ปดํจํฐ์ด๋ค. ์ด๋ฅผ ํตํด ์ด๋๋ฆฌ์์ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ผ๋ก ์ค์ํ๋ ๊ฒ์ด๋ค. EVM๊ฐ ์ด๋๋ฆฌ์์ ์ํด ๋์์ธํ ๊ฒ์ด์ด์ ์ด๋๋ฆฌ์ ๊ณ์ข ๋ชจ๋ธ(Account Model)์ ์ฌ์ฉํ๊ณ ๊ฐ์น๋ฅผ ์ ์กํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฐ VDS์ ๋์์ธ์ ๋นํธ ์ฝ์ธUTXO ๋ชจ๋ธ์ ๊ทผ๊ฑฐํ๊ณ ๋์์ธํ๋ ๊ฒ์ด๋ค. ์ด๋ฐ ๋์์ธ์ผ๋ก ์ฌ์ฉํ ์ด์ ๋ ํ ๋ฐฉ๋ฉด์ VDS์ ์๋ ๊ณต๋ช
๊ฑฐ๋ ๊ธฐ๋ฅ ์ฆ ๋นํธ ์ฝ์ธ์ VDS์ฒด์ธ์ผ๋ก ํ ๋ฐฉํฅ์ผ๋ก ์ฝ์ธ์ ๊ตํํ ๊ธฐ๋ฅ์ ์คํํ๊ธฐ์ํด ๊ทธ๋์ ํ ๊ฐ์ธ ํค๋ฅผ ํตํด ๋นํธ์ฝ์ธ๊ณผ VDS๊ฐ ๋ ๊ฐ์ง ์ฃผ์๋ฅผ ์ด๋ฃจ์ด์ง ์ ์๋ค.
ย ๋จ๋ฅธ ์ด์ ๋ VDS์ ๊ณ ์ ํ์ด ๋นํธ ์ฝ์ธ์ ์ ์ธต ๊ฑฐ๋ ๊ตฌ์กฐ๊ฐ 10๋
๊ฐ์ ์๋ จ์ ๊ฒช์ด์ ๋์ฑ ํผํผํ๊ณ ๋ฏฟ์ ๋งํ๋ค๊ณ ์๊ฐํฉ๋๋ค.๊ทธ๋์ VDS๊ฐ ๊ณ์ข ์ถ์ํ ๊ณ์ธต(Account Abstraction Layer)์ ์ฌ์ฉํ๊ณ UTXO๋ชจ๋ธ์ EVM์ ์ํด ์คํํ ๊ณ์ข ๋ชจ๋ธ๋ก ๋ณํ๋ค. ๊ทธ๋ฆฌ๊ณ VDS๊ฐ ๊ณ์ข ๋ชจ๋ธ์ ๊ทผ๊ฑฐํ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํด์ EVM๊ฐ VDS ์ฒด์ธ์ ์๋ ์ ๋ณด๋ฅผ ์ง์ ์ฝ์ ์ ์๋ค. ย ์ค๋ช
ํด์ผ ํ ๊ฒ์ ๊ณ์ข ์ถ์ํ ๊ณ์ธต์ด ์ด๋ค ํน์ ํ ๊ธฐ๋ฅ ์ค์น์ ๊ดํ ๋ํ
์ผ์ ๊ฐ์ถ๊ณ ์ํธ ์กฐ๊ฐ ๊ฐ๋ฅ์ฑ์ ์ ๊ณ ํ ๊ฒ๊ณผ ํ๋ซํผ์ ๋
๋ฆฝ์ฑ์ ์ํด ์ค์ ์ ๋ถ๋ฆฌํ๋ค.
ย ๋นํธ ์ฝ์ธ ์์คํ
์์ ์คํฌ๋ฆฝํธ ์๊ทธ(Script Sig)์ ์คํฌ๋ฆฝํธ ํ๋ฌ๊ทธ์ธ ํค(Script Pub Key)๊ฐ ๊ฒ์ฆ์ด ํต๊ณผํด์ผ๋ง ๋์ํ ๊ฑฐ๋ ์ถ๋ ฅ์ ์๋นํ ์ ์๋ค. .
์๋ฅผ ๋ค๋ฉด ์คํฌ๋ฆฝํธ ์ ๊ทธ๊ธฐ๊ฐ ๋ณดํต ํ ๊ฑฐ๋์ ์ถ๋ ฅ์ด ํ ๋นํธ ์ฝ์ธ ์ฃผ์์(๊ณต๊ฐ ํค์ ํด์ ์น) ๋กํฌํ๋ค. ์คํฌ๋ฆฝํธ ์๊ทธ์ ์คํฌ๋ฆฝํธ ํ๋ฌ๊ทธ์ธ ๋๊ฐ์ง์ ์ค์ ์กฐ๊ฑด์ด ๋ถํฉํ ๋ ๊ทธ๋ฃน ์คํฌ๋ฆฝํธ ์คํ์ ๊ฒฐ๊ณผ๊ฐ ์ง์ผ๋ก (์์คํ
์ ๋ฐํ ๊ฐ์ด 1๋ค) ๋ํ๋๋ฉด ๋์ํ ์ถ๋ ฅ์ด ์๋น๋๋ค.
ย VDS๋ถ์ฐํ ์์คํ
์์ ์ฐ๋ฆฌ๊ฐ ์ปจ์ผ์์ค ์คํ์ ์ฆ์์ฑ๋ง ๊ฐ์กฐํด์ ์คํฌ๋ฆฝํธ ํ๋ฌ๊ทธ์ธ ํค์์OP_CREATE ๊ณผ OP_CALL์ ์กฐ๊ฐ ์ฐ์ฐ์๋ก ์ถ๊ฐ๋๋ค. VDS ์์คํ
์ด ์ด ์ฐ์ฐ์๋ฅผ ๊ฒ์ฌํ์ ๋ ์ ๋คํธ์ํฌ์ ๋
ธ๋๊ฐ ์ด ๊ฑฐ๋๋ฅผ ์คํํ๊ฒ ๋๋ค. ์ด๋ฐ๋ค๋ฉด ๋นํธ์ฝ์ธ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฐ๊ธฐํ ์ญํ ์ ๋ค๋ง ์ฝ๋ ์ธ์ด๊ฐ ์๋๊ณ ํ ๊ดํ ๋ฐ์ดํฐ๋ฅผ EVM๋ก ์ ์กํ๋ ๊ฒ์ด๋ค. ย ์ด๋๋ฆฌ์์ ์ด์ํ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ๊ณผ ๊ฐ์OP_CREATE ๊ณผ OP_CALL ์กฐ๊ฐ ์ฐ์ฐ์๋ก ์๋ํ ๊ณ์ฝ์ EVM๊ฐ ๊ฐ๊ฐ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ทธ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋ค.
ย VDS์ฒด์ธ์ด ์ปจ์ผ์์ค ๊ณ์ฝ์ด ๋๋ฌด ์ฝ๊ฒ ์ด์ฉํ ํน์ฑ์ ๊ณ ๋ คํด ์ด ๊ณ์ฝ์ ์๋ํ ๋ฐ์ดํฐ ๋ฐ ๋ฐ์ดํฐ ๊ธฐ์ํ ๊ณต๊ฐ ํค์ ํด์ ๊ฐ์ ๊ฒ์ฆํด์ผ ํ๋ค. VDS์ฒด์ธ์ UTXO๊ฐ ์ฐจ์งํ ๋น๋ก๊ฐ ๋๋ฌด ํฌ์ง ์๊ฒ ์ํดOP_CREATE ๊ณผ OP_CALL์ ๊ฑฐ๋ ์ถ๋ ฅ์ ์๋นํ ์ ์๋ ์ํ๋ก ๋์์ธํ๋ค. OP_CALL์ ์ถ๋ ฅ์ด ๋ค๋ฅธ ๊ณ์ฝ๊ณผ ๊ณต๊ฐ ํค์ ํด์ ์ฃผ์์ ์๊ธ์ ๋ณด๋ผ ์ ์๋ค.
ย ์ฐ์ VDS์ฒด์ธ์ ๋ง๋ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ๋ํด ์์คํ
์ด ํ ๊ฑฐ๋ ํด์ ์น๋ฅผ ์ด๋ฃจ์ด์ง๊ณ ์ด ๊ณ์ฝ์ ์ํด ์ฌ์ฉํ๊ฒ ๋๋ค. ์ ๋ฐํํ ๊ณ์ฝ์ด ์ด์ ๊ธ์ก์ด 0(๋น 0 ย ์ด์ ๊ธ์ก์ ๊ณ์ฝ์ ์ง์งํ์ง ์๋ค)์ด๋ค. ๊ณ์ฝ ๋ณด๋ธ ์๊ธ์ ์๊ตฌ์ ๋ง์กฑ์ํค๊ธฐ ์ํด VDS๊ฐOP_CALL ์กฐ์ ์ฐ์ฐ์๋ก ๊ฑฐ๋ ์ถ๋ ฅ์ ์ฐฝ๊ฑดํ๋ค. ๊ณ์ฝ์ด ๋ณด๋ธ ์๊ธ์ ์ถ๋ ฅ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์๊ณผ ๊ฐ๋ค:
ย ย 1: the version of the VM
ย ย 10000: gas limit for the transaction
ย ย 100: gas price in Qtum satoshis
ย ย 0xF012: data to send to the contract (usually using the solidity ABI)
ย ย 0x1452b22265803b201ac1f8bb25840cb70afe3303:
ย ย ripemd-160 hash of the contract txid OP_CALL
ย ์ด ์คํฌ๋ฆฝํธ๊ฐ ๋ณต์กํ ๊ฒ์ด ์๋๊ณ OP_CALL๊ฐ ๋ ๋ถ๋ถ์ ์ผ์ ํด๋ด๋ค. VDS๊ฐ ๊ฑฐ๋์ ๊ตฌ์ฒด์ ์ธ ์๋น(out-of-gas์ ์ํฉ์ ํฌํจ๋์ง ์๊ณ )๊ฐOutput Value์ด๋ค. ์ฆGas Limit์ด๋ค. ๊ตฌ์ฒด์ ์ธ Gas์ ๋๊ฐ ์์ผ๋ก ๋์จ ๊ธ์ ์ค๋ช
ํ๊ฒ ๋ค. ์์ ๋งํ ์ถ๋ ฅ ์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ก ์ฒด์ธ์ ์ถ๊ฐํ ๋ ์ด ์ถ๋ ฅ์ด ๊ณ์ฝ์ ๊ณ์ข์ ๋์ํ ๊ด๊ณ๋ฅผ ๋งบ์ ์ ์๋ค. ๊ทธ๋ฟ๋ง ์๋๋ผ ์ด๊ฒ์ด ๊ณ์ฝ์ ์์ก์๋ ํํํ ์ ์๋ค. ์์ก์ด ๊ณ์ฝ์ ์ํด ์๋นํ ์ ์๋ ์ถฉ ๊ธ์ก์ผ๋ก ์ดํดํ ์ ์๋ค.
ย ํ์ค ๊ณต๊ฐ ํค์ ํด์ ์ฃผ์์ ์ถ๋ ฅ์ด ๊ณ์ฝ ๊ฑฐ๋์ ์ฌ์ฉํ ๊ธฐ๋ณธ์ ์ด ๊ณผ์ ์ ๊ณ์ฝ ์ฌ์ด์ ๊ฑฐ๋ํ ๊ณผ์ ๊ณผ ๋น์ทํ๋ค. ๊ทธ๋ฆฌ๊ณ P2SH๊ณผ ์ ํ์ค์ ์ธ ๊ฑฐ๋ ์ฃผ์(non-standard transactions)์ ํตํด ๊ฑฐ๋๋ฅผ ํ ์ ์๋ค. ๋น์ ๊ณ์ฝ์ด ๋ค๋ฅธ ๊ณ์ฝ ํน์ ๊ณต๊ฐ ํค ํด์ ์ฃผ์์ ๊ฑฐ๋๋ฅผ ํ ๋ ์ด ๊ณ์ฝ ๊ฒ์ฅ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ๋ ฅ์ด ์๋ชจ๋๊ฒ ๋ค. ์๋ชจ๋ ์ถ๋ ฅ์ด VDS๋คํธ์ํฌ์ ย ๊ฑฐ๋ ๊ฒ์ฆ์ผ๋ก ํ๊ฒ ๋๋ค. ๋ฐ๋์ ์กด์ฌํด์ผ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ฅผ ๊ณ์ฝ ์์ ๊ฑฐ๋์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. (Expected Contract Transactions).๊ณ์ฝ ์์ ๊ฑฐ๋๊ฐ ๊ฑฐ๋ ์ฌ์ฉ์ ๊ฐ์ ์๊ธด ๊ฒ์ด ์๋๊ณ ์ฑ๊ตด์๋ค์ด ๊ฒ์ฆํ๊ณ ๊ฑฐ๋๋ฅผ ์คํํ ๋ ๋ํ๋ ๊ฒ์ด์ด์ ์ ๋คํธ์ํฌ์ ๋ฐฉ์กํ์ง ์๊ฒ ๋ค.
ย ๊ณ์ฝ ์์ ๊ฑฐ๋์ ์ฃผ์ ์๋ฆฌ๋OP_SPEND๋ก ํตํด ์คํํ๋ ๊ฒ์ด๋ค. OP_SPEND๊ณผOP_CALL๊ฐ ๋๊ฐ์ง ์ผํ ๋ชจ๋ธ์ด ์๋ค. ์กฐ๊ฐ ์ฐ์ฐ์์ด ์ถ๋ ฅ ์คํฌ๋ฆฝํธ๋ก์ ๋ ๋ EVM๋ก ์คํํ๋ค. ์กฐ๊ฐ ์ฐ์ฐ์์ด ์
๋ ฅ ์คํฌ๋ฆฝํธ๋ก์ ๋ ๋ EVM๊ฐ ์คํํ์ง ์๊ฒ ๋ค. (์๋๋ฉด ๋ฐ๋ณต ์คํ์ ํ๊ฒ ๋ค.) ์ด๋ฐ ์ํ์์OP_CREATE ๊ณผ ย OP_CALL๊ฐ ๋ฌด ๋ช
๋ น ์กฐ๊ฐ์ผ๋ก ๋๋ค. OP_CREATE ๊ณผOP_CALL๊ฐOP_SPEND๋ก ์ ์กํ ๊ฑฐ๋ ํด์ ๊ฐ์ ์ ์ํ๊ณ 1 ํน์ 0์ผ๋ก ๋๋์๊ฐ๊ฒ ๋ค. (์ฆ ์๋น ๊ฐ๋ฅ๊ณผ ์๋น ๋ถ ๊ฐ๋ฅ). ์ฌ๊ธฐ์OP_SPEND์ ์ค์์ฑ์ ํํํ ์ ์๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช
ํ๋ฉดOP_SPEND๊ฐ ๊ฑฐ๋ ํด์ ๊ฐ์OP_CREATE ๊ณผOP_CALL์๊ฒ ์ ์กํ๋ฉด ๏ผOP_CREATE ๊ณผ OP_CALL์ ํตํด ์ด ํด์ ๊ฐ์ด ๊ณ์ฝ ์์ ๊ฑฐ๋ ๋ฆฌ์คํธ์ ์กด์ฌํ๋์ง๋ฅผ ๋น๊ตํ ๊ฒ์ด๋ค. ์กด์ฌํ๋ฉด 1๋ก ๋๋์๊ฐ ์ฆ ์๋น ๊ฐ๋ฅ, ์๋๋ฉด 0๋ก ๋๋์๊ฐ ์ฆ ์๋น ๊ฐ๋ฅํ์ง ์๋ค. ์ด ๋ก์ง์ด ๊ฐ์ ์ ์ผ๋ก ์์ ํ๊ณ ์์ ํ ๋ฐฉ์์ ์ ๊ณตํ๊ณ ๊ณ์ฝ์ ์๊ธ์ด ์ด ๊ณ์ฝ๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋ณด์ฅํ๋ค. ์ด๊ฒ์ด ๋ณดํต UTXO ๊ฑฐ๋ ์ถ๋ ฅ๊ณผ ์ผ์นํ๋ค.
ย EVM ๊ณ์ฝ์ด ๊ณต๊ฐ ํค ํด์ ์ฃผ์ ํน์ ๋ค๋ฅธ ๊ณ์ฝ์ ์๊ธ์ ๋ณด๋ผ ๋ ํ ์ ๊ฑฐ๋๋ฅผ ๋ง๋ค๊ฒ ๋ค. Consensus-critical coin picking์ ์ฐ์ฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ์ฝ์ ์ฌ์ฉ ๊ฐ๋ฅํ ย ์ถ๋ ฅ ํ์ ์ ๋นํ ย ๊ฑฐ๋ ์ถ๋ ฅ์ ์ ํํ๋ค. ์ ํ๋ ์ถ๋ ฅ ๊ฑฐ๋๊ฐ ๋จ์ผํOP_SPEND์ ์ถ๋ ฅ ์คํฌ๋ฆฝํธ๋ก ๋๊ณ ์ถ๋ ฅ์ ์๊ธ์ ๋ชฉํ ์ฃผ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ์ ์๊ธ์ ๊ณ์ฝ์ ๋ค์ ๋ณด๋ด๊ณ ๋์์ ์๋ชจ ๊ฐ๋ฅํ ์ถ๋ ฅ์ ๋ณ๊ฒฝํ๋ค. ๋ค์์ ย ์ด ๊ฑฐ๋์ ํด์ ๊ฐ์ด ๊ณ์ฝ ์์ ๊ฑฐ๋ ๋ฆฌ์คํธ ์ ์ถ๊ฐํ ์ ์๋ค. ์ด ๊ฑฐ๋๋ฅผ ์คํํ ํ์ ์ด ๊ฑฐ๋๊ฐ ๋น์ฅ ๋ธ๋ก์ ๊ธฐ๋กํ๊ฒ ๋๋ค. ย ์ฒด์ธ์ ์๋ ์ฑ๊ตด์ด ์ด ๊ฑฐ๋ฅผ ๊ฒ์ฆํ๊ณ ์คํํ ํ์ ๊ณ์ฝ ์์ ๊ฑฐ๋ ๋ฆฌ์คํธ๊ฐ ๋ค์ ๋ง๋ค๊ฒ ๋ค. ํ์ค์ด ๊ฒ์ฆํ ํ์ ์ด ํด์ ๊ฐ์ด ๋ฆฌ์คํธ์ ์ง์ฐ๊ฒ ๋ค. ์ด๋ฐ๋ค๋ฉดOP_SPEND์ ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์ผ๋ก ์ฝ๋๋ก ํด์ ๊ฐ์ ํธ์ฐฌ์ ํตํด ์ถ๋ ฅ์ ์๋น ๊ฐ๋ฅ์ฑ์ ๋ฐฉ์งํ๊ฒ ๋ค.
ย VDS๊ณ์ข ์ถ์ํ ์ธต์ด EVM์ ๊ณผ๋ coin-picking์ ๊ด์ฌ์ ์ฃผ์ง ์๊ณ ๊ณ์ฝ์ ์๋ ์์ก๋ง ์๋ฉด์ ย ๋ค๋ฅธ ๊ณ์ฝ ์ฌ์ง์ด ๊ณต๊ฐ ํค ํด์ ์ฃผ์์ ์๊ธ ๊ฑฐ๋๋ฅผ ํ ์ ์๋ค. ์ด๋ฐ๋ค๋ฉด ์ด๋๋ฆฌ์์ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ๋ํด ์กฐ๊ธ ์์ ์ ํ๋ฉด VDS์ ๊ณ์ฝ ์ดํ ์๊ตฌ๋ฅผ ๋ง์กฑํ ์ ์๋ค.
ย ๋ค๋ฆ ๋งํ๋ฉด ์ด๋๋ฆฌ์ ์ฒด์ธ์ ์คํํ ์ปจ์ผ์์ค ๊ณ์ฝ๋ค์ด VDS์ฒด์ธ์๋ ์ดํํ ์ ์๋ค. .
ย VDS์ฒด์ธ์ ๋์์ธ์ ๋นํธ ์ฝ์ธ์ UTXO ๋ชจ๋ธ์ ๊ทผ๊ฑฐํ๋ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ธ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ ํ๋ซํผ์ ๊ณ์ข ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ๊ณ์ฝ์ด ํ ์ํฐํฐ๋ก์ ํ ๋คํธ์ํฌ ํ์ง๊ฐ ํ์ํ๋ค. ์ด ํ์ง๋ ๋ฐ๋ก ๊ณ์ฝ์ ์ฃผ์์ด๋ค. ๊ทธ๋์ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ์ดํํ๊ณ ๊ด๋ฆฌํ๋ ๋์์ด ๋ค ์ด ์ฃผ์๋ฅผ ์กฐ์ํ๋ ๊ฒ์ผ๋ก ์คํํ ์ ์๋ค. VDS์ฒด์ธ ๋ชจ๋ธ ๋์์ธ์ ๊ณ์ข ์ถ์ํ ์ธต(Account Abstraction Layer, AAL)์ ์ถ๊ฐํ๊ณ UTXO ๋ชจ๋ธ์ ๊ณ์ฝ์ด ์คํํ ์ ์๋ ๊ณ์ข ๋ชจ๋ธ๋ก ๋ณํ๊ฒ ํ๋ค.
ย ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ๊ฐ๋ฐํ ๊ณ ์์์๊ฒ ๊ฐ์ ์ปดํจํฐ์ ๊ณ์ข ๋ชจ๋ธ์ด ์๋์ ์ผ๋ก ๊ฐ๋จํ๋ ๋ชจ๋ธ์ด๋ค. ์ด ๊ฒ์ด ๊ณ์ฝ ์์ก ์กฐํ ๊ธฐ๋ฅ๊ณผ ๋ค๋ฅธ ๊ณ์ฝ์ ์๊ธ์ ๋ณด๋ธ ๊ธฐ๋ฅ์ ์ง์งํ๋ค. ์ด์ ๊ฐ์ ์กฐ๊ฐ์ด ์์ฃผ ๊ฐ๋จํ๊ณ ๊ธฐ์ด์ ์ธ ์กฐ๊ฐ์ด์ง๋ง VDS์ฒด์ธ์ ์๋ ๋ชจ๋ ๊ฑฐ๋๊ฐ ๋นํธ ์ฝ์ธ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ๋นํธ ์ฝ์ธ UTXO๋ชจ๋ธ์ ๊ทผ๊ฑฐํ์ฌ VDS์ฒด์ธ์ ์๋ ๊ณ์ข ์ถ์ํ ์ธต์ ์คํํ๋ ๊ฒ์ด ์๊ฐ๋ณด๋ค ์ด๋ ค์ด ์ผ์ด๋ค. ๊ทธ๋์ ALL๊ฐ ์ด ๊ธฐ์ด ์์ ํ์ฅ์ ํ๋ค. 3๊ฐ ์ ์ฐ์ฐ์๋ฅผ ์ถ๊ฐํ๋ค.
OP_CREATE๊ฐ ์ค๋งํธ ๊ณ์ฝ์ ์ฐฝ๊ฑด์ ์คํํ ๋ฐ์ ์ฌ์ฉํ๋ค. ๊ฑฐ๋๋ฅผ ํตํด ์ ์กํ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ฐ์ ์ปดํจํฐ์ ๊ณ์ฝ ์ ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ๊ณ ํ ๊ณ์ฝ ๊ณ์ข๋ฅผ ์ด๋ฃจ์ด์ง๋ค.
OP_CALL๊ฐ ๊ณ์ฝ์ ํธ์ถํ๊ธฐ ์ํด ํ์ํ ์๊ดํ ๋ฐ์ดํฐ์ ์ฃผ์ ์ ๋ณด๋ฅผ ์ ์กํ ๋ฐ์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณ์ฝ์ ์๋ ์ฝ๋ ๋ด์ฉ์ ์คํํ๋ค.(์ด ์ฐ์ฐ์๊ฐ ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ์๊ธ์ ๋ณด๋ด๊ธฐ๋ ํ๋ค. )
OP_SPEND๊ฐ ๋น์ ๊ณ์ฝ ID ํด์ ๊ฐ์ ์
๋ ฅํ ๊ฑฐ๋ HASH์ด๋ ๊ณ์ฝ์ ๋ณด๋ธ UTXO์ ๊ฑฐ๋ HASH๋ก ๋๊ณ OP_SPEND์ ์๋น ์ง๋ น์ผ๋ก์ ๊ฑฐ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌ์ถํ๋ค.
๊ณ์ฝ์ ์ฌ์ฉ๊ณผ ์ฒด์ธ์ ์ฌ๋ฆฐ ๊ณผ์
ํ์ ๋ Solidity์ธ์ด๋ก ์ปจ์ผ์์ค ์คํ ๊ณ์ฝ์ ํธ์ฐฌํ๋ค.
Solidity remixํน์ ๊ธฐํ Solidity IDE๋ก ์ฝ๋ ํธ์ฐฌ๊ณผ ํธ์ญํ๋ค.
solidity remix๏ผhttps://remix.ethereum.org/๏ผ
homestead ๋ชจ๋ธ๋ก ํธ์ญํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
solidity 0.4.24๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ถ์ฒํ๋ค.(๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ์ ์คํจ ํ์๊ฐ ๋ํ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
Solidity๋ฌธ๋ฒ์ด๏ผhttps://solidity.readthedocs.io/en๏ผ๋ก ์ฐธ๊ณ ํ๊ธฐ ๋ฐ๋๋ค.
ํธ์ญ์ด ์๋ฃ ํ์ByteCode๊ณผ ABI์ ์ป์ ์ ์๋ค.
๊ณ์ฝ์ ํธ์ญ๊ณผ ๋ฐฐ์น
Vdsd์ค๋งํธ ๊ณ์ฝ์ ์ดํ
ํ๊ฒฝ ์ดํ ๋ณ์๋ฅผ ํ
์คํธํ๊ธฐ
vdsd -txindex=1 -logevents=1 -record-log-opcodes=1 -regtest=1
>ํ
์คํธ ํ๊ฒฝ์ด ๊ณ์ฝ ํ
์คํธ, ๋ธ๋ก ๊ณ ๋๊ฐ 440์ ๋ฌํ ํ์ ํ์คํธํ๊ธฐ ๋ฐ๋๋ค.
440๋ณผ๋ก ๊ณ ๋๊ฐ ๊ณ์ฝ ๋น ์ ์์ ์ธ ์ฌ๊ฑด ํ์ ์๊ธ ๋ฐํ(refund)๊ณผ (refund) ํ์์ ์๊ธ ๋กค๋ฐฑ ์กฐ๊ฐ์ ์์ฑ๋๋ค.
๊ณ์ฝ์ ๋ฐฐ์นํ ๋ช
๋ น์:
```vds-cli deploycontract bytecode ABI parameters```
- bytecode (string, required) contract bytecode.
- ABI ย (string, required) ABI String must be JSON formatted.
- parameters (string, required) a JSON array of parameters.
์ด ํจ์๊ฐ ๊ณ์ฝ์ ํจ์๋ฅผ ์กด์ฌํ๊ธฐ๋ฅผ ๊ตฌ์กฐํ๊ณ ์ฐธ๊ณ ์๋ฅผ ์ ํ ๋ฐ์ ์ฌ์ฉํ๋ค. ๋ง์ง๋ง์ผ๋ก ๋ฐฐ์น์ ์ฌ์ฉํByteCode์ ์ป์ ์ ์๋ค.
(์ด ๋ฐฉ๋ฒ์ดByteCode๊ณผ ABI์ ๊ฒฐํฉํ๊ณ ๋ณธ์ง ์ ์ ์ฅํ๊ณ ๊ธฐ๋กํ๋ฉฐ ๋ณธ์ง๊ฐ ๋ด๋ถ ๋ฐฉ๋ฒ์ ํธ์ถํ๊ณ ์๊ณผ ๋ฐ์ดํธ์ ๋๋์๊ฐ ์ ์๋ค.)
```vds-cli createcontract bytecode (gaslimit gasprice senderaddress broadcast)```
- bytecode (string, required) contract bytecode.
- gaslimit (numeric or string, optional) gasLimit, default is DEFAULT_GAS_LIMIT, recommended value is 250000.
- gasprice (numeric or string, optional) gasprice, default is DEFAULT_GAS_PRICE, recommended value is 0.00000040.
- senderaddress (string, optional) The vds address that will be used to create the contract.
- broadcast (bool, optional, default=true) Whether to broadcast the transaction or not.
- changeToSender (bool, optional, default=true) Return the change to the sender.
๋ฐํ ๊ฐ์ด :txid, ๋ฐ์ ์,๋ฐ์ ์์ hash160 , ๊ณ์ฝ ์ฃผ์
๋ช
๋ น์ด ์ฑ๊ณต์ ์ผ๋ก ์คํํ๋์ง๋ฅผ ์กฐํํ๊ธฐ๏ผ
```vds-cli gettransactionreceipt txid```
๋น ๊ณ์ฝ ๊ฑฐ๋์ txid์ ๋ฐํ ๊ฐ์ด ๊ณต์ด๋ค.
๋ฐํ๊ฐ์:์ด ๋ฒ์ txid๊ฐ ์ฒด์ธ์ ์๋ ๊ดํ ์ ๋ณด
- ย ย ย BlockHash ์ฒํ๋ธ๋ก์Hash
- ย ย ย blockNumber ย ์ฒํ ๋ธ๋ก ๊ณ ๋
- ย ย ย transactionHash ๊ฑฐ๋์hash
- ย ย ย transactionIndex ย ๊ฑฐ๋๊ฐ ์ด ๋ธ๋ก์ ์ฒํ ์์น
- ย ย ย from ๋ฐ์ ์์ ์ฃผ์์hash160
- ย ย ย to ๋ฐ์ ์๋ ๊ณ์ฝ ์ฃผ์๏ผ ๊ณ์ฝ์ ๋ง๋ ๊ฑฐ๋ ์ด ๊ณณ์
- ย ย ย 00000000000000000000000000000
- ย ย ย cumulativeGasUsed ๋๊ณ ์ฌ์ฉํGas
- ย ย ย gasUsed ย ์ค์ ์ ์ผ๋ก ์ฌ์ฉํGas
- ย ย ย contractAddress ๊ณ์ฝ ์ฃผ์
- ย ย ย excepted ย ์ค๋ฅ๊ฐ ์๋์ง
- ย ย ย exceptedMessage ย ํ๋ฆฐ ๋ฉ์์ง
ย ๋ค์ ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ฃผ์ํ๊ธฐ ๋ฐ๋๋ค. Excepted ๋จ๋ฝ์ด None์ด ์๋๋ฉด ๊ณ์ฝ ์คํ ์คํจํ ๊ฒ์ ์๋ฏธ๋๋ค. ๊ฑฐ๋๊ฐ ์ฒด์ธ์์ ์ฐพ์ ์ ์์ง๋ง ๊ณ์ฝ์ ์ฑ๊ณต์ ์ผ๋ก ์คํํ๋ ๊ฒ์ ์๋ฏธํ์ง ์๋ค. ๋ค๋ฅธ ๋งํ๋ฉด ์ด ๊ณ์ฝ์ ์คํํ ์์๋ฃ๊ฐ ๋ฐํํ์ง ์๊ฒ ๋ค. ๊ณ์ฝ ๋ด๋ถ์ ย revert ๋ฐฉ๋ฒ์ ๋ค์ด๊ฐ๋ง ์์๋ฃ๋ฅผ ๋ฐํํ ์ ์๋ค. ๋ฐ๋์ assert๋ฐฉ๋ฒ์ด ์์๋ฃ๋ฅผ ๋ฐํํ ์ ์๋ค.
```vds-cli addcontract name contractaddress ABI decription```
- name (string required) contract name.
- contractaddress (string required) contract address.
- ABI (string, required) ABI String must be JSON formatted.
- description (string, optional) The description to this contract.
์ด ํจ์๊ฐ ๊ณ์ฝ ABI์ ๋ณธ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํ๋ ๋ฐ์ ์ฌ์ฉํ๋ค.
```vds-cli getcontractinfo contractaddress```
- contractaddress (string required) contract address.
์ด ํจ์๊ฐ ์ด๋ฏธ ์ถ๊ฐํ ๊ณ์ฝ ์ ๋ณด๋ฅผ ์ป์ ๋ฐ์ ์ฌ์ฉํ๋ค.
```vds-cli callcontractfunc contractaddress function parameters```
- contractaddress (string, required) The contract address that will receive the funds and data.
- function (string, required) The contract function.
- parameters (string, required) a JSON array of parameters.
์ด ํจ์๊ฐ ๋ณดํต ๋ ๋ฐฉ๋ฒ์ ํธ์ถํ ๋ ์คํ ๊ฒฐ๊ณผ์ ๋๋์๊ฐ๋ค. ์๋ฅผ ๋ค๋ฉด ๊ณ์ฝ ๋ฐ์ดํฐ ์กฐ๊ฐ ๋ฐฉ๋ฒ์ ํธ์ถํ ๋ ์กฐ๊ฐ ์คํฌ๋ฆฝํธ์ ์ญ์ก์ง๋ฒ ๊ฒฉ์ ๋ฌธ์์ด์ ๋๋์๊ฐ๊ฒ ๋ค.
```vds-cli sendtocontract contractaddress data (amount gaslimit gasprice senderaddress broadcast)```
- contractaddress (string, required) The contract address that will receive the funds and data.
- datahex ย ย ย ย (string, required) data to send.
- amount ย ย ย ย ย (numeric or string, optional) The amount in " + CURRENCY_UNIT + " to send. eg 0.1, default: 0
- gaslimit (numeric or string, optional) gasLimit, default is DEFAULT_GAS_LIMIT, recommended value is 250000.
- gasprice (numeric or string, optional) gasprice, default is DEFAULT_GAS_PRICE, recommended value is 0.00000040.
- senderaddress (string, optional) The vds address that will be used to create the contract.
- broadcast (bool, optional, default=true) Whether to broadcast the transaction or not.
- changeToSender (bool, optional, default=true) Return the change to the sender.
์ด ํจ์๊ฐ ๊ณ์ฝ์ ์กฐ๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ํ ๊ณ์ฝ์ ๋ณด๋ด๊ณ ๋ธ๋ก ์ฒด์ธ์ ๊ธฐ๋กํ ๋ฐ์ ์ฌ์ฉํ๋ค.
๊ณ์ฝ ์คํ ๊ฒฐ๊ณผ ๋ณด๊ธฐ
```vds-cli gettransaction txid```
์ด ๋ช
๋ น์ด ๋น์ ์ง๊ฐ ๊ฑฐ๋์ ํ์ธ ์๋ฅผ ๋ณผ ๋ฐ์ ์ฌ์ฉํ๋ค.
```vds-cli gettransactionreceipt txid```
์ด ๋ช
๋ น์ด ๊ณ์ฝ ์ฐฝ๊ฑด๊ณผ ๊ฑฐ๋ ํธ์ถ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋น ์ ์์ ์ธ ํฌ๋งค์ ์ค์ ์ ์ธ ์๋ชจํ GAS์ ๋ณผ ๋ฐ์ ์ฌ์ฉํ๋ค.
`${datadir}/vmExecLogs.json` ๋ธ๋ก ์ฒด์ธ์ ์๋ ๊ณ์ฝ ํธ์ถ์ ๊ธฐ๋กํ๊ฒ ๋ค. ์ด ํ์ผ์ด ๊ณ์ฝ ์ฌ๊ฑด์ ๋์ธ ์ธํฐํ์ด์ค๋ก ๋๋ค.
๊ณ์ฝ์ ํธ์ถ ์ธํฐํ์ด์ค
l ย ๊ณ์ฝ ์ฐฝ๊ฑด ์ธํฐํ์ด์คcreatecontract
l ย ๊ณ์ฝ ๋ฐฐ์น ์ธํฐํ์ด์ค deploycontract
l ย ABI์ถ๊ฐ ์ธํฐํ์ด์คaddcontract
l ย ๊ณ์ฝ ํธ์ถ ์๊ธ์ ๊ฐ์ง ์กฐ๊ฐ ์ธํฐํ์ด์ค sendtocontract
l ย ๊ณ์ฝ ์ ๋ณด ์ฝ๊ธฐ ์ธํฐํ์ด์ค callcontractfunc
l ย ๊ณ์ฝ ๊ฑฐ๋ ์คํ ์ ๋ณด๋ฅผ ์ป์ ์ธํฐํ์ด์ค ย gettransactionreceipt
๊ณ์ฝ ์ดํ ๋น์ฉ ์ค๋ช
ย ๊ณ์ฝ์ ์ฐฝ๊ฑดํ ์ดํ ๋น์ฉ์ด ์ถ์ฐํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๋ค. gas limit ๊ฐ ํ๊ณ๊ฐ50000000์ด๊ณ ์ด ํ๊ณ๋ฅผ ๋์ผ๋ฉด ๊ณ์ฝ์ด ์คํจํ๊ฒ ๊ธฐ ๋๋ฌธ์ 100% ์ฑ๊ณต ์คํ์ ๋ณด์ฅํ ์ ์๋ค. VDS์ฒด์ธ์ด ์๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ์์ธํ ๋งํ๋ฉด ๋ง์ด gas์ ๋ณด๋ด๋ ์ฑ๊ตด์๋ค์ด ์ ๋ถ gas์ ์จ๋ฒ๋ฆฌ์ง ์์ ๋จ์ gas์ ๋ฐํํ๊ฒ ๋ค. ๊ทธ๋์ ๋๋ฌด ๋ง์ gas์ ์ฐ๋ ๊ณ ๋ฏผ์ด ์ ํด๋ ๋๋ค.
ย ๊ณ์ฝ์ ์ฐฝ๊ฑดํ ๋น์ฉ์ด ํByte Code ์ฌ์ด์ฆ*300์ gas limit๋ก ๋๊ณ gas price ์ต์ ๊ฐ๊ฒฉ์ด0.0000004 ์ด๋ค๏ผgas price * gas limit์ ๊ณ์ฝ์ ์ฐฝ๊ฑดํ ๋น์ฉ์ด๋ค.
์ด๋ค ๊ณ์ฝ์ ์คํํ ๋ฐฉ๋ฒ์ ํ์ํ gas๊ฐ ๋ค ์์ธกํ ๊ฒ์ด๋ค. ๋คํธ์ํฌ๊ฐ ๋งํ๋ฉด ์์ธก์ 100% ์ฑ๊ณต์ ์ผ๋ก ์ฒด์ธ์ ์ฌ๋ผ๊ฐ ๊ฒ์ ๋ณด์ฅํ ์ ์๋ค. ๊ทธ๋์ ์๋ชป๋ ์ค๋๋ฅผ ํด ์ค ๊ฒ์ ๋๋ ค์ฐ๋ฉด ๊ณ ์์๋ค์ด ์๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํด์ผ ํ๋ค.