수동 워크플로
수동으로 트랜잭션을 보내는 것은 다음 단계를 포함합니다:1
초기 트랜잭션 빌드
지침을 모으고 트랜잭션에 서명하여 시뮬레이션할 수 있도록 합니다.
2
컴퓨트 유닛 최적화
트랜잭션을 시뮬레이션하여 필요한 정확한 CU를 결정하고 작은 버퍼를 추가합니다.
3
우선 수수료 추가
Helius 우선 수수료 API에서 수수료 견적을 받아 트랜잭션에 추가합니다.
4
전송 및 재전송
최종 트랜잭션을 보내고 확정을 처리하는 견고한 폴링 전략을 구현합니다.
Helius SDK는 오픈 소스입니다. 이 워크플로의 프로덕션 수준 구현을 보려면 Node.js SDK 및 Rust SDK에서
sendSmartTransaction 메서드의 기본 코드를 볼 수 있습니다.1. 초기 트랜잭션 빌드
먼저 트랜잭션에 포함할 모든 지침을 모으세요. 그런 다음Transaction 또는 VersionedTransaction 객체를 생성하세요. 최근 블록 해시도 가져와야 합니다.
이 예시는 버전 트랜잭션을 준비합니다. 이 단계에서는 또한 서명하여 다음 단계에서 시뮬레이션할 수 있도록 해야 합니다.
2. 컴퓨트 유닛 (CU) 사용 최적화
수수료 낭비를 피하거나 트랜잭션 실패를 방지하려면 컴퓨트 유닛 (CU) 제한을 최대한 정확하게 설정해야 합니다.simulateTransaction RPC 메서드를 사용하여 트랜잭션을 시뮬레이션함으로써 이를 수행할 수 있습니다.
시뮬레이션 자체가 성공하도록 하기 위해 높은 CU 제한으로 먼저 시뮬레이션하는 것이 최상의 실습이며, 그런 다음 응답에서 얻은 unitsConsumed를 사용하여 실제 제한을 설정합니다.
3. 적절한 우선 수수료 설정
다음으로, 트랜잭션에 추가할 최적의 우선 수수료를 결정하세요. Helius Priority Fee API를 사용하여 현재 네트워크 상태를 기반으로 실시간 견적을 얻는 것이 가장 좋은 방법입니다.getPriorityFeeEstimate RPC 메서드를 호출해야 합니다. Helius의 스테이크된 연결을 통한 포함 가능성을 높이기 위해 recommended: true 옵션을 사용하세요.
4. 빌드, 전송 및 확인
이제 새로운 컴퓨트 예산 지침으로 최종 트랜잭션을 조합하고, 전송하며, 확정되었는지 확인하기 위한 견고한 폴링 메커니즘을 구현하세요. 일반적인 패턴은 블록 해시가 만료될 때까지 동일한 트랜잭션을 주기적으로 다시 보내는 것입니다. 새 블록 해시를 가져오는 경우에만 트랜잭션에 다시 서명하세요. 동일한 블록 해시로 다시 서명하면 중복 트랜잭션이 확정될 수 있습니다.샌드위치 공격 방지
단순히 RPC URL에mev-protect=true 쿼리 매개변수를 추가하여 통계적으로 샌드위치 공격과 연결된 검증자로부터 트랜잭션을 우회하세요 — 트랜잭션 로직에 변경은 없습니다:
MEV 보호
MEV 보호 작동 방식, 지원하는 방법 및 장단점을 확인하세요.
트랜잭션에서 리베이트 받기
귀하의 트랜잭션이 생성하는 MEV의 일부를 자동으로 SOL로 지급받기 위해 참여할 수 있습니다 — 트랜잭션 로직에 변화 없음.트랜잭션 리베이트
sendTransaction 호출에 한 개의 매개변수를 추가하여 SOL 리베이트를 받기 시작합니다.관련 메서드
sendTransaction
서명된 트랜잭션을 네트워크에 전송
simulateTransaction
컴퓨트 유닛을 추정하기 위해 트랜잭션을 시뮬레이션
getSignatureStatuses
트랜잭션의 확인 상태 확인
getLatestBlockhash
트랜잭션 서명을 위한 최신 블록 해시 얻기
getBlockHeight
만료 확인을 위한 현재 블록 높이 얻기