Solidity
警告:合約程式碼大小超過 24576 字節
我正在使用安全帽,並且在嘗試編譯程式碼時它向我顯示了一個警告,其中包含
@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 } } }
希望它可以幫助你。