最近在纠结以后的研究方向,就先看了看云链。即一种云计算+区块链+物联网设备的架构模式。虽然还是雨里雾里,还是决定先把区块链的编程落实一下。
0x00 系统环境
本次使用的为Python3.6.5 需要用到的库包括hashlib,flask(0.12.2),time
0x01 区块链结构
这个部分看了一些的资料,慢慢理清了结构。所谓区块链就是一条链(chain),在python里用一个很长的链表list表示。列表里每一项分别为一个交易记录(transactions)。而每个交易记录里又包括这个交易的各种信息:交易的标号(index),交易创建的时间(timestamp),交易内容(transactions),工作证明/挖矿(proof),前一个块的哈希值(previous_hash)。再其中,交易内容又包括:接收者(recepient),发送者(sender),交易金额(amount)。这样看起来太复杂了,用一个图来呈现一下吧。
0x02 区块链逻辑
整个区块链根据结构可以大致分为几个模块:
1.区块链的初始化 2.新块(block)的建立 3.新交易的建立(transactions) 4.工作证明算法
① 首先是区块链的建立,之前介绍了区块链在python中就是一个很长的列表,其中存放了一个一个的节点(block)。
初始化区块链很简单,就是申请一个新的列表。
class Blockchain(object):
def __init__(self):
self.chain = []
② 有了链以后我们就可以添加节点(block&#