Solidity
ProviderError:超出最大程式碼大小
我正在嘗試使用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" } };