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
評論