学习用Python实现简单区块链

这个文章是对http://t.csdn.cn/XAKL6

的细节补充,以及我在学习中踩到的坑和解决方法。

1.端口号被占用:有时候会遇到,明明代码没有错,但是,127.0.0.1:5000这个网页就是打不开,这个时候,win+x打开 windows终端,输入netstat -ano | findstr 5000,这个时候会显示

再输入TASKKILL /F /PID 29080

TASKKILL /F /PID 5928

停止这两个进程,这个时候就能顺利的打开了

2.app.run(host='0.0.0.0', port=port, debug=True),debug填True,可以打开flask的调试模式,在更新代码后会自动检测并且重启app。届时需要重新填入数据,从头开始。

3.在postman上为http://127.0.0.1:5000/nodes/register和http://127.0.0.1:5001/nodes/register发送post请求,注册节点

{
    "nodes": ["http://127.0.0.1:5000", "http://127.0.0.1:5001"]
}

再为5000这个节点执行/transactions/new

{
    "sender": "Alice",
    "recipient": "Bob",
    "amount": 5
}

执行/mine此时查看/chain,可以看到两个信息,而5001没有交易。

最后执行在5000和5001下执行/nodes/resolve,发现5001并没有更新,在测试后发现resolve_conflict这个函数返回的永远是false,进一步检查response.status_code == 200不成立,去掉后。再次进行测试,仍然不成立,看来不是这个问题。

分析原因,第一钟情况,找不到更长的链(url解析错误,未导入节点......)

第二种情况,共识错误(未通过哈希校验、工作量证明出错...)

接着对两种错误进行了各种测试,发现是self.valid_chain(chain),执行时一直返回错误,是其中的代码写错了。

4.resolve_conflict()函数下,if response.status_code == 200:这个状态码,应该改成201,因为返回的状态码就是201

总结一下学到的内容,学习了postman的基本使用方法,还有复习回顾了python基础语法和flask框架.

完结!计划在这个demo的基础上,增加一个mongoDB云数据库,将链存在线上试一试,这样就不用每次测试的时候用postman了。

升级2.0版本的区块链网络:增加了一个mongoDB云数据库用于存储链的信息,代码我放到github上了,注释非常非常的详细(不信自己去看mock123456/blockchain at 区块链2.0 (github.com)).有什么不懂得可以问我哦..

第一次使用github的同学,注:

1.新建一个项目,然后在终端输入git clone GitHub - mock123456/blockchain: python区块链小练习

2.如果下载不了,并且github.com打不开,可以下载一个fastgithub插件,这个插件很好用,可以自动切换ip地址,加速github打开.CSDN上有下载安装教程

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值