Lazy loaded image
⛓️BTC 分叉与匿名性
字数 4367阅读时长 11 分钟
2025-1-13
2026-8-17
← 返回总目录 · 区块链技术与应用笔记(BTC)
在比特币(BTC)区块链中,硬分叉(Hard Fork) 和软分叉(Soft Fork) 是两种常见的协议升级方式。它们用于引入新的功能、修复漏洞或优化网络性能;硬分叉是一种不向后兼容的协议升级,必须所有节点同时更新软件,以确保整个网络保持一致,否则将导致永久分叉和双重货币的出现。软分叉是一种向后兼容的协议升级,只需大多数算力(如矿工)更新软件即可确保网络一致性,未更新的节点不会阻碍网络的正常运行,也不会导致永久分叉。
硬分叉是对比特币协议的一种不向下兼容的重大更改。这意味着新规则与旧规则不兼容,旧版本的节点无法识别或接受新版本的区块和交易。
特征
  • 不兼容性: 新旧协议之间存在不兼容性,如果部分节点不升级,将无法与升级后的网络正常交互。
  • 永久分叉的风险: 如果网络中的一部分节点继续运行旧版本软件,而另一部分节点升级到新版本,区块链将永久分裂成两个独立的链:一条遵循旧规则,另一条遵循新规则。
  • 双重货币的产生: 在永久分叉的情况下,原有的比特币和新分叉出的币将并存,形成双重货币体系。比如ETC各ETH
实例
比特币历史上几次著名的硬分叉包括:
  • 比特币现金(Bitcoin Cash, BCH): 2017年比特币现金作为硬分叉从比特币主链分裂出来,旨在增加区块大小以提高交易吞吐量。
  • 比特币钻石(Bitcoin Diamond, BCD): 另一种意在改进交易速度和隐私性的硬分叉。
为什么硬分叉需要所有节点更新软件
  • 一致性维护: 为了确保整个网络对区块链的共识一致,所有节点必须遵循相同的协议规则。如果部分节点不升级,可能会接受不同的区块,导致链的分裂。
  • 避免永久分叉: 若所有节点都更新到新软件,整个网络都遵循同一套规则,避免出现永久分叉的情况。否则,未更新节点将继续按照旧规则运作,形成独立的区块链。
软分叉是对比特币协议的一种向后兼容的更新。新规则限制了某些旧规则,意味着升级后的节点仍能与未升级的节点正常通信,但未升级的节点无法识别或执行新规则下的某些功能。
特征
  • 向后兼容性: 旧版本的节点依然能够验证并接受新规则下的区块(尽管它们可能无法完全理解新的功能)。
  • 无需全部节点更新: 只需大多数网络算力(即大多数矿工)遵循新规则,即可确保网络整体一致。
  • 安全性较高: 因为新规则是对旧规则的限制,链的安全性不会因为少数节点未升级而受到威胁。
实例
比特币社区中的著名软分叉包括:
  • 隔离见证(SegWit): 2017年实施的软分叉,旨在解决交易的扩展性问题,通过分离签名数据来增加区块的有效容量。
  • BIP66 和 BIP141: 其他一些针对比特币协议的软分叉提案,也用于提高网络性能和安全性。
为何软分叉只需大多数算力更新软件即可避免永久分叉
  • 多数算力的支持: 当超过50%的算力遵循新规则,新的区块将主要由遵循新规则的节点生成。未遵循新规则的节点生成的区块由于不符合新规则,将被网络中遵循新规则的节点拒绝。
  • 链的主导权: 因为大多数算力支持新规则,整个网络将朝向支持新规则的链发展,未升级节点的链将变得次要或孤立,不会形成永久分叉。
  • 兼容性处理: 旧节点在接收到新规则下的区块时,虽然不能完全理解其中的新规则,但还是可以验证区块的基本有效性,只要这些区块也符合旧规则的基本要求。
任何加密货币,即使是零币零钞,数学原理设计再完美,但是只要和现实世界产生交互,就必然泄露隐私只看是否有;比如比特币,即总有手段知道某人拥有某些地址,拥有多少比特币(即使不知道私钥,但是如果物理上能找到人,那所谓的匿名加密隐私就没有意义了)
零知识证明是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确的外的任何信息。
零知识证明的基础是同态隐藏
  1. 如果x,y不同,那么它们的加密函数值E(x)和E(y)也不相同。
  1. 给定E(x)的值,很难反推出x的值。
  1. 给定E(x)和E(y)的值,我们可以很容易地计算出某些关于x,y的加密函数值。
      • 同态加法:通过E(x)和E(y)计算出E(x+y)的值
      • 同态乘法:通过E(x)和E(y)计算出E(xy)的值
      • 扩展到多项式
简单版本
上述例子可以理解为A向B证明自己知道一组数,可以使得,但是并不想让B知道的具体数值是多少;于是A告诉B:的值,根据性质性质3,B可以算出的值,又因为根据性质2,B无法知道的值,这样A就成功向B证明了自己知道知道一组数,可以使得
上述过程有些缺陷,零只是证明要求无需透露任何正以外的信息,但是上述过程透露了的值,且B有可能暴力反推的值(无法通过反推,但是可以遍历的值,找到对应的,因为根据性质1,是一一对应的;
更复杂的做法是A先对作随机化处理,但是不变,这样B无论如何也不会知道A知道的到底是哪个
类似零知识证明的示例还有证明两个富豪间谁有钱,等等
零币(Zerocoin)和零钞(Zcash)都是与隐私保护和匿名性相关的加密货币,旨在提高交易的隐私性。零币和零钞在协议层就融合了匿名化处理,其匿名属性来自密码学保证。
零币(Zerocoin)
  1. 定义
      • Zerocoin 是一种旨在增强比特币隐私性的加密货币协议。它最早是在 2013 年提出的,作为比特币的一种扩展。
  1. 隐私特性
      • Zerocoin 通过使用零知识证明(Zero-Knowledge Proof)技术实现交易匿名性。用户可以将其比特币兑换为很难追溯的零币,这些零币即便在交易时也不会暴露任何关于交易者身份的信息。
  1. 工作原理
      • 创建零币的过程涉及将比特币发送到一个特定的地址,从而“消耗”这些比特币,并生成相应数量的零币。用户可以随后将零币换回比特币,但在这个过程中,零币的交易是完全匿名的。
  1. 实现方式
      • Zerocoin 方案可以被集成到比特币网络中,但需要大量的数学计算和复杂的协议,所以其应用并不广泛。
零钞(Zcash)
  1. 定义
      • Zcash 是一种加密货币,旨在提供比特币所没有的隐私保护。它于 2016 年正式推出,建立在 Zerocoin 概念的基础上。
  1. 隐私特性
      • Zcash 采用 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)技术,能够实现零知识证明,允许用户在不透露任何交易信息的情况下验证交易的合法性。
  1. 交易类型
      • Zcash 支持两种类型的交易:
        • 透明交易(Transparent transactions):类似于比特币的交易,交易的发送者、接收者和金额是公开可见的。
        • 私人交易(Private transactions):使用 zk-SNARK 技术,交易的细节对外是隐蔽的,无法进行追踪。
  1. 工作原理
      • Zcash 的 zk-SNARK 技术允许用户提交一个证明,表明他们知道某个秘密(如交易金额)而不需要向任何人透露这个秘密。这样的设计确保了交易的隐私性与安全性。总
对比
  1. 零币(Zerocoin)旨在为比特币提供增强的隐私保护,使用零知识证明的原理,但并没有被广泛应用于实际的货币系统。零币系统中存在基础币和零币,通过基础币和零币的来回转换,消除旧地址和新地址的关联性,其原理类似于混币服务
    1. 混币服务(Coin Mixing Service)又称为“混合服务”或“币混合器”,是一种旨在增强加密货币交易隐私的工具。其主要目的是通过将用户的加密货币与其他用户的加密货币混合,从而掩盖交易的来源和去向,保护用户的匿名性和隐私。
      混币服务的基本工作原理通常包括以下几步:
      1. 用户存入资金
          • 用户将其加密货币(如比特币)存入混合服务提供的地址。
      1. 混合过程
          • 混币服务将多个用户的资金进行混合,形成一个大的池。这些资金会与服务提供者持有的其他资金进行混合,增加转换交易的匿名性。
      1. 输出转账
          • 用户选择一定的混合时间后,混币服务会将混合后的金额发送回用户控制的新的地址。这些输出地址通常是用户事先准备好的,以确保生成新的转账地址,从而增加隐私。
      1. 附加步骤
          • 某些混合服务可能提供额外的功能,例如对资金进行分段转账、设定延迟以防止被追踪等。
      混币服务的类型
      • 集中式混币服务:由一个中心化实体提供,用户需要将资金发送到该实体的地址。这些服务通常简单易用,但可能面临信任和安全问题。
      • 去中心化混币服务:使用智能合约技术(例如在以太坊网络上)来进行混合,用户无需信任中心化实体,增加了安全性和匿名性,但需要较高的技术理解。
      优势
      1. 隐私性增强:混币服务可以隐藏资金的来源和去向,保护用户身份和交易隐私。
      1. 匿名交易:用户可以在不公开身份的情况下进行交易,避免被外部机构追踪。
      1. 防止链上分析:混合服务能有效抵御链上分析工具,通过给交易加入“噪声”来提高追踪难度。
      风险
      1. 信任问题:在使用集中式混币服务时,用户需要信任服务提供者,因为他们掌控着用户的资金。
      1. 潜在的资金滥用:如果混币服务被不法分子使用,用户可能无意中与非法活动相关联,导致法律责任。
      1. 费用问题:混合服务通常收取一定费用,以补偿操作成本。
  1. 零钞(Zcash)是一种独立的加密货币,不依赖一种基础币,利用 zk-SNARK 技术实现隐私,支持私人和透明交易,具备实际应用价值和较强的隐私保护层。区块链中只记录交易的存在性和矿工用来验证系统正常运行所需要关键属性的证明。区块链上既不显示交易地址也不显示交易金额,所有交易通过零知识验证的方式进行
  1. Zerocoin 更像是一个理论上的隐私扩展,而 Zcash 则是一个成功实现隐私保护的加密货币,它在保证隐私的同时,仍能进行有效的验证与合规性。
盲签(Blind Signature)是一种密码学技术,它允许用户在不透露信息内容的情况下,对消息进行签名,并且该签名在之后仍然可以被验证。
  • 用户 先对消息进行“盲化”(加密或扰动),然后将盲化后的消息发送给 签名者
  • 签名者 在不知晓原始消息内容的情况下,对盲化消息进行签名,并返回给用户。
  • 用户 之后可以去除盲化操作,得到一个对原始消息有效的签名。
盲签的应用:
  1. 隐私保护的电子投票:选民可以得到政府或机构的签名,而不泄露其投票内容。
  1. 匿名数字现金(如Chaumian电子现金系统):银行可以签署盲化的交易,确保用户匿名性。
  1. 身份认证系统:可以用于防止身份追踪,提高用户隐私。
盲签是零知识证明、去中心化身份(DID)等技术的基础之一,在加密货币和隐私保护领域有广泛应用,比如 Zcash、Monero 以及某些比特币隐私协议
盲签示例(简化版)
1. 设定基础
  • Alice 有一个消息
  • Bob 使用私钥进行签名,公钥用于验证
Alice 想要 Bob 签名,但不想让 Bob 看到
2. Alice 盲化消息
Alice 生成一个随机数 rr 作为盲因子(相当于加密因子),然后用它对消息进行变换:
其中 是 Bob 签名算法的模数(如 RSA 的模数)。RSA算法详情
这个 现在是一个“盲化”的消息,Bob 看到的是它的变形,而不是原始消息。
3. Bob 签名
Bob 用他的私钥 对盲化消息 进行签名:
然后把 发送回 Alice。
4. Alice 解除盲化
Alice 用 的逆元 处理签名:
最终得到的 S 就是对原始消息 M 的有效签名。
5. 任何人都可以验证签名
任何人可以使用 Bob 的公钥 pk 来验证:
如果成立,说明 Bob 确实签名了这个消息。

现实应用
  • 电子现金:银行签名代币但不知道具体金额(如 David Chaum 电子现金系统)。
  • 隐私投票:选民的投票内容被隐藏,但选票仍然可以被官方验证。
这个方法确保了 Alice 得到 Bob 的签名,但 Bob 永远不知道自己签名的是什么,使得 Alice 既能获得合法签名,又能保持隐私。
 
 
数学基础
  1. 模运算(Modulo,取模)是整数运算的一种,表示除法的余数表示 a 除以 n 后的余数
  1. 模逆元(Modular Inverse) 是模 n 下某个数 a 的“倒数”,即找到一个数 x,使得,这意味着 除以 余数是 1。可以使用 扩展欧几里得算法(Extended Euclidean Algorithm, EEA),它可以快速求得 a 在模 n 下的逆元。
  1. 表示“同余”(mod 运算),如果两个整数 aaa 和 bbb 对于某个整数 nnn 来说,它们的余数相同,就写作:
 
 
上一篇
区块链技术与应用笔记(BTC)
下一篇
BTC 多重签名与链上数据记录

评论
Loading...