Solidity

ProviderError:超出最大程式碼大小

  • March 17, 2022

我正在嘗試使用hardhat在bsc測試網上部署可升級的智能合約。但是執行後它給了我以下錯誤。npx hardhat run --network testnet scripts/deploy.js

ProviderError: max code size exceeded
   at HttpProvider.request (D:\rarible-hardhat\protocol-contracts\tokens\node_modules\hardhat\src\internal\core\providers\http.ts:46:19)ts:46:19)                                                                                                                       ccounts.ts:142:34)
   at HDWalletProvider.request (D:\rarible-hardhat\protocol-contracts\tokens\node_modules\hardhat\src\internal\core\providers\accounts.ts:142:34)                                                                                                              nal\ethers-provider-wrapper.ts:13:20)
   at processTicksAndRejections (internal/process/task_queues.js:97:5)
   at EthersProviderWrapper.send (D:\rarible-hardhat\protocol-contracts\tokens\node_modules\@nomiclabs\hardhat-ethers\src\internal\ethers-provider-wrapper.ts:13:20)

如何調整程式碼大小或任何其他方法來解決此錯誤。

如何調整程式碼大小或任何其他方法來解決此錯誤。

合約程式碼大小限制為 24kB(24,576 字節)。

您需要在部署之前減小合約的大小,或者將其拆分為幾個較小的合約和庫。

低垂的果實將是任何字元串文字(例如require()語句中的錯誤字元串),並刪除任何不必要的函式或變數。

您可以嘗試上述步驟,但在執行任何操作之前,請先嘗試 hardhat.config.js 中的 compilerOptimization 設置。IMO,至少使用 1000 次執行,這將優化您的部署,大大增加部署成本,但您的使用者將支付更少的 gas 費用。

module.exports = {
 solidity: {
   version: "0.8.6",
   settings: {
     optimizer: {
       enabled: true,
       runs: 200
     }
   }
 },
 networks: {
   hardhat: {
   },
   localhost: {
   },
   fuji: {
    
   }
 },
 paths: {
   sources: "./contracts",
   tests: "./test",
   cache: "./cache",
   artifacts: "./artifacts"
 }

};

引用自:https://ethereum.stackexchange.com/questions/98340