Транзакция

Материал из Minter Wiki
Tx.png

Транзакция - это логически завершенная операция обмена данными, которая либо дает успешный результат, либо целиком отменяется. Транзакции в Minter обрабатываются валидаторами за плату, называемую комиссией.

Путь транзакции

Любая операция в сети Minter проходит свой путь, который начинается с формирования специального сообщения по установленной форме. Затем его отправляют мастерноде, где проверят на честность и допустимость, после чего транзакция получает статус неподтвержденной. Все проверенные, но неподтвержденные транзакции, находящиеся в ожидании обработки, называют мемпулом (англ. mempool, "memory pool", можно перевести как "хранилище", "пул памяти").

Валидатор берет транзакции из мемпула, собирает их в блок и предлагает остальным валидатором согласовать получившийся блок. Если блок согласован, все транзакции, которые вошли в него, получают статус подтвержденных и навсегда становятся часть Minter блокчейна.

Структура транзакции

Все операции в блокчейне - это отправка данных, поэтому, помимо собственно данных (например, информации "Minterscan запускает проект Адская кухня") необходимо указать тип отправляемого сообщения; приложить соответствующие типу данные (при отправке монет - указать получателя, монету и сумму, а при обналичивании чека - данные чека и пароль для открытия, и т.д.); не забыть про комиссию за обработку; присвоить уникальный номер операции; прямо прописать сеть, в которую она будет отправлена, а потом подписать всё это цифровой подписью.

Правильно сформированное сообщение уже можно назвать транзакцией, только пока не отправленной. Общая структура транзакции сети Minter выглядит следующим образом:

Transaction {
  Nonce
  ChainID
  GasPrice
  GasCoin
  Type
  Data
  Payload
  ServiceData
  SignatureType
  SignatureData
}
  • Nonce — уникальный номер исходящей транзакции. Используется для того, чтобы предотвратить ее повторное исполнение;
  • ChainID — ID сети, в которую была отправлена транзакция. Указывается для того чтобы исключить возможность повторить транзакцию из тестнета в мейннете. 1 — testnet, 2 — mainnet;
  • Gas Price — мультипликатор комиссии. В сети Minter для защиты от спама установлено правило, по которому комиссия за транзакции кратно растет при росте числа не проведенных транзакций;
  • Gas Coin — монета, которой платят комиссию;
  • Typeтип транзакции;
  • Data — данные транзакции, зависят от типа;
  • Payload — пользовательские данные, например, сообщение;
  • Service Data — зарезервированное поле;
  • Signature Type — тип подписи: одиночная или мульти;
  • Signature Data — подпись транзакции.

Блоки и комиссии

Как блокчейн состоит из блоков, так блок состоит из транзакций (и служебной информации, подробнее см. статью Блок). По умолчанию в блоке сети Minter может быть от 0 до 10 тысяч транзакций. Однако их максимальное число может быть принудительно снижено на 30%, если в сети появляется слишком быстрый валидатор, который перетянет на себя все операции. После восстановления децентрализации максимальное количество транзакций в блоке будет постепенно восстановлено с шагом +5%.

Транзакции собирают в блок подряд, независимо от типа транзакции (которых в Minter четырнадцать). За совершение любой из них нужно платить комиссию, от 0.005 до 10 BIP. Из комиссий за совершение транзакций и наград за создание блоков складывается доход валидаторов.

Double spend

Стоит отдельно упомянуть основную проблему блокчейна - двойную трату (англ. Double spend), то есть возможность потратить одни и те же деньги два раза, отправив две транзакции одновременно. Обработка транзакции занимает время, поэтому можно, имея на счету 100 BIP, отправить одну транзакцию на перевод 100 BIP Пете и тут же еще одну - на 100 BIP Васе. Пока транзакции не обработаны, два разных валидатора, не зная о второй транзакции, могут попытаться обработать их обе, каждый свою.

Проблема усугубляется тем, что теоретически валидаторы могут быть заинтересованы в подтверждении обеих транзакций (или чтобы получить комиссию за обе, или если они связаны с мошенником-отправителем), подписывая один блок на одной высоте два раза, но с разными данными, а это ведет к разветвлению блокчейна (форку), добавляя в сеть опасный конфликт. Поэтому за подобное поведение в Minter на валидаторов накладывается штраф в 5% от стейка и все его делегаторы получают принудительный отзыв стейков.

Ссылки