Rand Protocol
Веб

Rand Wallet в вебе

Тот же кошелёк в обычной вкладке браузера, который обслуживается с вашей машины небольшим сервером, доступным только через loopback. Он намеренно нигде не размещён: веб-кошелёк настолько надёжен, насколько надёжен источник, который его отдаёт, а этот источник — вы.

Нигде не размещён. Запустите его из локальной копии репозитория клиентов или из архива с исходным кодом, ниже.

Значок Rand Wallet
Технологии
JavaScript · ядро на WebAssembly
Распространяется через
копия репозитория clients, запущенная на вашей машине
Требуется
Node 20 или новее; актуальный браузер
Отправка
Отправляет через prover RandProtocol или ваш собственный
Скачать

Версия 0.8.0

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

  1. Распакуйте его и запустите web/wallet/serve.sh внутри, точно так же, как из git-копии. В архиве есть подмодуль полного узла, которого нет в собственных архивах «Source code» на GitHub.
Исходный код (.tar.gz)
репозиторий clients и его подмодуль в одном архиве · 13.2 MB
Скачать
rand-wallet-0.8.0-source.tar.gz
SHA-256 91f765f8cb6853914b49b26c1ba76d467c6e02d63a3f590acac3a155b977328d
Проверьте скачанный файл
SHA256SUMS
# с файлом SHA256SUMS, скачанным в ту же папку, что и сам файл
shasum -a 256 -c SHA256SUMS --ignore-missing     # macOS
sha256sum -c SHA256SUMS --ignore-missing         # Linux

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

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

Отправка

Отправляет через prover RandProtocol или ваш собственный

Пик памяти при доказательстве пакета составляет около 6,2 GB, а браузер выделяет WebAssembly 4 GiB, поэтому веб-кошелёк никогда не строит доказательство сам. Он формирует перевод, поручает prover построить доказательство (по умолчанию prover RandProtocol или тот, который вы подключили), локально проверяет доказательство и отправляет его.

Чтобы скрыть свою историю от prover RandProtocol, подключите настольное приложение Rand Wallet на том же компьютере (Settings → Prove for my other devices) или собственный rand-prover. Доказательство в процессе построения хранится только в памяти вкладки; если перезагрузить страницу посреди построения, оно забудется, и ничего не будет отправлено.

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

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

Ваши ключи

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

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

Ключ расходования
Хранится в IndexedDB в зашифрованном виде: AES-256-GCM под PBKDF2-SHA256 при 600 000 итераций. В разблокированном состоянии он находится только в памяти страницы, поэтому перезагрузка блокирует кошелёк. Его нет ни в localStorage, ни в URL, ни в сообщениях об ошибках.
Разблокировка
Неверные пароли замедляются: перед каждой попыткой ожидание растёт, а счётчик сохраняется после перезагрузки.
Сервер
Привязывается только к 127.0.0.1, отклоняет любой другой заголовок Host, отдаёт статические файлы и ничего больше, под строгой Content-Security-Policy: без встроенных скриптов и без удалённых скриптов.
Вкладки
Две вкладки кошелька безопасно делят одно хранилище: в каждый момент сканирует одна, а остальные читают то, что она записала.
Запуск

Запустите из копии репозитория

  1. Клонируйте репозиторий clients и запустите web/wallet/serve.sh, затем откройте http://127.0.0.1:8787/. Первый запуск собирает ядро на WebAssembly, на это уходит несколько минут; дальше запуск сводится к копированию файлов.
  2. Если вы нашли Rand Wallet по какому-то удалённому URL, доверяйте ему ровно настолько, насколько вы доверяете тому, кто держит этот сервер. Для всего, что имеет значение, используйте настольное приложение или расширение для браузера.

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

Rand Wallet в вебе
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)
web/wallet/serve.sh   # соберите, затем запустите на http://127.0.0.1:8787/
RAND_WALLET_PORT=9000 web/wallet/serve.sh   # на другом порту
Каждый клиент

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

Создание кошелька
Ключ расходования генерируется на устройстве и показывается один раз, чтобы вы его сохранили; из него выводится адрес 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.