写个教材:从 0 开始,用 Python 写区块链

2018-08-07 15:46:40 +08:00
 cr4fun

现在放在 github 上面,目前写到第 4 课了,每一课单独一个文件夹。

目前实现了简单的区块链,准备每天更新一课。

https://github.com/OpensourceBooks/blockchain

2707 次点击
所在节点    Python
6 条回复
nine99
2018-08-07 16:31:13 +08:00
放[]里就是区块链了吗,真搞笑
cr4fun
2018-08-07 17:48:36 +08:00
@nine99 一个区块的哈希和前一个哈希能对上,就形成了区块链。
VVVVVEX
2018-08-07 18:08:46 +08:00
KV 数据库了解下
cr4fun
2018-08-07 19:00:47 +08:00
@VVVVVEX python 的轻量级 dbm 如何? 或者你建议用 redis ?
adkudao
2018-08-08 10:23:24 +08:00
不错, 大力支持, 希望楼主能坚持下去!
cr4fun
2018-08-09 19:18:14 +08:00
最新更新:

区块链两个节点之间可以同步数据了。

但是,还没有完成数据验证。



下一节课,将要写完数据验证。

增加了节点同步的区块链
增加一个 list,保存节点。
```
nodes=[]
```
为了方便同步数据,我们要增加一个接口,可以获知区块链高度。

http://localhost:8080/blocks/height

这样,即可得到区块链的高度。当目标节点的区块链高度大于本地区块链高度时,才去同步。

查看节点

http://localhost:8080/nodes

添加节点

http://localhost:8080/nodes/add/localhost/9000

得到:
```
[
{
"ip": "localhost",
"port": 9000
}
]
```
在 8080 的节点中加入另一个节点 8081

http://localhost:8080/nodes/add/localhost/8081

查看 8080 节点

http://localhost:8080/nodes

在 8081 的区块链中加一条信息

http://localhost:8081/say/jerry2

在 8080 节点中同步

http://localhost:8080/blocks/sync

查看节点

如果没同步:
```
"no synced"
```

如果同步了:
```
"synced"
```
http://localhost:8080/blocks/all


详情,在 https://github.com/OpensourceBooks/blockchain/blob/master/5/readme.md

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX