🌍
[web3js]trying to deploy a contract whose code is too large
概要
NFTマーケットの実装時にweb3jsを利用してスマートコントラクトをdeployする時に
trying to deploy a contract whose code is too large
が発生した
環境
- web3js 1.10.2
- hardhat 2.17.2
原因
エラー内容からbytecodeのサイズが大きいのかと思い、
hardhat.config.js
の設定を変更してみたが、治らなかった。
原因は
send関数のgasの値が小さすぎたことだった。
エラー内容と実際のエラーの原因が異なっていたので、少し無駄な時間を浪費してしまった。
await this.contract.deploy({data: HogeJson.bytecode}).send({
from: from,
gas: 10000, // これが小さすぎる
})
なのでこれを
await this.contract.deploy({data: HogeJson.bytecode}).send({
from: from,
gas: 5000000,
})
にように修正した。
これで無事にdeployできるようになりました。
備考
本番環境用のNFTマーケットを実装するときは、
estimateGasを利用して消費者にガス代の見積もりを必ず提示するようにもしておきましょう。
Discussion