Contract-Invocation

truffle-contract 錯誤:數字最多只能安全儲存 53 位

  • May 21, 2019

我正在使用truffle-contract本地quorum節點並嘗試執行智能合約方法,但收到此錯誤:

錯誤:數字最多只能安全儲存 53 位

我就是這樣做的:

const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:22000'));

const ContractJSON = require('./build/contracts/MyContract.json');

//setting up for truffle-contract
var MyContract = truffleContract({
   abi: ContractJSON.abi,
   unlinked_binary: ContractJSON.bin,
   address: ContractJSON.address
});
MyContract.setProvider(web3.currentProvider);

var contract;
MyContract.deployed().then(instance => { 
   contract = instance;
   contract.myContractMethod(
       web3.utils.toHex('abc123'),       //bytes32
       Number(123));                     //uint256
})
.then(result => { console.log("RESULT " + result); })
.catch(err => { console.log("ERROR! " + err); });

契約本身有效,我也可以使用 與它進行互動truffle console,但truffle-contract給了我上面提到的錯誤。我究竟做錯了什麼?

這是新 Truffle 版本(在 Quorum 上使用)的問題。

trufflev5 和truffle-contractv4 不起作用。

使用最新的 v3`truffle-contract@3.0.7`解決了這個特定問題。

在許多部落格中,我發現這是一個 Truffle 版本問題。Truffle v5 會產生這種類型的問題。他們建議降級到 truffle@4.1.15

這對我來說並非如此。我繼續使用松露 v5。當我發送交易時,我通過檢查我的氣體限制來解決。gasLimit: web3.utils.toHex(gas_limit),//本次交易提供的最大gas(gas limit)

節點:v8.11.4 Truffle:5.0.12 Web3:1.0.0-beta.52 Truffle-contract:4.0.11 Truffle-interface-adapter@0.1.2 │ └── web3@1.0.0-beta.37 └─ ─ web3@1.0.0-beta.37 Ganache-cli: v6.4.3 (ganache-core: 2.5.5) Ethereumjs-tx: 1.3.4

引用自:https://ethereum.stackexchange.com/questions/65805