web3部署智能合约碰到的一个奇怪问题

都是gasLimit惹的祸 解决一个奇怪问题Error: Number can only safely store up to 53 bits

原来好好的node endpointtest.js ,结果在新的私链上怎么都不能运行了.
这个部署js文件就不上了,很简单.
只要 gas设置稍大一点就报标题的那个错误,但是gas设置小了,又满足不了要求.
经过排查发现时genesis.json指定的gasLimit太大了,导致web3.js在计算的时候出错.

私链的genesis.json

{
    "config": {
        "chainId": 89120348582,
        "homesteadBlock": 1,
        "eip155Block": 1,
        "eip158Block": 1,
        "ByzantiumBlock":1
    },
    "difficulty": "2",
    "gasLimit": "0xff210000000000000",
    "alloc": {
        "0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" },
        "0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" }
    }
}

后来修改gaslimit为990000000000000,总算解决问题.看来gaslimit不是随便设置一个就可以的.
太小会造成你的合约经常超出最大限制而无法运行,太大就会出现标题中的问题.

感谢开源软件,可以添加一些调试信息来发现错误.

posted on 2017-12-15 23:30  baizx  阅读(1052)  评论(0编辑  收藏  举报