作者:StarkWare 编译:CoinTime 237
Beerus 是 Starknet 的无状态客户端,它建立在以太坊的 Helios 轻客户端之上,不需要任何状态信息。Starknet 的加密证明支持无需信任的状态验证,这是以太坊所没有的功能。Beerus 根据以太坊 STARK 证明验证 Starknet 存储证明,将不可信数据转换为可信数据。开发人员可以为 Beerus 做出贡献,为安全、去中心化的 Starknet 生态系统做出贡献。
以太坊的状态是所有以太坊账户、它们各自的余额、部署的智能合约和相关存储的综合记录。随着新账户的不断创建和新智能合约的部署,以太坊状态不断扩大。
虽然各种解决方案旨在减轻这种状态增长的影响,但总体趋势仍然是向上的。这种设计特征导致以太坊状态大小的无限增长。网络参与者能够验证以太坊上的一切是否正确发生,作为运营商和用户,我们必须确保我们正在与有效信息进行交互。
这个问题在 2017 年首次被认识到,并引入了无状态以太坊的概念。与其字面意思不同,以太坊上下文中的“无状态”一词并不意味着没有状态。正如Ben Edginton所说,这意味着您已将提供和存储以太坊状态的责任委托给网络中的另一个参与者。简而言之,无状态的以太坊客户端选择它想要维护的状态。
轻客户端和无状态客户端
虽然轻客户端和无状态客户端都旨在解决以太坊不断增长的状态规模的问题,但两者之间存在细微差别:轻客户端需要一些有关以太坊状态的信息,而像 Beerus 这样的无状态客户端则不需要。
Beerus 是 Starknet 的无状态客户端,使用以太坊的Helios轻客户端构建。
Starknet 在其协议中集成了加密证明,使轻客户端和无状态客户端大放异彩,这是以太坊所没有的功能。它们使网络参与者能够不信任地验证状态的有效性,而不仅仅是共识。
光明未来
轻客户端和无状态客户端有可能成为区块链世界的游戏规则改变者。
- 新的基础设施范式:由于资源需求低,轻客户端可以帮助分散 web3 基础设施,使其更加民主并向更广泛的参与者开放。
- Trustless bridges:目前,大多数跨链交易都需要多重签名钱包来促进资产转移。通过使用轻客户端,可以创建不依赖中心化中介的无信任桥梁。
- 安全性更高的钱包:目前,大多数加密货币钱包需要与中央服务器通信才能正常运行。通过使用轻客户端,可以创建完全以去中心化方式运行的钱包,为用户提供对其资产的更多控制和安全性。
- 更好或没有预言机:通过将轻客户端与加密证明相结合,可以有一种安全的方式来验证外部数据。
- 物联网:轻客户端是轻量级的,这使得它们非常适合处理能力和内存受限的设备,从而为物联网开辟了新的可能性。
- 轻客户端作为智能合约:通过将另一条链的轻客户端协议实现为智能合约,您可以根据另一条链的状态做出决策,具有更强的安全保障。
轻客户端的工作方式
轻客户端工作方式的简化:
轻客户端下载以太坊区块头,其中包含每个区块的 Merkle 树根。
轻客户端使用这些区块头来验证以太坊中共识的有效性,而无需下载每个区块的全部内容。(在 Starknet 中,协议中内置了加密证明,轻客户端可以验证状态和共识的有效性。)
当用户想要与智能合约进行交易或交互时,轻客户端向全节点发送请求。然后全节点用完成交易所需的信息进行响应。
轻客户端使用它下载的区块头来确保全节点返回的信息是有效的。
交易完成后,轻客户端通过下载已添加到网络的任何新区块头来更新自己的区块链副本。
获取根哈希
在以太坊中,每个区块都包含区块中包含的所有交易的 Merkle 树。Merkle 树是一种数据结构,允许对单个交易进行有效验证,而无需验证整个块。Merkle 树根哈希是整个 Merkle 树的密码哈希,包含在每个区块的区块头中。这个根哈希代表区块链的整个状态,直到最新的区块。
以太坊轻客户端需要这个根哈希来验证区块链上最新区块的真实性和状态。通过验证 Merkle 树根哈希,轻客户端可以确保最新的区块没有被恶意行为者篡改或修改。
轻客户端可以通过两种方式获取根哈希:依赖全节点或同步委员会。
- 全节点验证
在这种方法中,轻客户端依赖于一个全节点来获取带有根哈希的最新区块。全节点遵循所有签名并验证它们直到最新的块。但是,这种方法是资源密集型的,需要轻客户端依赖一个中心化的权威来获取最新的区块,违背了运行轻客户端的初衷。
- 同步委员会
在以太坊的共识层中,同步委员会是一组随机选择的 512 名验证者。每 256 个时期(大约 27 小时)选出一个新委员会。该委员会负责为每个新插槽签署区块头。如果超过 2/3 的同步委员会同意相同的状态,则轻客户端可以相信它是正确的。
同步委员会与轻客户端一起工作以简化验证过程。轻客户端只需要知道一个之前验证过的区块头,以及关于前一个、当前和下一个同步委员会成员的信息来验证以太坊的状态。这样,轻客户端可以验证已验证块的准确性,而无需访问整个验证器集或状态历史记录。这种方法显着降低了验证标头所需的计算能力。
- 弱主观检查点
要找到当前的同步委员会,轻客户端需要获取弱主观性检查点。弱主观检查点类似于创世块,但它位于区块链中的非创世位置。它只是表示一个块,整个网络都承认它是规范链的永久部分。
弱主观性检查点不同于“最终确定”区块的概念。当一个节点遇到两个冲突的最终区块时,就发生了共识失败,节点无法确定一个规范的分叉。但是,如果节点遇到与弱主观性检查点冲突的块,它会立即拒绝它。在节点的分叉选择方面,最近的弱主观性检查点作为网络的新创世块。
Helios
Helios 是由 a16z 开发的基于 Rust 的以太坊轻客户端。它在大约两秒内同步,需要很少的存储空间,并提供对以太坊的完全无信任访问。Helios 与集中式 RPC 提供商合作,无需运行完整节点即可验证其真实性。它还易于嵌入,并允许用户从任何设备访问安全链数据。
与大多数其他以太坊客户端不同,Helios 将执行层和共识层紧密结合在一起。这样,Helios 用户只需安装和运行一个软件。
Beerus
受 Helios 启发并使用的 Starknet 无状态客户端。目标是提供一个简单易用的客户端来查询 Starknet 状态并使用上述 merkle 证明与合约交互。
Beerus Core 是承担所有繁重工作的重要组件。通过运行 Beerus Core,您可以通过与两个不受信任的 RPC 源(Helios 轻客户端的执行层和 Starknet 全节点)通信来访问所有以太坊端点。这就是神奇部分的用武之地:Beerus 将这些不受信任的数据转换为受信任的数据。
Beerus如何运作
下面以查询 Starknet 合约的存储值为例,大致了解一下 Beerus 的工作原理:
1、Beerus 与 Helios 同步,Helios 又使用弱主观性检查点与同步委员会同步。此检查点可确保 Helios 收到的根哈希的可靠性。
2、接下来,我们查询 Starknet 以检查给定合约的存储密钥是否存在。
3、然后在最后一个已验证的块中从 Starknet 全节点接收存储证明。该存储证明验证了最后一个已证明区块中存储合约的存在。
4、Beerus Core 继续向 Helios 请求 Starknet 状态根,Helios 获取并验证发布在以太坊上的 STARK 证明。
5、从以太坊收到的证明与从 Starknet 全节点收到的存储证明进行比较。如果证据匹配,我们可以确认数据已经在以太坊上得到验证,因此是准确的。
6、最后,将验证后的数据以去信任的方式返回给用户。
结论
Beerus 是 Starknet 的无状态客户端,使用以太坊的 Helio 轻客户端构建,可实现无信任状态验证。轻客户端和无状态客户端有可能去中心化 web3 基础设施并解锁以前不可能实现的各种用例。
通过消除对大量状态信息的需求,Beerus 只需要根据发布在以太坊上的 STARK 证明来验证 Starknet 存储证明。通过这种方式,Beerus 将不受信任的数据转换为受信任的数据,即使是资源受限的设备也可以在不依赖完整节点的情况下安全运行。
所有评论