Rand Protocol
Kompilacja ze źródeł

Skompiluj to sam

Każdy klient Rand Wallet jest budowany z jednego publicznego repozytorium, randprotocol/clients, na licencji GPL-3.0-only. Publikowane pliki do pobrania powstają z poleceń opisanych na tej stronie i z niczego więcej, więc te same pakiety możesz zbudować na własnym komputerze. Wersja 0.8.0 to tag v0.8.0.

Zanim zaczniesz

Co zainstalować

Tylko wiersze dotyczące wybranego klienta. Pierwsza kompilacja dowolnego klienta kompiluje prover i trwa kilka minut; kolejne przebudowania są szybkie.

Każdy klient
git, rustup i Node 22 lub nowszy. rustup instaluje Rust 1.98.1, czyli wersję przypiętą w repozytorium, przy pierwszym uruchomieniu cargo w sklonowanym katalogu.
Desktop, dowolny system
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Desktop w Linuksie
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file (nazwy dla Debiana i Ubuntu; inne dystrybucje mają odpowiedniki)
Desktop w Windowsie
Visual Studio Build Tools z pakietem „Desktop development with C++” oraz Git for Windows, którego Git Bash uruchamia skrypty
Desktop w macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, portfel webowy
Nic więcej. Kompilacja sama instaluje wasm-bindgen-cli.
Android
JDK 17 lub nowszy oraz Android SDK z platformą 36, build-tools 36 i NDK 27
iOS
Mac z Xcode 16 lub nowszym

1. Pobierz źródła

Sklonuj repozytorium wraz z jego jednym podmodułem, czyli pełnym węzłem, którego kod stanowi kryptografię portfela. Przełącz się na tag wydania, aby zbudować dokładnie to, co opublikowano, lub zostań na main, aby mieć najnowszy kod. Nie potrzeba konta GitHub ani klucza SSH.

Pobierz źródła
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # wydanie, a nie main

Bez gita: pobierz rand-wallet-0.8.0-source.tar.gz z wydania i rozpakuj go. Zawiera podmoduł, którego archiwa „Source code” z GitHub nie obejmują.

2. Przetestuj rdzeń (opcjonalnie)

Rdzeń to biblioteka w Rust, którą opakowuje każdy klient. Jego testy tworzą prawdziwy dowód i sprawdzają go własnym weryfikatorem łańcucha, co po pierwszej kompilacji zajmuje około minuty.

Przetestuj rdzeń (opcjonalnie)
bash
cd core && cargo test --release && cd ..

3. Desktop: Linux, Windows, macOS

Jeden skrypt buduje pakiety dla systemu, na którym działa, pod nazwami używanymi w wydaniach. W Linuksie: AppImage, .deb, .rpm oraz samą binarkę w archiwum .tar.gz. W Windowsie, z Git Bash: .msi i -setup.exe. W macOS: .dmg. Każda platforma buduje tylko własne pakiety.

Więcej o Linux, Windows, macOS.

Desktop: Linux, Windows, macOS
bash
cargo install tauri-cli --version "^2" --locked   # jednorazowo
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # plik .dmg dla Intela, z komputera Mac z Apple silicon

cd desktop/src-tauri && cargo tauri dev   # lub po prostu uruchom, bez pakowania

Pierwsza kompilacja kompiluje prover i trwa kilka minut.

4. Rozszerzenia do Chrome i Firefoksa

Rdzeń jest kompilowany do WebAssembly, a następnie skrypt pakujący każdej przeglądarki kopiuje pliki do dist/ i tworzy z nich archiwum zip. Nie ma bundlera ani minifikatora: poza modułem WebAssembly pliki, które ładujesz, są plikami z repozytorium.

Więcej o Chrome, Firefox.

Rozszerzenia do Chrome i Firefoksa
bash
core/scripts/build-wasm.sh   # → extension/shared/core/
chrome/pack.sh   # → dist/chrome/ i dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh   # → dist/firefox/ i 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

Rdzeń jest budowany jako natywna biblioteka dla arm64 i x86_64, a następnie Gradle buduje wokół niej aplikację. Kompilacja debug instaluje się na każdym telefonie lub emulatorze; kompilacja release jest podpisywana kluczem, który tworzysz samodzielnie.

Więcej o Android.

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

6. iOS

Rdzeń jest budowany jako XCFramework dla urządzenia i symulatora, a aplikacja to zwykły projekt Xcode. Uruchomienie jej na własnym iPhonie wymaga Twojego Apple ID w Xcode → Settings → Accounts oraz wybranego zespołu w Signing & Capabilities.

Więcej o iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # wybierz symulator lub swoje urządzenie, a następnie Run

7. Lokalny portfel webowy

Ten sam portfel w karcie przeglądarki, udostępniany przez mały serwer nasłuchujący wyłącznie na 127.0.0.1.

Więcej o Web.

Lokalny portfel webowy
bash
web/wallet/serve.sh   # buduje, a następnie serwuje http://127.0.0.1:8787/

8. Uruchom testy

Wspólny interfejs, portfel webowy i rozszerzenie mają jeden zestaw testów w JavaScripcie; aplikacja desktopowa i aplikacja na Androida mają własne.

Uruchom testy
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 )
Wydania

Jak powstają publikowane pliki

Przy tagu wydania runnery GitHub uruchamiają te same skrypty: aplikację desktopową w macOS, Windowsie i Linuksie, oba archiwa zip rozszerzeń oraz archiwum źródeł, dołączone do wydania wraz z SHA256SUMS. Workflow to .github/workflows/release.yml, a Jenkinsfile uruchamia ten sam potok w innym miejscu. Pakiet na Androida jest budowany i podpisywany na maszynie jednego z opiekunów, ponieważ jego klucz podpisujący nie znajduje się w żadnym CI.

Co mówi suma kontrolna

A czego nie mówi

Pobrany plik zgodny ze swoim SHA-256 jest plikiem, który opublikowano. Kompilacje nie są jeszcze odtwarzalne co do bitu, więc Twoja własna kompilacja nie będzie miała tej samej sumy co opublikowana, a zgodna suma nie dowodzi, z jakich źródeł plik pochodzi. Jeśli o to pytasz, odpowiedzią jest ta strona: zbuduj go i uruchom to, co zbudowałeś.