如果你想知道一件事,把它拆开再重新组装是最快的方法。了解它在实际操作中的工作原理以及每个组件的具体功能。这篇文章主要写的是如何构建一个区块链的例子。源代码在这里,是丹尼尔范弗莱明开发的。详细教程在这里,本文只是快速设置和操作。
首先你需要一个基本的Linux环境,我只在WSL Ubuntu上进行了测试。以下步骤不保证兼容其他Linux系统,但WSL Ubuntu一定没问题。
安装WSL的时候我就不详细写了。有很多在线教程。如果不能配置WSL,可以参考这篇文章。
系统安装好之后,还需要一个http工具进行API交互。
邮差官网
这个项目需要python3.6,依赖Flask,请求库。如果不知道系统自带的python版本,可以使用这个命令查看“python -v”。ubuntu自带python3,只需要安装Flask并请求:
pip?安装?烧瓶==0.12.2?requests==2 . 18 . 4如果没有安装pip:sudo,是否复制
?apt?安装?Python3-pipCopy你可以去github下载源代码或者从我的备份站点下载:
#下载源代码curl?-哦?运行https://down.tstrs.me/blockchain/blockchain.py# python 3?Blockchain.pyCopy显示如下输出:
但是如果出现这样的错误:
您可以使用接下来的命令修复错误并重新运行:pip3?安装?FlaskCopy
调试如果运行正常,将会构建一个完整的区块链。以下步骤是如何使用区块链。邮递员中的挖掘请求?http://localhost:5000/矿?来矿(GET):交易
查看所有块
使用postman请求http://localhost:5000/chain?可以得到所有的块信息(GET): [X] [X]共识到目前为止,我们已经有了一个基本的可以挖掘和接受事务的区块链,但是区块链系统应该是分布式的。既然是分布式的,怎么才能让所有的节点链保持一致?首先要让它知道和它相邻的节点,每个节点都要保留网络中其他节点的记录。当一个节点与另一个节点有不同的链时,就会产生冲突,所以需要制定一个规则:这个网络中最长的链是最权威的。使用此规则在网络中的节点之间达成共识。
您可以在另一台机器上再次运行该节点,也可以在当前机器的不同端口上运行两个实例。我用的方法是后者:
#获取另一个脚本。脚本端口是5001。当然,你也可以自己复制。修改端口只需要修改blockchain.py文件最后一行“port=”后的数字就可以设置端口curl?-哦?https://down.tstrs.me/blockchain/blockchain1.pypython3? 尚力财经小编2022 block chain 1 . py copy所以我有两个节点:http://127.0.0.1:5000和http://127.0.0.1:5001。注册新节点:
{'nodes ':[' 3358127 . 0 . 0 . 1:5000 ']} copy返回的信息如图所示,节点添加成功。 Sync然后我在节点0上挖掘一些新的块,以确保链更长。然后调用一致性算法/nodes/resolve?在节点1上。(GET):
区块链尚力财经小编2022确实好玩,但是我好像发现了一个很大的漏洞。既然短链会被长链取代,那就说有人从比特币的创世块开始用力分叉,跑到线下超过了现在的高度。再接入网络不就可以把原来的链条换掉了吗?但是,这种计算能力是不可想象的。在量子计算机出现之前,我认为这种数字货币加密货币是非常安全的。
参考
通过用python源代码
构建一个简单的区块链来学习区块链