К основному содержимому
Все коллекцииНовичок в EOS? Начинай отсюдаИспользование EOS
Как избежать переплаты за транзакции при использовании блокчейн Antelope?
Как избежать переплаты за транзакции при использовании блокчейн Antelope?

Высокая плата за транзакции (>10 мс CPU) может быть связана с субъективным биллингом, который локален для оператора ноды

Dario Cesaro avatar
Автор: Dario Cesaro
Обновлено более года назад

1. Введение

При попытке подписать транзакцию пользователи часто получают сообщение об ошибке, в котором говорится о недостаточном количестве процессора и предлагается оплатить от 10 до 30 миллисекунд процессора или даже больше. Такое поведение системы может быть связано с субъективным биллингом. В этой статье я подскажу вам, как справиться с этой ситуацией.

2. Что такое субъективный биллинг?

Субъектный биллинг - это функция блокчейна Antelope, которая позволяет оператору ноды выставлять счет на локальной ноде за ресурсы, использованные неудачными транзакциями, не передавая информацию о счетах остальной сети. Она была введена для снижения нагрузки на процессор, но часто приводит к постоянным сбоям транзакций или их потере.

3. Жизненный цикл транзакций в Antelope Blockchain

Блокчейн Antelope использует одноранговые (P2P) сетевые соединения для распространения транзакций по сети. Когда транзакция перемещается от одного узла к другому, путь, который она проходит, зависит от конфигурации узлов и задержки в сети.

Figure from the ENF Website


На рисунке 1 показан жизненный цикл транзакции в блокчейне Antelope. Транзакция существует, когда пользователь отправляет ее на узел с помощью API (1.1). Узел API передает переданную транзакцию своему протоколу P2P (1.2). Этот протокол распространяет транзакцию от одного узла к другому (1.3), пока она не достигнет производителя текущего блока (1.4). Затем производитель блока включает транзакцию в текущий блок и выставляет счет за использование ресурсов. Каждый узел в сети проводит внутреннюю проверку, чтобы определить, должна ли транзакция быть передана следующему узлу или отклонена из-за переиспользования ресурсов.

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

Субъективная тарификация является аддитивной; когда транзакция поступает на узел со счета, узел увеличивает плату за использование ресурсов счета. Чтобы транзакция прошла через узел, счет должен иметь достаточно ресурсов для покрытия субъективной тарификации на этом узле. Субъективный биллинг обновляется каждые 24 часа.

4. При каких обстоятельствах вы можете получить завышенную плату за транзакцию?

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

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

5. Как избежать переплаты за транзакцию

Когда бесплатных бонусов уже недостаточно для оплаты транзакции или подключенный API взимает с вас очень высокую плату из-за субъективного биллинга, у вас есть три варианта выхода из этой ситуации, как показано на рисунке 2.

Image by: Sukanta Manna

Вариант 1: Если транзакция срочная и не может быть отложена, paynode просит столько, сколько нужно заплатить. Читайте здесь, как добавить ресурсы на свой счет EOS.

Вариант 2: Ваш субъективный биллинг на других узлах может быть намного меньше, чем субъективный биллинг на подключенном узле. Поэтому изменение API может уменьшить субъективный биллинг за транзакцию. Читайте здесь, как изменить API.

Вариант 3: Субъективный биллинг обновляется каждые 24 часа. Поэтому подождите 24 часа, бесплатно сделайте поверап своего аккаунта и попробуйте снова.

6. Заключение

Отправка многочисленных неудачных транзакций на подключенный узел может привести к чрезмерным расходам из-за кумулятивного характера субъективного биллинга. Лучше всего прекратить отправку неудачных транзакций на подключенный узел.

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

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


Автор: Sukanta Manna

Редактор: Markus Hinrichs; Randall Roland

Перевод: Evgeny Chirochkin

Источники и ссылки:

Нашли ответ на свой вопрос?