当前位置:   article > 正文

学习用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上有下载安装教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/208454
推荐阅读
相关标签
  

闽ICP备14008679号