Solidity是一个有诸多限制的语言,部署智能合约以及运行都需要gas。

 

部署的时候如果程序太大,所需要的gas会超过一个区块的上限,这样就没法部署合约。如果用metamask测试的话会弹出以下警告,强行执行部署交易也没用:

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending? 

 

这时候你需要做的:

1. 检查代码,精简逻辑

2. 开启编译优化器,大概能减少30% ~ 40%的部署gas消耗

Solidity部署问题

 

3. 如果还不行,将一些继承来的contract写成library的形式,比如oraclize api,有一千行左右,可以考虑写成library的形式 https://github.com/oraclize/ethereum-api/tree/master/lib-experimental

示例: https://dapps.oraclize.it/browser-solidity/#version=soljson-v0.4.19+commit.c4cbbb05.js&optimize=false&gist=ad3d1f6007942b727f5909b55e6445d2

相关文章:

  • 2021-08-18
  • 2021-10-18
  • 2021-09-22
  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-29
  • 2022-02-17
  • 2021-10-04
  • 2021-10-22
  • 2022-01-12
  • 2022-03-07
相关资源
相似解决方案