我们要解决的核心问题是什么?
我们的方法:我们不仅研究理论,更动手创造。本次分享将通过我们团队的项目,带大家深入浅出地了解三种主流共识算法。
- 资料搜集 毕永娟
- PPT制作 高雯昊
- 代码实现 潘春凤
- 汇报展示 王鑫
- 网站搭建 王海燕
我们的方法:我们不仅研究理论,更动手创造。本次分享将通过我们团队的项目,带大家深入浅出地了解三种主流共识算法。
不再只看代码——在这里调整参数、点击运行,即可看到随机性和阈值如何影响结果。主题保持原汁原味,逻辑更可视。
引言:一个成功的项目,源于团队每一个成员的精心付出。
负责将复杂的算法逻辑转化为直观、可交互的前端界面。
编写了三种共识算法的核心 Python 模拟代码,为项目打下坚实基础。
搜集和整理了海量技术文档与资料,确保内容的准确性和深度。
将技术内容与美乐蒂主题融合,打造了本次分享的视觉体验。
负责整合团队成果,并在此刻与大家分享我们的探索故事。
从 PoW 到 PoS 再到 PBFT,核心代码均由潘春凤编写,并融入中文提示方便快速理解运行结果。
描述:模拟矿工不断修改 Nonce,寻找满足特定难度(如哈希以“0000”开头)的值。
import hashlib
import time
def pow_mining(block_data, difficulty):
print(f"--- [PoW] 开始挖矿:{block_data} ---")
nonce = 0
target = "0" * difficulty
start_time = time.time()
while True:
input_string = f"{block_data}{nonce}"
hash_result = hashlib.sha256(input_string.encode()).hexdigest()
if hash_result.startswith(target):
end_time = time.time()
print(f"✓ 挖矿成功!")
print(f"哈希值: {hash_result}")
print(f"随机数(Nonce): {nonce}")
print(f"耗时: {end_time - start_time:.4f}秒")
return hash_result
nonce += 1
# 运行测试
pow_mining("交易数据: A转给B 10个BTC", difficulty=4)
描述:基于“质押权重”的随机抽签算法,质押越多,被选中的概率越高。
import random
class Validator:
def __init__(self, name, stake):
self.name = name
self.stake = stake # 质押数量
def select_validator_pos(validators):
total_stake = sum(v.stake for v in validators)
print(f"\n--- [PoS] 开始抽签 (总质押: {total_stake}) ---")
pick = random.uniform(0, total_stake)
current = 0
for validator in validators:
current += validator.stake
if current > pick:
probability = (validator.stake / total_stake) * 100
print(f"🎟️ 选中节点: {validator.name}")
print(f"质押量: {validator.stake}")
print(f"理论中选率: {probability:.1f}%")
return validator.name
# 运行测试
nodes = [
Validator("账户A", 10),
Validator("大户B", 1000),
Validator("矿工C", 100),
]
select_validator_pos(nodes)
描述:模拟 PBFT 中的投票阈值检查(N ≥ 3f + 1),其中 N 为节点数,f 为可容忍的作恶节点数。
import random
def pbft_consensus(nodes, message):
print(f"\n--- [PBFT] 开始共识: {message} ---")
n = len(nodes) # 总节点数
f = (n - 1) // 3 # 可容忍的作恶/故障节点数
threshold = 2 * f + 1 # 通过所需的赞成票
votes = 0
for node in nodes:
if random.random() < 0.8: # 模拟80%概率投赞成票
votes += 1
print(f"[✔] 节点 {node} -> 投赞成票")
else:
print(f"[✘] 节点 {node} -> 拒绝或超时")
print(f"最终结果: 赞成票 {votes} / 阈值 {threshold}")
if votes >= threshold:
print("🎉 达成共识!区块已确认。")
else:
print("❌ 共识失败!票数不足。")
# 运行测试
node_list = ["Node_1", "Node_2", "Node_3", "Node_4"]
pbft_consensus(node_list, "提议: 银行A向银行B转账100万")
PBFT 会长管理着一个私密的高端俱乐部(联盟链)。任何决定都必须经过三轮严格投票,超过 2/3 的核心成员同意才能通过。效率和准确是她唯一的追求。
理论是抽象的,体验是直观的。为了让大家更深入地理解这些算法的运作流程,我们的小组成员 王海燕 专门制作了一个在线演示网站。
扫描二维码,亲自上手操作,感受不同共识算法的差异。欢迎把你的体验反馈告诉我们!
核心内容:为了鼓励创造和分享,对于刚刚起来分享想法的同学,我们准备了一份特别的礼物。
具体说明:
结语:我们的旅程暂告一段落,而你的创造之旅,现在就可以开始。
技术的魅力不仅在于理解,更在于启发。听完我们的分享,你是否有一些新的想法、疑问,或者任何想问的东西?
现在,我们想把舞台交给你们。
如果有同学愿意分享自己的任何想法——无论是一个问题,一个脑洞,或是一个项目构思,我们都非常欢迎。