트랜잭션 수수료
인프라블록체인만의 트랜잭션 수수료 모델에 대한 전반적인 내용을 다룹니다.
시작하기 전에
트랜잭션 수수료에 대해 배우기를 통해 인프라블록체인(InfraBlockchain) 이 기본적으로 적용하고 있는 트랜잭션 수수료 모델에 대해 배웁니다.
트랜잭션 수수료 모델
인프라블록체인(InfraBlockchain) 에는 다음과 같은 트랜잭션 수수료 모델이 있습니다:
동적인 트랜잭션 수수료 모델
트랜잭션 수수료 테이블에 기반한 트랜잭션 수수료 모델
동적인 트랜잭션 수수료 모델
동적인 트랜잭션 수수료 모델 은 실제 블록체인의 자원(e.g cpu, 네트워크 대역폭, 저장 공간)을 사용한 양만큼 부과되는 트랜잭션 수수료 부과 모델입니다.
트랜잭션 수수료 산정 공식
트랜잭션 실행에 대한 최종 수수료는 다음과 같이 계산됩니다:
트랜잭션 수수료 테이블에 기반한 트랜잭션 수수료 모델
블록 생성자(밸리데이터)는 오퍼레이션당 기본 고정된 트랜잭션 수수료를 설정할 수 있습니다.
트랜잭션 수수료 테이블 예시
파라체인-1000 번의
balances
팔렛의transfer
트랜잭션 수수료를 '1_000' 으로 고정파라체인-2000 번의
did
팔렛의create_did
트랜잭션 수수료를 '0' 으로 고정
파라체인 식별자 | 트랜잭션 이름 | 팔렛 이름 | 수수료 |
---|---|---|---|
1000 | transfer | balances | 1_000 |
2000 | create_did | did | 0 |
멀티체인 아키텍처인 인프라블록체인(InfraBlockchain) 에서는 인프라릴레이체인(InfraRelayChain) 밸리데이터들의 거버넌스에 의해 각 파라체인별로 부과되는 트랜잭션 수수료를 트랜잭션 수수료 테이블로 관리할 수 있습니다.
트랜잭션에는
CallMetadata
라는 메타데이터가 포함되어 있습니다.트랜잭션 수수료를 책정할 때 트랜잭션 수수료 테이블 을 먼저 참조하고, 값이 있을 시 동적인 트랜잭션 수수료 를 덮어씁니다.
시스템 토큰을 이용한 트랜잭션 수수료 부과
인프라블록체인은 자체적으로 발행되는 가상화폐 없이 법정화폐와 연결된 시스템 토큰 을 기반으로 트랜잭션 수수료를 부과하는 블록체인입니다. 이에 따라 기본적으로는 Substrate 기반의 블록체인에서 수수료를 부과하는 방식을 따르지만, 인프라블록체인만의 프로토콜이 적용된 트랜잭션 수수료 모델에 기반하여 수수료가 부과됩니다.
Asset 팔렛 의 BalanceToAssetBalance를 통해 시스템 토큰으로 수수료를 얼마나 내야 하는지가 결정됩니다. 시스템 토큰으로 내야 하는 트랜잭션 수수료는 파라체인별 수수료 비율(PARA_FEE_RATE)과 시스템 토큰 가중치(SYSTEM_TOKEN_WEIGHT)에 비례해서 부과됩니다.
FEE_ADJUSTMENT
: 기존 Substrate 기반 체인에 적용되어있는 벤치마킹 기준을 조정하기 위한 값
ACTUAL_FEE
: 벤치마킹 대비 실제 컴퓨팅 리소스가 사용되었을 때 부과되는 수수료
PARA_FEE_RATE
: 각 파라체인별로 부과되는 수수료 비율
SYSTEM_TOKEN_WEIGHT
: 시스템 토큰별로 보유하고 있는 가중치
DEFAULT_PARA_FEE_RATE
: 파라체인별 수수료 비율을 조정해주기 위한 값
파라체인별 수수료 비율
파라체인별 수수료 비율 은 멀티체인 아키텍처인 인프라블록체인(InfraBlockchain) 안에서 파라체인별로 트랜잭션 수수료를 다르게 부과하기 위해 일률적으로 곱해지는 값입니다.
인프라릴레이체인(InfraRelayChain) 거버넌스에 의해 파라체인별 수수료 비율 을 변경할 수 있습니다.
일반적인 경우 파라체인별 수수료 비율 값은 1이며, 소수점을 고려하기 위해 1_000_000(10^6) 으로 설정됩니다. 1의 값을 만들어주기 위해 위 식에서처럼
DEFAULT_PARA_FEE_RATE(10^6)
로 나눠주어 보정을 해줍니다.파라체인별 수수료 비율 에 따라 파라체인별로 트랜잭션 수수료가 다르게 측정될 수 있습니다. 이로 인해 동일한 트랜잭션이라도 특정 파라체인은 다른 파라체인보다 더 많은,혹은 더 적은 수수료를 낼 수 있습니다.
시스템 토큰 가중치
시스템 토큰 가중치 는 법정 화폐간 환차이를 반영한 값입니다. 트랜잭션 수수료 및 트랜잭션 투표량(Transaction-as-a-Vote)을 계산할 때 사용됩니다. 일반적으로 동일한 트랜잭션에 대한 수수료는 어떤 시스템 토큰을 사용하든 최종 환산된 가치가 동일해야 하기 때문에 시스템 토큰 가중치 는 이를 고려하기 위해 설계되었습니다.
예를 들면, 트랜잭션 수수료로 책정된 가치가 1_000
이라면, 해당 금액을 USD
로 지불하거나 KRW
로 지불하는 경우 내야하는 토큰 개수는 다르겠지만(e.g USD
가 1개의 토큰을 낸다면 KRW
는 1300 개를 지불) 동일한 1_000
이라는 가치의 수수료를 낼 것입니다.
시스템 토큰 가중치 는 기준이 되는 시스템 토큰(BASE_SYTEM_TOKEN) 과의 소수점, 환율 정보를 고려하여 계산됩니다.
BASE_WEIGHT
: 기준이 되는 시스템 토큰의 가중치DECIMAL_RELATIVE_TO_BASE
: 기준이 되는 시스템 토큰 대비 소수점 자릿수EXCHANGE_RATE_RELATIVE_TO_BASE
: 기준이 되는 시스템 토큰 대비 환율예를 들어보겠습니다. 현재 시나리오에서 기준이 되는 시스템 토큰 은
USD
입니다.이 상황에서
transfer
트랜잭션에 대한 수수료를 낸다고 가정해봅시다. 여기서는PARA_FEE_RATE
를 고려하지 않습니다.
위임 가능한 트랜잭션 수수료 지불
어떤 블록체인 서비스 제공자 입장에서 해당 서비스를 이용하는 사용자들에게 트랜잭션 수수료를 지불하게 하는 것은 사용자 경험 측면에서 좋지 않은 면이 있습니다. 이에 인프라블록체인(InfraBlockchain) 은 트랜잭션 수수료를 대신 지불해주는 수수료 대납자(fee payer) 가 선택적으로 존재할 수 있습니다.
기존 Substrate 기반 트랜잭션 구조에 수수료 대납자 의 서명을 추가하여 작동하고 있습니다.
다음으로 넘어가기
Last updated