Как происходит обработка транзакций

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page How Tx Processing Works and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎русский • ‎українська

1 Транзакции

Вычисление баланса каждого аккаунта Nxt требует сканирования всей цепочки блоков. Несмотря на то, что это кажется неэффективным, с текущими скоростями сети и процессоров это не такая большая вычислительная задача. Это снижает необходимую работу сервера и позволяет использовать в качестве узлов даже маломощные мобильные устройства.

Можно выделить следующие особенности передачи Nxt:

  1. Отправитель указывает параметры передачи. Существует множество типов передачи (отправка денег, создание альяса, передача сообщения, выдача актива или запрос на актив), но только несколько параметров могут быть указаны для передачи:
    • пароль (секретная фраза) отправителя
    • определенная плата за проведение транзакции
    • deadline для этой транзакции. Если за указанное время транзакция не обработается - операция будет отменена.
    • опционально - "зависимая" транзакция
  2. Проверяется все введенные значения для перевода. Например, обязательные параметры должны быть заданы, плата за перевод не может быть меньше или равна нулю, дедлайн перевода не может быть меньше 1 минуты.
  3. Если в процессе проверки не появилось никаких ошибок, то:
    1. С помощью пароля (секретной фразы) создается публичный ключ для аккаунта отправителя
    2. Извлекается информация об аккаунте, параметры передачи проверяются дальше:
      • Баланс отправителя больше нуля
      • Баланс отправителя должен быть больше или равен сумме перевода плюс комиссия за перевод
    3. Если отправитель удовлетворяет требованиям, то:
      1. Создается новая транзакция, с указанием типа и значения подтипа транзакции (отправка NXT, создание альяса, отправка сообщения и т.д.). Все указанные параметры включаются в в транзакцию, которому присваивается уникальный ID транзакции.
      2. Транзакция подписывается публичным ключом аккаунта отправителя
      3. Зашифрованная информация дополняется сообщением, которое указывает узлам сети начать обработку транзакции
      4. Перевод передается всем узлам в сети
  4. Сервер отвечает со следующим результирующим кодом: ID транзакции, если создание перевода произошло успешно; кодом или сообщением ошибки, если проверка некоторых параметров провалилась.

2 Подтверждение транзакции

Все транзакции помечаются, как "неподтвержденные" до тех пор, пока не будут включены в действующий блок. Новые блоки размещенные в сети аккаунтом, которые создал их, и переводы включенные в эти блоки должны быть подтверждены единожды. Поскольку каждый последующий блок, добавляемый в цепочку, добавляет еще одно к общему числу подтверждений данной транзакции.

Nxt транзакции считаются надежными после 10 подтверждений. До 720 подтверждения блоки могут быть реорганизованы сетью в случае каких-то проблем, после 721 подтверждения транзакция считается необратимой. После 1440 подтверждения транзакции считаются перманентными.