我试图在区块链上执行一个事务,方法是使用以下Javascript代码将一个项添加到映射中。请记住,它是由聚合物执行的。
var id = Math.random().toString(36).substr(2, 10);
var receiver = this.assetOwner;
console.log(this.assetsBlockchain);
var asset = this.assetsBlockchain[0].address;
var start = this.web3.toBigNumber(1000).dividedBy(1000).plus(3600);
var end = this.web3.toBigNumber(1000).dividedBy(1000).plus(10800);
var factory = this.web3.eth.contract(this.rentalRequestFactoryABI.abi).at(this.rentalRequestFactoryAddress);
var tx = factory.createRentalRequest(id, receiver, asset, start, end, {
from: this.mobilist,
gas: this.web3.toWei(0.5, "ether")
});
console.log(tx);smart合同中的createRentalRequest函数如下:
function createRentalRequest(bytes32 _id, address _receiver, address _asset, uint _start, uint _end) returns (bool) {
RentalRequest memory request;
request.receiver = _receiver;
request.asset = _asset;
request.start = _start;
request.end = _end;
request.accepted = false;
request.rejected = false;
requests[_id] = request;
Notify(msg.sender, _receiver, _asset);
return true;
}我将尝试的一个解决方案是接受uints作为byte数组并将它们转换为uint。但是,标题中提到的错误有什么原因出现吗?
发布于 2017-06-09 06:57:23
经过长时间的辩论和研究,我发现了这个问题。该问题依赖于事务的gas字段。当改变为一个较小的数字,例如1000000,它的工作非常好。它只需要这样做,我提供的gas参数非常高,以至于它不知道该如何处理它。
发布于 2019-05-21 19:05:43
同意DevNebulae的观点。在许多博客中,我发现这是一个特鲁弗版本的问题。松露v5会造成这种类型的问题。他们建议降级为块菌@4.1.15。
对我来说,情况并非如此。我继续使用松露v5。我已经解决了,当我寄出一笔交易时,检查我的汽油限额。gasLimit: web3.utils.toHex( gas_limit ),//为这项交易提供的最大气体(气体限制)
节点: v8.11.4信托: 5.0.12 Web3: 1.0.0-beta.52信托-合同: 4.0.11信托-接口-适配器@0.1.2│└──web3 3@1.0.0-beta.37└──web3@1.0.0-beta.37 Ganache-cli: v6.4.3 (ganache-core: 2.5.5)
https://ethereum.stackexchange.com/questions/17524
复制相似问题