目录
大概来说:
- 定义了一个名为Blockchain的类,用于构建区块链。
- 在Blockchain类中,定义了创建区块、获取上一个区块、工作量证明、哈希计算、验证区块链等方法。
- 使用Flask框架创建了一个Web应用,提供了挖矿、获取整个区块链和验证区块链的API接口。
- 运行Web应用,监听5000端口。
一、代码展示
# Module 1 - Create a Cryptocurrency
# To be installed:
# Flask==0.12.2: pip install Flask==0.12.2
# Postman HTrp Client: https://www.getpostman.com
# requests==2.18.4: pip install requests==2.18.4# 时间戳
import datetime
import hashlib
import json# Flask可以定义Web应用的路由(URL到Python函数的映射),并处理HTTP请求和响应。
# jsonify是一个函数,用于将Python对象转换为JSON格式的响应。
# 当你在Flask路由函数中返回一个jsonify对象时,Flask会自动将该对象对应的数据转换为JSON格式,
# 并设置合适的HTTP响应头,以便客户端可以正确解析响应内容。
from flask import Flask, jsonify, request
import requests
from uuid import uuid4
from urllib.parse import urlparse# 1******Building a Blockchain
class Blockchain:
# 初始化区块链类
def __init__(self):
self.transactions = [] # 存储交易信息
self.chain = [] # 存储区块链
self.create_block(proof=1, previous_hash='0') # 创建创世区块
self.nodes = set() # 存储网络节点# 创建一个新的区块
def create_block(self, proof, previous_hash):
block = {
'index': len(self.chain) + 1,
'timestamp': str(datetime.datetime.now()),
'proof': proof,
'previous_hash': previous_hash,
'transactions': self.transactions
}
self.transactions = [] # 清空交易列表
self.chain.append(block) # 将新区块添加到链中
return block # 返回创建的区块# 获取链中最后一个区块
def get_previous_block(self):
return self.chain[-1]# 工作量证明(Proof of Work)
def proof_of_work(self, previous_proof):
new_proof = 1
check_proof = False
while check_proof is False:
hash_operation = hashlib.sha256(str(new_proof**2 - previous_proof**2).encode()).hexdigest()
if hash_operation[:4] == '0000':
check_proof = True
else:
new_proof += 1
return new_proof# 哈希函数

最低0.47元/天 解锁文章
216

被折叠的 条评论
为什么被折叠?



