三分钟区块链笔记#
区块链搭建(一)
环境:Python
前言
0
这篇文章是我根据b站搜到的教学视频,总结出来自己的第一篇关于如何用Python搭建区块链的笔记,是我从理论向实践迈出的重要一步吧。目前这篇文章并没有涉及区块链的所有内容,并且仅涉及到在本地软件中一些类区块链功能的实现。不过这些功能的实现,是为以后真正搭建出自己的区块链而作的准备~
本篇文章涉及的内容,均来自b站up主AsianWhale上传的视频**《[教程向]手把手Python搭建区块链》****,BV号为BV1Hb411c7oH。**感兴趣的小伙伴可以去学习哦!
本篇文章的代码非原创,均来自上述视频中的内容。
本来是向做“三分钟Fintech笔记”的,但是篇幅确实写得有点长了······下次会注意的!orz
菜单
1
在进行区块链搭建之前,首先我们先要列出本篇文章所需要实现的区块链功能,分别是:
(1)创建一个交易
(2)挖一个区块
(3)查看区块链中的所有区块
(4)查看区块链中所有的参与者
(5)验证交易有效性
(6)验证区块链的有效性
菜菜认为先从宏观的层面把握,要比一个一个函数开始看起会更好一些,我们首先给出本地命令的菜单,这个菜单涉及了这篇文章涉及到的所有要实现的区块链功能,我们可以通过输入:1、2、3···的指令来选择我们要进行的操作,代码如下:
(秀米排版代码制表符有问题,请尽量不要直接复制粘贴,否则会报错invalid character in identifier)
while waiting_for_input:
print('Please choose')
print('1: Add a new transaction value')
print('2: Mine a new block')
print('3: Output the blockchain blocks')
print('4: Output participants')
print('5: Check transaction validity')
print('h: Manipulate the chain') # Manipulate 篡改
print('q: Quit')
get_user_choice = input('Please choose your act:')
user_choice = get_user_choice
if user_choice == '1':
pass
elif user_choice == '2':
pass
elif user_choice == '3':
pass
elif user_choice == '4':
pass
elif user_choice == '5':
pass
elif user_choice == 'h':
pass
elif user_choice == 'q':
print('User left!')
break
定义函数
2
一、创建一个交易
首先,我们知道一个最简单的交易包含了付款方、收款方和交易金额。此处我们暂时只考虑这三个变量,分别将其定义为sender、recipient、amount,于是:
注意最后几行的if语句,是对第一部分提到的菜单条件语句的修改,无法单独运行,后面同理。
# 定义全局变量
open_transaction = []
owner = 'Passer'
participants = {'Passer'} # 名字可以自定义
def get_transaction_value():
''' Return the input of recipient and amount '''
tx_recipient = input('Enter the recipient of the transaction:')
tx_amount = float(input('Your transaction amount please:'))
return tx_recipient, tx_amount
def add_transaction(recipient, sender=owner, amount=1.0):
''' Append a new transaction to the list of open_transaction'''
transaction = {
'sender':sender,
'recipient':recipient,
'amount':amount
}
open_transaction.append(transaction)
participants.add(sender)
participants.add(recipient)
return True
# 此处对菜单部分进行修