首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未明错误:错误:数字只能安全存储最多53位。

未明错误:错误:数字只能安全存储最多53位。
EN

Ethereum用户
提问于 2017-06-08 20:42:51
回答 2查看 2.8K关注 0票数 1

我试图在区块链上执行一个事务,方法是使用以下Javascript代码将一个项添加到映射中。请记住,它是由聚合物执行的。

代码语言: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函数如下:

代码语言:javascript
复制
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。但是,标题中提到的错误有什么原因出现吗?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2017-06-09 06:57:23

经过长时间的辩论和研究,我发现了这个问题。该问题依赖于事务的gas字段。当改变为一个较小的数字,例如1000000,它的工作非常好。它只需要这样做,我提供的gas参数非常高,以至于它不知道该如何处理它。

票数 1
EN

Ethereum用户

发布于 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)

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/17524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档