90个版本 (稳定版)

1.2.32 2020年10月2日
1.2.26 2020年8月20日
1.2.15 2020年7月30日
1.1.0 2020年3月31日
0.21.0 2019年11月27日

2 in #spv

Download history 47/week @ 2024-03-30

每月244次下载

Apache-2.0

36KB
739

问题

跨链应用在数字资产生态系统中并不新鲜;实际上,即使是较小的中心化交易所,在用户数量和交易量方面也远远超过所有单链应用的总和。它们拥有巨大的估值,并花费数年有效优化其核心产品以适应广泛的最终用户。然而,它们的基本操作围绕着需要用户单方面信任它们的机制,通常几乎没有应对意外损失的手段或保护。这导致更广泛的数字资产生态系统沿着网络线裂开,因为互操作性解决方案通常

  • 技术复杂,难以完全实施
  • 创建不稳定的网络规模激励机制
  • 需要利益相关者之间持续和高度的合作

提出的解决方案

简单支付验证(SPV)是一个通用术语,用于描述轻客户端在大多数主要区块链网络上使用的一系列不同方法,用于验证网络状态,而无需承担存储和维护整个链的负担。在大多数情况下,这意味着通过比较该区块头部的根哈希来证明某个交易存在于某个区块中。这允许轻客户端或钱包通过自身达到对链上事件的概率性确定性,同时对网络节点的信任要求最小。

传统上,组装和验证这些证明的过程由节点、钱包或其他客户端在链外执行,但这也提供了一种跨链状态验证的潜在机制。然而,通过将验证SPV证明的能力作为智能合约在链上进行,同时利用区块链固有的归档属性,可以构建一个系统,以编程方式检测和验证其他网络上的交易,而不涉及任何类型的可信预言机或复杂的分阶段共识机制。这一概念可以广泛推广到任何具有SPV机制的网络,甚至可以在其他智能合约平台上双向操作,从而开辟了在不依赖抵押品、哈希锁定或可信中介的情况下实现低成本、快速跨链价值转移的可能性。

选择利用所有主要区块链都普遍存在且开发稳定的机制,可以使基于SPV的互操作性解决方案比分阶段编排的方法简单得多。作为其中的一部分,它们摒弃了广泛认可的跨链通信标准和编写这些标准的大型多方组织,转而采用一套基于合同的离散服务,这些服务可以通过通用抽象格式轻松由调用合约使用。这将为基础奠定广泛的适用范围和各种能够跨平台生态系统相互操作的应用和合约。

术语

SPV程序 - 面向客户端的跨链SPV系统接口,管理参与者角色。SPV引擎 - 验证交易证明,SPV程序的一部分。客户端 - SPV程序的调用者,通常是另一个solana合约。证明者 - 为交易生成证明并将其提交给SPV程序的当事人。交易证明 - 由证明者创建,包含默克尔证明、交易和区块头参考。默克尔证明 - 基本的SPV证明,用于验证交易在特定区块中的存在。区块头 - 表示特定区块的基本参数和相对位置。证明请求 - 客户端放置的用于验证交易(s)的订单。头部存储 - 存储和引用证明中区块头范围的数据结构。客户端请求 - 客户端向SPV程序发送的交易,以触发证明请求的创建。子账户 - 由其他合约账户拥有的Solana账户,没有自己的私钥。

有关跨链SPV系统的更多信息,请参阅文档部分:[https://docs.solana.com/proposals/interchain-transaction-verification](https://docs.solana.com/proposals/interchain-transaction-verification)

依赖项

~19–27MB
~470K SLoC