Error: Returned error: VM Exception while processing transaction: out of gas
Error: Returned error: VM Exception while processing transaction: out of gas
我使用 migrate 在本地 truffle env 上部署了一个简单的智能合约。我正在使用 react-components 包来处理智能合约。
所以我的问题是简单的 getter 和 setter 正在工作,但是当我尝试 运行 一个带有 2-3 个参数的方法时,我得到了这个异常。
我的truffleconfig如下:
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
contracts_build_directory: path.join(__dirname, "app/src/contracts"),
networks: {
develop: { // default with truffle unbox is 7545, but we can use develop to test changes, ex. truffle migrate --network develop
host: "127.0.0.1",
port: 8545,
network_id: "*",
gas: 6921975,
gasPrice: 25000000000
}
},
solc: {
optimizer: {
enabled: true,
runs: 200
}
}
};
在我的 React 组件中,我这样调用:
<div className="section">
<h2>Testing Poni</h2>
<p>
This is a initial test to create Poni
</p>
<p>
<strong>Stored Value: </strong>
<ContractData
drizzle={drizzle}
drizzleState={drizzleState}
contract="PoniOwnership"
method="getMyPonies"
/>
</p>
<ContractForm drizzle={drizzle} contract="PoniOwnership" method="createPoni" />
</div>
我的solidity函数是这样的:
function createPoni(string memory _code, string memory _imgLink) public onlyOwner poniIsUnique(_code){
uint randDna = _generateRandomDna(_code);
//!!pass imgHash here also later
_createPoni(_code, _imgLink, randDna);
}
function _createPoni(string memory _code, string memory _imgLink, uint _dna) private {
uint id = ponies.push(Poni(msg.sender, _code, _imgLink, _dna, 0, true)) - 1;
poniToOwner[id] = msg.sender;
codeToId[_code] = id;
ownerPoniCount[msg.sender] = ownerPoniCount[msg.sender].add(1);
emit NewPoni(id, _code, _imgLink, _dna);
}
struct Poni {
address owner;
string code;
string imgLink;
uint dna;
}
我已经尝试从毛毛雨反应组件中额外发送气体,因为这里给出了选项:https://www.trufflesuite.com/docs/drizzle/react/react-components,但它会抛出错误,说功能不可支付。我不知道如何处理这个异常。
您想为交易设置更高的 gas
您想调整 ContractForm 组件上的 sendArgs({gas:})。
https://www.trufflesuite.com/docs/drizzle/react/react-components#contractform
我使用 migrate 在本地 truffle env 上部署了一个简单的智能合约。我正在使用 react-components 包来处理智能合约。
所以我的问题是简单的 getter 和 setter 正在工作,但是当我尝试 运行 一个带有 2-3 个参数的方法时,我得到了这个异常。
我的truffleconfig如下:
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
contracts_build_directory: path.join(__dirname, "app/src/contracts"),
networks: {
develop: { // default with truffle unbox is 7545, but we can use develop to test changes, ex. truffle migrate --network develop
host: "127.0.0.1",
port: 8545,
network_id: "*",
gas: 6921975,
gasPrice: 25000000000
}
},
solc: {
optimizer: {
enabled: true,
runs: 200
}
}
};
在我的 React 组件中,我这样调用:
<div className="section">
<h2>Testing Poni</h2>
<p>
This is a initial test to create Poni
</p>
<p>
<strong>Stored Value: </strong>
<ContractData
drizzle={drizzle}
drizzleState={drizzleState}
contract="PoniOwnership"
method="getMyPonies"
/>
</p>
<ContractForm drizzle={drizzle} contract="PoniOwnership" method="createPoni" />
</div>
我的solidity函数是这样的:
function createPoni(string memory _code, string memory _imgLink) public onlyOwner poniIsUnique(_code){
uint randDna = _generateRandomDna(_code);
//!!pass imgHash here also later
_createPoni(_code, _imgLink, randDna);
}
function _createPoni(string memory _code, string memory _imgLink, uint _dna) private {
uint id = ponies.push(Poni(msg.sender, _code, _imgLink, _dna, 0, true)) - 1;
poniToOwner[id] = msg.sender;
codeToId[_code] = id;
ownerPoniCount[msg.sender] = ownerPoniCount[msg.sender].add(1);
emit NewPoni(id, _code, _imgLink, _dna);
}
struct Poni {
address owner;
string code;
string imgLink;
uint dna;
}
我已经尝试从毛毛雨反应组件中额外发送气体,因为这里给出了选项:https://www.trufflesuite.com/docs/drizzle/react/react-components,但它会抛出错误,说功能不可支付。我不知道如何处理这个异常。
您想为交易设置更高的 gas
您想调整 ContractForm 组件上的 sendArgs({gas:})。
https://www.trufflesuite.com/docs/drizzle/react/react-components#contractform