随着本白皮书的发布,Neon EVM 引入了多项功能,以统一 Solana 与部署在 Neon 上的 EVM dApp 之间的用户体验。此版本遵循Solana 网络扩展方法中描述的愿景,并描述了 Neon EVM 基础设施的发展方式。

本文描述的概念将会在 SDK 中实现,具体如下:

  • Solana 签名支持:使 Solana 用户能够使用他们现有的 Solana 钱包签署 Neon EVM 交易,从而无需 EVM 签名和钱包。
  • 链上内存池:引入链上系统,无需依赖外部工具即可高效地安排和执行 Neon EVM 交易。
  • 关联 Neon 账户:创建抽象 Solana 地址的 Neon 账户,并实现 Solana 用户和 Neon EVM 之间的无缝交互。
  • Neon 交易的受控树:实现交易的原子和并行执行方法,管理状态变化并聚合复杂交互的结果。
  • 基于意图的执行:提供一种处理交易意图的机制,尽管 Solana 存在局限性,但仍能提高 EVM 合约和 Solana 程序之间的互操作性。

点击此处阅读完整白皮书

挑战:为 Solana 用户解锁以太坊 dApp

Solana 和以太坊是领先的 L1 区块链之一,各自都拥有活跃的 dApp 生态系统和性能优势。然而,这两个环境尚未相互交互,主要是由于编程语言、开发工具和基础设施的差异。

虽然 Neon EVM 允许 EVM dApp 为类似以太坊的用户访问 Solana 代币,但之前的解决方案涉及多个钱包的管理。在 Neon EVM 上执行交易需要使用 secp256k1 椭圆曲线的 EVM 签名,因此必须使用 MetaMask 等 EVM 钱包。这一要求对习惯于 Solana 中使用的 ed25519 签名的 Solana 用户以及无法使用 Phantom、Backpack 和 Solflare 等 Solana 钱包的用户来说是一个重大障碍。

通过下面提出的解决方案,EVM 开发人员可以通过减少碎片化和简化入职培训来原生地利用 Solana 用户群。

探索“Solana-Native”功能

白皮书介绍了 Solana 的各种原生功能。需要关注的五个关键功能包括:

Neon EVM 中的 Solana 签名支持

为了消除 Solana 用户管理额外 EVM 钱包的需要,Neon EVM 修改了其交易验证流程以接受 Solana 的 ed25519 签名。此修改包括:

  • 签名验证适配:调整 Neon EVM 以识别和验证 ed25519 签名。
  • 自定义交易类型:利用交易类型属性定义与 Solana 签名兼容的自定义交易类型,并遵守 EIP-2718 的类型化交易信封。

从技术上讲,Solana 用户的 EVM 地址 (ethAddress) 是使用 Keccak-256 哈希函数应用于 Solana 公钥 (solanaPublicKey) 得出的。地址派生公式为:

此方法采用哈希的最后 20 个字节来形成与 EVM 兼容的地址,从而确保唯一且抗冲突的映射。然后使用 Neon EVM 中的 Solana 原生加密库来验证 Solana 签名,从而确保安全验证。

好处

  • Solana 用户可以使用现有的 Solana 钱包(例如 Phantom/Backpack/Solflare)签署 Neon 交易。此集成减少了用户与 Solana 上的 EVM dApp 交互所需的步骤,并将资产保留在熟悉的 Solana 钱包环境中。
  • 使用 Solana 钱包无需转移资金,只需将 SOL 用作 gas 代币和 Solana 网络 RPC。从用户的角度来看,资产交换是通过发送 SPL 代币并接收所选资产的 SPL 代币来执行的。

创建关联 Neon 账户,统一资产管理

Neon EVM 通过整合 Solana 和 Neon EVM 生态系统来解决流动性分散问题,使用户能够与兼容 EVM 的 dApp 进行交互,而无需进行不必要的资产转移。以前,用户依靠 NeonPass 将 SPL 代币从 Solana 钱包转移到 Neon EVM 账户,这使资产管理变得复杂,流动性也变得分散。现在,随着 ERC20forSPL 合约的引入,这一过程得到了简化,该合约无缝连接了两个生态系统。

拥有 Solana 钱包的用户通过关联代币账户 (ATA) 管理其 SPL 代币。Neon EVM 使用 Keccak-256 哈希将其 Solana 公钥映射到与 EVM 兼容的地址,从而创建一个关联的 Neon 账户,其中包含与 EVM 兼容的地址、Solana 公钥、交易计数器、链标识符和内部余额的字段。

当用户与 Neon EVM 上的 dApp 交互时,ERC20forSPL 合约首先检查其内部余额。如果余额不足,它会查询 Solana 上用户的 ATA 以检索必要的 SPL 代币。此过程消除了 NeonPass 转账的需要,并允许用户在 Neon EVM 中操作,同时将资产保留在 Solana 上。

好处

  • 简化资产管理:用户可以控制其 Solana 钱包中的资产,而无需中间转账(例如通过 NeonPass)。
  • 降低交易成本:通过利用链上余额查询并避免冗余传输,用户在与 EVM dApp 交互时可以降低成本。

使用链上内存池实现高效的交易管理

高效的交易调度和执行管理对于流畅的用户体验至关重要。Neon EVM 实现了链上内存池来存储和管理已调度的 Neon 交易。这允许 Solana 用户直接从他们的 Solana 钱包调度 Neon EVM 交易,Neon 代理会代表他们检测和执行这些交易。

TreeAccount 是一个专用帐户,具有预定的 Neon 交易、余额和执行状态。它包括以下内容:

  • 付款人的 EVM 地址:与 Solana 用户关联的 EVM 地址。
  • 最后一个槽位:修改帐户的最后一个 Solana 槽位。
  • 链 ID:链命名空间的标识符。
  • Gas Limits:允许执行的最大气体量。
  • 余额:为执行交易而保留的资金。
  • 交易清单:预定的 Neon 交易及其执行详情。

交易调度协议涉及用户向 Neon EVM 程序提交 Neon EVM 交易,该程序会验证并将其添加到链上内存池中。然后,Neon 代理会监控内存池并相应地执行交易。

对于超出 Solana 大小限制的较大交易,只有交易哈希存储在链上,完整交易会发送到链下 Neon 代理。这种方法可以实现可扩展性并高效处理较大的交易,而不会影响网络性能。

好处

链上内存池增强了可扩展性,确保了交易完整性,并保持了状态更改的原子性。用户受益于高效的交易管理,开发人员可以利用此系统创建更复杂、响应更快的 dApp

用于复杂交互的受控事务树

为了克服 Solana 的即时状态应用和对交易还原的缺乏支持(这阻碍了 EVM 合约和 Solana 程序之间的复杂交互),Neon EVM 引入了 Neon 交易的受控树。该机制通过在树结构中组织交易来管理复杂的交互场景,其中每个节点代表一个 Neon 交易,父子关系定义执行依赖关系。

主要特点包括:

  • 原子交易:每个 Neon 交易都是原子的,在完成时存储状态变化。
  • 并行执行:没有依赖关系的事务可以并行执行,优化性能。
  • 结果聚合:合约可以生成多个交易,并在后续交易中聚合结果。

好处

  • 这项创新使开发人员能够构建更复杂、更集成的应用程序,通过实现受控状态变化的原子和并行执行来克服限制。
  • 它可以增强交互的稳健性,并通过防止由于单个错误而导致的整个交易失败来改善用户体验。

基于意图的条件交易执行

Neon EVM 采用了意图驱动执行,为用户和开发者提供了根据特定条件或市场状态执行交易的灵活性。意图被定义为指定执行条件的简单 EVM 代码,遵守静态调用规则(不能修改状态)。Neon 代理会在执行交易之前评估这些意图。如果条件不满足,则跳过交易,用户无需支付任何费用。

此功能可以实现:

  • 自动交易策略:仅当市场条件满足特定标准时才执行交易。
  • 条件操作:当链上发生特定事件时执行诸如代币交换之类的操作。

好处

基于意图的执行可以更好地控制交易执行,提高资源效率,并减少用户不必要的成本。它增强了 dApp 对实时情况的灵活性和响应能力。

结论

征求反馈和协作:这份白皮书启动了 Neon EVM 的 Solana 原生演进,寻求不同视角的意见,并促进以太坊和 Solana 社区的开发者参与。
在这里,我们发布了第一稿,并邀请构建者社区积极贡献并开始评估您 dApp 上的实施情况。白皮书可在此处访问

白皮书的第一个功能——即将发布的 Solana 签名钱包 SDK——已付诸实践。Solana 签名功能在 EVM 端已完成,并在代理端部分实现——目前正在测试和审核中。此外,敬请期待即将发布的用例和演示版本!

加入我们,在 Solana 上构建 dApp 的未来。立即探索 Neon EVM!

关于 Neon EVM
Neon EVM 是同类产品中的第一个,是 Solana 上的网络扩展,旨在将以太坊虚拟机 (EVM) 兼容性无缝集成到 Solana 的高性能生态系统中。通过在 Solana 的基础层内本地运行,Neon EVM 为以太坊开发人员提供了一种快速、高吞吐量的途径,可以在 Solana 上部署他们的 EVM dApp,而无需用 Rust 重写他们的合约。

有关 Neon EVM 和未来更新的更多信息,请访问neonevm.org并通过TwitterDiscord与社区联系。

原文:https://neonevm.org/blog/Enabling-Solana-Users-to-Access-EVM-dApps-Running-on-Solana