比特币随想 - 信任模型

本文偶尔使用“大饼”替换BTC,因此“大饼网络”,“大饼协议”等请自行替换。

我通常称大饼网络的信任模型为“民主信任”模型。

信任不会消失,只会转移

每次重新思考这个问题的时候,我都会回到比特币的白皮书。比特币网络提供了一个不依赖第三方金融机构的、纯点对点的在线电子支付系统。这句话很短,但是非常值得玩味。这句话有三个重点:

  • 电子支付
  • 纯点对点
  • 不依赖某一个或几个第三方

支付系统,就是 A 把某个资产转移给 B 的系统。

其实,在没有互联网的时代完成纯点对点、不依赖第三方的支付非常容易:以物易物即可。比如我把我的黄金给你,你把你的房子给我。但是互联网时代的电子支付让这两点变得很困难。通常,电子支付需要依赖第三方,因为第三方需要防止支付过程中的双花问题(double-spending),即如何确保 A 在支付给 B 的同时,没有也把同一个价值载体支付给 X。换句话说,电子支付无法实现纯点对点,人们需要信任某一个第三方来验证支付的有效性,即避免双花;另外一个第三方需要解决的问题就是资产归属权的问题,人们需要第三方来证明,某个资产属于谁。

大饼协议组成的网络就是为了实现 A -> B 而不需要的第三方 C 的介入这一目的。 这就是大饼的创新之处:第三方被移除了。但是信任并没有被移除,只是从某个第三方转移到每个网络参与者。之前我写过一篇小文稍微涉及了信任的问题:比特币随想 - 从数字签名到信任。最后这篇文章的落脚点是:

  • 归属权问题不应该是信任问题,而是验证问题(数字签名)
  • 信任不可以被算法移除,但是可以转移(工作量证明)

民主的信任模型

工作量证明

大饼协议采用了工作量证明共识算法(PoW),这种共识算法将信任从某个第三方转移到了参与网络的群体,更准确的说是群体中付出最能量的群体。

事实上,去中心化网络面临的主要问题是无法决定某个事件发生的先后顺序。因为,如果我们可以确定 A 到 B 的转账,发生在 A 到 C 的转账之前,我们就可以拒绝 A 到 C 的转账(双花)。

那么,由谁来决定 AB 先发生,还是 AC 先发生呢?答案是:谁都可以,这并不是很重要。重要的是,AB发生后,怎么确保历史不会被重写,即 AC 代替 AB 交易(双花)?答案是:PoW。

我们提到虽然网络中的任何人都可以决定 AB 或者 AC 哪一个先发生,但是提出这个提议的节点会付出相应的代价:就是挖矿。更具体的说,一个节点想要提出并广播一个提议前,需要进行相当数量的 CPU 计算,即花费相当数量的电能才有资格提出提议(即证明节点花费了相当的工作量)。更重要的是,在提议被接受后,如果有节点想要更改 AB 和 AC 发生的顺序,这个节点需要重复刚刚的计算。

这样的前提下,只要网络中绝大多数节点(>66%),作弊(双花)的经济效益并不高,同时成功率也会随着时间推移越来越低,呈指数级别降低。通过这种博弈的关系,网络中最长的链(最多工作量的链)就称为“真实”的历史,即所有人信任的基础。

网络构成

大饼网络的节点主要分成了两种:矿工和全节点。矿工就是上面提到的进行工作量证明提出提议的节点,而全节点是负责验证、广播区块(提议)的节点。须知,全节点不会进行工作量证明,也不会提出区块,也就不会获得区块奖励。

这两类节点都非常重要。矿工完成了打包区块、增添历史的功能;而全节点则承担了验证区块和传播区块的功能。

历史共识信任模型

PoW 形成的共识是一种概率角度的共识,因为理论上,如果网络中出现大量恶意节点用超大的算力对一个新的历史进行快速的计算,并广播这个“伪历史”,且网络中绝大部分节点接受了这个链,那么原本“真实历史”就会被这段“伪历史”替换掉,形成一个新的共识。

但是,这么做一来在技术上几乎不可行,而来其经济利益往往不如利用如此庞大的算力维护最长的“真历史”,从而获得大量区块奖励。

从某个意义上说,工作量证明是“民主”的信任:每个节点都不需要信任任何另一个节点,但是节点可以信任节点群体形成的共识。

协议共识信任模型

大饼的代币铸币系统设计的非常巧妙:

  • 代币的上限 2100 万
  • 代币铸币政策
    • 约 10 分钟铸造一次
    • 每 210240 个区块铸币量减半一次

为了维持铸币政策,即 10 分钟铸造一次,大饼协议会根据网络 PoW 的总算力调节铸币难度。每 2016 个区块,协议会计算这 2016 个区块所花的总时间,同目标时间 20,160 分钟比较,然后难度会相应调节。

上面提到的就是大饼的协议共识,而网络节点对该协议的参数(比如 2100 万,10分钟等等)形成了信任:相信这些参数无法篡改,除非社区的绝大多数节点选择修改。

这种协议共识是通过网络中的全节点实现的。只要网络中绝大多数节点遵守协议,拒绝不符合原有协议的区块,就实现了协议共识,也就确保了网络参数的稳定。

民主信任的弊端

民主信任模型和第三方(集权)信任最显著的区别在于民主信任没有明确的被信任主体,但是民主信任通常是都是概率性的;集权信任有明确的信任主体,但是决策是决定性的(当然作弊行为也会是绝对的)。

民主信任去除了明确的信任主体,也带来了一些问题。实现真正的民主共识需要更多时间,即需要时间将信息传播到网络的绝大多数独立的节点。相应的民主信任网络的执行效率较低。这里格外强调“独立”节点,因为如果传播到的节点不是相互独立,网络就做不到足够“民主”,也就没有所谓的去中心化(去第三方)。

信任的分层

越是民主信任,网络的效率越低,换来的是一个更加“民主”或者更加“中性”或者更加去中心化的网络层;而越是把信任放在某个、某些个体上,网络的效率越高,失去的是去中心化。

所以,大饼网络提供了一个非常“民主”的信任网络;但是为了提高效率,进行更加复杂的操作,我们需要去掉一些民主,增加一些集权。这就是所谓的二级网络,也就是信任的分层。