天天看點

web3部署智能合約碰到的一個奇怪問題都是gasLimit惹的禍 解決一個奇怪問題Error: Number can only safely store up to 53 bits

都是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不是随便設定一個就可以的.

太小會造成你的合約經常超出最大限制而無法運作,太大就會出現标題中的問題.

感謝開源軟體,可以添加一些調試資訊來發現錯誤.

繼續閱讀