Типы транзакций (также известные как экстринсики)
Бочки и Экстринсики
Bitzal построен используя фреймворк Matter, Модульная структура для эффективного создания блокчейнов. Разработческая среда FRAME от Matter предоставляет модули, называемые бочками, и вспомогательные библиотеки, которые вы можете использовать, изменять и расширять, чтобы построить логику выполнения, соответствующую потребностям Вашего блокчейна. Вы можете исследовать бочки FRAME от Matter на этой специализированной странице.
В рамках каждой функциональной Бочки на блокчейне, можно Вызвать его функции и выполнять их при условии, что у них есть на это разрешение. Поскольку эти вызовы происходят за пределами времени работы блокчейна, такие транзакции называются Экстринсики. Экстринсики обычно содержат сигнатуру, некоторые данные, описывающие, прошел ли экстринсик проверку на валидность, и ссылку на Бочку и Вызов, для которых она предназначена. Например, бочка Стейкинг содержит все функции, связанные со стейкингом. Номинатор может связывать средства и назначать валидаторов, выпуская соответствующих экстринсиков. Некоторые экстринсики могут также инициировать событие в цепочке, например вознаграждение и выплату вознаграждения номинанторам.
Типы экстринсиков
Теперь, когда мы ввели термин Экстринсик, Давайте погрузимся глубже и поймем, что такое экстринсики на самом деле. Экстринсики могут быть одного из трех различных типов:
- Подписанные транзакции: должны содержать подпись аккаунта, отправляющего входящий запрос во время выполнения. При подписанных транзакциях аккаунт, используемый для отправки запроса, обычно оплачивает комиссию за транзакцию и должен подписать ее с помощью закрытого ключа аккаунта.
- Неподписанные транзакции: Они не несут никакой информации о том, кто отправил транзакцию, поскольку формат этого типа транзакций не требует подписи. Вы можете определить, какие условия должны быть выполнены, чтобы такая транзакция была действительной.
- Инхеренты: это особый тип неподписанных транзакций, совершаемых авторами блоков, которые несут в себе информацию, необходимую для создания блока, такую как временные метки, доказательства хранения и родительские блоки.
Подписанные транзакции - это способ, с помощью которого большинство пользователей будут взаимодействовать с Bitzal. Подписанные транзакции поступают с аккаунта, на котором есть средства, и поэтому Bitzal может взимать комиссию за транзакцию, чтобы предотвращать спам.
Транзакции без подписи предназначены для особых случаев, когда пользователю необходимо отправить Экстринсик из пары ключей пары, которая не контролирует средства. Например, валидаторы сеансовые ключи никогда не контролируют средства Неподписанные транзакции используются только в особых случаях, поскольку Bitzal не может взимать за них плату, для каждой из них требуется своя собственная логика проверки.
Неотъемлемые - это части информации, которые не подписаны и не включены в очередь транзакций. Так только автор блока может добавлять "неотъемлемые" в блок. "Неотъемлемые" считаются "истинными" просто потому, что достаточно большое количество валидаторов согласилось с тем, что они обоснованы. Например, блоки ретрансляционной цепи включают в себя присущую им временную метку. Не существует способа доказать, что временная метка как доказать желание отправить средства с помощью подписи. Валидаторы принимают или отклоняют блок на основании того, насколько обоснованной они считают временную метку. В Bitzal она должна быть в пределах в некотором приемлемом диапазоне их собственных системных часов.
Вот некоторые ключевые различия между разными типами экстринсиков:
- В отличие от подписанных транзакций, неподписанные типы транзакций требуют реализации пользовательской логики проверки логики, которая может потреблять больше ресурсов для проверки валидности по сравнению с подписанными транзакциями.
- У неподписанных транзакций нет экономических сдерживающих факторов для предотвращения спама или атак повторного воспроизведения, поэтому пользовательская логика должна учитывать защиту сети от неправомерного использования этих типов транзакций.
- "Неотъемлемые" существуют для того, чтобы решить проблему добавления некоторых данных в блок, в то время как подписанные или неподписанные транзакции существуют для потенциального изменения состояния блокчейна.
Смертные и Бессмертные экстринсики
Транзакции, как правило, необратимы после их подтверждения и добавления в блокчейн - неизменяемый блокчейн, где хранятся все транзакции. Это означает, что пользователи должны проявлять осторожность, поскольку такие ошибки, как отправка ZAL на неправильный адрес, не могут быть исправлены. Неизменность транзакций подчеркивает важность тщательной проверки перед подписанием любой транзакции в сети блокчейн. Достаточно не подписывать сделки "вслепую" чтобы не стать жертвой мошенничества.
С точки зрения блокчейна, транзакции могут быть Смертными экстринсиками (т.е. действительные в пределах определенного блочного интервала, обычно короткого), или Бессмертными экстринсиками (т.е. всегда действительны). На Bitzal можно совершать бессмертные транзакции на Bitzal. Однако, в целях безопасности, настоятельно рекомендуется не делать этого, и большинство программ для кошельков не позволят вам сделать бессмертный экстринсик.
Перевод баланса
Перевод баланса - это перевод токенов между аккаунтами. Это самый известный тип перевод.
Перевод средств с правом на передачу
ZAL может иметь блокировку для учета вестинговых средств. Как и другие типы Блокировок, эти средства не могут быть переведены, но могут быть использованы в других частях протокола, таких как голосование в управлении или участие в стекинге в качестве валидатора или номинатора.
Фонды с вестингом имеют график выпуска, который разблокирует постоянное количество токенов на каждом блоке (линейный вестинг) или всю сумму после конкретного номера блока (скачкообразный вестинг). В любых случаях вестинга, блокировка уменьшается с течением времени, пока все средства не станут доступными для перевода.
Проверка экстринсиков
Не подписывайте транзакцию, если вы не можете проверить, что именно вы подписываете, или если у вас есть подозрения, что вы подписываете другой экстринсик, а не тот, который планировали.
Проверка подписываемого экстринсика может занять больше времени перед подписанием транзакции, но она позволяет добавить дополнительный шаг безопасности. Существуют множество возможных атак которые могут помешать вам отправить средства на нужный вам аккаунт.
Комиссионные за транзакции
Хранение и вычисления — это ограниченные ресурсы в сети блокчейна. Комиссии за транзакции предотвращают чрезмерное потребление ресурсов отдельными пользователями. Bitzal использует модель комиссии на основе веса в отличие от модели с измерением газа. Таким образом, комиссии взимаются до выполнения транзакции. После того как комиссия оплачена, узлы выполняют транзакцию.
Комиссии Bitzal состоят из трех частейs:
Базовый сбор: фиксированная плата, применяемая к каждой транзакции и устанавливаемая временем выполнения.Плата за длительность: плата, которая умножается на длину транзакции в байтах.Весовой сбор: плата за каждую изменяемую функцию времени выполнения. Разработчики времени выполнения реализовывают механизм конвертации, который определяет соответствующую валютную сумму для вычисленного веса.
Окончательная плата может быть представлена следующим образом:
комиссия = базовая_комиссия + длина_транзакции_в_байтах * комиссия_за_длину + комиссия_за_вес
где:
Базовая комиссия: 1 milliZAL
Плата за длительность: 0.1 ZAL за байт
Конвертация веса в комиссию рассчитывается следующим образом:
комиссия_за_вес = вес /1.26 * (10−8)
Вес 126 000 нС сопоставляется с 1 mZAL. Этот сбор будет всегда, в худшем случае, максимальным значением неподписанного 128-битного целого числа.
См. спецификация Bitzal и Документация по Matter для более подробной информации.
Множитель сбора (Fee Multiplier)
Bitzal может добавить дополнительную плату за транзакции, если сеть становится слишком загруженной и начинает замедлять систему. Эта дополнительная плата называется Множитель сбора (Fee Multiplier) и его значение определяется в runtime. Множитель сравнивает насыщенность блоков; если предыдущий блок менее насыщен, чем текущий блок (что означает рост использования), плата немного увеличивается. Точно так же плата уменьшается, если предыдущий блок более насыщен, чем текущий блок (что означает снижение использования).
Мультипликатор может создать стимул для избежания производства низкоприоритетных или незначительных транзакций. Напротив, эти дополнительные платежи уменьшатся, если сеть успокоится и транзакции могут выполняться без накладных расходов.
Окончательный размер платы рассчитывается следующим образом:
финальная_комиссия = комиссия * множитель_комиссий
См. спецификация Bitzal для более подробной информации.
Другие стратегии ограничения ресурсов
Вес транзакции должен быть вычисляемым до ее выполнения и может представлять только фиксированную логику. Некоторые транзакции требуют ограничения ресурсов с помощью других стратегий. Например:
- Залоги: Некоторые транзакции, такие как голосование, могут требовать залога, который будет возвращен или конфискован после события в цепочке. В примере с голосованием залог возвращается в конце выборов или конфискуется, если избиратель предпринял какие-либо злонамеренные действия.
- Депозиты: Некоторые операции, например, установка идентичности или заявка на индекс, использующий место для хранения бесконечно. Для этого требуется депозит, который будет возвращен, если пользователь решит очистить свою идентичность и освободить место для хранения.
- Сжигание: Транзакция может сжигать средства внутри своей логики. Например, транзакция может сжигать средства от отправителя, если она создает новые записи в хранилище, увеличивая таким образом размер состояния.
- Ограничения: Некоторые ограничения являются частью протокола. Например, номинаторы могут назначить только 16 валидаторов. Это ограничивает сложность алгоритма Фрагмена.
Транзакции в Синочейнах
Транзакции, которые происходят внутри Синочейна, не взимают комиссию за транзакции релейной цепи. Пользователям приложениям шардов даже не нужно иметь токены ZAL, поскольку каждый шард имеет свою собственную экономическую модель и может иметь или не иметь токен. Однако бывают ситуации, когда шарды сами совершают транзакции по ретрансляционной цепочке.
Синочейны имеют выделенное ядро в цепочке ретрансляции для выполнения, поэтому их aссаторам не нужно владеть ZAL, чтобы включать блоки. Синочейн будет выполнять некоторые транзакции самостоятельно, например, открывать или закрывать XCM канал, продления времени на ядре или обновлять время работы. Синочейны имеют собственные аккаунты в ретрансляционной цепочке и им необходимо использовать эти средства для совершения транзакций от имени Синочейна.
Лимиты на блоки и приоритет транзакций
Блоки релейной цепи имеют как максимальную длину (в байтах), так и максимальный вес. Производители блоков будут заполняют блоки транзакциями до этих пределов. Часть каждого блока - в настоящее время 25% - отводится и зарезервирована для критических транзакций, связанных с работой цепи. Производители блоков будут заполнять обычными транзакциями до 75 % блока. Некоторые примеры операционных транзакций:
- Отчеты о нарушениях
- Деятельность Совета
- Действия участника на выборах (например, отказ от кандидатуры)
Производители блокчейна определяют приоритетность транзакций в зависимости от общей суммы вознаграждения за каждую транзакцию. Поскольку часть комиссии идет производителю блока, производители будут включать в список транзакции с наибольшей комиссией чтобы максимизировать свое вознаграждение.
Если вы опытный пользователь, см. Bitzal-JS гиды по трансферам.