使用Foundry,感受快,rust对写合约的支持
介绍
Foundry 是一个 新出的rust写的合约开发框架
rust一直在改变编程界的格局,btc C语言开发,eth go主导,也有 녹 的eth
波卡链 直接rust, 兴起跨链的生态.
不少web开发工具,打包也采用rust来加速,swc,deno,都是rust 开发.
现在rust 改造到了合约开发框架
快和安全,就是rust 优势吧.
에파운드리 中也体现出了这点.
环境安装
Releases · gakonst/foundry (github.com)
这里可以下载安装,windows下forge install 的问题也已经解决.
파운드리 么开始玩呢,
首先安装rust 环境,这个我就不教了.
主要是,安装foundry,这一步特别慢,如果需要windows安装包,可以找我要
$ cargo install --git https://github.com/gakonst/foundry --bin forge --locked
新建项目
$ mkdir n004
$ cd n004
$ forge init
成功后是这个样子,在windows上会出现,不自动下载ds-test的情况,自己下载再拷贝到这个lib目录下就可以
HelloWorld.sol과 테스트 화면의 텍스트는 내 자신의 것입니다.
HelloWorld.sol의 内容如下:
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.10;
contract HelloWorld {
string private greeting;
uint256 public version = 0;
constructor(string memory _greeting) {
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function updateGreeting(string memory _greeting) public {
version += 1;
greeting = _greeting;
}
}
再src里面再建立一个test目录,里面添加测试用例就好了
一个最简单的例子是这样
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "ds-test/test.sol";
import "src/HelloWorld.sol";
contract HelloWorldTest is DSTest {
HelloWorld hello;
function setUp() public {
hello = new HelloWorld("Foundry is fast!");
}
function test1() public {
assertEq(hello.greet(), "Foundry is fast!");
}
function test2() public {
assertEq(hello.version(), 0);
hello.updateGreeting("Hello World");
assertEq(hello.version(), 1);
assertEq(hello.greet(), "Hello World");
}
}
有几点,要注意:
DSTest의 代码.
完成代码,就可以跑跑:
和harthat命令一样,开始测试
forge test
测试结果如下:
可以直接调用
输出几个日志를 방출하다,
emit log_string("hello");
运行forge test 是不会有变化的,需要加参数 -vvvvvvvvvvvvvv
v 유닉스
如下:
加入依赖
如果需要安装依赖包,像这样
forge install openzeppelin/openzeppelin-contracts
Windows에서 上不会成功,自己下载到lib目录就好
如果需要使用@openzeppelin这种import
打开foundry.toml문서 查看
[default]
src = 'src'
out = 'out'
libs = ['lib']
remappings = ['ds-test/=lib/ds-test/src/,'@openzeppelin=lib/openzeppelin-contracts/']
改好后像这样:
remappings = ['@ds-test=lib/ds-test/src/','@openzeppelin=lib/openzeppelin-contracts/']
还有个专门的build命令,就是只编译吧.
테스트 빌드, 테스트.
abi 文件在目录
好了,就这样!
希望你玩得愉快,真的感觉到快了,我是觉得非常快了,上面编译forge特别慢.
这里可以下载编译好了的
https://github.com/gakonst/foundry/releases
一些项目的速度对比测试,基本都是快3倍以上
Project Forge DappTools 속도 향상
guni-lev 28.6s 2m36s 5.45x
솔메이트 6s 46s. 7.66x
geb. 11s 40s 3.63x
볼트 1.4초 5.5초 3.9x
参考
GitHub - gakonst/foundry: Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Getting Started With Forge — Wilson (mirror.xyz)
Getting Started with Forge — crisgarner.eth (mirror.xyz)
Reference
이 문제에 관하여(使用Foundry,感受快,rust对写合约的支持), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xiaodao/shi-yong-foundrygan-shou-kuai-rustdui-xie-he-yue-de-zhi-chi-2n8p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)