Rand Protocol
Сборка из исходного кода

Соберите сами

Каждый клиент Rand Wallet собирается из одного публичного репозитория, randprotocol/clients, под лицензией GPL-3.0-only. Опубликованные загрузки создаются командами, приведёнными на этой странице, и ничем больше, поэтому те же пакеты можно собрать на собственной машине. Версия 0.8.0 — это тег v0.8.0.

Перед началом

Что установить

Только строки для нужного вам клиента. Первая сборка любого клиента компилирует prover и занимает несколько минут; последующие пересборки выполняются быстро.

Любой клиент
git, rustup и Node 22 или новее. rustup устанавливает Rust 1.98.1 — версию, зафиксированную в репозитории, — при первом запуске cargo в локальной копии.
Настольное приложение, любая ОС
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
Visual Studio Build Tools с компонентом «Desktop development with C++» и Git for Windows, чья оболочка Git Bash запускает скрипты
Настольное приложение на macOS
Xcode Command Line Tools: xcode-select --install
Chrome, Firefox, веб-кошелёк
Больше ничего не нужно. Сборка сама устанавливает wasm-bindgen-cli.
Android
JDK 17 или новее, а также Android SDK с платформой 36, build-tools 36 и NDK 27
iOS
Mac с Xcode 16 или новее

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 из релиза и распакуйте его. Внутри находится подмодуль, которого нет в архивах «Source code», создаваемых самим GitHub.

2. Протестируйте ядро (необязательно)

Ядро — это библиотека на Rust, которую оборачивает каждый клиент. Её тесты создают настоящее доказательство и проверяют его собственным verifier'ом сети; после первой компиляции это занимает около минуты.

Протестируйте ядро (необязательно)
bash
cd core && cargo test --release && cd ..

3. Настольное приложение: Linux, Windows, macOS

Один скрипт собирает пакеты для той ОС, на которой запущен, под теми же именами, что и в релизах. На 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   # образ .dmg для Intel, собранный на Mac с Apple silicon

cd desktop/src-tauri && cargo tauri dev   # или просто запустите, без упаковки

Первая сборка компилирует prover и занимает несколько минут.

4. Расширения для Chrome и Firefox

Ядро компилируется в WebAssembly, затем скрипт упаковки для каждого браузера копирует файлы в dist/ и архивирует их в zip. Здесь нет ни сборщика, ни минификатора: за исключением модуля 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, нужно добавить ваш Apple ID в Xcode → Settings → Accounts и выбрать свою команду в разделе 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, — это тот самый опубликованный файл. Сборки пока не воспроизводятся бит в бит, поэтому сумма вашей собственной сборки не совпадёт с суммой опубликованной, а совпадение суммы не доказывает, из какого исходного кода получен файл. Если вопрос именно в этом, ответ — эта страница: соберите программу и запускайте то, что собрали.