Ручной процесс
Отправка транзакции вручную включает следующие шаги:1
Build the Initial Transaction
Соберите инструкции и подпишите транзакцию, чтобы ее можно было симулировать.
2
Optimize Compute Units
Симулируйте транзакцию, чтобы определить точное необходимое количество CU, и добавьте небольшой запас.
3
Add Priority Fees
Получите оценку комиссии через Helius Priority Fee API и добавьте ее в транзакцию.
4
Send and Re-broadcast
Отправьте итоговую транзакцию и реализуйте надежную стратегию опроса для обработки подтверждения.
SDK Helius имеют открытый исходный код. Вы можете посмотреть исходный код метода
sendSmartTransaction в наших TypeScript SDK и Rust SDK, чтобы ознакомиться с реализацией этого процесса промышленного уровня.1. Создайте исходную транзакцию
Сначала соберите все инструкции, которые нужно включить в транзакцию. Затем создайте объектTransaction или VersionedTransaction. Также потребуется получить недавний хеш блока.
В этом примере подготавливается версионированная транзакция. На этом этапе ее также необходимо подписать, чтобы на следующем шаге можно было выполнить симуляцию.
2. Оптимизируйте использование вычислительных единиц (CU)
Чтобы не переплачивать комиссию и избежать сбоя транзакции, задайте лимит вычислительных единиц (CU) как можно точнее. Для этого симулируйте транзакцию с помощью метода RPCsimulateTransaction.
Рекомендуется сначала выполнить симуляцию с высоким лимитом CU, чтобы она гарантированно завершилась успешно, а затем использовать значение unitsConsumed из ответа в качестве фактического лимита.
3. Задайте подходящую приоритетную комиссию
Затем определите оптимальную приоритетную комиссию для добавления в транзакцию. Helius Priority Fee API — лучший способ получить оценку в реальном времени с учетом текущего состояния сети. Вам потребуется вызвать метод RPCgetPriorityFeeEstimate. Чтобы максимально повысить вероятность включения через стейкинговые подключения Helius, используйте параметр recommended: true.
4. Создайте, отправьте и подтвердите транзакцию
Теперь соберите итоговую транзакцию с новыми инструкциями бюджета вычислений, отправьте ее и реализуйте надежный механизм опроса для подтверждения ее включения в блок. Распространенный подход — периодически повторно отправлять одну и ту же транзакцию до истечения срока действия хеша блока. Повторно подписывайте транзакцию, только если также получаете новый хеш блока. Повторная подпись с тем же хешем блока может привести к подтверждению дублирующихся транзакций.Защита от сэндвич-атак
Чтобы направлять транзакцию в обход валидаторов, статистически связанных с сэндвич-атаками, добавьте параметр запросаmev-protect=true в URL RPC — изменять логику транзакции не нужно:
MEV Protect
Узнайте, как работает MEV Protect, какие методы он поддерживает и какие у него есть компромиссы.
Получайте вознаграждения за транзакции
Вы можете подключиться к программе и получать долю от MEV, создаваемой вашими транзакциями. Выплаты в SOL выполняются автоматически, а изменять логику транзакций не требуется.Transaction Rebates
Добавьте один параметр в вызовы
sendTransaction, чтобы начать получать вознаграждения в SOL.Связанные методы
sendTransaction
Отправка подписанной транзакции в сеть
simulateTransaction
Симуляция транзакции для оценки количества вычислительных единиц
getSignatureStatuses
Проверка статуса подтверждения транзакций
getLatestBlockhash
Получение недавнего хеша блока для подписания транзакции
getBlockHeight
Получение текущей высоты блока для проверки срока действия