장점
- 자바 기반 개발환경 대비 실행속도가 빠르다.
- 솔리디티만으로 테스트 코드를 작성 가능하다
- 유용한 테스팅 라이브러리 및 내장도구가 존재한다
- 하드햇과 호환이 가능하다
단점
- 러닝커브
- 업그레이더블 플러그인
- 하드햇을 구성하여 업그레이드 배포만 하드햇 사용으로 우회 가능
설치
1.
curl -L https://foundry.paradigm.xyz | bash
2.
foundryup
프로젝트 생성
$ forge init yourProjectName
.
├── foundry.toml
├── lib
│ └── forge-std
│ ├── foundry.toml
│ ├── lib
│ ├── LICENSE-APACHE
│ ├── LICENSE-MIT
│ ├── package.json
│ ├── README.md
│ ├── scripts
│ ├── src
│ └── test
├── README.md
├── script
│ └── Counter.s.sol
├── src
│ └── Counter.sol
└── test
└── Counter.t.sol
10 directories, 10 files
우선 프로젝트를 생성하게 되면 샘플 컨트렉트등이 담긴 구조가 생성된다.
작동 방식을 익히기 위해 샘플을 통해 알아보려 한다.
하드햇에서는 compile을 하는데 여기서는 build를 사용한다
빌드
$ forge build
테스트
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Test, console} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
function test_Increment() public {
counter.increment();
assertEq(counter.number(), 1);
}
function testFuzz_SetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}
$forge test
테스트할 컨트랙트를 import 하고 test를 상속한다.
setup 함수에서 카운터가 새 카운터가 동일하다는 함수를 작성해준다
이하 테스트 코드를 작성한다.
forge 표준 라이브러리 참조 링크
https://book.getfoundry.sh/reference/forge-std/
이하 자세 한 내용은 파운더리 docs를 참조하길 바란다. 내용이 많다.
이를 활용하여 컨트랙트 개발을 진행하는 방향으로 전환하겠다.
'블록체인 backEnd' 카테고리의 다른 글
Pool : first provide Liquidity (0) | 2023.10.08 |
---|---|
DeFi Contract 작업 (0) | 2023.10.03 |
database mysql sequelize setting (1) | 2023.09.03 |
업그레이더블 컨트랙트 hardhat testCode.01 (0) | 2023.08.28 |
업그레이더블 컨트랙트 샘플 (0) | 2023.08.28 |
댓글