Rand Wallet для Android
Нативное приложение на Java поверх общего ядра кошелька на Rust, загружаемого как нативная библиотека. Ключ расходования зашифрован ключом, который хранит Android Keystore, резервное копирование отключено, а релизные сборки работают только по HTTPS.
Публикация в Google Play ожидается. Пока она не прошла проверку, установите версию 0.8.0 по ссылке для скачивания ниже или соберите её из исходного кода.
- Технологии
- Java
- Распространяется через
- Google Play, сначала открытое тестирование
- Требуется
- Android 8 (API 26) или новее, arm64 или x86_64
- Отправка
- Доказательство строится на телефоне или через prover RandProtocol
Версия 0.8.0
Файлы прикреплены к релизу v0.8.0 на GitHub; кнопки здесь — это ссылки на них, и с этого сайта ничего не раздаётся.
- Откройте файл на телефоне и разрешите установку, когда Android спросит, либо выполните для него adb install с компьютера.
- Пакет подписан собственным ключом проекта. Чтобы проверить его, 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.
- Google Play подписывает приложения собственным ключом, поэтому, когда листинг заработает, Android попросит удалить эту копию, прежде чем установить ту. Сначала экспортируйте файл ключа в Settings.
# с файлом 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.
Где хранится ключ
Ключ траты — единственный секрет кошелька. Нет ни учётной записи, ни сервера, хранящего его копию: потеряв ключ, его не сможет восстановить никто, поэтому сохраните его, когда кошелёк его покажет.
Обмен в приложении
Начиная с версии 0.7.1 в мобильных приложениях есть экран Swap, как в расширениях и настольном приложении: торгуйте RAND и токенами через пулы durian.market, не выходя из кошелька. Доказательство вызова программы и авторизацию траты телефон формирует сам, для чего требуется около 1,5 ГБ памяти, а крупное доказательство строят провайверы RandProtocol. Сумма, которую вы получите, точна; если пул изменится раньше, ничего не будет отправлено, и вы получите новую котировку.
Или соберите сами
- Соберите отладочный APK из репозитория clients и установите его с помощью adb — на телефон либо на эмулятор arm64 или x86_64 (API 36).
- Из эмулятора узел на вашем компьютере доступен по адресу http://10.0.2.2:8545; отладочные сборки разрешают незашифрованный трафик только к этому адресу и к localhost.
Набор инструментов: Rust 1.98.1, зафиксирован в репозитории и устанавливается через rustup. Руководство по сборке охватывает каждый клиент на чистой машине. Каталоги с исходным кодом: android/, core/.
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.
Прежде чем что-либо отправлять
- Цепочка
- Публичная конечная точка обслуживает 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.