Rand Protocol
Мобильное

Rand Wallet для Android

Нативное приложение на Java поверх общего ядра кошелька на Rust, загружаемого как нативная библиотека. Ключ расходования зашифрован ключом, который хранит Android Keystore, резервное копирование отключено, а релизные сборки работают только по HTTPS.

Публикация в Google Play ожидается. Пока она не прошла проверку, установите версию 0.8.0 по ссылке для скачивания ниже или соберите её из исходного кода.

Значок Rand Wallet
Технологии
Java
Распространяется через
Google Play, сначала открытое тестирование
Требуется
Android 8 (API 26) или новее, arm64 или x86_64
Отправка
Доказательство строится на телефоне или через prover RandProtocol
Скачать

Версия 0.8.0

Файлы прикреплены к релизу v0.8.0 на GitHub; кнопки здесь — это ссылки на них, и с этого сайта ничего не раздаётся.

  1. Откройте файл на телефоне и разрешите установку, когда Android спросит, либо выполните для него adb install с компьютера.
  2. Пакет подписан собственным ключом проекта. Чтобы проверить его, apksigner verify --print-certs должен вывести SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52.
  3. Google Play подписывает приложения собственным ключом, поэтому, когда листинг заработает, Android попросит удалить эту копию, прежде чем установить ту. Сначала экспортируйте файл ключа в Settings.
Пакет для Android (.apk)
arm64 и x86_64 · 11.9 MB
Скачать
rand-wallet-0.8.0-android.apk
SHA-256 400d5c4873cc70c7893a4a0bed36eecf261bd1c9bb9578c6544d8ffbf7e976d7
Проверьте скачанный файл
SHA256SUMS
# с файлом SHA256SUMS, скачанным в ту же папку, что и сам файл
shasum -a 256 -c SHA256SUMS --ignore-missing     # macOS
sha256sum -c SHA256SUMS --ignore-missing         # Linux

# или выведите сумму одного файла и сравните её с указанной выше
shasum -a 256 rand-wallet-0.8.0-android.apk

Совпадение суммы означает, что файл — тот, который был опубликован. Оно не означает, что файл собран из исходного кода: сборки пока не воспроизводятся бит в бит, поэтому, если вам нужно это знать, соберите его сами.

Отправка

Доказательство строится на телефоне или через prover RandProtocol

На телефоне с памятью около 8 ГБ приложение строит доказательство перевода прямо на устройстве, в фоновой службе с уведомлением на время работы, поэтому переключение между приложениями её не останавливает.

Доказательство для пакета достигает пика около 6,2 ГБ. На телефоне с меньшим объёмом памяти Android остановил бы приложение посреди построения доказательства, поэтому на шаге проверки выводится предупреждение с реальными показателями устройства. Тогда телефон по умолчанию использует prover RandProtocol или ваш собственный rand-prover по https (Settings → Prover) и формирует перевод, пока prover строит доказательство.

Устройство, которое не может построить доказательство, по умолчанию использует provers RandProtocol: несколько машин, которыми управляют валидаторы (сегодня их четыре, по адресу https://prover.randprotocol.org), без комиссии. Начиная с 0.6.9 у каждой из них свой ключ, который кошелёк закрепляет, и кошелёк сообщает об этом перед первой отправкой. Машина, строящая доказательство для отправки, получает ключ просмотра кошелька и одноразовую соль: её оператор может прочитать всю историю кошелька, то есть каждый полученный и отправленный платёж, но не может тратить средства. Ключ расходования никогда не покидает ваше устройство, которое само строит небольшое доказательство авторизации. Для большей приватности выберите собственный prover в Settings → Prover: ему всегда будет отдаваться предпочтение; кошелёк проверяет каждое доказательство перед отправкой.

Подключение prover шаг за шагом: docs/prover.md.

Ваши ключи

Где хранится ключ

Ключ траты — единственный секрет кошелька. Нет ни учётной записи, ни сервера, хранящего его копию: потеряв ключ, его не сможет восстановить никто, поэтому сохраните его, когда кошелёк его покажет.

Ключ расходования
В EncryptedSharedPreferences: AES-256-GCM под мастер-ключом, который хранит Android Keystore. Ключ просмотра никогда не сохраняется; он выводится при необходимости.
Разблокировка
Запрос биометрии, с резервным вариантом в виде учётных данных устройства, и автоблокировка по истечении интервала, заданного в Settings.
Резервное копирование
Отключено, поэтому хранилище никогда не покидает телефон через сервис резервного копирования Google.
Ноты
Закрытый кэш приложения с вашими нотами и транзакционным ключом каждого платежа, который восстанавливается повторным сканированием. Релизные сборки отклоняют HTTP без шифрования.
Также

Обмен в приложении

Начиная с версии 0.7.1 в мобильных приложениях есть экран Swap, как в расширениях и настольном приложении: торгуйте RAND и токенами через пулы durian.market, не выходя из кошелька. Доказательство вызова программы и авторизацию траты телефон формирует сам, для чего требуется около 1,5 ГБ памяти, а крупное доказательство строят провайверы RandProtocol. Сумма, которую вы получите, точна; если пул изменится раньше, ничего не будет отправлено, и вы получите новую котировку.

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

Или соберите сами

  1. Соберите отладочный APK из репозитория clients и установите его с помощью adb — на телефон либо на эмулятор arm64 или x86_64 (API 36).
  2. Из эмулятора узел на вашем компьютере доступен по адресу http://10.0.2.2:8545; отладочные сборки разрешают незашифрованный трафик только к этому адресу и к localhost.

Набор инструментов: Rust 1.98.1, зафиксирован в репозитории и устанавливается через rustup. Руководство по сборке охватывает каждый клиент на чистой машине. Каталоги с исходным кодом: android/, core/.

Rand Wallet для Android
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git && cd clients
git checkout v0.8.0 && git submodule update --init   # релиз; core/vendor/fullnode @ v0.8.0 (c0878c3)
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/ (JDK 17, SDK 36, NDK 27)
cd android && ./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk
Каждый клиент

Что он делает на любой платформе

Создание кошелька
Ключ расходования генерируется на устройстве и показывается один раз, чтобы вы его сохранили; из него выводится адрес rand1…. Импортируйте существующий ключ или файл wallet.key.json из CLI rand; каждый клиент экспортирует один и тот же файл.
Получение и отправка
Ваш баланс — это набор нот, которые может открыть только ваш ключ; чтобы найти их, кошелёк сканирует дерево обязательств. Перевод RAND или любого токена RPL из списка — это один пакет 4-in-4-out, авторизованный доказательством. Никто не узнаёт ни отправителя, ни получателя, ни сумму, ни то, какой актив перемещался.
Faucet
В testnet с открытым faucet одно нажатие чеканит 100 RAND в ноту, которую может открыть только вы.
Раскрывайте только то, что выберете
Скопируйте свой ключ просмотра и откройте My history в RandScan, чтобы увидеть каждую ноту, которую вы отправили или получили, либо скопируйте ключ транзакции одного платежа, чтобы раскрыть именно этот платёж и ничего больше. Обозреватель расшифровывает данные в вашем браузере и никуда не отправляет ключ.

Ключи просмотра и ключи транзакций открываются на randscan.org.

Заметки о testnet

Прежде чем что-либо отправлять

Цепочка
Публичная конечная точка обслуживает chain 21, работающую с 12 Oct 2026 10:31 UTC (выпущена на fullnode v0.8.0). Ядро кошелька включает fullnode v0.8.0 (c0878c3) и отвергает любую другую цепочку: chain 21 работает на constraint set 9, поэтому кошелёк 0.7.x не может отправлять в ней транзакции, а этот релиз не может отправлять в chain 20. Ключи и адреса сохраняются; кошелёк, сканировавший chain 20, один раз показывает баннер о другой цепочке и заново сканирует с генезиса chain 21. Пополнения и выводы через мост по-прежнему облагаются комиссией 0,1% в zUSD, которую кошелёк показывает до вывода средств.
RPC-endpoint
Settings → Network. По умолчанию https://rpc.randprotocol.org; подойдёт любой RPC rand-node, до которого вы можете достучаться, а сохранённый URL проверяется до того, как будет сохранён
Построение доказательств
Пик памяти при доказательстве пакета составляет около 6,2 GB, на процессоре ноутбука это занимает около минуты
Статус
Экспериментальное программное обеспечение для testnet. Не проходило аудит. RAND в testnet не имеет реальной стоимости
Лицензия
GPL-3.0-only, как и крейты полного узла, с которыми компонуется каждый клиент
Другие клиенты

Один кошелёк, все платформы

Один и тот же файл ключа, формат адреса и правила везде: кошелёк, созданный здесь, импортируется в любой другой клиент и в CLI rand.