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

Posted 宣之于口

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链记录合约开发中遇到的坑相关的知识,希望对你有一定的参考价值。

记录合约开发中遇到的坑

一、 交易没有被广播

问题:合约在在线编译器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

以上是关于区块链记录合约开发中遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码

区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码

Hyperledger Fabric 智能合约开发 链码

区块链

区块链DAPP智能合约系统开发

区块链交易所开发,合约交易系统开发,钱包开发