Нативные объекты и форматы передачи
Эта страница описывает профиль последовательных нативных финансов. Целочисленные экономические правила приведены в разделе Нативные финансы. Для создания и проверки операций по текущему State своей ноды используйте RPC кошелька.
Типизированные живые объекты
Каждое нативное раскрытие имеет тип, неизменяемое каноническое байтовое представление и коммитмент Poseidon2b с разделением доменов. Коммитмент занимает поле владельца/корня выхода State. Живой слот также аутентифицирует сумму и экземпляр создания. Зависимость принимается, когда её зафиксированный корень совпадает с определением, необходимым раскрытию.
Профиль последовательного исполнения использует следующие типы:
| Тип | ID | Поля по 128 бит | Байты кодировки |
|---|---|---|---|
| Определение взаимозаменяемого токена | 1 | 8 | 140 |
| Баланс токена | 2 | 6 | 108 |
| Резерв токена | 3 | 6 | 108 |
| Коллекция NFT | 4 | 8 | 140 |
| Предмет NFT | 5 | 8 | 140 |
| Определение рынка | 32 | 8 | 140 |
| Пул рынка | 33 | 8 | 140 |
| Определение запуска | 48 | 8 | 140 |
| Состояние запуска | 49 | 8 | 140 |
| Определение листинга NFT | 64 | 8 | 140 |
| Листинг NFT | 65 | 8 | 140 |
Раскрытие начинается с восьми байтов NOIDAS21. Затем идут версия формата 1 как little-endian u16 и тип как little-endian u16. Каждое последующее поле является little-endian u128. Число полей точно определяется типом. Усечённые, избыточные данные и лишний хвост отклоняются. Общий декодер ограничивает раскрытие 204 байтами, включая 12-байтовый заголовок. Выбранный последовательный профиль принимает типы из таблицы.
noid_tx/src/native_assets.rs задаёт порядок полей, числовые границы, теги коммитментов и канонический кодировщик. Отдельные модули launchpad, рынка и NFT определяют условия соответствующих раскрытий.
Идентичность и экземпляры
ID активов и коллекций имеют длину 32 байта. Создание связывает сеть, создателя, точный слот финансирования и его ID создания с определением. Идентичность NFT дополнительно связывает коллекцию и серийный номер. Перед расходованием сумма и корень выделения должны совпадать с точным экземпляром входа.
Нативные ID создания содержат бит 62 и последовательный номер меньше 2^62. Обычные выходы и coinbase используют соответствующие правила происхождения. Декодирование живого требования State проверяет нативный номер. Расходуемое право определяется вместе с его экземпляром создания.
Определение взаимозаменяемого токена фиксирует эмиссию и метаданные. Баланс токена фиксирует актив, владельца и количество минимальных единиц. Отдельный резерв фиксирует обеспечение NOID и непогашенную эмиссию. Объекты кривой/пула хранят торговое состояние. Состояние коллекции хранит максимум и количество выданных номеров. Листинг связывает предмет с неизменяемым определением продавца, цены и срока.
Операции с авторизацией Owner
Действующие коды нативных операций:
| Код | Операция |
|---|---|
| 2 | Передать взаимозаменяемые токены |
| 3 | Сжечь токены и погасить обеспечение |
| 5 | Создать коллекцию |
| 6 | Выпустить NFT |
| 7 | Передать NFT |
| 8 | Сжечь NFT |
| 48 | Создать запуск с фиксированной эмиссией |
| 64 | Создать листинг NFT |
| 65 | Купить NFT из листинга |
| 66 | Отменить листинг NFT |
| 80 | Исполнить выбранную последовательность сделок |
Коды операций и ID типов раскрытия образуют отдельные пространства имён. Выбранный профиль блока проверяет оба. Нативные переходы связывают все слоты входов/выходов, суммы, ID создания, типизированные раскрытия, обязательные определения, полномочия и комиссии. Отношение проверяет итоговые изменения State и авторизацию.
Формат намерения
Нативное расходование использует NOIDNT21, затем little-endian версию 1, число страниц u16 и число байтов авторизации u32. Префикс занимает 16 байт. Далее идут канонические тела страниц транзакции. Для каждого живого входа и выхода следуют длина раскрытия u16 и его байты. Нулевая длина обозначает обычное требование NOID. Финансовые операции передают ограниченный список зависимостей, заданный заголовком. Последнюю область байтов занимает капсула Owner.
Кодировщик фиксирует смещение авторизации до добавления капсулы. Парсер проверяет обрамление, маркеры страниц/начала/конца, маски, счётчики, порядок зависимостей и полное потребление сообщения. Одновременно действуют структурные ограничения и выбранный ресурсный класс принимающего блока.
Торговая политика с финансированием использует NOIDTO21, little-endian версию 1, два нулевых резервных байта, длину намерения u32 и длину авторизации u32. После 20-байтового префикса идут каноническое торговое намерение и капсула Owner. Намерение фиксирует актив, точный экземпляр основного источника финансирования, получателя, предел входа, минимальный результат, предел комиссии, эпоху и интервал допустимости.
Канонические кодировщики находятся в noid_tx/src/native_assets/wire.rs и noid_tx/src/native_assets/trade/wire.rs. Их применение связывает проверенное намерение и утверждение авторизации с одинаковыми байтами.
Данные блока, снимки и pruning
Блок связывает фактически выбранные профинансированные политики, их детерминированную последовательность, все промежуточные переходы и итоговые выплаты. Чек политики определяет исполненную сделку пользователя внутри зафиксированной группы. Обновлённый живой рынок готов к следующему блоку.
Синхронизация State передаёт живые нативные раскрытия и полное множество необходимых определений. Обрамление нативного сегмента NSG1 дополняет разреженный сегмент State. Декодер проверяет длины перед выделением памяти, точное соответствие слота/корня и суммы/экземпляра, уникальность записей и необходимые зависимости. Коммитменты сегментов связывают аутентифицированное представление State, используемое при установке.
Старые тела и их транзакции удаляются после периода хранения. Живые нативные данные остаются доступны с текущим State. Канонические заголовки поддерживают проверку сохранённых чеков. Описания и изображения кошелька распространяются отдельно с зафиксированными хешами медиа.