Susun sendiri
Setiap klien Rand Wallet dibina daripada satu repositori awam, randprotocol/clients, di bawah GPL-3.0-only. Muat turun yang diterbitkan dihasilkan oleh arahan pada halaman ini dan tiada yang lain, justeru anda boleh menghasilkan pakej yang sama pada mesin anda sendiri. Versi 0.8.0 ialah tag v0.8.0.
Apa yang perlu dipasang
Hanya baris untuk klien yang anda mahu. Binaan pertama mana-mana klien menyusun prover dan mengambil masa beberapa minit; selepas itu, binaan semula adalah pantas.
1. Dapatkan kod sumber
Klon repositori beserta satu submodulnya, iaitu nod penuh, yang kodnya ialah kriptografi dompet. Semak keluar tag keluaran untuk membina tepat apa yang diterbitkan, atau kekal pada main untuk yang terkini. Akaun GitHub atau kunci SSH tidak diperlukan.
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init # keluaran, bukan main Tanpa git: muat turun rand-wallet-0.8.0-source.tar.gz daripada keluaran dan nyahmampatkannya. Ia mengandungi submodul di dalamnya, yang ditinggalkan oleh arkib “Source code” GitHub sendiri.
2. Uji teras (pilihan)
Teras ialah pustaka Rust yang dibungkus oleh setiap klien. Ujiannya menghasilkan bukti sebenar dan menyemaknya dengan verifier milik rantaian itu sendiri, yang mengambil masa kira-kira satu minit selepas penyusunan pertama.
cd core && cargo test --release && cd .. 3. Desktop: Linux, Windows, macOS
Satu skrip membina pakej bagi OS tempat ia dijalankan, dengan nama yang digunakan oleh keluaran. Pada Linux: AppImage, .deb, .rpm dan binari kosong dalam .tar.gz. Pada Windows, daripada Git Bash: .msi dan -setup.exe. Pada macOS: .dmg. Sesebuah platform hanya membina pakejnya sendiri.
cargo install tauri-cli --version "^2" --locked # sekali sahaja
scripts/release/build-desktop.sh # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin # .dmg Intel, daripada Mac berasaskan silikon Apple
cd desktop/src-tauri && cargo tauri dev # atau jalankan sahaja, tanpa pembungkusan Binaan pertama menyusun prover dan mengambil masa beberapa minit.
4. Sambungan Chrome dan Firefox
Teras disusun kepada WebAssembly, kemudian skrip pek setiap pelayar menyalin fail ke dalam dist/ dan memampatkannya dalam fail zip. Tiada pembungkus (bundler) dan tiada pengecil (minifier): selain modul WebAssembly, fail yang anda muatkan ialah fail yang ada dalam repositori.
core/scripts/build-wasm.sh # → extension/shared/core/
chrome/pack.sh # → dist/chrome/ dan dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh # → dist/firefox/ dan 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
Teras dibina sebagai pustaka natif untuk arm64 dan x86_64, kemudian Gradle membina aplikasi di sekelilingnya. Binaan nyahpepijat boleh dipasang pada mana-mana telefon atau emulator; binaan keluaran ditandatangani dengan kunci yang anda cipta sendiri.
Maklumat lanjut tentang Android.
core/scripts/build-android.sh # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties # di mana-mana SDK anda berada
./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk 6. iOS
Teras dibina sebagai XCFramework untuk peranti dan simulator, dan aplikasinya ialah projek Xcode biasa. Menjalankannya pada iPhone anda sendiri memerlukan Apple ID anda dalam Xcode → Settings → Accounts dan pasukan anda dipilih di bawah Signing & Capabilities.
Maklumat lanjut tentang iOS.
core/scripts/build-ios.sh # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj # pilih simulator atau peranti anda, kemudian Run 7. Dompet web setempat
Dompet yang sama dalam tab pelayar, dihidangkan kepada anda oleh pelayan kecil yang hanya mendengar pada 127.0.0.1.
Maklumat lanjut tentang Web.
web/wallet/serve.sh # membina, kemudian menghidangkan http://127.0.0.1:8787/ 8. Jalankan ujian
Antara muka kongsi, dompet web dan sambungan mempunyai satu suite JavaScript; aplikasi desktop dan aplikasi Android mempunyai suite masing-masing.
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 ) Bagaimana fail yang diterbitkan dihasilkan
Pada tag keluaran, runner GitHub menjalankan skrip yang sama: aplikasi desktop pada macOS, Windows dan Linux, kedua-dua zip sambungan, dan arkib kod sumber, dilampirkan pada keluaran bersama SHA256SUMS. Aliran kerjanya ialah .github/workflows/release.yml, dan Jenkinsfile menjalankan saluran paip yang sama di tempat lain. Pakej Android dibina dan ditandatangani pada mesin penyelenggara, kerana kunci tandatangannya tiada dalam mana-mana CI.
Dan apa yang tidak dikatakannya
Muat turun yang sepadan dengan SHA-256 ialah fail yang diterbitkan. Binaan ini belum boleh dihasilkan semula bit demi bit, jadi binaan anda sendiri tidak akan mempunyai hasil tambah yang sama dengan yang diterbitkan, dan hasil tambah yang sepadan bukanlah bukti dari kod sumber mana sesuatu fail itu datang. Jika itu soalannya, jawapannya ialah halaman ini: bina, dan jalankan apa yang anda bina.