안녕하세요,
Service chain 구축 중에 질문이 있어 문의드립니다.
저는 https://docs.klaytn.com/node/service-chain 이 가이드에 나와있는대로 service chain 네트워크를 성공적으로 구축했으며, baobab 환경에서 실행되고 있는 endpoint node 와 연결을 성공했습니다 (anchoring 도 정상적으로 되는 것을 확인했습니다. 확인 방법은 klaytnscope 에서 anchoring TX 가 보이는 것을 확인). 그 다음에 parent chain 과 child chain 간에 KLAY, 또는 ERC-20 토큰 전송을 할 수 있도록 공식 가이드를 따르고 있습니다.
하지만 bridge contract 배포 과정(https://docs.klaytn.com/node/service-chain/references/value-transfer#deployment)에서 문제를 겪고 있습니다
가이드에서는 subbridge.deployBridge()
명령어를 실행하면 자동으로 bridge contract 가 배포가 되는데요, 저는 그렇지 않습니다. 제가 실행한 명령어를 아래에 나열하겠습니다.
> subbridge.peers.length
1
> subbridge.childOperatorBalance
99999999930000000000
> subbridge.parentOperatorBalance
11922330000000000000
> subbridge.deployBridge()
Error: no contract code after deployment
at web3.js:3276:20
at web3.js:6450:15
at web3.js:5214:36
at <anonymous>:1:1
>
위 보이는 것과 같이 child operator 에도 balance 가 있고, parent operator 에도 balance 가 충분히 존재하는데 bridge contract 배포가 안되네요 ㅜㅜ
그래서 제가 kscnd.out 로그 파일을 관찰하면서 subbridge.deployBridge() 를 하는 순간에 찍히는 로그를 관찰했습니다. 아래와 같은 로그가 찍힙니다.
ERROR[01/19,11:12:52 +09] [45] Failed to WaitDeployed. err="no contract code after deployment" txHash=0xc604dc3fc9a5d9a2e0caf6b90f00c5fe233e27c5e923b279210d6927fe457647
ERROR[01/19,11:12:52 +09] [45] Failed to deploy child bridge. err="no contract code after deployment"
그래서 제가 저기에 보이는 TX Hash 를 조사해보니 아래와 같은 결과가 보였습니다.
> klay.getTransactionReceipt('0xc604dc3fc9a5d9a2e0caf6b90f00c5fe233e27c5e923b279210d6927fe457647')
{
blockHash: "0x5ae77b8131d3a53f8ef298137ae68d6c86709a29c7d20229ec51c0d3d00c32ce",
blockNumber: 227983,
contractAddress: "0xb30326658302334d5d5c4d71b17452447c63bc1c",
from: "0x60d2c167ad673ddeef4f3a734f1a14963e476d7a",
gas: "0x4c4b40",
gasPrice: "0x3e8",
gasUsed: 5000000,
input: "너무 길어서 생략...",
logs: [],
logsBloom: "너무 길어서 생략...",
nonce: "0xf",
senderTxHash: "0xc604dc3fc9a5d9a2e0caf6b90f00c5fe233e27c5e923b279210d6927fe457647",
signatures: [{
R: "0xe1e24a090fbc245cf5482559ac82174138f21182d8912c69e6ff584a64d682bf",
S: "0x12c56527caa81204e96d7314ab8bc2270890020a21b44cf9797b1476f2ff4192",
V: "0x30596"
}],
status: "0x0",
to: null,
transactionHash: "0xc604dc3fc9a5d9a2e0caf6b90f00c5fe233e27c5e923b279210d6927fe457647",
transactionIndex: 0,
txError: "0x5",
type: "TxTypeLegacyTransaction",
typeInt: 0,
value: "0x0"
}
보시면 gas 값과 gasUsed 값이 같고, txError 가 0x5 인 것으로 보아서 gas 가 충분하지 않아서 생기는 문제인 것 같습니다.
결론적으로 제가 알고 싶은 것은 subbridge.deployBridge()
를 할 때에 gas 값을 조정할 수 있는 방법이 있나요? 아니면 이 문제(bridge contract 배포 실패 문제)를 해결 할 수 있는 다른 방법이 있을까요? (예를 들어, bridge contract 를 수동으로 배포할 수 있도록 bridge contract 의 sol 파일을 제공해주시거나 등등…)
답변 주시면 감사하겠습니다.