【区块链】记录合约开发中遇到的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loy_184548/article/details/79746034

记录合约开发中遇到的坑

一、 交易没有被广播

问题:合约在在线编译器remix上能够正常读写数据,在本地私有链上却失败数据写不进去,也没有任何错误提示。

例如:

> bikeshared.userRentStart.sendTransaction("0x34ecdbb13d4e58d5c7aa749feaf5c0f660a3d896",1, {from:user1})
===>
"0x05ba935316952c5d2f727bf665faad6535b7296761d5b06f6e57165885f57bbb"
查看:
> txpool.inspect
{
  pending: {
    0x1B0e770c80eAE3bF5a9d85F970C20Fcf02B2b63C: {
      61: "0x3F232c4d9b685754be7ECAF2eA0da154431Aeb9A: 0 wei + 90000 gas × 18000000000 wei"
    }
  },
  queued: {}
}
再查看:
{
  pending: {},
  queued: {}
}
===> 但是数据并没有被修改

原因:gas 和 gasPrice 太小了,开到下面这么大就成功了

> bikeshared.userRentStart.sendTransaction("0x34ecdbb13d4e58d5c7aa749feaf5c0f660a3d896",1, {from:user1, gas:500000, gasPrice:3800000000000})
"0x81edba1d917aaa8ea8c9cbfe885dfeec49f81a6a6041b3a4cec40589be8746a9"

二、BigNumber

问题: 当尝试在app.js中读取合约中数据时报错

Uncaught BigNumber Error: new BigNumber() not a base 16 number

参考:here

可能存在原因:

  1. 节点没有同步完成
  2. 当指向一个实际没有实现该API的地址时,也会发生同样的事情。如果回退函数不返回字符串,则解析字符串时会遇到麻烦。

三、Invalid JSON RPC response: undefined

参考:here

原因:代码中可能用到了personal.unlock..等操作,但是私有链启动时没有加上personal参数

解决办法:启动命令 - "personal,db,eth,net,web3,miner" //添加personal

猜你喜欢

转载自blog.csdn.net/loy_184548/article/details/79746034