
영상 자료 참고 : https://www.youtube.com/watch?v=OV3mnmfaxSc
Foundry는 hardhat과 같이 스마트 컨트랙트를 작성하고, 컴파일하고, 테스트하고, 배포할 수 있는 툴체인이란다.
100% Solidity로 이뤄졌다. 테스팅도 sol로 되어 있고, hardhat은 JS기반이란다.
인기는 Hardhat이 더 많고, Foundry는 점점 점유율을 높여간단다.
더 정확하게는
Foundry is a smart contract development toolchain.
Foundry manages your dependencies, compiles your project, runs tests, deploys, and lets you interact with the chain from the command-line and via Solidity scripts.
curl -L https://foundry.paradigm.xyz | bash
macOs는 source ~ 어쩌고 하면서 에러가 나는데, 그대로 복붙해서 입력해준 후, foundryup을 입력하면 설치가 된다.
설치 후 폴더를 하나 만들어서 들어간 후
forge init .
하면 초기화가 된다.

기본적으로 테스팅 파일은 컨트랙트 이름 + t + sol으로 만들어진다.
forge build
로 컴파일 후
forge test
로 테스트가 가능하다.

여기서 재밌는 점은 테스팅 파일의 x이다.
어디에도 x가 정의된 적이 없는데, 테스팅을 할 때 foundry가 임의의 값을 넣어서 테스팅을 진행한다는 점이다.
그래서 오류가 하나라도 있으면 fail을 뱉는 것이다.
이게 ㅈㄴ 멋있는게, 만약 x + 1을 사용한다면, x 타입 정의인 uint256보다 커져서 overflow가 발생할 수 있을 것이고,
foundry가 알아서 test fail을 뱉는다는 점이다.
이렇게 꼼꼼하게 잡아낸다는 것이다.

그래서 수정한 코드.
https://github.com/smartcontractkit/foundry-starter-kit

마치 npm i를 하듯 make를 입력하면 세팅이 된다.

여기 명령어들이 적혀있는데, makefile을 태어나서 처음봤다.
makefile :
Makefile은 소프트웨어 개발에서 자동화된 빌드 프로세스를 수행하는 도구입니다.
보통 소프트웨어 개발에서 소스 코드를 컴파일하고 빌드하는 과정은 여러 단계를 거치며 번거로울 수 있습니다. Makefile은 이러한 과정을 자동화하여 개발자가 간편하게 빌드 프로세스를 실행할 수 있도록 도와줍니다.
Makefile은 일종의 텍스트 파일로, 소스 코드와 빌드 프로세스에 대한 명령어를 담고 있습니다.


remappings.txt에서 경로를 축약할 수도 있는 것 같다.

mocks란 모조품으로, 로컬인데 DON에서 데이터를 req하고 res할 수는 없지 않는가.
그래서 마치 그렇게 DON을 사용하는 것 처럼 효과를 주는 것이다.

Cheats는 테스트를 위해 block의 타임스탬프나, 블록 순서를 바꾸는 코드다.
그래도 강의력이 좋고 짧아서 다행이었다.
너무 간단한 만큼 배운 것은 적었고, 70%정도 이해한 것 같다. 어차피 한 번 슥 따라한다고 내 것이 되는 것도 아니고,
추후에 다시 봐야할 것이다.