Contract-Invocation
truffle-contract 錯誤:數字最多只能安全儲存 53 位
我正在使用
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 上使用)的問題。
truffle
v5 和truffle-contract
v4 不起作用。使用最新的 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