SimpleCoin简介
SimpleCion是一个简单的,不太安全,不太完整的用Python制作的区块链实现。这个项目的目标是制作一个有效的区块链货币,尽可能的使它简洁,可以用作教材。
这个项目只为了满足个人兴趣。如果你想制作自己的加密货币,你可以看看Bitcoin Repository这个仓库。
区块链是什么?
看看 Bitcoin organization 维基百科介绍,可以看到如下的定义:
区块链是一个由所有节点共享的事务型数据库,每个节点都加入基于Bitcoin协议的系统中。货币区块链的完整副本包含货币交易的每笔记录。有了这些信息,人们就可以查看每个地址过去任何时刻的存储金额。
你可以在这篇文章Bitcoin Paper中获得更多的信息。
运行SimpleCoin
首先,安装requirements.txt
.
pip install -r requirements.txt
其次,你有两个选择:
- 运行
miner.py
文件,作为节点并开始挖矿 - 运行
wallet.py
文件,作为用户并发起交易(发起交易前必须运行一个节点,话句话说,你必须运行miner.py
文件)
注意:不要在Python IDLE中运行该项目,要在控制台运行。miner.py
文件包含的并发进程,无法在Python IDLE中运行。
代码如何工作
该项目包含2个主要的脚本:
miner.py
wallet.py
Miner.py
这个文件应该是最重要的,运行它将创建一个节点(类似一个服务器端)。从这里你可以连接到区块链,并通过挖矿处理交易(该交易由其他用户发起)。作为这项工作的奖励,你会得到一些硬币。存在的节点越多,区块链就越安全。
miner.py
包含两个并发的进程:
第一个进程负责挖矿,更新区块链,并找到工作证明。
第二个进程运行flask服务器,对等节点和用户可以连接,并以此请求整个区块链或提交新的交易。
注意:并行程序无法再Python IDLE中运行,所以要确保你是在控制台中运行它的。
Wallet.py
该文件适用于那些不想成为节点的简单用户。运行这个文件可以让你生成一个新地址,发送硬币并检查你的交易记录(请记住,如果你在本地服务器上运行这个文件,你将需要一个"矿工"来处理你的交易)。
贡献
欢迎任何人参与这个项目。任意推送你的pull request(即使你是编程新手)
注意:这个项目的想法是构建一个非常简单的区块链系统,因此请确保你所有的代码都易于阅读(避免一行中代码过多),如果它们不重要,则不要引入复杂的更新。换句话说,保持简单
拒绝
绝不能将这个项目用于实际目的,它缺乏安全性并可能包含一些错误。
原文链接:https://github.com/cosme12/SimpleCoin
原文作者:cosme