本文主要内容翻译自Learn Blockchains by Building One
本文原始链接,转载请注明出处。
作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链。
对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。
但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固。通过构建一个区块链可以加深对区块链的理解。
准备工作
本文要求读者对Python有基本的理解,能读写基本的Python,并且需要对HTTP请求有基本的了解。
我们知道区块链是由区块的记录构成的不可变、有序的链结构,记录可以是交易、文件或任何你想要的数据,重要的是它们是通过哈希值(hashes)链接起来的。
如果你还不是很了解哈希,可以查看这篇文章
环境准备
环境准备,确保已经安装Python3.6+, pip , Flask, requests
安装方法:
pip install Flask==0.12.2 requests==2.18.4
同时还需要一个HTTP客户端,比如Postman,cURL或其它客户端。
参考源代码(原代码在我翻译的时候,无法运行,我fork了一份,修复了其中的错误,并添加了翻译,感谢star)
开始创建Blockchain
新建一个文件 blockchain.py,本文所有的代码都写在这一个文件中,可以随时参考源代码
Blockchain类
首先创建一个Blockchain类,在构造函数中创建了两个列表,一个用于储存区块链,一个用于储存交易。
以下是Blockchain类的框架:
class Blockchain(object):
def __init__(self):
self.chain = []
self.current_transactions = []
def new_block(self):
# Creates a new Block and adds it to the chain
pass
def new_transaction(self):
# Adds a new transaction to the list of transactions
pass
@staticmethod
def hash(block):
# Hashes a Block
pass
@property
def last_block(self):
# Returns the last Block in the chain