区块链记录合约开发中遇到的坑
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
可能存在原因:
- 节点没有同步完成
- 当指向一个实际没有实现该API的地址时,也会发生同样的事情。如果回退函数不返回字符串,则解析字符串时会遇到麻烦。
三、Invalid JSON RPC response: undefined
参考:here
原因:代码中可能用到了personal.unlock..等操作,但是私有链启动时没有加上personal参数
解决办法:启动命令 - "personal,db,eth,net,web3,miner" //添加personal
以上是关于区块链记录合约开发中遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章
区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码