Эта страница проводит токен от нуля до работающего, передаваемого актива в Rand. RPL — стандарт токенов Rand, появившийся в цепочке 14. Если вы развёртывали ERC-20 или создавали SPL mint, первый раздел стоит читать медленно: токен RPL не является ни тем, ни другим. Токены RPL — страница с концепцией, лежащей в основе этой.
1. Что такое токен RPL
Токен RPL — это запись в реестре токенов блокчейна, а не смарт-контракт. Не нужно писать, компилировать или аудировать никакой код. Создание токена — это одна транзакция, добавляющая строку в реестр, и с этого момента единицы токена представляют собой обычные экранированные ноты (shielded notes), хранящиеся в том же пуле, что и RAND, и расходуемые так же.
| поле | правило |
|---|---|
| идентификатор актива | 32 байта, идентичность токена. Записывается как rpl1…: bech32m, 62 символа, с контрольной суммой |
| индекс | небольшое число, которое цепочка присваивает при регистрации (1, 2, …; 0 — это RAND). Сокращённое обозначение идентификатора в этой цепочке |
| название | от 1 до 32 байт UTF-8, фиксируется при создании |
| символ | от 1 до 12 печатных ASCII-символов, фиксируется при создании |
| decimals | от 0 до 9, фиксируется при создании |
| эмиссионный ключ | кто может выпускать новые единицы: никто (None), ключ (Key) или мост (Bridge) |
| общее предложение | публично и изменяется только выпуском (mint) или сжиганием (burn) |
Символы не уникальны. Любой может создать токен с именем USDC, точно так же, как в Ethereum и Solana. Идентичность токена — это его идентификатор актива, поэтому перед тем как принять или листить токен, проверяйте идентификатор rpl1…, а не символ. Текстовая форма снабжена контрольной суммой: идентификатор с опечаткой отклоняется, а не отправляется куда-то ещё.
Чем он отличается от ERC-20 и SPL
| ERC-20 / SPL | RPL | |
|---|---|---|
| что такое токен | контракт или аккаунт, принадлежащий программе | строка реестра; кода на каждый токен нет, поэтому нет ни налога на перевод, ни ребейза, ни хуков |
| балансы | публичные, по адресам | экранированные ноты. Никто не может прочитать баланс держателя или составить список держателей токена |
| перевод | публичные отправитель, получатель и сумма | доказывается отправителем, полностью экранирован. Наблюдатель не отличит его от платежа в RAND |
| комиссия | собственная монета цепочки | RAND. Держателю нужно немного RAND, чтобы переместить токен, как держателю ERC-20 нужен ETH |
| получение | в SPL сначала нужен токен-аккаунт | настраивать ничего не нужно. Любой адрес rand1… может получить любой токен |
| суммы | uint256 / u64 | u64, не более 9 знаков после запятой |
| approve / transferFrom | да | нет в v1 |
| заморозка, чёрный список, пауза | часто | нет |
| метаданные | вне цепочки или изменяемые | в цепочке и неизменяемые |
| удерживается программой | да | нет в v1 |
Публичной остаётся граница: регистрация токена, каждый выпуск и каждое сжигание, каждый с указанием суммы. Именно это делает общее предложение проверяемым для любого. Переводы между держателями ничего не раскрывают, в том числе то, какой токен был перемещён.
2. Прежде чем начать
| вам нужно | как |
|---|---|
командная строка rand | Запуск узла описывает сборку; Командная строка перечисляет все команды |
| кошелёк | rand keygen записывает файл ключа расходования, а rand address выводит его адрес rand1… (Аккаунты и адреса) |
| узел для обращения | кошелёк обращается к узлу по JSON-RPC, по умолчанию к вашему собственному по адресу http://127.0.0.1:8545. Узел привязывает свой RPC к localhost, поэтому обычная конфигурация — собственный узел, следующий за цепочкой 20. Без него передайте --rpc https://rpc.randprotocol.org: публичная конечная точка обслуживает всё на этой странице, кроме rand faucet, который она отклоняет (JSON-RPC, публичная конечная точка) |
| RAND для комиссий | несколько RAND в кошельке. 100 RAND от одного вызова faucet покрывают всё на этой странице, но в цепочке 20 rand faucet платит только 16 кошелькам, которые указаны в allowlist генезиса (staking.faucet_recipients), и отклоняет любой другой адрес с сообщением the faucet may not mint to this recipient; любому другому кошельку нужно, чтобы RAND ему отправил тот, у кого они есть (Выпуск и сжигание) |
| комиссия за регистрацию | параметр генезиса цепочки, от 1 до 10 000 RAND. В цепочке 20 она составляет 1 RAND, поэтому rand token create стоит 1,001 RAND: базовые 0,001 RAND, которые платит каждая транзакция, плюс комиссия за регистрацию, которую цепочка в цепочке 20 сжигает, а не выплачивает предложившему блок. Любая другая команда здесь стоит базовые 0,001 RAND |
| около 6 ГБ свободной памяти | каждая транзакция доказывается на вашей машине. В цепочке 20 это два доказательства, и кошелёк выводит строку для каждого: proving the spend authorisation on this machine (tier 10; seconds)…, затем proving the bundle (tier 14; about a minute and a half on a laptop)…. Доказательство пакета занимает около 100 секунд и около 5,7 ГБ памяти во время выполнения; два доказательства занимают около 1,37 МБ и около 1,5 МБ при передаче, около 2,85 МБ вместе. Это верно для каждого шага ниже, изменяющего цепочку: создания, каждого выпуска, каждой отправки и каждого сжигания |
rand --key wallet.key.json keygen # writes the spend key; refuses to overwrite
rand --key wallet.key.json address # your rand1… address
rand --key wallet.key.json faucet # testnet only, allowlisted wallets only: asks a validator node to mint 100 RAND to this wallet
rand --key wallet.key.json balance # scans the tree, prints the spendable value and the unspent note count
--key по умолчанию равен wallet.key.json и может быть задан один раз через RAND_KEY; --rpc (или RAND_RPC) указывает узел для обращения и по умолчанию равен http://127.0.0.1:8545. В командах ниже --key указан явно. Прежде чем тратить время на доказательство, убедитесь, что узел находится в цепочке 20: метод JSON-RPC rand_chainId возвращает там 20. Кошелёк должен быть сборкой для цепочки 20, v0.6.8: цепочка 20 привязывает каждое доказательство и каждое подписанное сообщение, включая выпуск токена, к своему хешу генезиса, поэтому rand v0.6.7 создаёт доказательства и подписи, которые цепочка 20 отклоняет.
3. Создание токена
token create принимает суммы в наименьшей единице токена. --fixed-supply и --initial — целые числа базовых единиц: при --decimals 2 сумма 1000000 равна 10 000,00 токена. Каждая последующая команда (rand send --asset, rand token mint, rand token burn) с версии v0.5.10 принимает отображаемые единицы токена, как суммы RAND указываются в RAND (1.5): кошелёк считывает decimals из строки реестра токена, а большее число дробных знаков, чем у токена, отклоняется. В цепочке сумма всегда является целым числом базовых единиц.
Сначала решите один вопрос: можно ли когда-либо выпустить больше единиц? Ответ закладывается в токен при создании и не может быть расширен позже.
| фиксированное предложение | с возможностью выпуска | |
|---|---|---|
| эмиссионный ключ | None | Key: ключ Dilithium2, который вы храните |
| предложение | всё предложение выпускается один раз в создающей транзакции | начинается с нуля или с --initial; держатель ключа выпускает со временем |
| флаги | --fixed-supply <N> --to <rand1…> | --authority-key-out <FILE> и, при желании, --initial <N> --to <rand1…> |
| подходит для | токена с ограниченным предложением, членской или голосующей единицы | эмитента, наращивающего предложение, например токена баллов или вознаграждений |
Токен с фиксированным предложением
rand --key wallet.key.json token create \
--name "Example Credits" \
--symbol EXC \
--decimals 2 \
--fixed-supply 1000000 \
--to rand1…
--to — полный адрес rand1…, получающий предложение, например вывод rand address. --fixed-supply указывается в базовых единицах: 1000000 при 2 знаках после запятой — это 10 000,00 EXC.
Команда считывает с узла следующий индекс реестра и комиссию за регистрацию, строит ноту начального выпуска, доказывает один пакет комиссии, отправляет регистрацию и ждёт блока. В случае успеха она сообщает об отправке, затем выводит строку вида index <N>, id <64 hex> (<rpl1…>), затем committed at height <H>. Запишите идентификатор rpl1…: это идентичность токена, и каждая последующая команда принимает его.
Комиссия по умолчанию — это базовая плюс комиссия цепочки за регистрацию, 1,001 RAND в цепочке 20, так что считать ничего не нужно; --fee (в RAND) увеличивает её. --no-wait возвращается сразу после отправки транзакции и пропускает строку committed. --cuda строит доказательство на подключённом GPU NVIDIA, требует сборки с --features cuda и не переключается на CPU.
Если, пока строится ваше доказательство, регистрируется другой токен, он занимает индекс, под который было запечатано ваше. Узел отклоняет регистрацию, и команда выводит another token took index N first — re-run to register at N+1 с реальными числами. Отклонённая регистрация не попадает в блок; теряется доказательство — около 100 секунд работы. Запустите команду снова, и она построит доказательство для следующего индекса.
Всё предложение теперь находится в одной экранированной ноте, принадлежащей адресу --to. Регистрация и её сумма публичны; то, что получатель делает с нотой потом, — нет.
Токен с возможностью выпуска
rand --key wallet.key.json token create \
--name "Example Points" \
--symbol EXP \
--decimals 0 \
--authority-key-out exp-authority.key.json
Эта команда записывает новый ключ Dilithium2 в exp-authority.key.json (режим 0600, существующий файл не перезаписывается) и регистрирует токен с этим ключом в качестве права выпуска и нулевым предложением. Вывод — те же две строки, что и для токена с фиксированным предложением. Нужно указать ровно один из параметров --fixed-supply и --authority-key-out.
Чтобы выпустить первую сумму в той же транзакции, добавьте --initial и --to, которые указываются только вместе:
rand --key wallet.key.json token create \
--name "Example Points" \
--symbol EXP \
--decimals 0 \
--authority-key-out exp-authority.key.json \
--initial 5000 \
--to rand1…
Пока регистрация в пути, ключ лежит в exp-authority.key.json.pending. Он переименовывается в exp-authority.key.json, как только цепочка принимает регистрацию, и удаляется, если цепочка её отклоняет. Если соединение оборвалось и исход неизвестен, файл остаётся с суффиксом .pending: прежде чем его удалять, проверьте rand token list.
Файл ключа — это власть печатать токен. Храните его офлайн и держите резервную копию; он отделён от ключа трат вашего кошелька и никогда не нужен для отправки или получения.
Почему получатель первого выпуска входит в идентификатор
Регистрация не подписывается её создателем. Любой, кто увидит вашу регистрацию в мемпуле, может отправить её копию, оплатив своим пакетом комиссии. Если бы идентификатор актива охватывал только название, символ и сумму, эта копия могла бы указать адрес копирующего как получателя и попасть в блок первой: он стал бы владельцем идентификатора и, для токена с фиксированным предложением, всего предложения навсегда.
Поэтому идентификатор — это хеш всего содержимого регистрации, включая первоначальный выпуск: его сумму, получателя, случайность, время и зашифрованный конверт. Копия с другим получателем даёт хеш с другим идентификатором актива. Это другой токен, который лишь случайно носит тот же символ, а большего неуникальный символ никогда и не обещал. Ваш идентификатор может быть зарегистрирован только с вашим получателем.
--salt <hex32> задаёт 32-байтовую соль, которая тоже входит в идентификатор. Если её опустить, кошелёк выберет случайную. Задавайте её, когда идентификатор должен воспроизводиться, например чтобы опубликовать идентификатор до появления токена.
Проверьте результат
rand token info rpl1… # by id: rpl1… or 64 hex characters
rand token info 2 # or by the index `token create` printed
rand token list --limit 20 # one page of the registry; --from <index> pages on
token info печатает строку токена в формате JSON: index, id, id_text (форма rpl1…), name, symbol, decimals, authority, mint_nonce, total_supply и registered_at. authority равен {"kind":"none"} для токена с фиксированным предложением и {"kind":"key","key":…,"address":…} для токена с возможностью выпуска. total_supply — десятичная строка в базовых единицах. token list печатает enabled, registration_fee, next_index и строки tokens. Обе команды читают весь список узла целиком, поэтому узел не узнаёт, какой токен вас интересовал.
Или через JSON-RPC, где параметром может быть индекс, 64-символьный шестнадцатеричный идентификатор или форма rpl1…:
curl -s http://127.0.0.1:8545 -H 'content-type: application/json' -d '{
"jsonrpc": "2.0", "id": 1,
"method": "rand_getToken",
"params": ["rpl1…"]
}'
Результат — та же строка, что печатает token info, или null, если такого токена нет; некорректный идентификатор (неверная контрольная сумма, смешанный регистр, неверная длина) даёт ошибку -32602. rand_getTokens принимает [from_index, limit] и постранично перебирает все зарегистрированные токены, а rand_getTokenSupply возвращает только { total_supply, backings }. Ни одному из них ключ не нужен. См. JSON-RPC.
Строка, которая сегодня существует в цепочке 20, — это zUSD, мостовой токен с индексом 1. Обозреватель отдаёт реестр узла без необходимости иметь собственный узел:
curl -s https://randscan.org/api/v1/tokens
В цепочке 14, 2026-09-20, это вернуло "registration_fee": 1000000000, "next_index": 2 и один токен, здесь сокращённый до первого обеспечения:
{
"index": 1,
"id": "32e5ab28c782c663e14da2650a3feb12f16a12db85599f4f62dc169d26f37b1f",
"id_text": "rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx",
"name": "Shielded USD",
"symbol": "zUSD",
"decimals": 8,
"authority": {
"kind": "bridge",
"backings": [
{ "chain": 2, "token": "000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7",
"decimals": 6, "locked": "0", "minted_today": "0", "mint_day": 20716,
"mint_cap_per_day": "10000000000000" }
]
},
"mint_nonce": 0,
"total_supply": "0",
"registered_at": 256
}
В цепочке 20 строка имеет те же id, id_text, название, символ и обеспечения, но zUSD указан в генезисе, а не зарегистрирован на высоте 256 (registered_at равен 0), и его предложение началось с 99 zUSD: 22 заблокированы в Ethereum USDT, 22 в BSC USDT, 30 в Tron USDT и 25 в Solana USDT, перенесённые из цепочки 19. (Предложение цепочки 19 началось с 10 zUSD, все в Solana; цепочки 18 — с 9 в Tron и 1 в Solana.) Каждая строка обеспечения также содержит поля скользящего окна minted_in_window, mint_window_secs и mint_headroom.
Копия registration_fee в обозревателе — число JSON; собственный RPC узла возвращает её, как и любую сумму, десятичной строкой. В цепочке 20, как и в каждой цепочке начиная с 15, rand_getTokens узла также содержит max_tokens (4096), burn_registration_fee и bound_note_value (оба true) (токены RPL).
4. Выпуск и передача права выпуска
Выпускать можно только токен с правом Key, и только этим ключом.
rand --key wallet.key.json token mint \
--asset rpl1… \
--to rand1… \
--amount 5000 \
--authority-key exp-authority.key.json
--amount указывается в отображаемых единицах токена: 5000 для этого токена с 0 знаков — это 5 000 базовых единиц, а 1.5 для токена с 6 знаками — 1 500 000. Прежде чем строить ноту или доказательство, кошелёк читает строку токена и отказывается, если у токена нет права Key или если --authority-key не совпадает с ключом, указанным в реестре. В случае успеха он сообщает об отправке и печатает minted <amount> (<base units> units) of asset <index> to <address>. --fee (по умолчанию 0.001 RAND), --no-wait и --cuda работают так же, как в token create.
Выпуск добавляет одну ноту для получателя и увеличивает общее предложение. Сумма и открытый ключ получателя передаются в сети в открытом виде: выпуск — по замыслу публичное событие, как и депозит через мост. Как только получатель перемещает ноту, она становится экранированной, как и всё остальное. Кошелёк, платящий комиссию (--key), и ключ, санкционирующий выпуск (--authority-key), — разные ключи, и ими могут владеть разные люди.
Каждый выпуск подписывается поверх идентификатора цепочки, идентификатора актива и счётчика, который ведёт реестр, а в цепочке 20 — ещё и поверх хеша генезиса (rand-rpl-mint-2), поэтому выпуск нельзя воспроизвести в этой цепочке или скопировать в другую, даже если у неё тот же идентификатор цепочки. set-authority привязан так же.
Чтобы передать право выпуска новому ключу или навсегда отказаться от него:
rand --key wallet.key.json token set-authority \
--asset rpl1… \
--authority-key exp-authority.key.json \
--new-key next-authority.key.json
rand --key wallet.key.json token set-authority \
--asset rpl1… \
--authority-key exp-authority.key.json \
--renounce
--new-key принимает файл ключа и передаёт токен открытому ключу из этого файла; нужно указать ровно один из параметров --new-key и --renounce. Команда печатает asset <index>'s mint authority is now <public key hex> или asset <index>'s mint authority is renounced for good. Каждая стоит базовые 0.001 RAND и один раунд доказательства. --renounce превращает токен в токен с фиксированным предложением при его текущем предложении. Это необратимо: право может перейти от ключа к ключу или от ключа к никому, и больше никак. Токен, созданный с фиксированным предложением, никогда не станет пригодным для выпуска.
5. Использование
Отправка
rand --key wallet.key.json send rand1… 250 --asset rpl1…
Это отправляет 250 токенов в отображаемых единицах: 250 EXP при 0 знаков или 250.00 EXC (25 000 базовых единиц) при 2. Получатель и сумма — позиционные аргументы, как и для RAND. Прежде чем начать доказательство, кошелёк печатает одну строку, to fingerprint XXXX-XXXX-XXXX-XXXX · <amount> <symbol> (<base units> units), и спрашивает send? [y/N]. Сверьте отпечаток с отпечатком получателя, а базовые единицы — с тем, что вы имели в виду. --yes пропускает вопрос, и скрипт обязан его передать: без него stdin, не являющийся терминалом, отклоняется. --asset принимает индекс, идентификатор rpl1… или 64-символьный шестнадцатеричный идентификатор, а если его опустить, отправляется RAND. --memo <text> запечатывает для получателя до 510 байт текста внутри конверта платежа; цепочка 18 — первая, которая это разрешает; ничто в цепочке не показывает, что заметка есть. --fee всегда в RAND и по умолчанию равен 0.001; --no-wait и --cuda применимы. Идентификатор сопоставляется с индексом по полному списку реестра узла, а числовой индекс вообще не доходит до узла, так что узел не узнаёт, какой токен сейчас будет перемещён. Это тот же rand send, который перемещает RAND, и то же доказательство. Транзакция публикует четыре нуллификатора, четыре коммитмента, комиссию в RAND, время, четыре зашифрованных конверта, доказательство пакета и, начиная с цепочки 17, коммитмент авторизации и его доказательство, какой бы актив ни перемещался. Наблюдатель не может отличить перевод токена от платежа в RAND, не может узнать, какой это был токен, и не видит ни отправителя, ни получателя, ни суммы.
Комиссия оплачивается в RAND из того же пакета, поэтому у отправляющего кошелька должно быть некоторое количество RAND. Кошелёк проверяет это до начала доказательства.
Проверка баланса
rand --key wallet.key.json asset-balance 2 # one token, by index
rand --key wallet.key.json asset-balance # a row for every token this wallet holds
Аргумент — индекс реестра. Для одного токена кошелёк печатает asset <index> balance: <N> units в базовых единицах. rand notes перечисляет все ноты, которые кошелёк раскрыл, с их индексом asset. Кошелёк находит свои ноты, сканируя цепочку своим ключом просмотра. В цепочке нет ничего, что хранило бы для него баланс.
Сжигание
rand --key wallet.key.json token burn rpl1… 100
Актив и сумма — позиционные аргументы: актив как индекс, rpl1… или шестнадцатеричная строка, сумма в отображаемых единицах токена, как её читает send --asset. --fee по умолчанию 0.001 RAND; --no-wait и --cuda применимы.
Сжигание уничтожает единицы и уменьшает общее предложение. Как и выпуск, это публичная граница: сумма и токен видны, держатель — нет. Мостовой токен вроде zUSD так не сжигается: token burn отклоняет его до доказательства, а выводится он через rand bridge-burn, который освобождает монету, стоящую за ним.
6. Проверка в обозревателе
randscan.org показывает всем публичную сторону токена: его регистрацию, выпуск и сжигание, а также общее предложение. Все токены перечислены на randscan.org/tokens, а страница отдельного токена имеет вид /tokens/<rpl1…>, /tokens/<64 hex> или /tokens/<index>; randscan.org/tokens/1 — это zUSD. Те же данные доступны по GET /api/v1/tokens и GET /api/v1/tokens/:id; второй запрос возвращает также транзакцию развёртывания токена и историю его предложения: регистрацию, выпуск и сжигание (Explorer API).
Публичная страница перевода показывает ни актива, ни суммы, ни сторон, потому что в цепочке их нет. Чтобы доказать платёж кому-то другому, например аудитору, контрагенту или бирже, передайте ему ключ:
| ключ | что видит его владелец |
|---|---|
| ключ транзакции | раскрытый один выход одной транзакции: токен, сумму и стороны |
| ключ просмотра | каждую заметку, которую кошелёк отправил или получил, с теми же подробностями и с признаком, потрачена ли она |
rand --key wallet.key.json tx-key <TX_HASH> # the keys for one transaction
rand --key wallet.key.json viewing-key # the wallet's viewing key, 64 hex characters
tx-key печатает по одной строке на каждый выход этой транзакции, который кошелёк отправил, получил или оставил себе как сдачу: выход (от bundle:0 до bundle:3, четыре слота пакета), роль, сумму (в RAND или N (asset I) для токена) и ключ транзакции, под которым этот выход был запечатан. Передайте ключ из строки sent. Он работает для любой прошлой транзакции, потому что кошелёк восстанавливает ключ из цепочки.
Вставьте ключ транзакции на страницу транзакции в randscan, чтобы раскрыть этот выход; обозреватель сопоставляет индекс актива с реестром и показывает токен по имени, с учётом его десятичных знаков. Ключ просмотра вводится на randscan.org/viewing. Обозреватель не хранит ключей и ничего не расшифровывает на своём сервере. По JSON-RPC то же раскрытие выполняет rand_checkTransaction(hash, key). Ни один из ключей не позволяет ничего потратить. Ключ просмотра нельзя отозвать после передачи, поэтому, когда нужно доказать один платёж, предпочитайте ключ транзакции.
7. Мостовые токены
zUSD («Shielded USD») тоже токен RPL с полномочием Bridge: его единицы выпускаются, только когда стражи подтверждают депозит USDT или USDC в Ethereum, Binance Smart Chain, Tron или Solana, и его предложение всегда равно заблокированному там обеспечению. Он был зарегистрирован в цепочке 14 транзакцией на высоте 256 под индексом 1, с семью видами обеспечения, а генезис каждой последующей цепочки, включая цепочку 20, снова перечисляет его под тем же идентификатором, rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx. Цепочка 15 унаследовала 10 zUSD, остававшихся в обращении, когда цепочка 14 остановилась, цепочки с 16 по 19 стартовали с теми же 10 zUSD, а цепочка 20 стартовала с 99 zUSD, остававшимися в обращении в цепочке 19. В цепочке 20 мост берёт 10 bps с каждого депозита и каждого погашения, в zUSD, в заметку казначейства (Bridge). zUSD — это корзина: его обеспечение объединено по номинальной стоимости, поэтому держатель несёт риск каждой перечисленной монеты, а не только той, которую внёс (RPL tokens). Его предложение меняется с каждым депозитом и погашением; актуальное значение показывают rand token info 1 или страница обозревателя /tokens/1.
Его история в цепочке 14, более ранней testnet (проверено в обозревателе 2026-09-20). Эта таблица — история цепочки 14: цепочка 14 выведена из эксплуатации, поэтому этих транзакций нет в обозревателе цепочки 20:
| что | транзакция (цепочка 14) | высота |
|---|---|---|
регистрация (register_bridged_token) | 7fa28fe6277a82401dcc440ff32da13c5e5763f79826fb17cc508f4c15abdd13 | 256 |
выпуск через мост (bridge_attest) | f2f24d75bc0e7d84dff1f4e4518a9d4bef115392492a39befca1528a2404851d | 2 572 |
| защищённый перевод zUSD | e6ddaca3c852e6c861524a55d00a0fbdcaff6867544b9f19b9bf60ce263c32ed | 3 259 |
сжигание через мост (bridge_burn) | f9f365ca170a5fb51ff9381d7b5cc39538c1a621e5f6e8c1bd74d8751c7bbc49 | 3 481 |
Страница перевода показывала то же, что показывает любой перевод токена: четыре нуллификатора, четыре обязательства и комиссию, и ничего, что говорило бы о перемещении zUSD.
Чтобы показать, что раскрывает ключ, в примечаниях к релизу v0.5 полного узла опубликованы два ключа для этого перевода в цепочке 14, из демонстрационного кошелька, созданного для этой цели и не содержащего ничего другого:
| ключ | значение | что он раскрывает |
|---|---|---|
| ключ транзакции перевода | 7f68f57c4f33a3f0fe419f4d1a5df2875461339dbc454af8ced50cbd7f40e4ef | выход bundle:0 этой одной транзакции: сумма 100000000 актива 1, то есть 1 zUSD |
| ключ просмотра демонстрационного кошелька | a93c673ffeff7204447161347828d8e549b7070460813ae1b7e664694e1dcd5d | каждая заметка, которую этот кошелёк отправил или получил |
В цепочке 14 ключ транзакции раскрывал этот выход на странице перевода, а по JSON-RPC это был один вызов (проверено 2026-09-20). В цепочке 20 вызов имеет ту же форму для вашей собственной транзакции; с этими значениями из цепочки 14 узел цепочки 20 отвечает null (проверено 2026-10-01), поскольку никогда не содержал этой транзакции:
curl -s https://rpc.randprotocol.org -H 'content-type: application/json' -d '{
"jsonrpc": "2.0", "id": 1, "method": "rand_checkTransaction",
"params": ["e6ddaca3c852e6c861524a55d00a0fbdcaff6867544b9f19b9bf60ce263c32ed",
"7f68f57c4f33a3f0fe419f4d1a5df2875461339dbc454af8ced50cbd7f40e4ef"] }'
Никогда не публикуйте ключ просмотра кошелька, которым вы пользуетесь: он навсегда раскрывает всю историю этого кошелька.
Обычный адрес не может создать мостовой токен. rand token create отклоняет полномочие Bridge, а регистрация мостового токена или добавление монеты к существующему требует подписанного кворума постквантового набора стражей моста. Токен, называющий себя zUSD без этого, — просто ещё один токен с заимствованным символом, и это ещё одна причина проверять идентификатор rpl1…. Мостовые токены в Rand всегда имеют 8 десятичных знаков.
Bridge описывает депозиты, погашения и набор стражей.