class Blockchain(object):
# 定义两个列表,用于记录区块链及交易信息
def __init__(self)
self.chain = []
self.current_transaction = []
def new_block(self):
# 创建一个新的 Block 区块,并添加到区块链中
pass
def new_transaction(self):
#在交易中添加一个交易信息
pass
@staticmethod
def hash(block):
# 通过 Hash 算法返回区块的Hash 值
pass
'''
6.接下来我们完善区块链创建区块的方法,想一想在区块链创世之初,还没有任何区块的时候,这个时候区块链刚刚被创建,
因此我们需要创建区块的时候,制定一个创世区块,并给他添加一个工作量证明,先来理一下创建新区块需要做的哪些事情,
需要记录前面一个区块的hash 地址,需要记录工作量的证明,没有工作量,谁给你发工资,类似于公司里的考核,接下来我们
就来实现 new——block 方法
'''
def new_block(self,proof,previous_hash=None):
'''
生成新块
:param proof:<int>工作量证明,他是一个工作量算法对应的一个值
:param previous_hash:(Optional)<str>前一个区块的 hash 值
:return:<dict> 返回一个新的块,这个块 block 是一个字典结构
'''
block = {
# 新的 block 对应的 index(当前区块长度+1)
'index':len(self,chain) + 1
# 时间戳,记录区块创建的时间(系统时间)
'timestamp':time(),
# 记录当前的交易记录,即通过 new_transactions 创建的交易,记录在这个新的 block 里
'transactions':self.current_transaction,
# 工作量证明
'proof':proof
# 前一个 block 对应的 hash 值
'previous_hash':previous_hash or self.hash(self.chain[-1]),
}
# 重置当前的交易,用于记录下一次交易
self.current_transaction = []
# 将新生成的 block 添加到 block 列表中
self.chain.append(block)
# 返回创新的 block
return block
''' 前面说了在区块链创建之初,需要先创建创世块,这个创世块应该在哪个位置被创建呢?没错,就是和区块链一起创建,自然是在__init__方法
中,接下来我们看看__init__方法。'''
def __init__(self)
self.current_transaction = []
self.chain = []
pass
Python-区块链初识
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
- 不同阶段的提问类型及问题的目的难题陈述和重构阶段 全面收集信息类,还原事实,找到为什么要解决这个难题,以及有哪些资...
- 2017年6月持仓曲线 大福持仓:40%。 今日操作:做T。 操盘说明:大盘如期展开洗盘,持仓做T。 新股红利在悄...