Соберите сами
Каждый клиент Rand Wallet собирается из одного публичного репозитория, randprotocol/clients, под лицензией GPL-3.0-only. Опубликованные загрузки создаются командами, приведёнными на этой странице, и ничем больше, поэтому те же пакеты можно собрать на собственной машине. Версия 0.8.0 — это тег v0.8.0.
Что установить
Только строки для нужного вам клиента. Первая сборка любого клиента компилирует prover и занимает несколько минут; последующие пересборки выполняются быстро.
1. Получите исходный код
Клонируйте репозиторий вместе с его единственным подмодулем — полным узлом, код которого составляет криптографию кошелька. Переключитесь на тег релиза, чтобы собрать ровно то, что было опубликовано, или оставайтесь на main ради последней версии. Аккаунт GitHub и ключ SSH не нужны.
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 из релиза и распакуйте его. Внутри находится подмодуль, которого нет в архивах «Source code», создаваемых самим GitHub.
2. Протестируйте ядро (необязательно)
Ядро — это библиотека на Rust, которую оборачивает каждый клиент. Её тесты создают настоящее доказательство и проверяют его собственным verifier'ом сети; после первой компиляции это занимает около минуты.
cd core && cargo test --release && cd .. 3. Настольное приложение: Linux, Windows, macOS
Один скрипт собирает пакеты для той ОС, на которой запущен, под теми же именами, что и в релизах. На Linux: AppImage, .deb, .rpm и готовый бинарный файл в .tar.gz. На Windows, из Git Bash: .msi и -setup.exe. На macOS: .dmg. Каждая платформа собирает только свои пакеты.
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 # образ .dmg для Intel, собранный на Mac с Apple silicon
cd desktop/src-tauri && cargo tauri dev # или просто запустите, без упаковки Первая сборка компилирует prover и занимает несколько минут.
4. Расширения для Chrome и Firefox
Ядро компилируется в WebAssembly, затем скрипт упаковки для каждого браузера копирует файлы в dist/ и архивирует их в zip. Здесь нет ни сборщика, ни минификатора: за исключением модуля WebAssembly, загружаемые вами файлы — это файлы из репозитория.
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.
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, нужно добавить ваш Apple ID в Xcode → Settings → Accounts и выбрать свою команду в разделе Signing & Capabilities.
Подробнее: iOS.
core/scripts/build-ios.sh # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj # выберите симулятор или своё устройство, затем нажмите Run 7. Локальный веб-кошелёк
Тот же кошелёк во вкладке браузера, который вам отдаёт небольшой сервер, слушающий только 127.0.0.1.
Подробнее: Web.
web/wallet/serve.sh # собирает, затем отдаёт http://127.0.0.1:8787/ 8. Запустите тесты
Для общего интерфейса, веб-кошелька и расширения есть один набор тестов на JavaScript; у настольного приложения и приложения для Android — свои.
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, — это тот самый опубликованный файл. Сборки пока не воспроизводятся бит в бит, поэтому сумма вашей собственной сборки не совпадёт с суммой опубликованной, а совпадение суммы не доказывает, из какого исходного кода получен файл. Если вопрос именно в этом, ответ — эта страница: соберите программу и запускайте то, что собрали.