Python 实现 BitCoin BlockChain

查看原文

本文实践了如何从头构建一个 Blockchain 网络。

  • 基础知识:
    • Double-Spending 难题:在点对点网络上,一笔钱怎么确保只能消费一次?
    • BitCoin 解决方案:打包 10 分钟内的多个交易到一个块,矿工给块签名(Proof of Work),第一个算出 nonce 的矿工将其广播到网络。只要好矿工多于半数,就能确保不会出现 Double-Spending。
      • 解决冲突:如果有人同时算出来,我们通过再下一个块的矿工决定。
    • ECDSA: 基础的加密算法。目前来看比较安全。Alice 把她的块用自己的私钥签名,别人用她附带的公钥确信这确实是她的块。
    • Block 有父节点的哈希地址,所以这些 Block 一个一个串起来组成了 BlockChain。
    • BlockChain 可能会遭到的攻击:Race Attack, Finney Attack, Majority Attack。
      • Race Attack: 建议收到至少一个 Confirmation 再接受交易
      • Finney Attack: 建议收到至少六个 confirmations 再接受交易
      • Majority Attack: 算力比拼,在 BitCoin 链上出现的概率比较低。
  • 实现
    • Client
      • 要实现钱包,生成 Transaction,给 Transaction 签名
    • blockchain node
      • 要实现挖矿:生成 block,算 nonce,验证 transactions,广播,以及一个小case:解决冲突
      • 要实现节点增减