안녕하세요.
우선 저희는 기존에 작업해놓은 ethers 라이브러리 기반 ERC721 deploy API가 있습니다.
그 API를 이용해서 클레이튼 테스트넷에 ERC721 배포를 시도했는데 에러가 발생합니다.
같은 코드와 컨트랙트 소스로 Ethereum쪽에서는 정상작동하였고, Remix IDE로 클레이튼 테스트넷에 시도했을 때에도 정상 배포되었습니다.
node.js에서 ethers 사용 시 클레이튼에 배포할 때에만 deploy 관련 parameter 설정 도중 gasLimit값 진행 시 문제가 되는 것 같습니다.
아마 ethers 내부 문제일테고 Klaytn은 caver-js 사용이 권장되는 것은 알고 있지만 혹시 해결 방법이나 정보관련 답변이 가능하시다면 부탁드립니다.
■ ethers 사용 contract deploy 코드 예시
const signer = new ethers.Wallet(private_key).connect(provider);
const contract_factory = new ethers.ContractFactory(abi, bytecode, signer);
const contract = await contract_factory.deploy(...deploy_parameters);
// deploy contract and return result
const deploy_result = await contract.deployTransaction.wait();
■ Error 로그
Error: invalid BigNumber value (argument=“value”, value=undefined, code=INVALID_ARGUMENT, version=bignumber/5.4.1)
at Logger.makeError (/home/user/node_modules/@ethersproject/logger/lib/index.js:187:21)
at Logger.throwError (/home/user/node_modules/@ethersproject/logger/lib/index.js:196:20)
at Logger.throwArgumentError (/home/user/node_modules/@ethersproject/logger/lib/index.js:199:21)
at Function.BigNumber.from (/home/user/node_modules/@ethersproject/bignumber/lib/bignumber.js:241:23)
at Formatter.bigNumber (/home/user/node_modules/@ethersproject/providers/lib/formatter.js:153:38)
at Function.Formatter.check (/home/user/node_modules/@ethersproject/providers/lib/formatter.js:380:40)
at Formatter._block (/home/user/node_modules/@ethersproject/providers/lib/formatter.js:250:26)
at Formatter.block (/home/user/node_modules/@ethersproject/providers/lib/formatter.js:255:21)
at JsonRpcProvider. (/home/user/node_modules/@ethersproject/providers/lib/base-provider.js:1615:82)
at step (/home/user/node_modules/@ethersproject/providers/lib/base-provider.js:49:23) {
reason: ‘invalid BigNumber value’,
code: ‘INVALID_ARGUMENT’,
argument: ‘value’,
value: undefined,
checkKey: ‘gasLimit’,
checkValue: undefined
}