Solidity部署问题

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消耗

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

原文地址:https://www.cnblogs.com/huahuayu/p/8664741.html