Транзакция
Транзакция - это логически завершенная операция обмена данными, которая либо дает успешный результат, либо целиком отменяется. Транзакции в 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% от стейка и все его делегаторы получают принудительный отзыв стейков.