Rand Protocol
소스에서 빌드

직접 컴파일하십시오

모든 Rand Wallet 클라이언트는 GPL-3.0-only 라이선스의 하나의 공개 저장소 randprotocol/clients에서 빌드됩니다. 배포되는 다운로드 파일은 이 페이지의 명령만으로 만들어지므로, 동일한 패키지를 직접 만드실 수 있습니다. 버전 0.8.0은 태그 v0.8.0입니다.

시작하기 전에

설치할 항목

사용하려는 클라이언트에 해당하는 행만 설치하면 됩니다. 어떤 클라이언트든 처음 빌드할 때는 prover를 컴파일하므로 수 분이 걸리며, 이후의 재빌드는 빠릅니다.

모든 클라이언트
git, rustup, Node 22 이상. rustup은 체크아웃 디렉터리에서 cargo를 처음 실행할 때 저장소가 고정한 버전인 Rust 1.98.1을 설치합니다.
데스크톱, 모든 OS
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Linux 데스크톱
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (Debian 및 Ubuntu 기준 패키지 이름이며, 다른 배포판에도 대응하는 패키지가 있습니다)
Windows 데스크톱
“Desktop development with C++”가 포함된 Visual Studio Build Tools, 그리고 스크립트를 실행하는 Git Bash가 포함된 Git for Windows
macOS 데스크톱
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, 웹 지갑
추가로 필요한 것은 없습니다. 빌드 과정에서 wasm-bindgen-cli가 자동으로 설치됩니다.
Android
JDK 17 이상, 그리고 platform 36, build-tools 36, NDK 27이 포함된 Android SDK
iOS
Xcode 16 이상이 설치된 Mac

1. 소스 가져오기

하나뿐인 서브모듈, 즉 지갑의 암호화 코드를 담고 있는 풀 노드와 함께 저장소를 클론합니다. 배포된 것과 정확히 같은 결과물을 빌드하려면 릴리스 태그를 체크아웃하고, 최신 버전을 원하시면 main에 그대로 두십시오. GitHub 계정이나 SSH 키는 필요하지 않습니다.

소스 가져오기
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # main이 아닌 릴리스

git을 사용하지 않는 경우: 릴리스에서 rand-wallet-0.8.0-source.tar.gz를 내려받아 압축을 풉니다. 이 파일에는 서브모듈이 포함되어 있으나, GitHub의 자체 “Source code” 아카이브에는 포함되어 있지 않습니다.

2. 코어 테스트 (선택 사항)

코어는 모든 클라이언트가 감싸서 사용하는 Rust 라이브러리입니다. 코어의 테스트는 실제 증명을 생성하고 체인 자체의 verifier로 검증하며, 최초 컴파일 이후 약 1분이 걸립니다.

코어 테스트 (선택 사항)
bash
cd core && cargo test --release && cd ..

3. 데스크톱: Linux, Windows, macOS

스크립트 하나가 실행된 OS용 패키지를 릴리스에서 사용하는 이름 그대로 빌드합니다. Linux에서는 AppImage, .deb, .rpm, 그리고 .tar.gz로 묶인 단독 바이너리를 만듭니다. Windows에서는 Git Bash에서 .msi와 -setup.exe를 만듭니다. macOS에서는 .dmg를 만듭니다. 각 플랫폼은 해당 플랫폼의 패키지만 빌드합니다.

자세한 내용: Linux, Windows, macOS.

데스크톱: Linux, Windows, macOS
bash
cargo install tauri-cli --version "^2" --locked   # 한 번만
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # Apple silicon Mac에서 만드는 Intel용 .dmg

cd desktop/src-tauri && cargo tauri dev   # 패키징 없이 바로 실행

처음 빌드할 때는 prover를 컴파일하므로 수 분이 걸립니다.

4. Chrome 및 Firefox 확장 프로그램

코어를 WebAssembly로 컴파일한 다음, 각 브라우저의 pack 스크립트가 파일을 dist/로 복사하고 zip으로 압축합니다. 번들러도 minifier도 없습니다. WebAssembly 모듈을 제외하면, 로드하는 파일은 저장소에 있는 파일 그대로입니다.

자세한 내용: Chrome, Firefox.

Chrome 및 Firefox 확장 프로그램
bash
core/scripts/build-wasm.sh   # → extension/shared/core/
chrome/pack.sh   # → dist/chrome/ 및 dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh   # → dist/firefox/ 및 dist/rand-wallet-firefox-<version>.zip

Chrome: chrome://extensions → Developer mode → Load unpacked → dist/chrome. Firefox: about:debugging → This Firefox → Load Temporary Add-on… → dist/firefox/manifest.json.

5. Android

코어를 arm64와 x86_64용 네이티브 라이브러리로 빌드한 다음, Gradle이 그 위에 앱을 빌드합니다. 디버그 빌드는 모든 휴대폰이나 에뮬레이터에 설치할 수 있으며, 릴리스 빌드는 직접 만든 키로 서명합니다.

자세한 내용: Android.

Android
bash
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties   # SDK가 있는 위치
./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk

6. iOS

코어를 기기용과 시뮬레이터용 XCFramework로 빌드하며, 앱은 일반적인 Xcode 프로젝트입니다. 본인의 iPhone에서 실행하려면 Xcode → Settings → Accounts에 Apple ID를 등록하고, Signing & Capabilities에서 팀을 선택해야 합니다.

자세한 내용: iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # 시뮬레이터 또는 기기를 선택한 다음 Run

7. 로컬 웹 지갑

브라우저 탭에서 사용하는 동일한 지갑이며, 127.0.0.1에서만 수신 대기하는 작은 서버가 제공합니다.

자세한 내용: Web.

로컬 웹 지갑
bash
web/wallet/serve.sh   # 빌드한 다음 http://127.0.0.1:8787/ 에서 제공

8. 테스트 실행

공유 인터페이스, 웹 지갑, 확장 프로그램은 하나의 JavaScript 테스트 모음을 사용하며, 데스크톱 앱과 Android 앱은 각자의 테스트 모음을 사용합니다.

테스트 실행
bash
npm ci --prefix ui
node --test "ui/test/**/*.test.mjs" "web/wallet/test/**/*.test.mjs" "extension/test/*.test.mjs"
( cd desktop/src-tauri && cargo test )
( cd android && ./gradlew testDebugUnitTest )
릴리스

배포 파일이 만들어지는 방식

릴리스 태그가 지정되면 GitHub의 러너가 동일한 스크립트를 실행합니다. macOS, Windows, Linux용 데스크톱 앱, 두 확장 프로그램의 zip, 소스 아카이브가 만들어지며, SHA256SUMS와 함께 릴리스에 첨부됩니다. 워크플로는 .github/workflows/release.yml이며, Jenkinsfile은 다른 환경에서 동일한 파이프라인을 실행합니다. Android 패키지는 서명 키가 어떤 CI에도 없기 때문에 관리자의 컴퓨터에서 빌드하고 서명합니다.

체크섬이 알려 주는 것

그리고 알려 주지 않는 것

SHA-256이 일치하는 다운로드 파일은 배포된 바로 그 파일입니다. 빌드는 아직 비트 단위로 재현되지 않으므로, 직접 빌드한 결과물의 체크섬은 배포된 파일의 체크섬과 같지 않으며, 체크섬이 일치한다고 해서 파일이 어떤 소스에서 나왔는지가 증명되는 것은 아닙니다. 그것이 궁금하시다면 답은 이 페이지에 있습니다. 직접 빌드하고, 직접 빌드한 것을 실행하십시오.