区块链智能合约超长解决办法

问题重现

  • 前置条件

我写了一个智能合约大概25kb左右,一共500多行。

  • 问题描述
  1. remix调试提示【Contract code size over limit】
    Contract creation initialization returns data with length of more than 24576 bytes. The deployment will likely fails.More info: eip-170
    在这里插入图片描述
  2. 使用truffle migrate ***部署(编译已通过)时提示,ran out of gas等错误信息
    在这里插入图片描述
  1. truffle 解决办法
    与remix类似需要打开代码优化选项。只是需要在config.js或则truffle-config.js中设置相应属性即可。如下图所示。需要注意如果之前已经在truffle部署失败,此时需要强制重新编译和部署。分别执行:
    编译:truffle compile –compile-all
    部署:truffle migrate –reset
    即可
    在这里插入图片描述
    大致原因【鉴于我们的合约现在非常大,部署和/或测试它可能会超过以太坊区块的gas限制。这是限制大型应用程序部署在以太坊网络上的原因。无论如何要部署它,在编译期间尝试使用代码优化器,方法是更改truffle.js文件以包含用于优化的solc设置】,感谢DApps给予的帮助。

    结束拉!