컴퓨트 유닛(CU)과 우선순위 수수료를 사용한 최적 트랜잭션 랜딩
Last updated September 21, 2026
요약
Umi V1 트랜잭션은 시뮬레이션을 사용해 컴퓨트 소비량을 추정하고 컴퓨트 제한과 총 우선순위 수수료를 TransactionV1Config에 저장합니다.
- 1,400,000 컴퓨트 유닛 제한으로 시뮬레이션합니다.
- 소비된 유닛에 안전 여유분을 추가합니다.
- 컴퓨트 유닛당 마이크로 램포트 단위로 시장 가격을 추정합니다.
setTransactionConfig()를 호출하기 전에 추정치를 총 램포트 수수료로 변환합니다.
Solana에서 트랜잭션을 전송할 때 두 가지 핵심 매개변수를 최적화하면 트랜잭션의 성공률과 비용 효율성을 크게 높일 수 있습니다.
빠른 시작
트랜잭션을 전송하기 전에 V1 컴퓨트 제한과 총 우선순위 수수료를 추정하세요.
- 트랜잭션의 쓰기 가능 계정에 최근 지불된 수수료를 기준으로 우선순위 수수료를 추정합니다.
- 최대 V1 컴퓨트 제한으로 트랜잭션을 시뮬레이션합니다.
setTransactionConfig()로 추정값을 적용합니다.- SOL 전송 전체 예시를 실행합니다.
우선순위 수수료
우선순위 수수료를 사용하면 로컬 수수료 시장에서 입찰하여 트랜잭션이 더 빠르게 포함되도록 할 수 있습니다. 네트워크가 혼잡하고 여러 트랜잭션이 동일한 계정을 수정하려고 경쟁할 때 검증자는 우선순위 수수료가 더 높은 트랜잭션을 우선 처리합니다.
우선순위 수수료의 핵심 사항은 다음과 같습니다.
- 계산식은
compute_unit_limit * compute_unit_price입니다. - 수수료가 높을수록 더 빠르게 포함될 가능성이 커집니다.
- 현재 네트워크 경쟁 상황에 따라 필요한 만큼만 지불해야 합니다.
컴퓨트 유닛 제한
Compute Units(CU)는 트랜잭션에 필요한 계산 리소스를 나타냅니다. 트랜잭션은 안전을 위해 기본적으로 많은 CU를 요청하지만 이는 비효율적인 경우가 많습니다.
- 실제 사용량과 관계없이 요청한 모든 CU에 대해 우선순위 수수료를 지불합니다.
- 블록의 CU 용량은 제한되어 있으므로 과도한 CU 요청은 블록당 총 트랜잭션 수를 줄입니다.
CU 제한 최적화의 이점은 다음과 같습니다.
- 필요한 CU에 대해서만 지불하여 트랜잭션 비용을 낮춥니다.
- 블록당 더 많은 트랜잭션을 허용하여 네트워크 효율성을 높입니다.
- 실행에 충분한 리소스를 계속 보장합니다.
예를 들어 간단한 토큰 전송에는 20,000CU만 필요할 수 있지만 NFT 민팅에는 100,000CU가 필요할 수 있습니다. 이러한 제한을 적절히 설정하면 비용과 전체 네트워크 처리량을 모두 최적화할 수 있습니다.
구현 가이드
이 가이드에서는 값을 추측하는 대신 프로그래밍 방식으로 최적값을 계산하는 방법을 보여줍니다.
Umi가 아직 이러한 메서드를 구현하지 않았으므로 코드 예시는 RPC 호출에 fetch를 사용합니다. 공식 지원이 추가되면 Umi의 내장 메서드를 우선 사용하세요.
우선순위 수수료 계산
우선순위 수수료는 경쟁 상황을 고려할 때 가장 효과적입니다. 매우 큰 값을 수동으로 추가하면 필요 이상으로 수수료를 지불할 수 있고, 값이 너무 낮으면 경쟁이 심할 때 트랜잭션이 블록에 포함되지 않을 수 있습니다.
트랜잭션의 계정에 대해 최근 지불된 우선순위 수수료를 가져오려면 getRecentPrioritizationFees RPC 호출을 사용할 수 있습니다. 이 예시는 결과 중 상위 100개 수수료를 기준으로 평균을 계산합니다. 이 수치는 경험에 따라 조정할 수 있습니다.
필요한 단계는 다음과 같습니다.
- 트랜잭션에서 쓰기 가능 계정을 추출합니다.
- 해당 계정에 최근 지불된 수수료를 조회합니다.
- 시장 상황에 따라 최적 수수료를 계산합니다.
페이지 아래쪽에서 이 방식을 사용해 SOL을 전송하는 전체 예시를 확인할 수 있습니다.
컴퓨트 유닛 계산
트랜잭션 비용을 최적화하고 안정적인 실행을 보장하려면 먼저 트랜잭션을 시뮬레이션하여 이상적인 컴퓨트 유닛 제한을 계산할 수 있습니다. 이 방식은 고정값을 사용하는 것보다 정밀하며 리소스 과다 할당을 방지하는 데 도움이 됩니다.
시뮬레이션 과정은 다음과 같습니다.
- 최대 컴퓨트 유닛(1,400,000)으로 트랜잭션을 빌드합니다.
- 실제 소비된 컴퓨트 유닛을 측정하도록 시뮬레이션합니다.
- 변동을 고려하여 10% 안전 버퍼를 추가합니다.
- 시뮬레이션이 실패하면 보수적인 기본값을 사용합니다.
SOL 전송 전체 예시
위 코드를 사용하고 Umi 인스턴스를 생성하는 기본 코드를 추가하면 다음과 같은 스크립트로 SOL 전송 트랜잭션을 만들 수 있습니다.
참고 사항
- 이 가이드는 Umi 1.6.0 이상과 V1 트랜잭션을 대상으로 합니다.
TransactionV1Config.priorityFee는 총 램포트 금액이지만getRecentPrioritizationFees는 컴퓨트 유닛당 마이크로 램포트 가격을 반환합니다.- V1 트랜잭션은 Address Lookup Tables 또는 Compute Budget 인스트럭션을 지원하지 않습니다.
- 기존 V0 트랜잭션 빌더를 변환하려면 V0에서 V1 트랜잭션으로 마이그레이션을 참조하세요.
