Documentation Index
Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt
Use this file to discover all available pages before exploring further.
목적 및 범위
이 문서는 소스에서 StableNet을 빌드하는 방법에 대한 상세 지침을 제공합니다. 빌드 시스템 아키텍처, 사용 가능한 빌드 타겟, 크로스 컴파일 옵션을 다룹니다.
빌드된 노드 구성에 대한 정보는 노드 구성을 참조하세요. 제네시스 파일로 새 네트워크를 초기화하는 방법은 제네시스 설정 및 네트워크 초기화를 참조하세요.
사전 요구사항
StableNet은 소스에서 빌드하려면 Go 1.22 이상이 필요합니다.
빌드에 필요한 추가 의존성:
- C 컴파일러 (gcc 또는 clang) - CGO 활성화 패키지용
- Git - 버전 메타데이터 임베딩용
- Make (선택사항, 편의 타겟용)
빌드 시스템 아키텍처
StableNet 빌드 시스템은 노드 실행 바이너리를 생성하기 위한 Go 기반 빌드 스크립트를 중심으로 구성되며, 빌드 환경 감지와 공통 빌드 로직을 담당합니다.
빌드 시스템 컴포넌트
| File Path | Purpose |
|---|
build/ci.go | Main build orchestrator with subcommands |
Makefile | Convenience wrapper for common tasks |
internal/build/util.go | Build utility functions |
internal/build/gotool.go | Go toolchain management |
internal/build/env.go | Environment detection (CI/local) |
build/checksums.txt | Dependency checksums for verification |
소스에서 빌드
Make 사용
StableNet은 Makefile 타겟을 사용해 쉽게 빌드할 수 있습니다.
git clone https://github.com/stable-net/go-stablenet
cd go-stablenet
# gstable 클라이언트만 빌드
make gstable
# genesis_generator만 빌드
make genesis_generator
# 모든 실행 파일 빌드 (gstable, abigen, bootnode, evm, rlpdump, clef, genesis_generator 등)
make all
# 빌드 확인
./build/bin/gstable version
빌드된 바이너리는 모두 build/bin/ 디렉터리에 생성됩니다.
build/ci.go 직접 사용
더 세밀한 제어가 필요한 경우 빌드 스크립트를 직접 호출할 수 있습니다:
# gstable만 빌드
go run build/ci.go install ./cmd/gstable
# 특정 아키텍처로 빌드 (예: ARM64)
go run build/ci.go install -arch arm64 ./cmd/gstable
# 정적 링크 바이너리 생성 (Linux)
go run build/ci.go install -static ./cmd/gstable
# checksums.txt에 명시된 Go 버전을 자동 다운로드하여 빌드
go run build/ci.go install -dlgo ./cmd/gstable
# 모든 실행 파일 빌드
go run build/ci.go install
install 명령에서 사용할 수 있는 플래그:
| Flag | Description |
|---|
-dlgo | Download and use specific Go version from checksums.txt |
-arch | Target architecture (amd64, 386, arm, arm64) |
-cc | C compiler for cross-compilation |
-static | Create statically linked executable (Linux) |
사용 가능한 빌드 타겟
모든 실행 파일은 build/bin/에 빌드됩니다:
| Executable | Purpose | Source Path |
|---|
gstable | Main StableNet client | cmd/gstable/ |
genesis_generator | Genesis file generator | cmd/genesis_generator/ |
abigen | Solidity ABI to Go binding generator | cmd/abigen/ |
bootnode | Lightweight bootstrap node | cmd/bootnode/ |
evm | EVM testing tool | cmd/evm/ |
rlpdump | RLP data structure inspector | cmd/rlpdump/ |
clef | External account signer | cmd/clef/ |
devp2p | P2P network utilities | cmd/devp2p/ |
크로스 컴파일
빌드 시스템은 Go의 내장 크로스 컴파일과 외부 C 툴체인을 사용하여 여러 아키텍처 및 운영 체제에 대한 크로스 컴파일을 지원합니다.
지원 플랫폼
CI 시스템은 다음 플랫폼에 대해 빌드합니다:
| Platform | Architecture | Notes |
|---|
| Linux | amd64 | Default, full support |
| Linux | 386 | 32-bit Intel/AMD |
| Linux | arm | ARMv5, ARMv6, ARMv7 (GOARM variants) |
| Linux | arm64 | 64-bit ARM |
| macOS | amd64 | Intel Macs |
| macOS | arm64 | Apple Silicon (M1/M2) |
| Windows | amd64 | 64-bit Windows |
| Windows | 386 | 32-bit Windows |
빌드 검증
빌드 후 테스트를 실행하여 정상 동작을 확인합니다:
# 빠른 테스트 실행
make test-short
# 전체 테스트 실행
make test
# 린트 검사
make lint
build/ci.go test 명령은 다음 옵션을 지원합니다:
# 커버리지 보고
go run build/ci.go test -coverage ./...
# 레이스 감지
go run build/ci.go test -race ./...
# 상세 출력
go run build/ci.go test -v ./...