关于 53 位使用 Truffle 部署合约的问题

Problems about 53 bits deploying contracts with Truffle

我正在尝试使用 truffle 5.1.19 部署智能合约,如下所示:

pragma solidity 0.5.16;

contract Simple {

string public message;

function Hello(string memory _initialMessage) public {

    message = _initialMessage;

}

function setMessage(string memory _newMessage) public {

    message = _newMessage;

 }

}

当我 运行 truffle deploy --network 陷入困境时,我遇到了下一个错误:

  Error: Number can only safely store up to 53 bits

at assert (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/bn.js/lib/bn.js:6:1)

at BN.toNumber (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/bn.js/lib/bn.js:506:1)

at Object.hexToNumber (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-utils/src/utils.js:234:1)

at Method.outputBlockFormatter (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-core-helpers/src/formatters.js:236:1)

at Method.web3.eth.getBlock.method.outputFormatter (/usr/local/lib/node_modules/truffle/build/webpack:/packages/interface-adapter/dist/shim/overloads/ethereum.js:37:1)

at Method.formatOutput (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-core-method/src/index.js:163:1)

at sendTxCallback (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-core-method/src/index.js:473:1)

at /usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-core-requestmanager/src/index.js:147:1

at /usr/local/lib/node_modules/truffle/build/webpack:/packages/provider/wrapper.js:112:1

at XMLHttpRequest.request.onreadystatechange (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/web3-providers-http/src/index.js:96:1)

at XMLHttpRequestEventTarget.dispatchEvent (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:1)

at XMLHttpRequest._setReadyState (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/xhr2-cookies/dist/xml-http-request.js:208:1)

at XMLHttpRequest._onHttpResponseEnd (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/xhr2-cookies/dist/xml-http-request.js:318:1)

at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/xhr2-cookies/dist/xml-http-request.js:289:47)

at IncomingMessage.emit (events.js:203:15)

at endReadableNT (_stream_readable.js:1145:12)

at process._tickCallback (internal/process/next_tick.js:63:19)

Truffle v5.1.19 (core: 5.1.19)

Node v10.19.0

我的网络 truffle-config 是下一个:

 mired: {

  host: "10.xxx.xxx.xxx",

  port: 8080,             // Custom port

  network_id: "*",       // Custom network

  gas: 0,           // Gas sent with each transaction (default: ~6700000)

  gasPrice: 0x0,  // 20 gwei (in wei) (default: 100 gwei)

  from: "0x8...............",        // Account to send txs from (default: accounts[0])

  // websockets: true        // Enable EventEmitter interface for web3 (default: false)

},

将我的 truffle 降级到 4.1.15 版本时,此错误消失了,但我不明白为什么在实际版本中会出现此错误。提前致谢

如果您像我一样使用法定人数。在 truffle-config.js 上,你必须写 type:"quorum" 才能解决问题。