스마트 컨트랙트 컴파일 스크립트
python3 compile_smart_contracts.py [--compile | --clean | --add CONTRACT_PATH.sol] Maroo 리포지토리 내에서 Solidity 스마트 컨트랙트의 라이프사이클을 관리하기 위한 커맨드 라인 유틸리티입니다. Hardhat을 통한 검색, 컴파일 및 컴파일된 아티팩트 배포를 처리합니다. 이 스크립트는 핵심 Go 모듈에서 사용하는 컨트랙트 ABI를 업데이트하는 주요 도구입니다.
파라미터
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
--compile | flag | - | 기본 동작입니다. 리포지토리에서 모든 관련 .sol 파일을 스캔하여 Hardhat 프로젝트로 복사하고 컴파일한 후, 결과 JSON 아티팩트를 소스 디렉토리로 다시 복사합니다. |
--clean | flag | - | 모든 빌드 아티팩트와 임시 파일을 제거합니다. contracts/solidity, contracts/artifacts, contracts/cache, contracts/node_modules 디렉토리를 포함합니다. |
--add CONTRACT_PATH.sol | flag | - | 지정된 단일 컨트랙트를 재컴파일하고 해당 JSON 아티팩트를 업데이트합니다. 전체 재컴파일보다 훨씬 빠르며 단일 컨트랙트 인터페이스를 반복적으로 작업할 때 유용합니다. 경로는 리포지토리 루트에 대한 상대 경로일 수 있습니다. |
반환값
타입:
void 이 스크립트는 값을 반환하지 않습니다. 상태 메시지를 표준 출력으로 인쇄하고 오류 발생 시 0이 아닌 상태 코드로 종료합니다.
에러
| 코드 | 이름 | 설명 |
|---|---|---|
1 | CompilationError | Solidity 구문 오류, 해결되지 않은 import 또는 기타 컴파일러 문제로 인해 Hardhat 컴파일 프로세스가 실패할 경우 발생합니다. |
1 | FileNotFoundError | `--add` 사용 시 지정된 컨트랙트 경로가 존재하지 않을 경우 발생합니다. |
예제
전체 재컴파일 수행
가장 일반적인 사용 사례입니다. 리포지토리의 모든 컨트랙트 아티팩트가 소스 파일과 최신 상태로 동기화되도록 보장합니다.
# Navigate to the scripts directory
cd scripts/compile_smart_contracts
# Run the compilation script
python3 compile_smart_contracts.py --compile 단일 컨트랙트 ABI 업데이트
특정 컨트랙트를 변경한 후 빠르고 대상이 지정된 업데이트를 위해 `--add` 플래그를 사용하십시오. 이는 전체 컨트랙트 모음을 재컴파일하는 오버헤드를 피합니다.
# After modifying the PCL interface, update only its artifact
cd scripts/compile_smart_contracts
python3 compile_smart_contracts.py --add precompiles/pcl/IPcl.sol 빌드 환경 정리
이 명령어는 깨끗한 상태에서 시작하거나, 캐싱 문제를 해결하거나, 리포지토리를 아카이빙하기 전에 유용합니다.
# Remove all generated files and dependencies
cd scripts/compile_smart_contracts
python3 compile_smart_contracts.py --clean