Как избежать переплаты за транзакции при использовании блокчейнов Antelope?
1. Введение
При попытке подписать транзакцию пользователи часто получают сообщение об ошибке, указывающее на то, что недостаточно CPU и предлагают заплатить до 10-30 миллисекунд CPU или даже больше. Такое поведение системы может быть связано с субъективным выставлением счетов. В этой статье я расскажу о том, как справиться с этой ситуацией.
2. Что такое субъективное выставление счетов?
Субъективное выставление счетов - это функция блокчейна Antelope, которая позволяет оператору узла локально выставлять счета аккаунту за ресурсы, использованные неудачными транзакциями, без обмена информацией о выставлении счетов с остальной сетью. Она была введена для снижения использования CPU, но часто приводит к постоянным сбоям транзакций или их потере.
3. Жизненный цикл транзакции в блокчейне Antelope
Блокчейн Antelope использует соединения Peer-to-Peer (P2P) для распространения транзакций по сети. Когда транзакция перемещается от одного узла к другому, путь, по которому она проходит, зависит от конфигурации узлов и сетевой задержки.

Рисунок с сайта ENF
Рисунок 1 показывает жизненный цикл транзакции в блокчейне Antelope. Транзакция существует, когда пользователь отправляет ее на узел с помощью API (1.1). Узел API передает отправленную транзакцию своему протоколу P2P (1.2). Этот протокол распространяет транзакцию от одного узла к другому (1.3) до тех пор, пока она не достигнет производителя текущего блока (1.4). Затем производитель блока включает транзакцию в текущий блок и выставляет счет аккаунту за использование ресурсов. Каждый узел в сети проводит внутреннюю проверку, чтобы определить, следует ли пересылать транзакцию на следующий узел или отклонить из-за перегрузки ресурсов.
Когда транзакция поступает на узел с включенным субъективным выставлением счетов, узел проверяет ее подпись и определяет, какому аккаунту принадлежит транзакция. Если аккаунт превышает лимит субъективного выставления счетов, узел останавливает распространение транзакции, чтобы она никогда не достигла текущего производителя блока.
Субъективное выставление счетов является накопительным; когда транзакция поступает на узел от аккаунта, узел увеличивает счета для аккаунта за использование ресурсов. Чтобы пропустить транзакцию через узел, аккаунт должен иметь достаточные ресурсы, чтобы покрыть субъективное выставление счетов на этом узле. Субъективное выставление счетов обновляется каждые 24 часа.
4. При каких обстоятельствах может быть переплачено за транзакцию?
Каждый узел блокчейна отслеживает использование CPU, связанное с аккаунтом. Счетчик использования для этого конкретного узла увеличивается каждый раз, когда вы пытаетесь совершить неудачную транзакцию с этим узлом. Однако неудачные транзакции не влияют на счетчики использования других узлов. Таким образом, узел, к которому вы подключены, предоставит вам информацию о комиссии, которая взимается за транзакцию.
Комиссия, взимаемая одним узлом, не зависит от комиссии, взимаемой другими узлами в сети, что означает, что некоторые узлы могут взимать с вас больше или меньше, чем другие.
Если вы продолжаете пытаться и не совершаете транзакции с конкретным узлом, вам будет необходимо заплатить больше за каждую попытку транзакции с этим узлом.
5. Как избежать переплаты за транзакцию
Когда бесплатного повышения мощности недостаточно, чтобы оплатить транзакцию, или подключенный API взимает очень высокую плату из-за субъективного выставления счетов, у вас есть три варианта, чтобы преодолеть эту ситуацию, как показано на рисунке 2.

Изображение от: Sukanta Manna
Вариант 1: Если транзакция срочная и не может быть отложена, paynode просит заплатить столько, сколько нужно. Прочитайте здесь о том, как добавить ресурсы к вашему аккаунту EOS.
Вариант 2: Субъективное выставление счетов на других узлах может быть намного меньше, чем на подключенном узле. Поэтому смена API может снизить субъективное выставление счетов за транзакцию. Прочитайте здесь о том, как изменить API.
Вариант 3: Субъективное выставление счетов обновляется каждые 24 часа. Поэтому подождите 24 часа, повысьте мощность свой аккаунт бесплатно и попробуйте снова.
6. Заключение
Отправка многочисленных неудачных транзакций на подключенный узел может привести к чрезмерным платежам из-за накопительного характера субъективного выставления счетов. Лучше всего прекратить отправлять неудачные транзакции на подключенный узел.
Если транзакция имеет большое значение, рекомендуется заплатить сумму, взимаемую узлом. Переключение API также может быть целесообразным, поскольку другие узлы могут взимать разные платежи, чем подключенный узел.
Однако, если транзакция не срочная, лучшее решение - подождать 24 часа, повысить мощность свой аккаунт и попробовать снова.
Автор: Sukanta Manna
Редактор: Markus Hinrichs; Randall Roland
Источники и ссылки:
Дополнительная литература
Кредит изображения
Рисунок субъективного выставления счетов создан Sukanta Manna
Рисунок "Нормальная работа сети P2P" с сайта ENF
Last updated:
Was this article helpful?
Have a specific question about this article?