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.
Co zainstalować
Tylko wiersze dotyczące wybranego klienta. Pierwsza kompilacja dowolnego klienta kompiluje prover i trwa kilka minut; kolejne przebudowania są szybkie.
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.
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.
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.
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.
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.
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.
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.
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.
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 ) 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.
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ś.