안녕하세요 오늘도 찾아뵙게 됐습니다.
위 공식문서를 보고 컨트랙트 배포 로직을 짜는 와중에
caver.klay.abi.encodeContractDeploy(jsonInterface, hexString, params)
위의 메서드를 통해 jsoninterface는 이해가 되서 찾았는데 저 중간에 hexString은 어떻게 구하는걸까요?
const encodedData = await caver.klay.abi.encodeContractDeploy(
jsoninterface,
hexString, // 스마트컨트랙트의 바이트코드?
constructorParams
);
await caver.klay.sendTransaction({
type: "SMART_CONTRACT_DEPLOY",
from: account.address,
data: encodedData,
gas: 3000000,
value: caver.utils.toPeb(0, "KLAY"),
});
현재 여기까지 진행된 상황인데 더 진전을 못하겠습니다 ㅜㅜ
배포할 스마트컨트랙트의 바이트코드가 뭔지와 어떻게 구하는지 아시는분 도와주세요 감사합니다.
Lewis
2
말씀하신대로 컨트랙트의 바이트 코드를 입력하면 됩니다.
바이트 코드란, 간단하게 solidity로 작성된 스마트 컨트랙트를 EVM 상에 띄우기 위한 로우레벨 코드라고 생각하시면 됩니다.
구하는 방법은,
-
리믹스 IDE를 사용하신다면 컴파일러 탭 아래에 Bytecode를 복사할 수 있는 버튼이 있습니다.
-
트러플이나 하드햇을 사용하신다면 컴파일 후 artifacts 디렉토리의 abi와 함께 기록됩니다. (코드를 보니 컴파일 후 abi가 있는 json 파일을 확인하신 것 같은데요, 해당 파일 아래에 bytecode가 함께 있을 겁니다.)
감사합니다.
{
"functionDebugData": {
"@_157": {
"entryPoint": null,
"id": 157,
"parameterSlots": 1,
"returnSlots": 0
},
"@_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@_2362": {
...
7:421;;;;;:::o;448:355::-;515:5;564:3;557:4;549:6;545:17;541:27;531:122;;572:79;;:::i;:::-;531:122;682:6;676:13;707:90;793:3;785:6;778:4;770:6;766:17;707:90;:::i;:::-;698:99;;521:282;448:355;;;;:::o;809:524::-;889:6;938:2;926:9;917:7;913:23;909:32;906:119;;;944:79;;:::i;:::-;906:119;1085:1;1074:9;1070:17;1064:24;1115:18;1107:6;1104:30;1101:117;;;1137:79;;:::i;:::-;1101:117;1242:74;1308:7;1299:6;1288:9;1284:22;1242:74;:::i;:::-;1232:84;;1035:291;809:524;;;;:::o;1339:129::-;1373:6;1400:20;;:::i;:::-;1390:30;;1429:33;1457:4;1449:6;1429:33;:::i;:::-;1339:129;;;:::o;1474:75::-;1507:6;1540:2;1534:9;1524:19;;1474:75;:::o;1555:308::-;1617:4;1707:18;1699:6;1696:30;1693:56;;;1729:18;;:::i;:::-;1693:56;1767:29;1789:6;1767:29;:::i;:::-;1759:37;;1851:4;1845;1841:15;1833:23;;1555:308;;;:::o;1869:307::-;1937:1;1947:113;1961:6;1958:1;1955:13;1947:113;;;2046:1;2041:3;2037:11;2031:18;2027:1;2022:3;2018:11;2011:39;1983:2;1980:1;1976:10;1971:15;;1947:113;;;2078:6;2075:1;2072:13;2069:101;;;2158:1;2149:6;2144:3;2140:16;2133:27;2069:101;1918:258;1869:307;;;:::o;2182:320::-;2226:6;2263:1;2257:4;2253:12;2243:22;;2310:1;2304:4;2300:12;2331:18;2321:81;;2387:4;2379:6;2375:17;2365:27;;2321:81;2449:2;2441:6;2438:14;2418:18;2415:38;2412:84;;;2468:18;;:::i;:::-;2412:84;2233:269;2182:320;;;:::o;2508:281::-;2591:27;2613:4;2591:27;:::i;:::-;2583:6;2579:40;2721:6;2709:10;2706:22;2685:18;2673:10;2670:34;2667:62;2664:88;;;2732:18;;:::i;:::-;2664:88;2772:10;2768:2;2761:22;2551:238;2508:281;;:::o;2795:180::-;2843:77;2840:1;2833:88;2940:4;2937:1;2930:15;2964:4;2961:1;2954:15;2981:180;3029:77;3026:1;3019:88;3126:4;3123:1;3116:15;3150:4;3147:1;3140:15;3167:117;3276:1;3273;3266:12;3290:117;3399:1;3396;3389:12;3413:117;3522:1;3519;3512:12;3536:117;3645:1;3642;3635:12;3659:102;3700:6;3751:2;3747:7;3742:2;3735:5;3731:14;3727:28;3717:38;;3659:102;;;:::o;311:8829:11:-;;;;;;;"
}
리믹스에서 복사하니까 이렇게 나옵니다.
근데 docs 예제를 보니까
0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029
이렇게 hex로만 나와야 하는거 같은데 혹시 저 위에꺼로 진행해도 되는걸까요??
아 제가 리믹스에서 네트워크를 클레이튼으로 안하고 가나슈로 진행해서 그런거 같습니다. 다시 한번 해보겠습니다. 감사합니다.
Lewis
5
Bytecode = 0x{object field} 입니다.
복사하신 부분 중 object field에 앞에 0x prefix를 붙여주시면 됩니다.