ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用Rust直接编译单个的Solidity合约 [打印本页]

作者: 光之使者    时间: 2024-9-21 02:05
标题: 使用Rust直接编译单个的Solidity合约
使用Rust直接编译单个的Solidity合约

前言

我们知道,我们平常开发Solidity智能合约时一样平常使用Hardhat框架,但是如果你是一个Rustacean (这是由 “Rust” 和 “crustacean” -甲壳类动物 结合而来的俏皮称呼),也许你会使用Foundry框架进行开发。开发好了之后,我们要编写相关应用怎么办?通常的做法是将编译好的合约字节码和ABI复制到其它项目中去,然后使用各种框架来编写我们的Dapp。
但是这里有一个问题,如果合约只是简朴的合约,或者是一个flatten之后的合约,如果有任何修改,你都必须在Hardhat或者Foundry中进行重新编译,然后重复复制到Dapp目录(偷懒的做法是使用一个sh 脚本自动去做这些事)。那么,作为一个Rustacean来讲,你肯定在想,能否在我的Dapp中使用Rust语言来直接编译这个合约呢?答案是肯定的。
如许做的目的是为我们节省不少工序,如果只是一个简朴的没有外部依靠的合约,或者是一个Flatten后的合约,我们直接在Dapp目录进行开发和编译及使用其它库进行交互,不必重新建立hardhat或者foundry工程。
但是这是有条件的,我们直接使用Rust编译并不会自动查找它的外部依靠,因此这是我说的只能编译简朴合约或者flatten合约的缘故原由。
预备知识

Rust 语言本身无法编译Solidity或者Vyper智能合约,因此它照旧得调用第三方编译工具进行。通常这个工具为solc。其原理就是Rust调用solc,再由solc来编译合约。
但是Rust调用solc这一步已经有第三方库抽象好了,我们不必手动去实现了。
在我们的示例中,我们使用 foundry-compilers这个crate来调用solc进行编译,它其实是Foundry内部工具的一部分。
预备工作

上面提到了,照旧得第三方编译工具。因此我们得安装solc,详细方法为:
  1. brew install solc-select
  2. solc-select install 0.8.24
  3. solc-select use 0.8.24
复制代码
示例

真正使用时,你其实是另外起一个bin目录,在这里面做编译工作,而主main.rs一样平常做交互工作。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4