介绍Steel

中级5/28/2024, 1:54:21 AM
RISC Zero 是主要的 zkVM 开发商之一,最新推出了 Steel,它是基于 Alloy 的视图调用证明库,为开发人员与以太坊 L1 或其他 EVM 链交互方式带来巨大转变。利用零知识证明和 RISC Zero zkVM,Steel 使开发人员能够以可扩展、安全且经济高效的方式执行视图调用并可证明地读取和计算以太坊的状态。

介绍Steel:一种强化的合金,连接RISC Zero与以太坊

以太坊的成功催生了一个繁荣的去中心化应用生态系统,但扩展性问题也日益显现。开发人员面临着一个艰难的选择:要么限制其应用的功能和数据丰富性,要么承担过高的Gas费用或Gas限制的负担。如果有一种方法可以让开发人员绕过这些限制呢?

RISC Zero推出的基于Alloy的视图调用证明库Steel,在开发人员与以太坊L1或基于EVM的链交互方式上带来了巨大变化。通过利用零知识证明和RISC Zero zkVM的强大功能,Steel使开发人员能够以可扩展、安全且经济高效的方式执行视图调用,并可验证地读取和计算以太坊的状态。

Solidity的便利性与零知识证明的强大功能结合。

Steel 弥合了以太坊应用开发与零知识技术之间的差距,使开发人员能够更轻松地在智能合约中利用零知识证明的强大功能。结合 RISC Zero zkVM 的能力,Steel 使开发人员能够在以太坊 L1 或任何 EVM 等效链上构建更安全、可扩展且高效的应用。

使用 Steel,开发人员可以实现以下功能:

  • 在 zkVM 中直接执行 Solidity 智能合约,以实现更复杂的链上逻辑
  • 在 zkVM 内访问以太坊的历史状态
  • 使用续期计算,避免区块和交易大小的限制
  • 确保安全可靠的链下计算,仿佛它们是在链上执行的
  • 利用首个经过严格测试并被多方使用的生产就绪 zkVM
  • 进行以太坊状态的私密计算
  • 通过开源代码库保持灵活性,无供应商锁定风险

无缝集成与成本节约

使用 Steel,执行视图调用就像指定所需的 Solidity 方法一样简单。无论是检索 ERC-20 代币余额(示例)还是访问以太坊状态的任何方面,Steel 都简化了这一过程,同时通过与 RISC Zero zkVM 的无缝集成确保安全性和高效性。我们的测试显示,Steel 能够在单个视图调用中处理超过 10 万次 SLOAD 操作,这可能在主网上节省数千美元的 Gas 费用。我们可以在大约 15 分钟内使用 Bonsai 证明这一点。这至少需要 2.1 亿 Gas,超过区块限制的 7 倍。

示例:ERC20 的 balanceOf

在下面的代码片段中,我们演示了使用Steel在以太坊上部署的ERC-20合约上证明特定地址的余额的过程。这个示例展示了开发人员如何利用Steel在zkVM的限制内与链上以太坊数据进行交互。您可以在这里找到完整的代码

定义视图函数签名

首先使用sol!宏定义ERC-20 balanceOf函数签名。这将解析Solidity语法以生成相应的Rust结构体,该结构体实现了SolCall trait。这个结构体可以用于调用balanceOf方法,该方法接受一个帐户地址,并返回相应的ERC-20代币余额。

准备调用

接下来,通过实例化balanceOfCall结构体并设置目标账户地址来设置调用。此外,定义要查询的合约地址和调用者地址的常量。

在Main中执行调用

Main会在zkVM中执行,生成零知识证明。它首先读取输入环境,然后构造一个ViewCallEnv对象,确保当前状态与预期的状态根匹配。在提交相关的区块哈希和编号之后,执行视图调用,并打印余额。

运行原理

Steel通过三个简单的步骤简化了在RISC Zero zkVM中证明Solidity代码执行的过程:

  1. 预检阶段:通过对以太坊RPC节点进行视图调用来启动预检。这将缓存必要的存储槽,仅使用查询所需的数据填充EVM数据库。所有存储槽都会根据视图调用执行自动发现和获取。
  2. 存储验证:进行存储完整性检查,确保EVM数据库中的数据与区块链的状态根对齐,从而确认其合法性。
  3. Solidity执行:在RISC Zero zkVM内部的EVM上运行给定的Solidity函数。

这与存储证明有何不同?

传统的存储证明需要开发人员手动选择智能合约使用的存储槽,并重新实现智能合约逻辑。而使用Steel,所有存储槽都是根据视图调用的执行自动发现和获取的。这节省了开发人员大量的时间,并减少了实现错误的空间,降低了安全漏洞的风险。

获取已验证的区块哈希

在以太坊智能合约中使用blockhash操作码进行验证时,验证的提交必须引用不超过 256 个区块的区块哈希。考虑到平均区块时间为 12 秒,这将在大约 50 分钟的时间内设置一个狭窄的时间范围来完成证明生成,并确认验证交易被包含在一个区块中。

当需要在链上使用超过 256 个区块的已验证区块哈希时,可以使用以下几种策略之一:

  • 当提前知道将需要的区块哈希时(例如,在发起治理提案时),可以将该区块哈希保存到合约状态中。
  • 另一种方法是使用 RISC Zero 来证明从查询的区块一直到最近的 256 个区块中的一个区块的哈希链。

链上应用的未来

我们设想未来会实现链下计算与链上验证的无缝集成。Steel 是我们为实现这一愿景所作出的贡献,它使开发人员能够可验证地访问以太坊的完整历史并在zkVM内进行计算,从而创建下一波数据丰富且功能更强大的链上应用程序。

开始使用Steel

Steel是RISC Zero致力于推出zkVM 1.0的关键组成部分,这是实现廉价、安全的链上证明验证和通用零知识证明的重要里程碑。立即开始使用Steel,访问我们的GitHub存储库获取文档、代码示例和资源,帮助您将Steel集成到您的项目中。

声明:

  1. 本文转载自[riscze],著作权归属原作者[Santiago Campos],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

介绍Steel

中级5/28/2024, 1:54:21 AM
RISC Zero 是主要的 zkVM 开发商之一,最新推出了 Steel,它是基于 Alloy 的视图调用证明库,为开发人员与以太坊 L1 或其他 EVM 链交互方式带来巨大转变。利用零知识证明和 RISC Zero zkVM,Steel 使开发人员能够以可扩展、安全且经济高效的方式执行视图调用并可证明地读取和计算以太坊的状态。

介绍Steel:一种强化的合金,连接RISC Zero与以太坊

以太坊的成功催生了一个繁荣的去中心化应用生态系统,但扩展性问题也日益显现。开发人员面临着一个艰难的选择:要么限制其应用的功能和数据丰富性,要么承担过高的Gas费用或Gas限制的负担。如果有一种方法可以让开发人员绕过这些限制呢?

RISC Zero推出的基于Alloy的视图调用证明库Steel,在开发人员与以太坊L1或基于EVM的链交互方式上带来了巨大变化。通过利用零知识证明和RISC Zero zkVM的强大功能,Steel使开发人员能够以可扩展、安全且经济高效的方式执行视图调用,并可验证地读取和计算以太坊的状态。

Solidity的便利性与零知识证明的强大功能结合。

Steel 弥合了以太坊应用开发与零知识技术之间的差距,使开发人员能够更轻松地在智能合约中利用零知识证明的强大功能。结合 RISC Zero zkVM 的能力,Steel 使开发人员能够在以太坊 L1 或任何 EVM 等效链上构建更安全、可扩展且高效的应用。

使用 Steel,开发人员可以实现以下功能:

  • 在 zkVM 中直接执行 Solidity 智能合约,以实现更复杂的链上逻辑
  • 在 zkVM 内访问以太坊的历史状态
  • 使用续期计算,避免区块和交易大小的限制
  • 确保安全可靠的链下计算,仿佛它们是在链上执行的
  • 利用首个经过严格测试并被多方使用的生产就绪 zkVM
  • 进行以太坊状态的私密计算
  • 通过开源代码库保持灵活性,无供应商锁定风险

无缝集成与成本节约

使用 Steel,执行视图调用就像指定所需的 Solidity 方法一样简单。无论是检索 ERC-20 代币余额(示例)还是访问以太坊状态的任何方面,Steel 都简化了这一过程,同时通过与 RISC Zero zkVM 的无缝集成确保安全性和高效性。我们的测试显示,Steel 能够在单个视图调用中处理超过 10 万次 SLOAD 操作,这可能在主网上节省数千美元的 Gas 费用。我们可以在大约 15 分钟内使用 Bonsai 证明这一点。这至少需要 2.1 亿 Gas,超过区块限制的 7 倍。

示例:ERC20 的 balanceOf

在下面的代码片段中,我们演示了使用Steel在以太坊上部署的ERC-20合约上证明特定地址的余额的过程。这个示例展示了开发人员如何利用Steel在zkVM的限制内与链上以太坊数据进行交互。您可以在这里找到完整的代码

定义视图函数签名

首先使用sol!宏定义ERC-20 balanceOf函数签名。这将解析Solidity语法以生成相应的Rust结构体,该结构体实现了SolCall trait。这个结构体可以用于调用balanceOf方法,该方法接受一个帐户地址,并返回相应的ERC-20代币余额。

准备调用

接下来,通过实例化balanceOfCall结构体并设置目标账户地址来设置调用。此外,定义要查询的合约地址和调用者地址的常量。

在Main中执行调用

Main会在zkVM中执行,生成零知识证明。它首先读取输入环境,然后构造一个ViewCallEnv对象,确保当前状态与预期的状态根匹配。在提交相关的区块哈希和编号之后,执行视图调用,并打印余额。

运行原理

Steel通过三个简单的步骤简化了在RISC Zero zkVM中证明Solidity代码执行的过程:

  1. 预检阶段:通过对以太坊RPC节点进行视图调用来启动预检。这将缓存必要的存储槽,仅使用查询所需的数据填充EVM数据库。所有存储槽都会根据视图调用执行自动发现和获取。
  2. 存储验证:进行存储完整性检查,确保EVM数据库中的数据与区块链的状态根对齐,从而确认其合法性。
  3. Solidity执行:在RISC Zero zkVM内部的EVM上运行给定的Solidity函数。

这与存储证明有何不同?

传统的存储证明需要开发人员手动选择智能合约使用的存储槽,并重新实现智能合约逻辑。而使用Steel,所有存储槽都是根据视图调用的执行自动发现和获取的。这节省了开发人员大量的时间,并减少了实现错误的空间,降低了安全漏洞的风险。

获取已验证的区块哈希

在以太坊智能合约中使用blockhash操作码进行验证时,验证的提交必须引用不超过 256 个区块的区块哈希。考虑到平均区块时间为 12 秒,这将在大约 50 分钟的时间内设置一个狭窄的时间范围来完成证明生成,并确认验证交易被包含在一个区块中。

当需要在链上使用超过 256 个区块的已验证区块哈希时,可以使用以下几种策略之一:

  • 当提前知道将需要的区块哈希时(例如,在发起治理提案时),可以将该区块哈希保存到合约状态中。
  • 另一种方法是使用 RISC Zero 来证明从查询的区块一直到最近的 256 个区块中的一个区块的哈希链。

链上应用的未来

我们设想未来会实现链下计算与链上验证的无缝集成。Steel 是我们为实现这一愿景所作出的贡献,它使开发人员能够可验证地访问以太坊的完整历史并在zkVM内进行计算,从而创建下一波数据丰富且功能更强大的链上应用程序。

开始使用Steel

Steel是RISC Zero致力于推出zkVM 1.0的关键组成部分,这是实现廉价、安全的链上证明验证和通用零知识证明的重要里程碑。立即开始使用Steel,访问我们的GitHub存储库获取文档、代码示例和资源,帮助您将Steel集成到您的项目中。

声明:

  1. 本文转载自[riscze],著作权归属原作者[Santiago Campos],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!