BitcoinCash Classic(BCC) Make BCH decentralized again!

比特币网络分层架构


概述

本文为BCC(BitcoinCash Classic)白皮书的前哨文第四篇,写完本篇,意味着BCC白皮书的前哨文全部脱产,离白皮书的面世也就不远了。注意,BCC白皮书并非比特币白皮书(中本聪著)的替代品,而将是作为中本聪白皮书的【附件1】之类进行发布。这是一个很长期思考、讨论、沉淀的结果,我们没有动机,着急地去推出一份没有凝聚足够共识的白皮书。

比特币(SHA256)矿机(无需升级)支持挖ETH、EoS及其它主流币的技术方案

共用底层分布式算力

比特币10年来,目前最具价值的成果之一,是其构建了一个完整的算力安全网络,由矿机(芯片)、矿池、矿场、矿工组成的多层次算力生态。我们知道比特币不值钱的话,就没有人会去挖矿,没有人去挖矿,也就无法出块,区块链也就不存在,因此区块链依赖于比特币而生存,比特币依赖于算力而生存。先有比特币,而后有区块链,而不是反过来。区块链的安全模式,也就是比特币的安全模式,脱离比特币,(没有人买入比特币)区块链就不会安全,也就没有任何实际应用的价值。

目前分布在全球200万-500万台的比特币矿机,是比特币网络价值的重要组成部分之一。复用这些矿机,等同于全世界互联网的几百万台路由器组成了一个全球互联网,它最大的价值在于是它是一个互联网,很快地把底层基础架构共享起来,而不是无数种应用分别组建的隔离的无法互相访问的网络。互联网的最大价值是一个全球互通人人可用的互联网(即使不是使用最完美的技术),而不是几十个使用各种完美的技术但无法互通的互联网。

解决的痛点问题

消除PoS及其它共识机制的不确定性

以太坊(ETH)最早在2016年就提出了意图实现PoS共识机制的开发路线,到今天2019年接近年底,这个PoS机制的落地仍然继续跳票,而且这被视为以太坊最大的潜在威胁。在技术层面,我们认为PoW共识机制经过大规模的部署验证,是经得住考验的,而PoS机制并没有经过同等级别的验证,ETH从PoW切换成PoS,毫无疑问面临归零的可能性。使ETH继续承载在PoW链上,更符合市场的预期需求,这也是大量的金融结算应用,今天优先选择ETH而不愿意迁移到EoS的原因(因为对于这些应用而言,安全需求远高于性能需求)。以USDT为例,最早是承载于比特币的区块,很长时间之后才扩展到以太坊ERC20合约,对于PoW算力安全是第一位的。

DPoS同样面临着各种奇奇怪怪的问题,最早采用DPoS的bitshare,几轮投票下来很快沦为庄家的玩具,EoS则完全为我国人所掌握,投票分红玩到飞起。大家想象一下,苹果公司、Facebook公司、google公司,阿里巴巴公司,这些公司的控制权都不应该掌握在炒股人群手中,炒股人群尚且有自知之明,不妄图通过股东会投票掌控这些公司,而是让这些公司保持持续的价值增长,是符合其自身的利益最大化(分工合作),DPoS机制下,始终庄家控制不住把票投给自己的手,不管怎么深刻地反思,投票的那一刻,总是让自己当选。节点只是一种技术角色,实现出块,加上人治的因素后,各种不确定性问题将会层出不穷。

所以这些链条如采用与比特币共享算力的方式来搭建节点,这些不确定性都会消失,发展重心可以回归其在应用上的探索。

消除或减少通胀压力

ETH和EoS及很多公链理论上都是无限通胀,靠出块奖励维持节点,而在合并挖矿实施之后,因为矿工的边际成本很小,可以减少相当比率的出块奖励,进而消除或减少通胀压力。

消除链上治理负担

区块链即治理遵循最简单的原则,即算力原则,追随最长链原则,是一种简洁有力的治理模型,而且,不要以为算力是为所欲为的,今天,资金从市场撤离,矿工马上也会停止挖矿,矿工更不会自己去写代码,资金市场、算力、技术是一种多方博弈的状态,这些状态不需要在链上写入代码规则,就可以有效运转,把Code is law理解成anything is code是非常肤浅的。人类社会绝大部分的问题不需要通过代码解决,而且能够比代码解决得更好。复杂的链上治理,各种投票选举,角色定义,像在玩过家家非常幼稚的政治游戏,甚至可能使这些链条脱离其本来追求的目标。

消除算力维护的需求

很多公链其实都在极低的安全系数下裸奔,陷入死亡螺旋,即使不乏可圈可点的创新,如果没有稳定的算力维护,也会因此而消亡。而与比特币共享同一个算力、安全系数,可以完美解决这个问题。

合并挖矿的技术方案

这是一个确定性很高的方案,不是什么新鲜的技术方案,域名币很早就实现与比特币的合并挖矿,而狗狗币也在于与莱特币合并挖矿。类似以太坊的比特币侧链RSK也是与比特币合并挖矿,以下为其实现说明。

合并挖矿

合并挖矿是一种使用相同挖矿算力来保护一级区块链的同时,实现保护第二级区块链的技术。域名币(NMC)是第一个与比特币进行合并挖矿的加密货币。合并挖矿通过从二级区块链(最近构建的新块的加密哈希) 嵌入块 id 来执行,同时在一级区块链块的某处正在挖矿。这个二级哈希以一些简短的描述文本或 magic 字节作为前缀,称为合并挖矿“标签”。前缀可以使二级区块链找到该标签。但是,标签位置不得含糊不清:来自一级区块链的块最多只能与二级区块链的一个块关联或不关联。 虽然将加密哈希用于链接可以防止作弊,但链接安全要求远低于传统加密学中的要求。通俗地说,合并挖矿的唯一安全要求是在二级区块链的难度下,创建可以与同一二级区块链中的两个块关联的一级区块链块必须比挖掘两个不同的一级区块链块(每个关联关系一个块)更难。

PoW代理

简单地说,二级区块链可以使用与比特币一致的难度系数,也可以使用更低的难度系数,矿机在计算比特币出块的过程中,算出来的对于比特币无效的解法,可以对二级区块链有效。在合并挖矿中,比特币标头仅用作工作证明代理。RSK 区块链必须解释比特币块标头的 PoW 并搜索比特币块中唯一与 RSK 块标头建立关系的标签。因此,它以可传递的方式将比特币块 PoW 转换成 RSK 块 PoW。

如上所述,RSK 区块链的难度低于比特币区块链的难度,因此许多没有解决比特币 PoW 难题的比特币块标头将成为 RSK PoW 难题的有效解决方案。让我们深入分析一下这种差别。每个区块链会计算每个块的预期难度。该难度由之前的所有块来定义,从而使块之间的平均时间大致保持不变。从内部而言,难度会转换为“目标”,而“目标”与难度成反比。目标为 256 位无符号整数。

区块链 目标
比特币 000000000000000000165exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RSK 00000000000000000db5a4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
域名币 00000000000000000019xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

同一天合并挖矿区块链的近似目标。RSK具有更高的目标,因为块的频率高出了20倍

由于加密哈希摘要不可预测,假设作为块标头内容的加密哈希摘要的块标头 id 表示均匀随机变量。虽然这在理论上可能不正确,但在实际情况中却有效,因为并没有已知的实际方法用于反转比特币(double SHA256) 或 RSK (Keccak) 中使用的哈希函数。若解释为无符号数字,该哈希摘要则必须低于目标,块才能作为 PoW 难题的解决方案。因此,目标越低,解决 PoW难题的难度就越大。

SPV证明

二级区块链无需完整的比特币块来验证比特币标头的 PoW 并将其与 RSK 标头关联。这种关联可以通过 SPV 证明(主要包含 Merkle 树会员资格证明)来证明。下图描绘了该证明的不同部分之间的关系。蓝色方框表示 SPV 证明中包含的信息,需要在 RSK块上传输。

比特币 SPV 证明可以压缩合并挖矿 PoW 证明

目标层次结构

RSK目标通常高于比特币目标,因为RSK块比比特币块出块速度更快,因此RSK难题较容易解决。所以,解决RSK PoW难题的比特币块标头可能无法被比特币网络接受。注意,两个难题均涉及比特币标头的使用,并且实际解决这两个难题需要同样的尝试-错误过程。那么,当矿工希望解决更难的比特币难题时,矿池如何检测并通知更频繁解决的RSK难题?答案是,矿工已经在试图解决难度比比特币的要求低得多的块。这些中间块被称为“共享块”,矿池需要用它们来进行核算。事实上,是矿池软件命令矿工尝试解决更简单的难题(指定更高的目标)。您可能认为共享块是某种帮助解决实际比特币难题的中间解决方案,但并非如此。共享块无法成为真正的块解决方案。然而,矿工越强大,她在实际解决方案之间为矿池创建的共享块就越多。因此,共享块可以为矿工贡献的核算提供更高的粒度。定期将共享块传输至矿池,以使该服务器可以公平地分割所有相关客户端之间的未来收益,以加权其哈希贡献。但是,由于其中一个共享块(碰巧) 可能成为当前比特币PoW难题的解决方案,所以也会传输共享块。因此,矿工无需从矿池接收实际比特币PoW难题难度(或目标),而且在矿池反馈此结果之前他们通常不知道是否已解决比特币块。矿池检查每个收到的共享块,重构块标头;如果标头 double SHA256 哈希摘要在数值上低于与当前比特币难度有关的目标,它会将块转发给bitcoind进程,然后由bitcoind进程通过网络传播。由于每个二级区块链可能有不同的难度,具有合并挖矿能力的矿池必须对它处理的每个二级区块链进行这项检查。如果比特币标头是RSK区块链PoW难题的有效解决方案,它会将比特币块标头发送给rksj,rksj将附加相关的RSK块并转发它,因为它对RSK网络有效。

注意,对 RSK 而言,矿池可以选择仅向rskj传输嵌入比特币块的标签的SPV证明(稍后会详细介绍这一点),以降低带宽要求。

下表显示了比特币、RSK和共享块的近似难度(根据2019年6月之前为找到难题解决方案迭代的随机数平均数量):

解决方案 出块间隔 找到解法进行随机迭代的平均次数 假设
比特币 10分钟 2^74 100%比特币算力
RSK 30秒 2^69 50%合并挖矿
挖矿池共享块 每个客户端3.3秒 2^52 20%的算力,4000个客户端

RSK标签嵌入

RSK 标签包括与二进制数据块连接的 ASCII 标识符“RSKBLOCK:”,它包括正在挖掘的 RSK 块标头的哈希摘要。如前面所述,标签的标识不得含糊不清(不得创建可与两个不同 RSK 块关联的比特币块)。虽然域名币为不同的合并挖矿区块链定义了打包标签的方案,但是提议的方案从未被标准化。因此,为了提高未来兼容性并使 minerpool 软件更加通用,RSK 标签可以位于生成交易中的任何位置(区块的第一个交易,有时也称为 coinbase)。RSK 标签可以位于生成交易的 coinbase 字段中,或生成交易的任何输出中(通常是一个 OP_RETURN 有效负载)。下图显示了两种可能的方式。 存储在 Coinbase 字段中的 RSK 标签 存储在生成交易的一个输出中的 RSK 标签

当前的RSK标签格式

RSK 标签的当前格式:RSKBLOCK:RskBlockHeaderHash

“RSKBLOCK:” 是 ASCII 字符串,包含字节:52 53 4b 42 4c 4f 43 4b 3a.

RskBlockHeaderHash 是二进制格式的 RSK 块标头的 Keccak 哈希摘要,没有合并挖矿字段,该字段将在解决 PoW 后填写。

将 RSK 标签包含在输出脚本中时,应在 OP_RETURN OP_PUSHDATA1 操作码后包含它,以防止滥发比特币 UTXO,但这并非一致认可的强制要求。

以下额外限制适用:

1)紧接在 RskBlockHeaderHash 后面直至 coinbase 交易末尾的字节数必须少于或等于 128 个字节。

2)末尾的原始字节不得包含二进制字符串 “RSKBLOCK:”(52 53 4b 42 4c 4f 43 4b 3a)

3)如果 RSK 标签位于非最后输入脚本中,RSK 标签碰巧出现在后续输出字节中的概率微乎其微。poolserver 软件不得排除生成交易中包含的流氓比特币地址嵌入标签并用作破坏合并挖矿标头有效性的攻击的可能性。对于在生成交易本身中分配收入的去中心化矿池(例如 p2pool) 而言,这可能是一个问题。因此,我们建议将最后输出脚本用于 RSK 标签。

4)如果 RSK 标签位于 coinbase 字段中,“RSKBLOCK:” 作为 Stratum 协议的一部分碰巧出现在内容由解决块的矿工提供的 ExtraNonce2 数据字段中的可能性微乎其微。此外,矿工可能会恶意地将标签包含在 ExtraNonce2 中。只要 poolserver 在 ExtraNonce2 数据块后添加 RSKBLOCK: 标签,这就不是问题。

标准P2SH输出消耗34个字节,因此尾部长度限制(标签之后的最大字节数) 通常意味着标签必须位于coinbase字段中或在 coinbase交易的最后4个输出内。

末尾字节限制允许RSK全节点创建压缩SPV证明,其中包括:

1)比特币标头(80 字节)

2) Coinbase 交易的 Merkle 分支(约 320 个字节)

3)消耗 coinbase 交易头部的 SHA-256 的中间状态(32 个字节)

4)包含 coinbase 交易尾部的 64 字节排列数据块,包括 RSK 标签(最大 169 字节)。如果使用尾部,则协议允许将尾部属于 coinbase 交易的证明用作以指定中间状态开始的自由开头哈希。

5)目前的 SPV 合并挖矿证明最大长度为 780 字节。

poolsever 软件可以将整个块或该 SPV 证明发送至 rskj 守护程序。如果 rskj 收到一个块,它会解析该块并提取必要的字段以构建 SPV 证明。

RskBlockHeaderHash 由标准 RSK 节点(rskj 守护程序) 创建。 Rskj 公开一个包含“getwork”命令的挖矿 RPC-JSON 接口。矿池插件轮询 rskj 守护程序并保持最近的 RskBlockHeaderHash值以提供给矿池。如果共享块哈希足够低,RSK PoW 难题将得到解决,并且矿池会通知该插件,然后由插件通知 rskj 守护程序。

即将到来的网络升级(也称为 Armadillo) 中的合并挖矿改进

即将到来的 1.0.0 版本具有网络升级功能,可改进合并挖矿标签格式。新格式由 RSKIP110 指定。 变更添加其他信息到 RSK 合并挖矿标签中,以便用户或自动化系统可以做出有关网络健康的明智决策。使用标签监控工具,RSK 网络节点也可以以保护节点免受双重支付攻击的方式自动响应异常情况,并且在未来节点中可以向网络的其他节点传播简明的异常状态加密证明。

32 字节块标头哈希被具有以下格式的 32 字节字节数组取代:1)合并挖矿哈希的 20 字节前缀(前缀)

2) 7 字节承诺父块向量(CPV)

3)最后 32 个块中的 1 字节叔叔块数量,限制为 255。

4) 4 字节块数(BN)

四个字段必须进行一致检查。简而言之,CPV、NU 和 BN 字段可以使任何监控比特币区块链的节点创建正在构建的 RSK 块并行竞争链图,即使没有传播至 RSK 网络。 RSK 标头的哈希被截短为 20 个字节,因此标签仍占有 32 个字节,以便保持与 矿池软件的兼容性。

RSK合并挖矿安全性

使用工作证明的 Nakamoto 共识理论基于热力学和博弈理论安全性,而不是加密安全性。RSK 合并挖矿对任何可以在不到 30 秒的时间内计算 2^80 次哈希操作的非理性攻击者而言都是安全的。理性攻击者更愿意正当行事,并对仅需要约 2^69 次操作(RSK 块的当前难度) 并且完全由比特币补贴的 RSK 块进行合并挖矿,而不是发起其他攻击。不考虑此攻击与其他合并挖矿系统的远程组合可能性,试图执行 2^80 次哈希操作的非理性攻击者需要投入比理性矿工多 2000 倍的硬件,并且他的电力消耗不会得到补贴。假设他使用类似于最先进比特币矿机的硬件,投资金额将达到约 5 万亿美元(5e12)。但是,对非理性攻击者而言情况更加糟糕,因为他只能产生一个或多个共享同一RSK块高工作证明的块,并且我们之后将看到这通常不会为攻击者带来任何金钱收益。因此,这 5 万亿美元将被浪费掉。所以 80 位安全性将在所有组件上达到良好平衡,并且安全性非常弱的组件不会成为攻击目标。为了证明这一点,我们将以简单通俗的方式来评估一下可能的攻击目标。

首先,RSK 通过非标准加密技巧压缩生成交易。它没有提供完整的生成交易,而只是传输尾部。为了始终能够产生此消息的正确加密哈希,它从 Merkle–Damgård 结构的中间状态而非初始状态开始进行哈希操作。这个 64 字节中间状态沿着尾部传输。安全地使用此技巧需要假设 SHA256 具有更强的属性,称为“ 自由开始碰撞攻击”抵抗力,而且我们需要它至少和暴力破解 80 位一样安全,这是我们的目标安全阈值。SHA-1 (已破坏哈希函数) 具有最著名的自由开始攻击,需要约 80 位的暴力攻击。在 SHA256 中没有发现自由开始碰撞攻击,并且最佳结果对应于 SHA256 减少轮数版本(38/64 轮,需要 2^65 次操作) 中的 fiding 半自由开始碰撞,因此我们可以得出结论,RSK 合并挖矿是安全的。必须注意,在 SHA256 上进行需要 2^80 次操作的假定自由开始攻击对 SHA256 而言是毁灭性的, 而且这使其无法用作安全标准哈希函数,总之比特币会遇到麻烦。但是,若发现此类攻击,RSK 平台可以通过网络升级轻松得到保护,即不用这种加密机巧进行 SPV 压缩,但代价是块大小会略微增加。 然而,如我们之前所述,即使从位安全性的角度而言攻击比合并挖矿成本更低,但其成本效益并不高。

其次,对于即将到来的 1.0.0 版本中哈希摘要的截断,新方案为标签碰撞提供相当于 80 位的安全性。然而,该攻击从理论、经济和计算方面而言均不合理。从计算复杂度的角度来看,80 位碰撞攻击所需使用的内存量是不切实际的。此外,碰撞攻击的 CPU 成本比解决 RSK PoW 难题的成本高 2000 倍(69 与 80 位)。

从理论的角度以及 RSK 中使用的 DECOR+ 共识的方面而言,由于碰撞只能发生在相同的 RSK 块高上,碰撞块会共享块奖励,因此,如果过去的块奖励约等于新块的奖励,则找到过去块的新兄弟块没有任何好处。攻击者主要在跟自己竞争。出于相同的原因,发现新块的碰撞没有好处;随着难度增加,必须在平均 30 秒的时间内执行,而不是参考叔块的 5 分钟。

从经济的角度而言,诚实合并矿工会赚取比特币交易费,因此比特币会补贴合并挖矿,而攻击者必须支付碰撞攻击的全部费用。因此,几乎对 PoW 链接的任何攻击都不具有经济效益。这对 RSK 块哈希上的哈希摘要碰撞和 coinbase 交易哈希上的自由开始碰撞均有效。

因此,即使考虑到计算效率的突破,我们仍认为标签对于未来 20 年都是安全的。但是,如果计算趋势完全改变,未来网络升级可以轻松地将哈希大小扩展回全部 32 个字节。

RSK 合并挖矿插件开发

下图显示了标准矿池架构,包括RSK合并挖矿插件:

图片描述 具有与不同网络连接的 RSK 合并挖矿插件的 Poolserver

Poolserver RSK 插件使用两种 JSON-RPC 方法(mnr_getwork 和 mnr_submitBitcoinBlock)与 rskj 守护程序通信。 其他提交方法可以发送较少信息至 rskj 节点,以减少带宽消耗。可以配置 rskj 守护程序的 JSON-RPC 连接端口,并且默认值为 4242。关于方法和数据交换格式的描述,请访问: https://github.com/rsksmart/rskj/wiki/JSON-RPC-API。这些方法将与很多属于 Web3 接口的其他方法一起实现,Web3 接口是连接至 rskj 节点的标准接口。

RSK 团队开发了几个对 CoiniumServ、Ckpool、Btcpool 和 Eloipool 等多个矿池实现完全有效的插件。其他矿池已实现其自身的插件。我们建议使用 Ckpool 而不是其他矿池软件,因为它经过了优化,并且我们通过大量验证证明合并挖矿不会影响比特币的挖矿性能。

很快,我们将开设针对合并挖矿插件开发的指导课程,以提供帮助矿池构建有效和可靠的合并挖矿模块的其他提示。

必须注意,由于 RSK 使用 DECOR+ 协议,矿池软件可以不断处理矿池客户端发现的所有 RSK PoW 解决方案,即使 RSK 父块已经改变。所有竞争块(称为叔块) 都会获得奖励。

之前各条主链不采用合并挖矿的原因

技术事实上的标准形成是漫长的

互联网整整走了20年,才实现了基本的互联互通,不存在一种英明神武的技术标准,在一开始就被制定出来。事实是,在发明了几十种非常“牛逼”的技术后,最后留下来一种被广泛认可的事实上的标准。国际标准化组织(也就是大名鼎鼎的ISO),规定互联网的网络层通信标准是CLNS协议,而事实上,我们今天用的IP协议。我的学生曾经向我咨询,如何在美国邮政局的网络上操作CLNS向IP迁移的网络割接,因为美国政府当年严格遵照了ISO的标准化规定,留下了一堆CLNS网络,后面为与IP实现互通头痛不已。所以,不要认为有一种英明神武的标准,一开始就被制定好,然后所有人都自觉地遵守,只有实践才是检验真理的唯一标准。

早年二层的链路层主流协议有以太网、令牌环、FDDI、ATM、FrameRelay、X.25,其中ATM技术由业界顶尖企业组成论坛共同制定,研发耗资千亿美元级别,包括七层协议互操作标准全部贯穿,堪称出神入化,任正非曾因为日本上市的ATM交换机非常先进而焦虑。犹如今天Facebook的Libra,然而ATM技术很快被市场淘汰出局,在图书馆里留下一排排布满灰尘的书。网络及报文传输协议包括了Netbiso/Netbeui(微软公司主导)、Appletalk(苹果公司主导)、SNA(IBM公司主导)、IPX/SPX协议(Novell公司主导)、CLNS协议(ISO国际标准组织)……,这些网络通信协议现在都躺在历史的垃圾堆里面。各家企业为了自身利益甚至设置专利门槛,这很像今天各条公链都意图把价值锁定在其所附带的“币”上面。

技术标准必然由市场竞争做出选择,无情的市场会做出最符合理性的选择,今天互联网采用TCP/IP是事实上的标准,而不是由某些人事先制定好的英明神武的技术标准。

矿工的收益问题

一条链条启动的时候,需要通过矿工激励以维护节点,假如矿工没有预期的收益,便不会去维护节点和出块,今天有很多的链条本质上都是“单机”币,就是发行项目方自己在挖,几台服务器一关机,链条就消失了。

这些链条想寻求合并挖矿是不行的,收益太低导致比特币的矿池看不上这些链条,不提供合并挖矿的服务,新链条高攀不上比特币的基础算力网络,所以只能独立挖矿。

公链项目方的发展理念

区块链处于相对早期的状态,很多公链项目方的发展理念都是取代及超越其它公链,以追求超越以太坊的较多,同时也在模仿以太坊的路线,所以更倾向于封闭链条。

合并挖矿对市场的压力

合并挖矿也就是所谓“零成本”挖矿,对于项目方而言,会害怕因此造成市场抛压。其实以太坊ERC20代币可以视为与以太坊联合挖矿所发行的零成本代币,因此并不难找到通胀可控的方法。

实现各条主链合并挖矿

市场竞争导向

在组建互联网的过程中,IETF制定了一系列的草案,没有任何人强迫任何人去执行。最终一定是通过市场长期的多方博弈,实现了某种事实上的分层耦合标准。也就是说,但凡给出一个固定的技术分层架构的设计,都可能会违背市场的真实需求。多样化的架构经过实践,不断地由市场本身进行筛选优化,会逐步形成通用的实践方案。

开源社区的分叉操作

Coinmarketcap上排名Top 100的币种里面至少有50种具有应用生态价值,可以进行分叉操作,以直接对接比特币的算力层。

结算链、缠绕链、应用链的分层对接关系

结算链

比特币是典型“结算链”,实现的功能包括:不可逆记账、去中心化安全共识。犹如IP地址满足全球互联网地址可路由的基础需求,比特币作为区块链的第一种应用,打造了一个结算链的协议基准,这个基准,通过了数学、传输、性能、可持续扩展等多个方面的论证,Ok没有问题。大部分的结算链沿用的是比特币的协议基准,还有其他的一些协议基准改变比较大,但是缺乏持续的安全性论证。这并不是说中心化的区块链没有价值,而是我们在讨论这个问题的时候,有这么一个前提是必须明确的,即基于去中心化和去信任化的区块链网络。“结算链”是一种最基础的链,比特币就是这种链的典型,这种链要求节点多、充分离散化分布、协议可迭代而不会造成兼容问题、高安全壁垒;能够持续保证这个效果,就可以承担结算链条的功能。互联网的应用目前还在不断进化,但是我们用的IP协议,可以做到五十年不变,从电脑到手机到可穿戴智能设备,统统还是可以由最古老的IP协议来承载通信。二十年前的“All over IP”是一个新潮的口号,现在已经很稀松平常。结算链作为区块链架构里面的底层基准代表,目前已经锁定了一系列的事实上的标准,我相信近期不会有变动的需要,长期也可以做到稳定不变,灵活性、扩展性、功能性将会由侧链(缠绕链)、应用链来实现。这类似于IP的所有“不足”,在TCP和HTTP层面得到充分即解决。在IP协议同时代的“竞争协议”,虽然在功能性、扩展性、吞吐性能、可管理性等各方面都有亮点,但无不因为技术耦合度太高,而被淘汰。

缠绕链(侧链)

侧链(sidechain)的正式定义应该是“缠绕链”,负责缠绕对接“应用链”和“结算链”。这三者的关系是分层的,类似IP、TCP、HTTP,这是三种不同的协议、不同的报文格式,只有小部分功能特征相似,但主要功能是分层次松耦合度的,各自为政,各自可以对各自透明。TCP的80端口可以对接HTTP,也可以对接其他应用。同理,这三种链也可以做到各自对各自透明,但是又可以对接协同工作。

侧链对结算链(算力链)的缠绕核心技术实现就两项,也就是是双向锚定(2WP)和联合挖矿。实现的效果是建立公共安全的底层区块链网络,下一个阶段的技术进化趋势,分散的区块链网络应用通过侧链链接起来,让所有应用可以共享底层区块链公共网络的安全环境、算力环境、结算环境、分布式去中心化环境、运行环境。

侧链对应用链的承载功能,包括两项,智能合约的运算平台,基础数据库保存。其实这两项功能就是以太坊和它的一队竞争队友的基本功能,但如上所说,垂直实现的结果就是一千种应用在一条链上运算,一千种应用数据保存于一条链上,这会导致严重的性能扩展的问题,数据量同步负担过重也会造成安全问题。以太坊建设成为一台共享大型的虚拟机的目标,也许能够实现,但是区块链只有一台计算机无疑太单一了。

通过将运算平台分离和应用数据数据分离,解决性能和数据治理的扩展性问题。直白一点说,应用里面关键的基础数据,比如账号、权限、索引、验证信息,可以保存在侧链上,但是其他的应用内容本身,可以单独用独立应用链保管,比如某个应用只有三五个用户,它这三五个节点自行保管应用链内容即可,那么即使这样的长尾应用千千万万,也不会对主链造成沉重的数据负担。在这种结构下,应用链仍然可以发行代币激励矿工或者节点运行者,以提供必要的网络性能和节点规模,但理想的情况是应用链开发者不用操心这个问题,利用侧链的底层架构做支撑,只需要专注于应用本身的开发,让应用回归到应用。

应用链

数据与结算分离

腾讯公司的商业模式如果真的赚钱,它赚人民币、美元就可以了,它为什么一定要赚QQ币呢?微信有很多用户,但是否有必要增加一种“微信币”,是需要全方位的论证的,你能想象腾讯公司和人民银行是二合一的同一家公司吗?绝大部分的应用开发,没有发行通证的必要性,比如说现在很多博彩Dapp,用户进去赌博输钱这种行为跟赌场是一样,无可厚非,但是很多用户在这种“赌场”里面很多时候不是赌博亏钱,而是买了赌场特制的一种内部筹码(通证)亏钱。

同时,应用的数据与结算层进行分离,反倒可以保障应用数据的安全(这些数据里没有钱)。应用与应用之间的数据也可以很方便地实现隔离,记事本和养猫养狗的数据分开。有些长尾应用可能用户就几个人,但也不能说它没有价值,有一个人用也是有价值的,这份数据独立保存,就像互联网曾经关闭掉的几百万个网站,是否保存完全由用户选择。

身份与数据分离

比特币的数据结构是每个人的交易记录全部在链上,但交易记录写入的权限由用户保存的私钥控制。这就像我们的手机号,早年运营商认为手机号不属于用户,离开运营商,这个号码就要收回去,现在这种想法已经过时了,用户可以携号转网,这个号码是属于用户的,运营商只是使用这个号码的载体,哪天运营商倒闭了,我的号码还是在的。

所以数据保存在哪里不重要,重要的是这个数据的所有权是谁的?怎么验证数据的所有权?以及数据使用的权限如何控制?

应用链拥有独立的运行逻辑

我们知道在以太坊上运行任何Dapp都需要“烧油”(手续费)的,烧油当然是有意义的,不烧油的话,以太坊就不安全了。但不是所有的应用都有必要这么做,可能要设置更低的手续费乃至零手续费,独立应用链可以根据自身的情况设立规则和逻辑。

技术、经济、政治的分层协作

比特币是一种币,不是一种软件

显然,比特币是一种币,而不是一种软件。因为,没有任何一种软件需要每天烧掉几千万的电费进行算力安全维护。比特币,最早被视之为一种社会实验,现在我们认为它是一种钱,它的组成包括了技术、经济、政治等各个领域的因素。

放大到整个社会的角度,比特币仍然只有很小的圈子内使用,要追求其得到广泛的社会认可,如果仅仅在技术上去架构它,可能无法实现其既定的目标,因为更多的问题不是技术问题。就像早期很多人认为TPS是阻碍比特币流通的因素之一,而很多高TPS的实现也没有得到更高的认可。

寻求共识与执行共识是比特币发展路线的核心

比特币的发展路线,本质上的核心是寻求共识和执行共识。不同的发展路线往往不是技术上的分歧,而是在如何寻求共识和执行共识的具体方式上的分歧。最省事的寻找共识和执行共识的办法,是由中本聪树立绝对伟大光明正确的权威,然后所有人追随跟进,这当然不切实际。在比特币的发展历程中,还出现过算力投票、用户节点激活(软/硬)分叉等寻求和执行共识的方式,还有少数技术开发组通过霸王硬上弓的硬分叉来寻求共识,并形成共识分裂的情况,比如BCC、BCH、BSV先后因硬分叉而独立存活。

寻求共识和执行共识的方法不局限于技术

最早参与比特币的是技术开源社区,而后随着社会影响范围和生态的扩大,形成各种经营主体,以及包括经济学家、社会活动者、律师等角色也都相继加入。去中心化的社区寻求发展路线,如何寻求共识和执行共识,早期主要靠技术驱动,而后市场和资金有很强的主导能力,随着生态的繁荣,类似国家社会,寻求共识和执行共识的主要驱动角色,将会逐步由社区政治家承担,比如说类似任正非这种精通毛泽东思想的实践者,能够处理好涉及到错综复杂的利益纠葛关系,懂实事求是、群众路线以及独立自主,把共识做大做强,这显然不是某方面的技术专家所能够完全覆盖的。探索可行的动态和进化的技术架构,也不仅仅是技术问题,不存在理论上的技术最优解,寻找可行的解法,远比理论上的最优化更重要,这也是为什么拥有全面技术优势的ATM被TCP/IP所取代的原因。


Similar Posts

Comments