Solidity

警告:合約程式碼大小超過 24576 字節

  • July 27, 2022

我正在使用安全帽,並且在嘗試編譯程式碼時它向我顯示了一個警告,其中包含

@uniswap/v2-periphery/contracts/UniswapV2Router02.sol:12:1: Warning: Contract code size exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries.
contract UniswapV2Router02 is IUniswapV2Router02 {
^ (Relevant source part starts here and spans across multiple lines).

我沒有寫任何名為 UniswapV2Router02 的契約,儘管我將它導入契約程式碼

pragma solidity 0.6.6;

import '@uniswap/v2-periphery/contracts/UniswapV2Router02.sol';

如何縮小我正在編寫的契約並導入 uniswap 路由器?

這是配置文件

const config = {
 solidity: "0.6.6",
 paths: {
   artifacts: "./src/artifects",
 },
 networks: {
   goerli: {
     chainID: 5,
     url: INFURA,
     accounts: [
       "0xTHE_ACCOUNT",
     ],
     timeout: 60000,
   },
 },
 settings: {
   optimizer: {
     enabled: true,
     runs: 200,
   },
 },
};

export default config;

有一些方法可以減少您的契約規模。首先你應該計算你的合約大小,然後啟用優化器(低執行)來減少智能合約的大小。如果您的問題仍然存在,您應該使用

在您的安全帽項目文件夾中,轉到文件hardhat.config.js並將以下程式碼放入 module.exports

module.exports = { solidity: { version: "0.5.15", settings: { optimizer: { enabled: true, runs: 200 } } }

希望它可以幫助你。

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