这个文章是对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上有下载安装教程