关于 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" 才能解决问题。
我正在尝试使用 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" 才能解决问题。