为啥这个智能合约功能在使用 web3 提供程序的 Remix IDE 上不起作用?
Posted
技术标签:
【中文标题】为啥这个智能合约功能在使用 web3 提供程序的 Remix IDE 上不起作用?【英文标题】:Why this smart contract function doesn't work on Remix IDE using web3 provider?为什么这个智能合约功能在使用 web3 提供程序的 Remix IDE 上不起作用? 【发布时间】:2020-05-07 02:44:30 【问题描述】:使用 git,我得到了以太坊源代码并自己构建了它。并与 Remix IDE 的 web3 提供程序环境连接。 在下面的代码中,nums()函数执行得很好,但是add()函数超过了gas限制。
A.sol
pragma solidity >=0.4.21 <0.6.0;
contract A
uint num;
constructor(uint n) public
num = n;
function add(uint n) public
num += n;
function nums() public view returns (uint)
return num;
B.sol
pragma solidity >=0.4.21 <0.6.0;
import "./A.sol";
contract B
A a;
constructor(address addr) public
a = A(addr);
function add(uint n) public
a.add(n);
function nums() public view returns (uint)
return a.nums();
gas 限制设置为 0x2fefd8000,在 Remix IDE 上运行时设置为 1000000000。但是没有理由为什么gas限制超过800000。 你知道为什么吗?
【问题讨论】:
将 GAS 限制设置为3000000
,它在我的最后工作正常。
天啊。是工作。为什么一定要3000000??
Gas Cost 高于整个区块的交易允许无法执行,此类交易会自动失败。
【参考方案1】:
将GAS limit
设置为3000000,就可以正常使用了。
当气体限制设置为:1000000000
时交易失败的原因Gas Cost 高于整个区块允许的交易无法执行,此类交易会自动失败。
【讨论】:
以上是关于为啥这个智能合约功能在使用 web3 提供程序的 Remix IDE 上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章