🌍

[web3js]trying to deploy a contract whose code is too large

2023/10/02に公開

概要

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