Транзакция

Транзакция — запрос на запись в блокчейне и логически завершённая операция обмена данными, которая либо подтверждается и вносится в блок, либо отменяется.

Транзакции в DecimalChain обрабатываются специализированными участниками сети — валидаторами — за вознаграждение в виде новых монет DEL.

Каждая операция в сети Decimal начинается с формирования специального сообщения по установленной форме, после чего его отправляют мастерноде, где запрос проверят на честность. Далее честная транзакция получает статус неподтверждённой. Все проверенные, но не подтверждённые валидаторами транзакции находятся в ожидании обработки.

Место, где хранятся неподтверждённые транзакции, называют мемпулом (с англ. memory pool).

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

Для простого пользователя DecimalChain весь путь транзакции скрыт за простой и понятной формой, в которой нужно лишь указать адрес получателя и сумму DEL. Через шесть секунд транзакция будет подтверждена.

Типы транзакций в сети Decimal

В Decimal реализованы следующие типы транзакций:

  1. Send (отправка монет);
  2. Buy (покупка монеты);
  3. Sell (продажа монеты);
  4. Sell All (полная продажа монет);
  5. Multisend (отправка нескольким адресатам);
  6. Delegate (делегирование монеты валидатору);
  7. Unbond (отзыв монеты у валидатора);
  8. RedeemCheck (погашение чека);
  9. CreateMultisig (создание адреса с мультиподписью);
  10. SignTransaction (уникальный идентификатор мультисиг-транзакции);
  11. CreateCoin (создание монеты);
  12. DeclareCandidate (создание кандидата в валидаторы);
  13. EditCandidate (редактирование данных кандидата в валидаторы);
  14. SetOnline (активация валидатора);
  15. SetOffline (деактивация валидатора).

Комиссии за транзакции в блокчейне Decimal

Размер комиссии за транзакцию состоит из суммы фиксированной ставки за тип транзакции и стоимости единицы за объём транзакции в байтах.

Фиксированная ставка: 1 юнит = 0,001 DEL

● send (отправить) — 10 юнитов — 0.01 DEL
● multisend (мультиотправка) — 10+(n-1)x5 юнитов (n — количество получателей) — 15 юнитов (два получателя)
● sell (продать) — 100 юнитов — 0,1 DEL
● sell (продать) — 100 юнитов — 0,1 DEL
● buy (купить) — 100 юнитов — 0,1 DEL
● declare candidacy (декларирование кандидата) — 10 000 юнитов — 10 DEL
● edit candidate (редактирование кандидата) — 10 000 юнитов — 10 DEL
● delegate (делегирование) — 200 юнитов — 0,2 DEL
● unbond (отвязка) — 200 юнитов — 0,2 DEL
● set online (активирование) — 100 юнитов - 0,1 DEL
● set offline (деактивирование) — 100 юнитов — 0,1 DEL
● create multisig (создание мультисига) — 100 юнитов — 0,1 DEL
● create multisig transaction (создание предложения) — 100 юнитов — 0,1 DEL
● sign transaction (подписание предложения) — 100 юнитов — 0,1 DEL
● redeem check (погасить чек) — 30 юнитов — 0,03 DEL
● три буквы — 1 000 000 DEL
● четыре буквы — 100 000 DEL
● пять букв — 10 000 DEL
● шесть букв — 1 000 DEL
● семь - десять букв — 100 DEL

Стоимость одного байта итогового объёма транзакции — два юнита (0,002 DEL). По сути, транзакция — это просто информационное сообщение. В нём указано следующее: что, сколько, кому и от кого отправляется, а также служебные данные.

Комиссия за транзакции

Исходя из опыта тестирования при разработке Decimal, мы располагаем следующими ориентировочными данными по стоимости каждой транзакции:

● send (отправить) ~ 0.41 DEL
● multisend (мультиотправка) ~ 0,479 DEL (два получателя)
● sell (продать) ~ 0.484 DEL
● sell (продать) ~ 0.444 DEL
● buy (купить) ~ 0.54 DEL 21
● declare candidacy (декларирование кандидата) ~ 10.674 DEL
● edit candidate (редактирование кандидата) ~ 10.494 DEL
● delegate (делегирование) ~ 0,564 DEL
● unbond (отвязка) ~ 0,604 DEL
● set online (активирование) ~ 0.396 DEL
● set offline (деактивирование) ~ 0.394 DEL
● create multisig (создание мультисига) ~ 0.494 DEL
● create multisig transaction (создание предложения) ~ 0.542 DEL
● sign transaction (подписание предложения) ~ 0.544 DEL
● redeem check (погашение чека) ~ 0.03 DEL

Мошеннические транзакции

Основная проблема блокчейна — двойная трата (с англ. double spend). В цифровом пространстве всегда есть возможность потратить одни и те же деньги два раза, отправив две транзакции одновременно. Обработка транзакции занимает время, поэтому можно, имея на счёте 100 DEL, отправить их и Маше, и Ивану. Пока транзакции не обработаны, два разных валидатора, не зная о второй транзакции, могут попытаться обработать их обе, каждый свою.

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