6 个版本
0.20.5 | 2019年11月21日 |
---|---|
0.20.4 | 2019年11月10日 |
0.20.1 | 2019年10月30日 |
0.19.1 | 2019年10月3日 |
#6 在 #spv
37KB
742 行
问题
跨链应用并非数字资产生态系统的创新;实际上,即使是较小的中心化交易所,在用户数量和交易量方面也远远超过了所有单个链的 dapp。它们拥有巨大的估值,并花费数年时间有效地优化其核心产品,以满足广泛的最终用户。然而,它们的基本操作围绕的机制要求用户单方面信任它们,通常几乎没有应对意外损失的手段或保护。这导致了更广泛的数字资产生态系统因网络而分裂,因为互操作性解决方案通常
- 技术复杂,难以全面实现
- 创建不稳定的网络规模激励机制
- 需要利益相关者之间的一致和高水平合作
提出的解决方案
简单支付验证(SPV)是一个通用术语,指大多数主要区块链网络上轻客户端使用的一系列不同方法,用于验证网络状态的一些方面,而无需承担完全存储和维护链本身的负担。在大多数情况下,这意味着依靠某种形式的哈希树,通过在该块头的根哈希值或等效值中进行比较,来提供某个交易存在于特定块中的证明。这使得轻客户端或钱包可以自己达到对链上事件的概率性确定程度,而对网络节点的信任度要求最低。
传统的将这些证明组装和验证的过程是由节点、钱包或其他客户端在链下执行的,但它也提供了一种跨链状态验证的潜在机制。然而,通过将验证SPV证明的能力作为智能合约上链,同时利用区块链固有的归档属性,可以构建一个系统,用于程序化地检测和验证其他网络上的交易,而不需要任何类型的可信预言机或复杂的多阶段共识机制。这一概念可以广泛地推广到任何具有SPV机制的网络,甚至可以在其他智能合约平台上双向操作,从而为不依赖抵押品、hashlocks或可信中介的低成本、快速跨链转账开辟可能性。
选择利用已建立且开发稳定的机制,这些机制在所有主要区块链中都普遍存在,使得基于SPV的互操作性解决方案比多阶段编排方法简单得多。作为其中的一部分,它们摒弃了广泛认可的跨链通信标准和编写这些标准的庞大多方组织,转而采用一组基于合同的离散服务,这些服务可以通过公共抽象格式轻松由调用合约使用。这将为基础打下广泛的dapps和合约,使它们能够在多样化的、不断增长的平台生态系统中互操作。
术语
SPV程序 - 面向客户端的跨链SPV系统接口,管理参与者角色。SPV引擎 - 验证交易证明,SPV程序的子集。客户端 - 调用SPV程序的一方,通常是另一个solana合约。证明方 - 生成交易证明并将其提交给SPV程序的当事人。交易证明 - 由证明方创建,包含默克尔证明、交易和区块头部引用。默克尔证明 - 基本SPV证明,用于验证交易存在于某个区块中。区块头部 - 表示给定区块的基本参数和相对位置。证明请求 - 客户端向证明方下达的验证交易(们)的订单。头部存储 - 存储和引用证明中区块头部范围的数据库结构。客户端请求 - 客户端向SPV程序发出的交易,以触发创建证明请求。子账户 - 由另一个合约账户拥有的Solana账户,没有自己的私钥。
有关跨链SPV系统的更多信息,请参阅以下书籍部分:[链接](https://docs.solana.com/book/v/master/proposals/interchain-transaction-verification)
依赖项
~37–49MB
~1M SLoC