作者:Jameson Lopp

来源:https://nakamoto.com/what-are-the-key-properties-of-bitcoin/

比特币是什么?已经有很多人给出了解答,但是我相信我们对这个问题的求索注定是永无止境的。比特币是什么?它应该努力成为什么样子?最前沿的研究和讨论成果将决定比特币协议的发展方向。

新手或许很难分辨哪类比特币提案最有可能得到采用,因为比特币协议变更有很多不成文的规则。有的规则更偏重哲学,有的更偏重工程和安全,还有的二者兼顾。

共识不是命令和控制

比特币系统中没有所谓的权力机关,即使是本文所述的原则也不具有任何权威性,仅仅源于我个人和生态系统中其他参与者的观察。

  • 比特币是一个会自动持续发现参与者之间的共识的系统。它通过机器共识来执行人类共识。

  • 共识失败会导致参与者不再信任比特币系统,从而摧毁整个系统。

  • 应尽可能避免更改共识代码。

  • 未经用户同意,不应强制用户接受协议更变。换言之,应该让那些愿意接受的用户自由加入,而不是强迫那些不愿意接受的用户退出。

  • 因此,软件客户端不应该自动更新,因为这无异于将原本属于用户的权利变成了开发者手中的权力。

  • 由于比特币本质上是分布式网络,我们不能预设每位用户都在时刻关注协议变更。

我们该如何改变比特币系统?在更改共识代码之前,我们必须先就变更的内容达成人类共识。这里有篇文章介绍了比特币改进提案(BIP)的具体流程。这一流程并非完美无缺,然而共识的形成过程非常复杂。

Johnson Lau 曾在一篇文章中详细介绍了分叉(更改机器共识的手段)的不同类型,Paul Sztorc 又深入剖析了不同分叉在强制性上的差异。

历史上的比特币协议变更采取过哪些方式?

哪些人有权接受或拒绝协议更改提案? 开发者的目的是实现“大致共识”,也就是说提案无需获得 100% 参与者的同意,但是提案必须开发到。

我们如何衡量比特币生态对一项更改提案的支持程度?开发者将与有可能受提案影响的参与者共同讨论。任何关注开发进程的人都可以通过邮件列表、代码库、社交媒体等渠道做贡献。

最后,协议治理不会通过已经定义好的方式自上而下展开。恰恰与传统治理模型相反,比特币协议治理采用的是自下而上的方式。

信任最小化

“比特币是点对点电子现金,相比传统(货币)系统更有价值,因为它通过去中心化的方式赋予了用户货币自主权。比特币旨在解决传统货币的根本问题:只有依托信任才能发挥作用。这并不足以证明信任不好,但信任确实会让系统变得脆弱、不透明,同时产生高昂的运行成本。信任破灭会造成系统崩溃,信任筛选会导致不平等现象和垄断封闭,进而产生阻碍正当访问的信任瓶颈。”

“利用密码学证明和去中心化网络,比特币尽可能减少并替换掉了信任成本。从根本上来说,仅凭现有技术,我们仍需在可扩展性和去中心化之间作出权衡。如果运行系统的成本过高,人们将无法独立执行系统规则,只能信任第三方来执行。如果比特币区块链在资源消耗量上远远超过现有技术,就会在传统系统面前失去竞争力,因为过高的验证成本(超出很多用户的承受范围)必然会将信任重新引入系统。如果吞吐量太低且交易方式效率过低,通过访问区块链的方式解决争议将产生过高的成本,导致信任卷土重来。”

—— Greg Maxwell

比特币开发者 Matt Corallo 同样强调过信任最小化的重要性

“在比特币具备的诸多特性中,免信任(除了运行中的开源软件之外,比特币用户无需信任其它人或物)迄今为止仍是重中之重。说得更具体些,人们对比特币的兴趣大体可以归究为一个原因,他们渴望再也不用信任某个第三方个体或联盟。想必这点已经人尽皆知,但是理解免信任为何如此重要(以及它以哪些形式呈现)对于比特币技术的开发和改进来说至关重要。”

本文介绍的其它比特币原则中,很多都以信任最小化需求为基础。这些原则既源于低信任需求,又以之为目标。我们永远都无法达到 100% 免信任,因为没人有足够的资源可以审计他们用来与网络交互的所有软件和硬件。但是,我们可以非常接近这一目标。如此一来,我们完全可以相信,公开透明且利益一致的参与者不会勾结起来做出对生态不利的事。

去中心化

像比特币这样的开放系统如果中心化程度过高,以至于网络受到某个个体或垄断联盟的操控,将无法保有本文所述的其它理想特性。去中心化 是手段,而非目的。通过尽可能广泛地将权力分散出去,我们可以将对任一实体的信任需求降至最低,因为我们知道没有哪个实体能够干涉我们使用系统。

“很多人想当然地认为电子货币注定无法成功,因为自 20 世纪 90 年代以来有过尝试的公司均以失败告终。我希望明确的是,导致这些电子货币系统失败的原因只有一个,那就是集中化控制。我认为这是我们首次尝试建立一个不以信任为基础的去中心化系统。”

—— 中本聪

以下是中心化的潜在衡量维度,而且很难进行量化

  • 交易所

  • 开发者

  • 软件客户端

  • 矿池

  • 挖矿软件

  • 高收入节点

  • 广义的价值所有权分布

  • 自己控制私钥的用户占比

  • 自己运行节点来审计账本的用户占比

上述任一指标呈现出高度中心化特征,并不一定代表整个系统是中心化的。但是,我们应该考虑到一个系统有多强大由其短板决定。因此,在对系统作出任何更改之前,我们都应慎重考虑,以免任一维度出现权力集中化趋势。

抗审查性

任谁都不应该有权阻止其他人与比特币网络交互,或无限期地阻止有效交易得到确认。虽然矿工可以自由选择是否确认一笔交易,但只要是支付了高昂交易费的有效交易最终都会得到理性矿工的确认。

伪匿名性

任何持有或使用比特币的人都无需提供官方身份证明。该原则增强了系统的抗审查性和同质化特性,因为在系统本身不追踪用户的情况下筛查 “污点” 交易会变得更难。该原则也可作延伸理解:系统不要求其用户是人类。

开源

比特币客户端的源代码应该永远开放,供所有人浏览、修改、复制和分享。比特币的价值建立在系统的透明度和可审计性之上。正因为我们能够对系统进行全方位审查,我们没必要信任任何实体是诚实的。在经济激励下,生态参与者会诚实行事,因为他们知道作恶将招来惩罚。如果被用来与系统交互的代码本身不让用户审计,利用这种代码实现的审计功能又有何价值?

开放协作

虽然任何人都可以私下进行研究和开发,但是任何协议变更尝试,尤其是非向后兼容的那种,应该公开推进,而非暗中谋划。比特币为人类所有,因此任何改进提案都应该公开接受大众评审。通过比特币改进提案流程提议变更方案是受到推崇的方式,但也不会成为强制要求,因为没有权力机关强制执行。

自发组织本身的问题及由此产生的权力动态可能会让人觉得某些人或团体是掌权者,但这是一种错觉

免许可

没有看门人可以阻止任何人(以交易者、节点、矿工等等身份)参与网络。这是信任最小化、抗审查性和伪匿名性的功劳。

法律中立

比特币的开发不会考虑任何国家或地区的法律,就像其它互联网协议一样。比特币不会迎合监管需要,反而是监管机构需要考虑如何应对通过比特币技术实现的功能。

同质化

同质化是健全货币需要具备的重要特性。如果每位用户都需要分析自己收到的比特币是否“有污点”,比特币系统的效用将大幅降低。

所有 UTXO 在被用来花费时都应该是平等的。遗憾的是,目前的情况并非如此,已经出现了追踪与犯罪活动相关的“污点”UTXO 的服务。这种区别对待带来的副作用是,无辜的用户可能会因花费了由“污点”UTXO 转了几手产生的 UTXO 而遭到逮捕。

同质化需要隐私性。隐私性就是外人无法在庞大的用户群中找到任何一笔交易的所有者。问题是,比特币用户的隐私正面临很多已知威胁。因此,当前的比特币离完全同质化还差得远。

向前兼容性

比特币容许签署但不广播交易的行为。因此,任何已签署但未广播的交易均被视为有效且可以广播。带有时间锁的交易就是个很好的例子。这类交易只有等到指定时间才能得到有效确认,适用于遗产继承或其它有延时需求的场景。更改这一规则可能会造成非常严重的后果:一批未知数量的未广播交易将变成无效交易。一旦用户过去依赖的规则被打破,用户或将承受经济损失,没人会愿意当这个罪人。

事实上,正因比特币坚守向前兼容原则,让人们对比特币协议充满了信心。人人都可以构想和部署任意措施来保护自己的比特币,无需征得许可。只要用户遵守协议规则,最坏的情况也只是节点默认停止转发某些交易。

资源使用最小化

为了将验证成本维持在较低水平,区块空间成为稀缺资源。因此,占用大量区块空间对于任何人来说都很昂贵。这里有一个重要原则是,鼓励花费(消耗)UTXO,不鼓励创造 UTXO。如果 UTXO 累加器能够成功解决 UXTO 膨胀问题,这一原则可能会改变。

验证应该是低成本的,因为这样可以让更多用户负担得起审计系统的费用,有助于实现信任最小化。低验证成本也会大幅提高资源耗尽攻击的成本。比特币提供一种可以快速拒绝低成本无效区块的机制。这是 hash cash(哈希现金)的基本原则,攻击者只有付出昂贵的代价才能创建垃圾邮件。在同步一个区块内的交易之前,节点可以先下载 80 字节大小的区块头,获得工作量证明并进行快速而准确的验证。

此外,我们应以高效利用区块空间为重,仅在链上存储验证复杂操作所需的最少数据,而非直接在链上存储和执行复杂操作。

验证 > 计算

这属于资源最小化原则。在理想情况下,需要执行复杂逻辑的人越少越好。其他在网络上运行完全验证节点的人不应该细究逻辑的每个步骤,只要确保逻辑正确执行即可。正确性比完整性更重要。

“让区块链发挥它的长处。”

—— Andrew Poelstra

对于任何系统来说,最好的优化是避免执行计算。区块链的优点是可以存储时间戳数据以满足审计之需。相比要求所有参与者计算与自己无关的交易的逻辑,存储可由相关参与者验证的计算证明就足够了。

收敛

假设任意两个比特币客户端都连接至同一个诚实的对等节点,它们最终应该会聚于同一个区块链首。举个反面例子,Bitcoin ABC 提出的最高 10 个区块的链重组规则打破了这一原则。结果是,一旦出现网络分区或网络封锁之类的情况,受影响的矿工将持续挖另一条链。等到网络合并后,两条分叉也不会收敛到累积工作量证明最多的链上。

所有交易操作都必须具有确定性。如果系统状态相同,交易应该只能以一种方式执行,系统之外的因素不会对相关计算产生影响。同样地,在两台不同的机器上,脚本也不应该有两套不同的运作方式。唯一的解决方案就是隔绝 —— 智能合约和交易必须独立于非确定性因素。

协议变更不应该给交易带来会因区块链重组而失效的风险。交易操作不仅应该具有确定性,还应该是无状态的。例如,2010 年的 OP_BLOCKNUMBER 提案

一些人提议了重组之后可能会导致交易无效的操作码。这些提案通常会被要求使用 OP_CLTV 重新设计,以确保向前兼容。但是,这种做法有时是多此一举或不切实际的。有人建议说,可以引入一个操作码让某个交易无法在 100 个区块内上链,类似 coinbase 交易或通过 OP_CSV 设置 100 个区块的时间锁。

交易不可变性

给定一个区块,跟在这个区块之后的区块越多,这个区块因链重组而变成孤块的可能性越低。虽然比特币协议容许任意长度的链重组,但是过长的链重组可能会带来破坏,因为一些软件或节点可能无法处理得当。此外,超过 100 个区块的链重组具有更强的破坏力,因为它会将已花费的 coinbase 交易作废,摧毁这部分价值。

虽然从技术层面上来说无法保证不可变性,但是我们可以确保在累积工作量证明足够多的情况下,回滚交易的成本会变得异常高。

抗 DoS 攻击

远端对等节点不应能够向本地节点发送导致本地消耗太多资源的消息。然而,SPV 布隆过滤器的出现打破了这一原则。攻击者可以利用该功能让目标对等节点扫描大量区块数据,从而占用大量磁盘 I/O。点击此处搜索“meisbehav”,可以看到很多抗 DOS 攻击规则。有害行为被赋予了不同的分数,只要某个对等节点的有害行为分数超过上限,你的节点就会断开连接,以防继续受害。

避免争抢进入

如果系统行为取决于不可控事件的发生顺序或时间,就会产生争抢行为(race condition)。在比特币之类的分布式免许可系统中,事件通常是不可预测的。UTXO 模型可以帮助我们避免争抢,因为输出只能花费一次 —— 交易输出的状态是二元的(要么已花费,要么未花费)。

这也是交易不应该依赖系统状态的另一个原因:如果状态在链重组过程中发生变化,就有可能产生争抢和复杂性。

稳健性

  • 从长期来看,货币应该是稳定的。

  • 我们对待变革应持保守态度,一方面尽可能降低系统风险,另一方面让人们继续以他们认为合适的方式使用系统。

  • 不要指望用户会积极应对系统问题。因此,我们应该谨慎行事,主动避免这些问题!

稳健性究竟有什么意义?它有助于保障社会可扩展性。

比特币成功的秘诀是,它以高能耗和低下的计算可扩展性为代价换来了更珍贵的特性:社会可扩展性。

—— Nick Szabo

很多由人类运行的系统都存在一个固有问题:系统规则执行起来过于随意,或容易被个体想法左右。这会影响系统的可靠性。

如果我们可以利用计算机科学代替传统的会计师、监管机构、调查员、警察和律师来保护金融系统,就可以将原本需要手动操作的弱安全局部系统变成自动化的强安全全球系统。

—— Nick Szabo

激励一致

比特币之所以能运行,是因为系统规则激励参与者诚实守信。例如,从理论上来说,矿工可以通过重组区块链发起双重花费攻击,但这无异于搬起石头砸自己的脚,投入大量硬件和电力成本却损失惨重。对于矿工来说,将资源花在保护区块链上更有利可图。

固化

人们普遍认为,随着生态日益壮大,更改底层协议会越来越难。这是因为随着用户群体的立场和动机日益多样化,不会引起争议的变更将越来越少。因此,改进更有可能发生在以比特币为基础的其它层上。

无法改变的共识

  • 发行超过 2100 万发行上限的比特币。虽然精度/可细分程度有可能增加,但是所有权比重必须保持不变。

  • 引入任何必然会增加中心化程度的规则。例如,新增要求所有区块必须由中心化组织签署的规则。

  • 逾期处理(删除或重新分配被判定为“已丢失”或“从未使用过”的比特币)。就客观角度而言,我们不能因为某个 UTXO 在一段特定时间内未被花费就断言其私钥已经丢失。截至本文发布时,虽然疑似丢失的比特币数量超过100 万个,但是只有大约 5000 个 BTC 已证实丢失或销毁。

冲突性原则

通过改进同质化(隐私性)让供应量无法审计是不可能的,就像以降低可审计性为代价来提高同质化同样存在争议。

有时,我们可能会出于保护网络的目的希望某些 UTXO 无法被花费,例如,对量子攻击抵抗力弱的 P2PK 比特币。这类提案都是有争议的,但是在利远大于弊的情况下,用户可能会接受。

比特币提供的有效性不是恒久的,因为链重组有可能发生在 coinbase 交易之前,也就是在交易还没有创造出新的比特币之时。coinbase 交易的 100 区块确认规则有助于避免这类情况发生。截至发稿时,比特币主网上极少发生区块深度超过 1 的重组。

最后,比特币生态内部产生冲突的主要原因之一是,比特币无法同时满足所有人的需求。否则比特币就会走向衰败,因为很多重要原则都不可兼得,例如:

  • 同时实现低全系统验证成本和低交易成本

  • 使用功能丰富的编程语言的同时确保攻击面小

协同推进

为了让用户一如既往地信任并使用比特币交易,比特币社区必须坚持只在获得广泛共识的情况下才进行变更。反之,为了防止比特币停滞不前,比特币社区必须愿意达成共识,做出既不伤害他人又有利于系统的改变,无论这些基于共识的改变采用何种形式。重要的是,这意味着只要有可能,凡是无损比特币在各应用场景中的效用又能带来助益的改变都应该被执行。

—— Matt Corallo

(完)