比特币、区块链,一问到 UTXO 、PoW 、数字签名这些核心细节,可能就有点模糊了。看理论文章又常常觉得枯燥,不够直观。
为了彻底搞懂它,我决定用纯 Python 从零撸一个简化版的比特币,并把过程整理成了 10 个循序渐进的脚本,希望能帮到有同样困惑的 V2EXer 。
这个项目最大的特点就是 “为教学而生”。
🔗 项目地址: https://github.com/picasso250/my-bitcoin/
step1 (生成密钥) 到 step10 (模拟网络共识),每个脚本只专注一个核心概念。你可以python step1_... python step2_... 这样一步步执行下来,看着它从无到有,完全没有学习断层。step1_generate_keys.py: 生成你的第一对公私钥。step2_sign_and_verify.py: 理解签名的本质。step3_public_key_to_address.py: 从公钥到我们熟悉的地址。step4_build_simple_transaction.py: 构建第一笔“交易”。step5_create_a_block.py: 把交易打包进区块。step6_mine_a_block.py: 引入工作量证明 (挖矿)!step7_single_utxo_transaction.py: 核心概念! 理解 UTXO 和“找零”。step8_multi_input_utxo_transaction.py: 模拟“凑钱”支付。step9_coinbase_in_utxo_block.py: 搞懂矿工奖励和手续费。step10_simulated_network_consensus.py: 上帝视角,看多个节点如何达成共识。这个项目不求生产可用,只求能让一个聪明的开发者在一个下午的时间里,通过亲手跑代码,对 比特币 的运作原理有一个清晰、深刻、代码级的认知。
项目完全开源,代码和文档都在 GitHub 上了。
如果你觉得有帮助,求个 Star ✨ 就是最大的鼓励!也欢迎随时提 Issue 或 PR 交流。
谢谢大家!
1
sillydaddy 14 小时 23 分钟前 感谢分享。请问是什么开源协议呢?我想后面在做比特币的科普视频时,可能会引用你的代码(执行代码、给出运行结果)。
|
2
prefect 14 小时 20 分钟前
已加入书架(等想起来、有机会、可能、再学)
|
3
NoCash 13 小时 59 分钟前
感谢制作,在看第一个脚本的时候,感觉有两处可以完善:
1 、公钥 (Public Key): 由私钥通过椭圆曲线算法推算得出,可以公开。地址是公钥的另一种表现形式 这里“地址”,如果是刚入门的小白可能不太清楚,可能会疑惑:怎么突然蹦出来说“地址”?楼主可以完善一下地址的解释 2 、private_key = ecdsa.SigningKey.generate(curve=curve) 方法里面,左边 curve 是形参名吧?右边是实参名,我认为楼主定义的时候是否应该给实参名相对于实参名给区别开来呢?不然阅读性上其实有问题 |
4
Rainwater 13 小时 53 分钟前
运行这些脚本会占用电脑很多性能吗,不会的话可以摸鱼的时候试试
|
5
freekindom OP @sillydaddy GPL 总之你做科普视频,我非常欢迎。
|
6
freekindom OP @NoCash 多谢你的反馈。1 地址这个事情鼓励问 AI 2 curve=curve 这种在 python 开发的时候非常常见,是实践上经常使用的开发习惯。
|
7
freekindom OP @Rainwater 非常不占用性能……
|
8
IndexOutOfBounds 11 小时 2 分钟前 亲自 star ,亲自留言
|
9
dobelee 11 小时 1 分钟前
已收藏(等想起来、有机会、可能、再学)
|
10
scyuns 10 小时 59 分钟前
已经 star 并且打算好好学习一下
|