快速解读
无需许可的公有链可以让所有组织、政府和个人的内部和相互之间都实现高效、安全、透明的资产和价值转移。同时它也帮助更多的私营企业能够拓展潜在市场,实现盈利增长,以及开发新产品。
但是,这样的一个区块链系统可能没法满足传统企业(比如金融、央行、政府、医疗健康等)在隐私和合规方面的需求。这些机构必须非常谨慎地去选择由谁来运行他们的区块链网络,以及验证他们的交易。因此,一个私有的许可链,并且最好是能够实现与公链相互操作性的私有许可链,才能更好地满足这类企业的需求。若是没有这种互操作性的存在,那么这些链上的用户可能无法与其他许可链或者更广阔的外界进行沟通交互,从而面临被孤立的风险。
为了同时满足对两类区块链系统的不同需求,Algorand 针对性地开发了 Co-Chain区 块链架构。Co-Chain 主要有以下几个特点:
- 完全独立于公有区块链,保护其交易不被外部人员所看到,可以自行选择验证者节点,并自行来运行Algorand共识协议
- 通过与Algorand主链交互从而和其他Co-Chains以及其他方之间进行交易,并且确保该过程和在Algorand无需许可的公链内进行资产交换拥有相同程度的安全性和便利性
- Co-Chain能够使用原子交换(Atomic Transfers),智能合约(ASC)等所有Algorand公链原生拥有的工具和特性;实际上,Co-Chain能够自动享受到Algorand公链上所有的升级以及性能提升。
这个世界同时需要无需许可和许可的区块链系统,而Algorand则提供了这两类系统的最佳实现。更重要的是,Algorand保证了它们的协同效应:无论一个许可链的可扩展性、去中化、和安全性如何,它的成员也依然能够选择与其他区块链系统进行交互。Algorand Co-Chain架构可以使其许可链的成员不仅在彼此之间,也可以在不牺牲最大限度自治的情况下,与Algorand公链和其他Co-Chain进行最安全及有效的交互。若是用户愿意,世界也近在咫尺。
本文先对 Algorand 公链,即非许可链版本的 Algorand 进行简要回顾,之后将介绍许可链版本的 Algorand,即 Co-Chain,的定义和面临的挑战,并对 Co-Chain 的解决方案作出简要说明。
ALGORAND非许可链版本
区块链的前景和挑战
透明、不可篡改和素不相识者之间的信任,这些是公有非许可区块链的基础。然而,在技术发展不足的情况下,区块链多年来一直是人们梦寐以求的实现目标。
ALGORAND 非许可区块链
Algorand 提供真正去中心化、可扩展和安全的非许可区块链。它具备真正去中心化的特点:每个代币都可以参与共识协议,与任何其他代币具有相同的权力。它具有可伸缩性,因为它只需使用少量的运算,即可支持数十亿用户在几秒之内生成一个区块。而且它很安全,因为它不可能被少数矿工或受托人或者一小部分代币的所有者破坏。事实上,只要 Algorand 区块链的大多数代币掌握在可靠的人手中,它就能保证正常工作。Algorand 协议依赖于全新的技术,例如其独特的密码抽签和超高效的拜占庭协议。除了完全的去中心化、可扩展性和安全性之外,Algorand 非许可区块链还具有以下显著特性:
- 无分叉和即时交易确认。Algorand 区块链不会分叉。每个新区块都是单独商定的,并且保证永远留在 Algorand 链上。[1]因此,用户可以立即信赖新区块中包含的交易,而不必等待区块在链中具有足够的深度。
- 在 Layer 1 处理标准资产和智能合约。区块链在不同的层面上处理不同的交易。第 1 层是最直接和最安全的一层。传统意义上来说,第 1 层只处理普通支付和共识协议本身,新资产的发行、智能合约和其他的所有事务都在第 2 层处理。但众所周知,第 2 层的协议速度慢、成本高并且容易出错。相比之下,Algorand 在第 1 层还会处理标准资产和大量智能合约的发行,包括资产代币化、原子交易[2] 和抵押借贷,并且能够在必要时隔离和收回有争议的交易。事实上,Algorand 在第 1 层就满足了智能合约的大多数当前用例,并且具有与普通支付手段相同的安全性和效率。
ALGORAND许可链版本
许可型区块链的主要优点是能够保护交易不受外界干扰 [3]。在 Algorand 的非许可链版本中,每个原生代币(除了作为本地货币 (Algo) 的计量单位之外)都可以参与共识协议,并具有与其他代币相同的权力。但是,在 Algorand 的许可链版本中,企业 E 只能将给定的 10M 代币池用于共识协议,并以任何方式将其划分到自己选择的验证节点集合 V 中。例如,E 可以选择 V 仅包含 5 个验证节点,并为每个验证节点分配 2M 共识代币。这样做的结果是,E 为五个验证节点中的每一个提供了生成新区块的相同能力。另举一例,E 可以选择 55 个验证节点,为前 5 个验证节点每个分配 1M 代币,并为另外 50 个验证节点每个分配 100K 代币。这样的话,E 为前 5 个验证节点分配的区块生成能力就是其他 50 个验证节点的 10 倍。Algorand 的许可型版本具有极细的颗粒度级别,可以为不同的验证节点分配不同的权重。通过Algorand 许可区块链,而不是从头开始构建自己的许可链或采用另一个许可链,E 获得了以下主要优势:
- 按需分配的加权去中心化。选择任意数量(任意权重)的验证节点是至关重要的。实际上,E 可能想做出这种选择来提高自己区块链的安全性,或者扩大它所服务的社区。最初为少量金融机构服务的区块链可以从少量的验证节点开始。但是,如果以后它想要为中小型银行和信用合作社服务,而所有这些机构都希望参与区块生成,该怎么办?适用于少数参与者的共识算法可能无法有效地适用于成百上千的参与者。而中途改变策略可能相当具有挑战性!通过允许共识协议扩展到数十亿个验证节点,E 能够保证在任何时候毫无问题地扩大验证节点集。缩小规模容易,扩大规模就难了。
- 交易最终性和第 1 层智能合约。无论是私有还是公有区块链,许可型还是非许可型区块链,对于任何区块链来说,交易最终性都是一个至关重要的属性。在第 1 层处理大多数智能合约需求的能力也是如此。通过在 Algorand 中增加权限控制特性,E 从而获得一个许可型区块链,该区块链会自动继承这些至关重要并且很难拥有的属性。
- 可升级性和持续创新。无论何时将升级改进和创新添加到核心的无许可型 Algorand 主链,使用许可型版本的 Algorand 协议均会自动为 E 提供未来的升级改进和创新。
ALGORAND Co-Chain:定义和挑战
定义
Algorand Co-Chain是特殊的 Algorand 许可链版本。因此,它是一个可扩展的许可链框架,可按需实现去中心化,具有交易即时确认和第 1 层智能合约等特性。它还满足一个额外的关键特性:
- 与其他Co-Chain的互操作性。许可型区块链能让给定范围内的用户安全地进行互动。但它可能不允许他们与其他实体和个人进行互动。这是一个很大的限制,因为“外部”的世界比“内部”的世界更大,我们可能想要与更大的世界互动。一组金融机构可能想建立他们自己的许可链。但是一些医疗机构可能也想这样做。由于医疗保健是经济的重要组成部分,所以金融机构链想必希望与医疗机构链进行交互和资产交换。如果没有外部的互操作性,许可链的成员就可能被困在自己的链中。
Co-Chain是 Algorand 许可链,它能保证 Algorand 无许可链与其他Co-Chain之间高效和安全的互操作性。
第一个挑战:安全性。
许可链之间的互操作性很容易声明,但很难得到保证。考虑一个简单的例子。用户a拥有资产 x,他希望与拥有资产 y的另一用户 b进行交换。如果 a和 b属于 Algorand 无许可链或同一个 Algorand Co-Chain,此问题可以在 5 秒内解决,并且具有最终性和安全性。实际上,他们可以使用原子交换,这是 Algorand 中作为第 1 层交易可用的主要工具之一。但是,如果 a是Co-Chain A 的成员,b是另一个Co-Chain B 的成员,该怎么办?
不同链间的资产交换通常通过哈希锁定协议来实现的。但是这种方法存在相当大的问题。除了需要多个逻辑复杂的步骤之外,它还容易受到拒绝服务攻击。这样的攻击可以使欺骗一方保留自己的资产,同时获得另一方的资产。为了避免这种情况,协议可能需要持续很长一段时间,这可能使拒绝服务的成本高于相关资产的价值。
第二个挑战:明确所有权。
但是,这又会产生另一个问题,并且该问题适用于仅涉及x和y及其各自区块链A和B的任何协议。也就是说,由于A 和B是许可型的私有链,最多只有它们的成员知道x和y交换了原始资产,因此,b现在由链A的成员拥有。如果链B损坏,没有什么能够阻止y多次向其他区块链的成员出售b或用其交换其他资产!从本质上讲,这相当于资产交换的双重支付。
如果许可链的大多数验证节点是恶意的,或者其密钥已泄露,那么该许可链就算是腐败了。在腐败的链中,原始区块可以被替换为假区块,这样就再也无法弄清楚谁拥有哪些资产。(这就是去中心化对安全来说至关重要,以及几百个验证节点比几十个更好的原因!)许可链的损坏具有很强的隐匿性,因为它的私密性可以防止外部人员注意到这种腐败。链的损坏是比较罕见的事件,但当它发生时,应该只影响链的成员,而不应该影响诚实链!没人能够保证另一条链可以保持诚实。但是……
链的互操作性应该保证诚实链的成员所获得的任何资产都有明确的所有权。即便从腐败的链的成员处获得的资产也是如此。
ALGORAND(简化版)Co-Chain体系结构
现在,我们来概述一下 Algorand Co-Chain如何互操作。为简明起见,我们先忽略隐私特性。
序言
我们用 MAIN来表示 Algorand 的主网,它是无许可并且公开的。相应地,每个Co-Chain监控 MAIN的区块。对于每个Co-Chain C,MAIN维护
- C的验证节点的最新列表VALIDATORSc,
- 以及C的成员拥有的,可以转让给其他链的所有资产的最新列表ASSETSc。
最初,当一个Co-Chain形成时,这两个列表都可能被包含在本质上是C在“MAIN中的创世区块”。(这个创世区块与C的原始创世区块不同,它指示哪些是C的初始公钥,以及这些密钥最初拥有哪些资产。)随着时间的推移,VALIDATORSc和 ASSETSc都通过C在 MAIN中发布由C的最新验证节点列表(适当多数)签署的适当交易进行更新。
需要强调的是,MAIN不仅对Co-Chain C 中发生的交易一无所知,而且也不知道 C的实际公钥,更不用说使用这些密钥的实际用户了!事实上,ASSETSc不会透露有关C中控制 ASSETs中资产的公钥的任何信息。
从 Algorand Co-Chain 到主链的资产转移
Algorand Co-Chain A 的用户 x可能想要通过公钥 tx将他拥有的资产 a转移到 MAIN。用户 x这样做可能出于多种原因。例如,x可能想拍卖 a,而“出价的人越多,价格就越高”。因此,与其在 A上拍卖 a,用户 x可能更愿意在 MAIN上拍卖,这样不仅有 A的成员报价,还有 MAIN或其他Co-Chain的成员报价。事实上,Co-Chain的任何成员都可以轻松地向 MAIN转移稳定币,唯一的目的就是参加拍卖。
与Co-Chain A 中普通的转移相同,将 a从 tx转移到 MAIN的操作由 tx的数字签名授权,用符号表示为 SIGx(tx, a, MAIN)。由于 tx拥有a ,并且转移得到了适当的授权,SIGx(tx, a, MAIN)会进入经 A的验证节点适当认证的 A的一个新区块 X。此时,Co-Chain A 的所有成员意识到 tx和 A中的任何其他公钥均不拥有资产a。因此(除非 A已损坏),tx不能再授权 a在 A内或 A外的转移。
与 A的所有其他区块相同,X的结构是为了便于将 SIGx (tx,a, MAIN)和转到 MAIN的所有其他资产转移与所有其他信息隔离开来,这些信息必须仅对 A的成员保持可见。从概念上来说,表示方式如下:
X= (SIGx (tx, a, MAIN), other transfers to MAIN, H)
其中H是A中所有交易的单向哈希(通常长度为 256 位),必须在A中保持私密。需要注意的是,X的格式非常紧凑。实际上,除了打算传递给 Algorand 主链的信息外,它只包含 256 个字节。此格式的区块X以及它在A中的证书会传播到MAIN的节点。
由于Co-Chain A运行与MAIN相同的共识算法,并且MAIN知道 A 的验证节点,因此MAIN的验证节点可以解析X的证书,并了解到
- tx是A拥有资产a的密钥,并且
- 密钥tx的所有者希望将 a转移到 Algorand 的主链。
相应地,
- 资产a会从 ASSETS A中移除,并且
- 密钥tx会被记录为MAIN拥有(在MAIN中!)资产a的(可能为新的)密钥。
注意:步骤 1 中使用的MAIN既是公有的,也是非许可的。具体来说,MAIN为非许可型这一事实能够保证tx成为MAIN中的密钥,不会出现任何问题。并且MAIN是公有的这一事实能够保证所有人意识到资产a现在位于MAIN中。这能够保证y将(在下一个步骤中)获得a的明确所有权。事实上,无论Co-Chain A 是否损坏,x和A中的任何其他成员均无法将a转移给任何其他Co-Chain的任何成员。
从主链转回Co-Chain的资产转移
在 MAIN中出售 a后,tx可能会想将拍卖所得的稳定币转移给 A。
更普遍的情况下,如果 tx是 MAIN和 A两者的公钥,tx可能会想将它在 MAIN中拥有的资产 b转移到 A。同样,这样的转移可能是由 tx的数字签名授权的,用符号表示为 SIGx (tx, b, A),它会进入 MAIN的一个新区块。由于 MAIN为非许可型,A的验证节点可能会看到 SIGx (tx, b, A) 出现在 MAIN的区块中,或者它们可以通过 tx本身看到这种出现的适当紧凑证明。无论哪种情况,A的验证节点都将导致 tx成为 A中资产 b的当前所有者,因为它已经是 A中的一个密钥。同时,只要 SIGx (tx, b, A) 出现在 MAIN的区块中,tx便不再拥有 MAIN中的 b,并且 ASSETS A将更新为包含资产 b。
Co-Chain互操作性
接下来,我们使用上面提到的相同资产交换示例来说明Co-Chain是如何互操作的。现在,A和 B是不同的 Algorand Co-Chain。具体来说,资产 a在 A中由公钥 tx控制,其私钥为 x所知,而资产 b在 B中由公钥 ty控制,其密钥为 y所知。
要交换它们的资产,x和y通过以下概念步骤利用MAIN。
1. 在链A中,tx“将a转移到MAIN”,并向MAIN提供转移证明。在链B中,ty“将b转移到MAIN”,并向MAIN提供转移证明。
2. 在MAIN中,tx和 ty通过原子互换交换a和b。
3. 在MAIN中, tx将b转移到A,并且 ty将a转移到B。链A 和B都能看到这两项转移。
步骤 1 的说明
步骤 1 可以通过tx在MAIN的区块中发布 SIGx (tx, a, A) 来实现,如上所述。相应地,在MAIN中,
- 资产a会从 ASSET A中移除,并且资产b会从 ASSET B中移除。
- 密钥tx不再拥有a。
类似地,对于ty来说也是如此。
步骤 2 的说明
从现在开始,在 MAIN中,tx拥有a,并且ty拥有b,它们可以在几秒钟之内以超级安全的方式交换这些资产。实际上,所采取的方式是第 1 层原子交易,这是 Algorand 非许可链的主要功能特性之一。
步骤 3 的说明
如前所述,在 MAIN中,tx将b转移给 A 中的自己,因为tx仍然是A的批准密钥。类似地,对于ty来说也是如此。
附加说明
我们可以注意到,整个过程非常快。实际上,以上三个步骤中的每一步都可以在生成新区块所需的时间内执行。这一时间在 Algorand 的主链中不超过 5 秒。但是在 Algorand Co-Chain中生成区块可能会快很多。实际上,在 Algorand 协议中,可以在确保大多数验证节点看到区块所需的时间内生成一个区块。在网络速度很快的Co-Chain中,这一时间可以忽略不计。
我们还注意到,整个过程发生在第 1 层,因此无论是在主链中还是在Co-Chain中,都具有更高的安全性。
最后请注意,给定Co-Chain的资产累计价值可能超过 Algorand 主链的估值。然而,Algorand 的主链并不用于保护任何Co-Chain的资产。在给定的时间点,它仅用于处理给定Co-Chain的少量资产,并且仅持续几秒钟。也就是说,它用于处理Co-Chain想与另一个链交换的资产。
增强私密性
Algorand Co-Chain之间资产交换的隐私性可以大幅增强。
具体而言,tx和 ty可以是临时密钥,仅供 x和 y在本次资产交换中使用。也就是说,在开始上述的三步流程之前,x生成临时公钥 tx 并将资产 a从之前持有a的任何公钥转移到 tx。完成步骤 3,并且 tx 在 A中拥有资产 b后,x可以将 b从 tx转移到他选择的任何其他公钥。通过这样的方式,Algorand 的主链永远不知道 A中的哪个公钥最初拥有资产 a,以及哪个公钥最终会拥有 b。
[1] Algorand 共识不是一个漫长的过程。随着越来越多的区块被附加到给定的区块 B 上,人们越来越有可能对 B 达成共识。Algorand 单独对新的区块达成协议,这一过程完成后,再对下一个区块达成协议,以此类推。
[2] 原子交易让多名用户能够通过单笔交易交换资产,或者以多种货币执行多笔支付。因此,原子交易中的任何参与者都无法欺骗其他参与者,并且没有人害怕自己是第一个尝试的人。
[3] 另一个经常提到的选择许可型区块链的原因是安全。然而,这个理由忽略了一点,即去中心化本身就是安全性的主要来源。