R3E Network 发布了面向Neo N3 的Neo Solidity 编译器项目

本文为机器翻译
展示原文

R3E Network 的核心开发者兼创始人廖志明透露,他正在开发一款名为Neo Solidity Compiler 的工具,该工具可以将 Solidity 0.8.x 的智能合约编译成Neo N3 字节码。该项目允许开发者使用 Solidity 编写合约并将其部署到Neo N3 区块链上。

什么是Neo Solidity?

Neo Solidity 编译器将 Solidity 智能合约转换为与Neo N3 兼容的字节码和清单文件。该编译器主要使用 Rust 编写,并包含针对 Solidity 基本和高级特性的测试基础设施。项目文档指出,其目标是使以太坊开发者能够利用现有的 Solidity 知识在Neo N3 上进行开发,而无需学习 Neo 的原生智能合约语言。

该编译器接受 Solidity 0.8.x 源代码,并输出Neo N3 的.nef字节码文件和.manifest.json文件。它可以检测 Solidity 合约中的 ERC 代币标准模式(ERC-20、ERC-721),并将其映射到 Neo 的等效标准(NEP-17、NEP-11)。

开发者在编译合约时可以选择四个优化级别(0-3)。该工具通过命令行界面运行,并包含与 Hardhat 和 Foundry 集成的脚手架,这两个框架是以太坊开发中常用的开发框架。

Neo Solidity 与Neo X 项目的区别在于, Neo X 是一个 EVM 侧链,开发者可以直接将 Solidity 合约部署到该网络上,无需修改。而Neo Solidity 则将 Solidity 源代码编译成与Neo N3 兼容的字节码,使得合约能够原生部署在Neo N3 主网上,而不是部署在单独的 EVM 兼容链上。

技术架构

编译过程首先将 Solidity 源代码转换为 Yul 中间表示形式,然后进行语义分析以进行类型检查和验证。多级优化器会在代码生成器生成 NeoVM 字节码和清单文件之前,应用 Neo 特有的转换。

编译器包含一个运行时库,该库提供内存管理、存储操作、ABI 编码和加密功能,旨在与 Neo 执行环境中的 EVM 行为相匹配。

对于对编译器内部架构和实现决策感兴趣的开发人员,项目存储库中提供了详细的技术设计规范。

合同范例

该代码库包含多个示例合约,用于演示编译器的功能。WGAS 是一个封装的 GAS 代币实现,遵循 WETH9 模式并符合 NEP-17 规范。FlashLoan 实现了一个Aave V2 风格的闪电贷池,手续费为 0.09%。SimpleAMM 是一个基于Uniswap V2 设计的恒定乘积自动做市商。

其他例子包括 TokenVesting,它提供类似于 OpenZeppelin 的 VestingWallet 的线性归属计划;SimpleLending,它采用了 Compound 的单一资产借贷池机制;以及 SimpleDAO,它实现了 MolochDAO 式的治理,包括质押和提案。

根据项目文档,所有示例合约都已在Neo Express(Neo 的本地开发环境)上部署并测试了状态更改操作。

发展状况

项目文档显示,核心编译器已完成约 85%,并已达到生产就绪状态。运行时库完成度为 75%,开发者工具完成度为 70%(包含功能齐全的命令行界面),文档完成度为 80%。

项目文档列出了一些当前的限制。函数重载仅部分支持:可以使用签名修饰后的函数名来重载不同参数数量的函数,但参数数量相同的函数会被拒绝。EVM 调用选项(例如{gas: ...}{value: 0}会被接受,但会被忽略;非零值传输需要使用 NEP-17 原生调用。Gas 计费通过每个系统调用的 gas 提示进行近似计算,操作码级别的费用准确率约为 80%。

文档建议在主网部署之前进行测试网验证。

技术设计规范请参见此处,而拉取项目仓库请参见下方:
https://github.com/r3e-network/neo-solidity/tree/main

相关赛道:
来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
62
收藏
12
评论