密码学 🛡️

哈希 (Hash) 🔄

  • 密码学中的哈希函数 (Cryptographic Hash Function)

    • 两个性质:

      • 抗碰撞性 (Collision Resistance/Collision Free): 很难找到两个不同的输入,使得它们的哈希值相同。
      • 单向性 (Hiding): 从哈希值反推出原始输入是不可能的。即 x -> H(x) 是单向的,但 H(x) !<- x 是不可逆的。
    • 比特币中的第三个性质 (Puzzle Friendly)

      • 需要生成以特定数量的0开头的哈希值,这需要大量的尝试,没有捷径可走。
      • 公式: H(block header) <= target
      • Nonce 的查找:寻找合适的 Nonce 非常困难,但验证 Nonce 的哈希值非常简单。
    • 数字承诺 (Digital Commitment)

      • 场景:预测结果不能提前公开,但需要防止被篡改。
      • 方法:将预测结果哈希后公开哈希值,结果公布后再哈希验证。

签名 📜

  • 开户过程:创建一对公私钥 (public key, private key)
  • 非对称加密:加密用公钥,解密用私钥。
  • 交易签名:发布交易时用自己的私钥签名,其他人用公钥验证。
  • 公私钥签名的一致性:理论上是不可能的,前提是使用良好的随机源(如助记词)。现实中有人因使用简单的助记词而被破解。

数据结构 🗂️

  • 区块链 (Blockchain)

    • 哈希指针 (Hash Pointers)
    • 防篡改日志 (Tamper Evident Log):哈希指针是区块信息哈希后的值。
  • Merkle 树

    • 根哈希:知道根哈希即可检测整棵树是否被修改。
    • 用途:Merkle Proof
    • 全节点与轻节点

      • 轻节点:只保存 block header。
      • 验证过程:轻节点向全节点请求验证的交易,全节点返回相关哈希值,轻节点计算最终哈希并与 block header 中的哈希比较。
  • 区块结构

    • 块头 (Block Header):包含 Merkle 树的哈希值。
    • 块身 (Block Body)
  • 排序的 Merkle 树 (Sorted Merkle Tree)

协议 🤝

  • 双花攻击 (Double Spending Attack)

    • 转账交易必须验证,A 在发起交易时放入公钥和签名,供他人验证。
  • 共识 (Distributed Consensus)

    • CAP 理论:Consistency (一致性)、Availability (可用性)、Partition Tolerance (分区容错性)
  • 女巫攻击 (Sybil Attack)

    • 通过生成大量账户进行简单的直接投票。
    • 比特币中的解决方法:用算力进行投票。
  • 最长合法链 (Longest Valid Chain)
  • 分叉攻击 (Fork Attack)
  • 出块奖励 (Block Reward)

    • 获取出块权的节点可以发布一个特殊的交易——Coinbase Transaction (铸币交易)。

实现 🛠️

  • 基于交易的账本 (Transaction-Based Ledger):更好的隐私保护。
  • 未花费交易输出 (UTXO):用于检测双花。
  • 交易费 (Transaction Fee)
  • 基于账户的账本 (Account-Based Ledger)

挖矿难度 ⚙️

  • 公式difficulty = difficulty_1_target / target

    • difficulty_1_target:挖矿难度等于 1 时的目标阈值。
  • 调整机制

    • 目标:保持每 10 分钟出一个块。
    • 计算公式:(2016 个区块 × 10 分钟) / (60 分钟 × 24 小时) = 14 天,调整一次难度。
    • 调整公式target = target * (actual_time / expected_time)
    • 限制:目标阈值 target 最多增大或减少四倍。

挖矿 ⛏️

  • 挖矿设备:CPU -> GPU -> ASIC (专用集成电路)
  • 51% 攻击:如果某个矿池占有 51% 的算力,可以发动分叉攻击或封锁特定账户的交易。

脚本 📝

  • 脚本形式

    • P2PK (Pay to Public Key)
    • P2PKH (Pay to Public Key Hash):最常用
    • P2SH (Pay to Script Hash):多重签名
    • Proof of Burn (销毁币)

分叉 🌲

  • 硬分叉 (Hard Fork)

    • 所有节点必须更新软件,否则系统会分叉。
  • 软分叉 (Soft Fork)

    • 只要系统中有一半以上的节点更新软件,系统就不会分叉。
  • 交易数量:1000000 字节 / (一个交易约 250 字节) = 4000 交易
  • 出块速度:4000 交易 / 60 秒 * 10 分钟 = 7 tx/sec

匿名性 🕵️‍♂️

  • 混币 (Coin Mixing)
  • 同态隐藏 (Homomorphic Hiding)
  • 盲签方法 (Blind Signing)

标签: 区块链, 比特币

添加新评论

😊