未审核版本
01月2021年
将应用程序与区块链生态系统连接起来
1.0草案
摘要
多个区块链生态系统正在出现,它们提供了对用户和应用开发者具有吸引力的独特和鲜明的特征。然而,各生态系统之间的通信非常稀少且零散。为了使应用程序能够无摩擦地跨区块链生态系统进行通信,我们提出了Axelar。Axelar栈提供了一个去中心化的网络、协议、工具和API,允许简单的跨链通信。Axelar协议套件由跨链路由和传输协议组成。一个由验证者组成的去中心化的开放网络为该网络提供动力;任何人都可以加入、使用和参与。拜占庭式的共识、密码学和激励机制被设计用来实现高安全性和跨链请求特有的有效性要求。
1引言
区块链系统正在迅速普及,吸引了资产代币化、去中心化金融和其他分布式应用的新用例。几个主要的平台,如Ethereum,Monero,EOS,Cardano,Terra,Cosmos,Avalanche,Algorand,Near,Celo,andPolkadot提供了独特的功能和开发环境,使它们对不同的应用、用例和终端用户具有吸引力[5,11,4,21,20,23,24,19,6,14,25]。然而,每个新平台的有用功能目前只提供给生态系统中不到1%的用户,即该平台上原生代币的持有者。我们能否让平台开发者轻松地将他们的区块链插入到其他生态系统中?我们能否让应用构建者在满足其需求的最佳平台上构建,同时还能在多个区块链生态系统之间进行交流?我们能不能让用户直接从他们的钱包与任何区块链上的任何应用程序进行互动?
为了架起区块链生态系统的桥梁,使应用程序能够在它们之间无摩擦地通信,我们提出了Axelar网络。验证者集体运行一个拜占庭式的共识协议,并运行促进跨链请求的协议。任何人都可以加入该网络,参与并使用它。底层网络针对跨链请求所特有的高安全性和灵活性要求进行了优化。Axelar网络还包括一个协议套件和API。
其核心协议有
-跨链网关协议(CGP)。该协议类似于互联网上的边界网关协议。该协议用于连接多个自治区块链生态系统,并负责在它们之间进行路由。区块链不需要"讲任何自定义语言",其平台开发者不需要对其链进行任何自定义修改,其链可以轻松插入全球网络。
-跨链传输协议(CTP)。该协议类似于互联网上的应用级协议文件传输、超文本传输协议。它是一个应用级协议栈,位于路由协议(如CGP和其他路由技术)之上。应用开发者可以在任何链上连接他们的dapp,执行跨链请求。用户可以使用CTP协议与任何链上的应用程序互动,使用类似于HTTPGET/POST请求的简单API调用。开发者可以在任何区块链平台的任何两个地址之间锁定、解锁和转移资产,执行跨链应用程序的触发器(例如,如果B链上的其他应用程序满足某些搜索条件(利率>X),A链上的应用程序可以更新其状态),并在跨链应用程序之间执行一般的跨链请求(A链上的智能合约可以调用更新B链上智能合约的状态)。该协议实现了跨区块链生态系统的程序的可组合性。
Axelar网络具有以下优势。
-对于区块链平台建设者。能够轻松地将他们的区块链插入到所有其他区块链生态系统。只需要在链上设置一个门限账户就可以插入网络。
-对于dapps构建者。应用程序构建者可以在任何地方托管他们的dapp,锁定、解锁、转移资产,并通过CTPAPI与任何其他链上的应用程序沟通。
-对于用户来说。用户可以直接从他们的钱包与整个生态系统的所有应用程序进行互动。
一个建设者的平台。
最后,Axelar网络是一个为开发者提供的平台,是一个全球社区。
它的治理模式对任何人都是开放的。开发者可以提出新的集成点、路由和应用级协议,而用户可以通过投票决定是否采用这些建议,如果被批准,验证者将采用这些变化。
1.1现有的互操作性解决方案
之前解决跨区块链互操作性的尝试分为四类:集中式交易所、可互操作的生态系统、包装资产和代币桥。我们在下面简要地总结一下这些方法。
集中式系统。今天,集中式系统是唯一真正可扩展的解决方案,以满足生态系统的互操作性需求。他们可以相对容易地列出任何资产或登上任何平台。然而,众所周知,集中式系统有各种安全问题,不足以为新兴的去中心化金融系统提供动力,该系统需要强大的安全性、透明度和开放的治理。它们本身不能为去中心化的应用提供动力,因为它们在成长。
互操作性中心。诸如Cosmos、Polkadot、Avalabs等项目使用定制的链间通信协议解决其生态系统中原有的侧链之间的互操作性[23,25,24]。例如,人们可以旋转一个侧链(CosmosZone),可以与CosmosHub进行通信。该侧链必须以Tendermint共识为基础,并使用CosmosHub所理解的本地协议。与其他使用不同语言的区块链和生态系统的连接将留给外部技术。
成对桥接。被包裹的资产(例如,被包裹的比特币)试图填补生态系统中缺失的跨链互操作性的空白。一个例子是tBTC[9],它是一个定制的协议,其中智能合约和抵押品的巧妙组合被用来保证转账的安全。这些解决方案需要大量的工程努力来构建--对于每个链对,开发者必须在目的地链上构建一个新的智能合约,解析来自起源链的状态证明(类似于每个侧链原则上可以解析其他链的状态)。只有少数几个桥被部署使用这种方法。当其中一个底层区块链想要升级其共识规则或交易格式时,这些方法无法扩展。这是因为所有依赖这些链的状态的智能合约都需要升级。人们还必须设置验证人,并要求他们锁定不同的资产,以便对任何资产转让进行过度抵押,这限制了这种转让的经济效率。
我们也看到了其他一些由平台开发商开发的单一用途的桥梁,它们在智能合约中重写了状态转换逻辑,以连接到其他生态系统[1,7]。它们存在多种可扩展性问题,不允许生态系统统一扩展,并为应用程序引入额外的依赖性。例如,如果一个平台发生变化,那么所有桥接的智能合约都需要升级。这最终会使生态系统陷入僵局,没有人能够升级。最后,如果一个单用途桥连接平台A和B,第二个单用途桥连接B和C,这并不意味着A上的应用程序将能够与C上的应用程序对话,人们可能需要创建另一个单用途桥或重新连接应用逻辑。
解决互操作性的其他尝试包括联合口令(例如Ren[8])和特定应用的可互操作区块链[10]。
总而言之,现有的互操作性解决方案需要平台开发者和应用程序构建者进行繁重的工程工作,他们必须了解不同的通信协议,以便在每一对生态系统中进行通信。就这样,互操作性在今天的区块链领域几乎不存在。
在一天结束时,平台开发者希望专注于建立平台,并为他们的使用情况进行优化,并能够轻松插入其他区块链。而应用开发者希望在最适合他们需求的平台上建立dapp,同时还能利用用户、流动性,并与其他链上的其他dapp沟通。
2对可扩展的跨链通信的追求
在核心方面,跨链通信要求异构网络能够找到使用相同语言进行通信的能力。为了解决这个问题,我们解释了Axelar协议套件,描述了它的高级属性,并解释了这些属性如何解决可扩展的跨链通信的核心问题。
1.1."即插即用"的整合。区块链平台建设者不应该被要求进行繁重的工程或集成工作,以讲一些"自定义语言"来支持跨链。跨链协议应该能够无摩擦地插入任何现有或新的区块链。新的资产应该以最小的努力被添加。
2.跨链路由。发现网络地址、路由路径和网络等功能是互联网的核心,由BGP和其他路由协议促进。同样,为了促进跨区块链生态系统的通信,我们需要支持跨地址的发现、应用和路由。
3.3.可升级性支持。如果其中一个区块链生态系统发生变化,它不应该影响其他区块链的互操作性。系统需要识别更新,支持更新所需的努力应该是最小的(即,不应该重写"状态转换逻辑",应用程序不应该中断)。
4.4.统一的应用语言。应用程序需要一个简单的协议来锁定、解锁、传输以及与其他应用程序进行通信,无论它们位于哪个链上。这个协议必须是与链无关的,并支持简单的调用,类似于HTTP/HTTPS协议,允许用户和浏览器与任何网络服务器通信。随着越来越多的网络和资产加入低级别的路由协议,应用程序应该能够使用它们进行通信而不需要重写他们的软件栈。
接下来,我们总结一下这些协议必须满足的安全要求。
1.去中心化的信任。网络和协议必须是去中心化的、开放的,并允许每个人公平参与。
2.2.高安全性。系统必须满足高安全保障。在跨链网络的处理过程中,系统需要维护资产和国家的安全。
3.3.高度的灵活性。该系统必须满足高灵活性的保证,以支持利用其跨链功能的应用。
满足这些属性的一个子集很容易。例如,人们可以和他们的朋友一起创建一个联合的多签账户,并在相应的链上锁定/解锁资产。这样的系统在本质上容易受到串通和审查攻击,并且缺乏适当的激励机制让验证者保护它们。创建一个任何人都可以参与的去中心化网络和协议套件,同时得到正确的激励,可以实现无摩擦的跨链通信,但解决这个问题是一个难点,需要仔细结合共识、加密和机制设计协议。
3Axelar网络
Axelar网络为跨链通信提供了一个统一的解决方案,既满足了平台开发者的需求--不需要他们进行整合工作,也满足了应用程序构建者的需求--一个简单的协议和API来访问全球流动性并与整个生态系统进行通信。
Axelar网络由一个去中心化的网络组成,它连接了使用不同语言的区块链生态系统和一个带有API的协议套件,使应用程序能够轻松地执行跨链请求。该网络连接了现有的独立区块链,如比特币、Stellar、Terra、Algorand,以及互操作性中心,如Cosmos、Avalanche、Ethereum和Polkadot等解决方案。我们的任务是使应用开发者能够使用通用协议和API更容易地建立这样的应用程序,而不需要在下面推出他们专有的跨链协议,或在开发新的桥梁时重写应用程序。为此,我们设计了一个协议套件,包括跨链网关协议(见第6节)和跨链传输协议(见第7节)。
网络的一个核心组成部分是底层的去中心化协议。验证者集体维护Axelar网络,并运行保护Axelar区块链的节点。他们是通过用户的授权过程选出来的。验证者根据委托给他们的股权按比例获得投票权。验证者就平台所连接的多个区块链的状态达成共识。区块链负责维护和运行跨链路由和传输协议。
治理规则允许网络参与者颁布协议决定,如哪些区块链需要桥接,哪些资产需要支持。
Axelar区块链遵循类似于CosmosHub的委托证明(DPoS)模式。用户选出验证者,他们必须将自己的股权绑定,以参与共识并维持高质量的服务。DPoS模型允许维护大型去中心化的验证者集和强大的激励机制,以保证验证者负责维护加密门槛计划的桥梁和份额。作为共识的一部分,验证者运行其他区块链的轻客户端软件,允许他们验证其他区块链的状态。验证者向Axelar区块链报告这些状态,一旦有足够的验证者报告,比特币、以太坊和其他链的状态就会被记录在Axelar上。
随后,Axelar基础层在任何时间点上都能知道外部区块链的状态,创建来自其他区块链的"传入桥梁"。验证者共同维护其他区块链上的门限签名账户(例如,80%的验证者必须批准并共同签署任何交易出来),这使得他们可以跨链锁定和解锁资产和状态,并在其他区块链上发布状态,即"传出桥梁"。总的来说,人们可以把Axelar网络看作是一个去中心化的跨链读/写预言机。
本文的其余部分描述了网络背后的预设和构建模块(第4节),网络的一些技术细节(第5节),跨链网关协议(第6节),以及跨链传输协议(第7节)。
4序言
4.1符号和假设
让Vr表示R轮的Axelar验证人集合。每个验证人都有一个权重,一个在(0,1)中的数字,表示该验证人的投票权。所有验证人的权重加起来都是1。如果一个验证人运行的节点符合Axelar协议的规则,那么她就是正确的。为了最终确定区块,或签署跨链请求,Axelar需要总权重大于F的正确验证人。我们把参数F∈[0.5,1]称为协议阈值。
Axelar可以基于即时终结性Delegated-Proof-of-Stake区块链。验证者在每轮i运行拜占庭容错(BFT)共识以最终确定第i个区块。一旦第i个区块被最终确定,新的BFT共识被运行以最终确定第i+1个区块,以此类推。验证人是通过股权委托选出的。拥有一些股权的用户可以选择运行一个验证者节点,或者将他们的投票权(股权)委托给现有的验证者,然后由其代表投票。验证者集合可以被更新,验证者加入/离开集合,用户委托/取消委托他们的投票权。
不同的区块链在不同的网络假设下工作。同步通信意味着信息传递的时间有一个固定的上限∆,其中∆是已知的,并且可以建立在协议中。异步通信意味着消息可能需要任意长的时间来传递,众所周知,即使在只有一个恶意验证者的情况下,也不能为异步网络建立BFT协议。同步性和异步性之间的一个现实的折衷办法是假设部分同步通信。在某个未知的全局稳定时间(GST)之前,网络可能是完全异步的,但在GST之后,通信变得同步,有一个已知的上限∆[17]。
典型的区块链是在>F正确验证者的假设下工作的。对于同步网络,F=1/2是典型的设定,但对于部分同步网络的较弱假设,F=2/3。
比特币,它的分叉,以及目前以太坊的工作证明版本只在假设同步的情况下工作。其他如Algorand和Cosmos只要求部分同步。当通过Axelar连接区块链时,假设这些区块链中最强的网络假设,例如在连接比特币和Cosmos的情况下,这就是同步。Axelar区块链本身在部分同步的情况下工作,因此需要F=2/3,但是通过假设其他现有的区块链是安全的并利用它们的安全性,可以提高阈值要求。
4.2加密学预案
数字签名。一个数字签名方案是一个算法的元组(Keygen,Sign,Verify)。Keygen输出一对密钥(PK,SK)。只有SK的所有者可以签署信息,但任何人都可以根据公钥PK验证签名。今天,大多数区块链系统使用标准的签名方案之一,如ECDSA、Ed25519或它们的一些变体[2,3]。
阈值签名。阈值签名方案使一组n个当事方以这样的方式分割签名方案的秘钥,即t+1或更多当事方的任何子集可以合作产生签名,但t或更少当事方的子集不能产生签名,甚至不能了解关于秘钥的任何信息。ECDSA和EdDSA的阈值协议产生的签名看起来与独立算法产生的签名相同。
阈值签名方案用分布式n方协议T.Keygen,T.Sign取代了普通签名方案的Keygen和Sign算法。这些协议通常需要公共广播信道和各方之间的私人成对信道,而且它们通常涉及几轮通信。在成功完成T.Keygen协议后,每个用户都持有一个秘密密钥SK和相应的公钥PK的份额si。T.Sign协议允许这些当事方为一个给定的消息产生一个在公钥PK下有效的签名。这个签名可以由任何人使用原始签名方案的验证算法来验证。
4.3阈值签名的属性
阈值方案可能有几个特性,对去中心化网络来说是特别理想的。
对不诚实的多数人的安全性。一些阈值方案有这样的限制:只有当n个当事方中的大多数是诚实的,它们才是安全的。因此,阈值参数t必须小于n/2[15]。这个限制通常伴随着这样一个事实,即需要2t+1个诚实方来签名,尽管只有t+1个腐败方可以串通起来恢复秘钥。不受这种限制的方案被认为是对不诚实的多数人是安全的。
正如后面第5.2节所述,跨链平台必须最大限度地提高其网络的安全性,并能够容忍尽可能多的腐败方。因此,能够容忍不诚实的大多数的方案是必要的。
预签名,非交互式在线签名。为了减少各方在签署信息时的通信负担,最近的几个协议已经确定了签名的很大一部分工作可以"离线"完成,在要签署的信息被知道之前[18,13]。这个离线阶段的输出被称为预签名。预签名的产生被视为一个独立的协议T.Presign,不同于T.Keygen和T.Sign。预签名协议的输出必须被各方保密,直到他们在签名阶段使用它们。之后,当要签署的信息被知道时,只有少量的额外"在线"工作需要在T.Sign中完成,以完成签名。
在线T.Sign阶段不需要各方之间的任何通信。每一方只需对消息和预签名做一个本地计算,然后宣布她的签名份额si。(一旦公开,这些签名份额s1,..一旦公开,这些签名份额s1,...,st+1很容易被任何人结合起来以揭示实际的签名s)。这一属性被称为非交互式在线签名。
稳健性。阈值方案只保证一个子集的恶意方不能签署信息或学习秘钥。然而,这种保证并不排除不良行为者可以阻止其他人产生密钥或签名的可能性。在一些方案中,即使是单方的恶意行为也会导致T.Keygen或T.Sign中止,没有有用的输出。唯一的办法是重新启动协议,可能是用不同的一方。
相反,对于去中心化的网络,我们希望T.Keygen和T.Sign在至少t+1方是诚实的情况下能够成功,即使一些恶意的一方在协议中发送错误的消息或丢弃消息。这一特性被称为鲁棒性。
故障归因。在T.Keygen或T.Sign中识别不良行为者的能力被称为故障归因。
如果没有故障归因,就很难可靠地排除或惩罚不良行为者,在这种情况下,不良行为者所带来的成本必须由所有人承担。这一属性对于去中心化的网络也很重要,在这种网络中,恶意行为应该是可识别的,并通过削价规则在经济上予以抑制。
并发环境中的安全性。签名方案需要在并发环境下是安全的,在这种情况下,密钥源和签名算法的多个实例可以并行参与。(例如,Drijvers等人[16]展示了在这些环境中对Schnorr多签名方案的攻击)。ECDSA和Schnorr方案都有满足这些特性的版本[13,22]。
ECDSA和EdDSA是迄今为止在区块链领域最广泛部署的签名方案。
因此,这两种方案的阈值版本一直是最近研究和发展的重点。对最先进技术感兴趣的读者可以参考[22,13,18]和最近的一篇调查报告[12]。
5Axelar网络
5.1设计一个开放的跨链网络
Axelar网络维护的桥梁是由门限账户支持的,这样(几乎)所有的验证者必须集体授权任何跨链请求。设计一个任何人都可以参与的网络来保证这些桥的安全,需要满足以下技术要求。
-开放的成员资格。任何用户都应该能够成为验证者(遵循网络的规则)。
-对成员资格的更新。当一个验证者诚实地离开系统时,他们的密钥需要被适当地撤销。
-奖励和惩罚。恶意验证者应该是可识别的,他们的行为必须被识别并由协议处理。
-共识。阈值方案本身被定义为独立的协议。为了在节点之间传播信息,我们需要广播和点对点的私人通道。此外,验证者需要就每次调用阈值方案的最新状态达成一致,因为它们经常有多轮的互动。
-密钥管理。就像任何PoS系统中的普通验证者必须仔细保护他们的密钥一样,Axelar验证者也必须保护他们的门槛份额。钥匙需要轮换,在在线和离线部分之间分割,等等。
Axelar以委托认证模式开始,社区选出一组验证者来运行共识。请注意,标准的门限方案对每个玩家都是相同的,在共识中没有"权重"的概念。因此,网络必须对其进行调整,以考虑到验证人的权重。一个简单的方法是给较大的验证者分配多个门限份额。下面概述了验证人共同执行的三个基本功能。-阈值密钥生成。现有的标准区块链签名方案(ECDSA,Ed25519)的阈值密钥生成算法是多个参与者之间的互动协议(见第4节)。Axelar网络上的一个特殊交易指示验证者开始执行这个有状态的协议。每个验证者都运行一个阈值守护进程,负责安全保存秘密状态。对于协议的每个阶段。
1.一个验证器在其本地存储器中保存协议的状态。
2.2.它调用秘密守护进程,按照协议描述为其他验证者生成消息。
3.3.它通过广播或私人通道将消息传播给其他验证者。
4.4.每个验证者执行状态转换功能,以更新其状态,进入协议的下一阶段,并重复上述步骤。
在协议结束时,在Axelar链上生成一个阈值公钥,它可以显示回用户(例如,用于存款)或生成初始请求的应用程序。
-阈值签名。在Axelar网络上的签名请求与密钥生成请求的处理方式类似。例如,当用户想从某个链上提取资产时,这些请求会被调用。这些都是交互式协议,各轮之间的状态转换是作为通过Axelar区块链视图和每个验证人的本地内存传播的消息的功能来触发的。
-处理验证人成员的变化。验证人组需要定期轮换,以允许新的利益相关者加入该组。在验证器集合更新时,我们需要更新门槛密钥,以便在新的集合中共享。因此,如果我们允许任何人在任何时候加入,我们将不得不非常频繁地更新阈值密钥。为了防止这种情况,我们每隔T个区块就轮换验证人。在T轮的间隔内,集合VR和阈值密钥是固定的。在每一轮是参数T的整数倍时,我们按以下方式更新验证人集合。
1.在任何一轮R,Axelar状态保持跟踪当前验证器集VR。VR+1=VR,除非R+1是T的倍数。
2.2.在((i-1)T,iT]轮中,用户发布绑定/不绑定信息。
3.3.在第iT轮结束时,这些信息被应用于ViT-1,得到ViT
-在轮值验证人存在的情况下,阈值密钥生成和签名。Axelar区块链可以在R轮发出新钥匙或阈值签名的请求。签名过程需要的时间超过一轮,我们不想拖累共识,所以我们要求在R+10轮开始之前产生签名。特别是,验证者只有在看到R+9轮的证书和R轮发出的每个密钥/签名请求的签名后才开始R+10轮。所有R轮请求的结果必须包含在R+11块中。换句话说,不包含R轮-11轮的结果的R轮区块提案被认为是无效的,验证者不对其进行投票。为了确保所有的阈值信息在验证人集合更新之前被签署,Axelar在等于-1,-2,......的一轮中不发出任何阈值请求。,-9的模数T。
5.2网络安全
区块链系统的安全性依赖于各种密码学和博弈论协议,以及网络的去中心化。例如,在股权证明区块链中,如果没有适当的激励措施,验证者可能会串通起来,改写历史,在这个过程中窃取其他用户的资金。在工作证明网络中,如果没有足够的去中心化,就很容易产生长分叉和双重消费,正如对比特币黄金和以太坊经典的多次攻击所证明的那样。
大多数关于区块链安全的研究都集中在主权链上。但是,一旦链的互操作,就必须考虑新的攻击载体。例如,假设以太坊通过两个智能合约(一个在以太坊上,一个在X上)控制的直接桥梁与一个小区块链X对话。在这种情况下,如果ETH已经转移到X,X的验证者可能会串通起来伪造X的历史,在那里他们持有所有的ETH,在以太坊上发布伪造的共识证明并窃取ETH。
当X通过直接桥接与其他多个链相连时,情况就更糟糕了,如果X分叉,其影响会通过每个桥接传播。对于任何一个单独的项目来说,为每一个成对的桥接设置恢复治理准则是一项压倒性的任务。
Axelar网络通过以下机制解决安全问题。
-最大安全性。Axelar将安全阈值设置为90%,这意味着几乎所有的验证者都需要串通起来提取任何被其网络锁定的资金或伪造状态证明1。在实践中。
据观察,PoS验证者有非常高的运行时间(接近100%),假设他们得到适当的激励。因此,Axelar网络即使在这种高门槛下也会产生区块。
然而,在极少数情况下,如果出了问题,网络停滞不前,网络需要强大的回退机制来重新启动接下来描述的系统。
-最大限度的去中心化。由于网络使用阈值签名方案,验证人的数量可以尽可能多。网络不受我们可以支持的验证者数量、交易限制或费用的限制,例如,在不同的链上使用多重签名,其复杂性(和费用)会随着验证者的数量线性增加。
-健全的回退机制。在一个具有上述高安全阈值的网络中,必须解决的第一个问题是,当网络本身停滞时,会发生什么。假设Axelar网络本身停滞。我们能不能有一个后退机制,让用户恢复他们的资金?为了解决Axelar网络本身的任何潜在停滞,Axelar验证者集体控制的区块链X上的每个阈值桥账户都有一个"紧急解锁密钥"。这把钥匙可以共享将为网络部署选择的最终参数可以调整。
2对于一些区块链来说,多签名提供了一个合理的替代方案,在Gas较小且支持的消息格式合适的情况下。但对于比特币和以太坊这样的两个最大的平台来说,它们的规模并不大。
跨越数千方,甚至可能是区块链X的自定义密钥,在该链的社区内共享。因此,如果Axelar网络停滞不前,这个密钥将作为一个回退机制,并能够恢复资产(详情见下文)。
-最大限度地去中心化后退机制。这个后退机制包括一个二级恢复用户组,任何人都可以无偿参与其中。这些用户不需要在线,不需要运行节点,也不需要相互协调。他们只有在Axelar网络停滞不前,无法恢复时才会被"召唤"。网络的安全性通过对主验证器集的非常高的门槛和最大限度的分散的二级恢复集得到了加强。
-共同治理。一个共同的协议管理着Axelar网络。集体而言,用户可以投票决定哪条链应该通过其网络得到支持。网络还将分配一个资金池,在发生意外紧急情况时可以用来偿还用户,也通过治理协议控制。
下面将讨论各种安全机制。
回退机制。当Axelar由于高阈值而停滞不前时,"紧急解锁钥匙"会控制网络。有多种方法来实例化这个解锁钥匙,某些链/应用可能会选择利用不同的变体作为"恢复集"或完全选择退出。
-选项a.在区块链项目的基金会和社区内有声望的人之间分享钥匙。
-选项b.在通过委托PoS机制选出的各方之间共享。
-选项c.对于管理链/应用X的资产和信息的账户,分享一个自定义密钥
假设X有治理机制,同样的治理机制可用于确定Axelar停滞不前时的行动方案。
现在,给定恢复用户的身份和他们的公钥,一个简单的协议就能产生无人知晓的恢复密钥的共享。此外,恢复集的用户不需要在线,直到通过治理机制调用恢复。按照标准的分布式密钥生成协议,每个Axelar验证者都会分享一个随机值。恢复秘钥是通过对这些值进行求和而产生的。与其在明处进行求和,不如在恢复用户的公钥下对所有份额进行加密,然后以同态方式相加(这假定了加法同态加密和一个额外的零知识层,这两者都很容易获得)。这个协议的结果是一个恢复的公钥RPK和可能是成千上万的加密(在恢复用户的公钥下)的相应的秘密密钥Enci(si)的份额,并分配给他们的所有者(例如,张贴在链上)。Axelar桥梁合约包括在某些条件下使用RPK恢复资金的选项。
最后,也可以更新这个恢复密钥,甚至改变持有其股份的用户集合,而不需要参与股东做任何工作。
如果与Axelar相连的X链断裂,有几个选择。
-对任何一天可以移入/移出X的资产的美元价值施加限制。因此,在Axelar验证器发现之前,恶意链X只能窃取与之连接的所有资产中的一小部分,而下面的治理机制就会启动。
-Axelar治理模块可以用来投票决定在这些情况下发生什么。例如,如果有一个良性的错误,社区重新启动X,Axelar治理可以决定从原地重新启动连接。
-如果ETH已经转移到X,一个自定义的以太坊恢复密钥可以决定ETH资产的情况。
6跨链网关协议(CGP)
在这一节中,我们就许多应用需求之间共同的两个核心例子解释跨链网关协议和路由机制。
状态同步(第6.2节)。将源区块链S的状态信息发布到目的区块链D的状态中。
(例如,将一个比特币区块头发布到以太坊区块链上)。
资产转移(第6.3节)。将数字资产从S转移到D,然后再转回来。
(例如,将比特币从比特币区块链转移到以太坊区块链,然后再转回比特币区块链)。
为了简单起见,我们假设D链至少对智能合约有最小的支持,但S可以是任何区块链。
6.1其他链上的账户
为了连接不同的链,在每个链上创建了门限账户,控制价值和信息在它们之间的流动。对于链Chain,用ChainAxelar表示该账户。
比特币账户。对于比特币和其他非智能合约链,Axelar验证者按照5.1节的规定创建了一个门槛ECDSA密钥。这个密钥控制着比特币上的ECDSA账户,也是用户发送存款的目标地址。个性化的阈值密钥可以根据用户的要求创建。密钥可以定期更新,最新的密钥和个性化的密钥可以通过查询Axelar节点找到。
阈值桥账户在有智能合约的链上。用SC表示链。验证者按照5.1节创建一个阈值ECDSA或ED25519密钥,这取决于链支持哪种密钥类型。我们用PKAxelar来表示这个密钥,当我们指的是哪条链时,不会有任何歧义。这个密钥控制着SC上的一个智能合约账户,用SCAxelar表示,SC上的任何应用程序都可以查询SCAxelar以了解该密钥的PK地址。这样一来,任何SC的应用程序都可以识别
由SCAxelar签署的信息。该协议还需要考虑到PKAxelar的旋转值。这发生在以下情况。
1.在SC上初始化SCAxelar。它将PKAxelar存储为其状态的一部分,该状态在Axelar上被初始化为其创世值。SCAxelar还包括更新PK的规则。
2.为了更新PKAxelar,必须提交一个格式为(update,PKnew)的交易,并有当前SKAxelar的签名。然后合同设置PKAxelar=PKnew。
3.每次验证者将SC的门槛密钥从Pki更新到Pki+1时,Axelar要求验证者使用Ski来签署(update,PKi+1)。随后,这个签名被发布到SCAxelar,后者更新PKAxelar。
6.2状态同步
让qS表示一个关于链S的状态的任意问题,这种问题的例子包括
-"在哪个区块轮,如果有的话,交易tx出现了?"
-"某个数据字段的值是多少?"
-"在第314159轮区块中,S的整个状态的Merkleroothash是什么?"
让aS表示qS的正确答案,假设一个最终用户或应用程序要求将aS发布到D链上。
1.用户在其中一个桥梁账户上发布请求qS(随后被验证者拾取)或直接发布到Axelar区块链上。
2.作为Axelar共识的一部分,每个验证者必须为链S、D运行节点软件。Axelar验证者查询其链S节点软件的API,以获得答案aS,并将答案报告给Axelar链。
3.3.一旦>F的加权验证者在R轮报告相同的答案,Axelar要求验证者签署aS。
4.4.使用阈值加密法,验证者签署aS。签名被包含在R+11区块中。
5.任何人都可以从区块R+11中获取签名值aS,并将其发布到D。
6.6.该请求已经得到了服务。D上的任何应用程序现在可以拿着签名的值aS,查询DAxelar的最新PKAxelar,并验证aS的签名与PKAxelar对应。验证者也将aS发布到D链上的桥接账户,应用程序可以检索到。
6.3跨链资产转移
该网络通过扩展第6.2节的状态同步工作流程来实现数字资产的跨链转移。
DAxelar在初始化时打印并控制了足够的挂钩S代币的供应。假设一个用户要求用源链S上的X量代币换取目的链D上的X量挂钩S代币,并存放在用户选择的D地址wD上。我们提出了完全通用的工作流程,它支持任意的源链S--即使是不支持智能合约的比特币这样的链。
1.用户(或代表用户的应用程序)向阈值桥账户发布转账请求(x,wD),该请求随后被路由到Axelar网络。
2.2.Axelar验证者使用门槛加密技术,共同为S创建一个新的存款地址dS。
他们将dS发布到Axelar区块链上。
3.3.用户(或代表用户的应用程序)通过监控Axelar区块链了解dS。
用户通过一个普通的S交易txS向地址dS发送x量的S代币,使用她最喜欢的S链的软件。
(由于dS的阈值属性,代币不能从dS花费,除非有阈值数量的验证者协调这样做)。
4.txS被发布在Axelar上。验证者询问他们的S链节点软件的API是否存在txS,如果响应为"真",则向Axelar链报告答案。
5.一旦>F加权验证者在R轮报告txS为"真",Axelar要求验证者签署一个交易aD,从DAxelar向wD发送x量的挂钩S代币。
6.6.使用阈值加密法,验证者签署aD。签名包括在区块R+11中。
7.7.任何人都可以从区块R+11中获取签名的值aD,并将其发布到D。
8.8.请求已经得到了服务,一旦aD被贴到D上,转移就被处理了。
现在假设一个用户要求将x
0数量的包装好的S代币从D链回到S链,存入用户选择的S地址wS。其工作流程如下。
1.用户发起转账请求(x0,wS),通过普通的D交易,使用她喜欢的D链软件,将x0数量的包装好的S代币存入cD。
2.(x0,wS)被发布在Axelar上。验证者询问他们的D链节点软件的API是否存在(x0,wS),如果响应为"真",则向Axelar链报告答案。
3.3.一旦>F加权验证者在R轮报告"真"(x0,wS),Axelar要求验证者签署一个交易aS,从SAxelar向wS发送x0数量的S代币。
4.4.使用阈值加密法,验证者签署aS。签名包括在区块R+11中。
5.任何人都可以从区块R+11中获取签名的值aS并将其发布到S。
6.6.请求已经得到服务,一旦aS被贴到S上,传输就被处理了。
CGP路由层支持的其他请求包括锁定、解锁或跨链转移资产。
实现原子式跨链交易流。根据跨链请求的类型,Axelar试图确保相应的交易在多个链上执行或不执行。为此,每个请求在Axelar区块链中可以处于以下状态之一。(初始化,待定,完成,超时)。如果在挂起阶段的超时被触发,请求会返回一个错误代码。一些超时事件也会开始一个退款事件:例如,如果一个链上的资产需要转移到另一个链上的资产,如果接收链没有处理该交易,该资产就会被退回给原用户。
7跨链传输协议(CTP)
CTP是一个应用层面的协议,使应用程序可以很容易地利用跨链功能。我们通过关注资产转移功能(例如,在DeFi中使用)来解释整合。这些应用程序通常由三个主要部分组成:前端GUI,一条链上的智能合约,以及在前端和智能合约之间发布交易的中介节点。前端与用户的钱包互动,接受存款,处理提款等。应用程序可以通过调用类似于HTTP/HTTPSGET/POST方法的CTP查询来利用跨链功能。这些查询随后被CGP层接收执行,并将结果返回给用户。
-CTP查询。应用程序开发人员可以在任何链上托管他们的应用程序,并将他们的智能合约与阈值桥账户集成,以执行CTP查询。
-阈值桥账户。假设一个应用开发者在A链上建立了他们的合约,然后,他们将引用阈值桥合约来获得跨链支持。这个合约允许应用程序。
-注册一个它想与之沟通的区块链。
-在该区块链上注册它想利用的资产。
-对资产进行操作,如接受存款、处理提款和其他功能(类似于ERC-20合约的调用)。
假设一个著名的DeFi应用,MapleSwap,原生驻扎在A链上,注册了一个门槛桥账户。Axelar验证器集体管理相应链上的合约本身。假设一个用户想向分别驻扎在两条链上的资产X和Y之间的交易对提交一笔存款。那么,当用户提交这样的请求时,它将通过门槛桥账户被转到Axelar网络进行处理。在那里,将执行以下步骤。
1.Axelar网络了解到,该应用注册了跨资产的跨链支持。它利用门槛密码学和共识为用户在相应的链A和B上生成存款密钥。
2.2.相关的公钥被返回给应用程序,并显示给用户,用户可以使用他们最喜欢的钱包来提交存款。相应的秘钥在所有Axelar验证人之间共享。
3.3.当存款被确认后,Axelar更新其跨链目录,记录相应链上的用户已存入这些资产。
4.4.Axelar验证器执行多方协议,生成一个阈值签名,允许更新应用程序所在的A链上的阈值桥账户。
5.5.然后CTP查询被返回到DeFi应用智能合约,它可以更新其状态,更新其收益率公式,汇率,或执行其他与应用状态相关的条件。
在整个过程中,Axelar网络在高层次上充当了去中心化的跨链读写神谕,CGP是链间的路由层,而CTP是应用协议。
额外的跨链请求。CTP支持跨区块链的应用程序之间更普遍的跨链,如。
-执行公钥名称服务(PKNS)。这是一个通用目录,用于将公钥映射到电话号码/Twitter手柄(少数项目,如Celo,在其平台内提供这些功能)。
-跨链应用触发器。如果B链上的另一个应用满足搜索条件(利率<X),A链上的应用可以更新其状态。
-智能合约的可组合性。链A上的智能合约可以根据链B上的合约状态来更新其状态,或者触发一个动作来更新链B上的智能合约。
在高层次上,这些请求可以被处理,因为CTP、CGP和Axelar网络等协议集体可以跨区块链传递和写入任意可验证的状态信息。
8总结
在未来几年,重要的应用程序和资产将建立在多个区块链生态系统之上。Axelar网络可以用来将这些区块链插入一个统一的跨链通信层中。该层提供路由和应用级协议,满足平台建设者和应用开发者的需求。应用开发者可以根据自己的需求建立最好的平台,并利用简单的协议和API来访问全球跨链流动性、用户,并与其他链沟通。