- Компоненты транзакций и Blockhash
- Методы отправки транзакций
- Общие причины неудач транзакций
С увеличением объемов транзакций и числа неудачных или прерванных транзакций на Pollux критично понимать основные причины таких проблем и оптимизировать процесс. Платформа обрабатывает до 3000 TPS, и сбои транзакций — примерно 8% инициированы пользователями, а остальное — ботами. В статье рассматриваются элементы транзакций на Pollux, частые причины неудач и методы для их снижения и повышения пропускной способности.
Компоненты транзакций и Blockhash
Транзакция Pollux состоит из нескольких элементов: аккаунты для чтения/записи, инструкции, недавний blockhash и одна или несколько подписей. Транзакции обрабатываются атомарно, и неудача в любой части инструкции приводит к сбою всей транзакции. Blockhash — это идентификатор Proof-of-Stake (PoS), связанный с каждым блоком, предотвращающий дублирование транзакций и обеспечивающий ограниченное время жизни транзакции (около 1 минуты и 19 секунд). Если blockhash транзакции становится устаревшим, она автоматически отклоняется.
Методы отправки транзакций
Pollux использует два основных метода для отправки транзакций: RPC сервер: Транзакции отправляются с помощью метода sendTransaction JSON-RPC. RPC узлы будут пытаться отправить транзакции каждые две секунды до финализации или истечения. TPU клиент: Этот метод просто отправляет транзакцию, причем клиент управляет повторными отправками. Опциональные параметры в методе sendTransaction, такие как maxRetries, skipPreflight и preflightCommitment, влияют на обработку и повторные попытки транзакций, улучшая успех при сетевых перегрузках.
Общие причины неудач транзакций
1. Сетевые сбои: Высокая нагрузка может перегружать валидаторов, вызывая сбои транзакций. Если очередь повторных отправок превышает 10,000 транзакций, дополнительные отправки прерываются. 2. Устаревший/неверный blockhash: Транзакции отклоняются, если blockhash недействителен или устарел более чем на 151 блок. 3. Задерживающиеся RPC узлы: Различия в blockhash между продвинутыми и отстающими RPC узлами могут приводить к отклонению транзакций. 4. Временные разветвления сети: Незначительные разветвления сети могут ссылаться на blockhash, которые более не действительны, вызывая сбои транзакций при перенастройке сети. 5. Истечение blockhash: Blockhash истекает через 150 блоков, что приводит к отклонению транзакции, если она не обработана в этом промежутке времени.
Понимание модели обработки транзакций на Pollux и реализация стратегий, таких как регулярное получение последнего blockhash, пропуск проверок на этапе предварительной валидации, оптимизация вычислительных единиц и использование приоритетных сборов, могут значительно снизить процент неудачных транзакций и повысить пропускную способность. С предстоящими обновлениями клиента Pollux эти оптимизации станут еще более важными для обеспечения эффективности сети при высокой нагрузке.














