개요
distribution precompile 컨트랙트는 Stable SDK의 x/distribution 모듈 기능을 EVM 환경에서 사용할 수 있도록 브리지 역할을 합니다.
목차
개념
distribution precompile 컨트랙트에서는 위임자 또는 예치자가 호출자인지 확인하는 추가 검사가 수행됩니다.
구성
컨트랙트 주소와 가스 비용은 사전 정의되어 있습니다.컨트랙트 주소
0x0000000000000000000000000000000000001002
메서드
setWithdrawAddress
위임자가 검증자에게 위임한 토큰에 대한 rewards를 받을 주소를 설정합니다.
때로는 위임자가 자기 위임(self-delegated)일 때 검증자 주소가 위임자로 사용됩니다.
SetWithdrawAddress는 출금 주소가 성공적으로 설정되었을 때 발생합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 주소 |
| withdrawerAddress | string | 위임에 대한 rewards를 받을 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| success | bool | 출금 주소가 성공적으로 설정되면 true |
withdrawDelegatorRewards
검증자로부터 위임자가 받을 rewards를 출금합니다.
검증자가 위임자에게 지급하는 모든 유형의 토큰이 단일 트랜잭션으로 출금됩니다.
WithdrawDelegatorRewards는 rewards가 성공적으로 출금되었을 때 발생합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 주소 |
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| amount | Coin[] | 위임자가 받을 다양한 토큰의 rewards |
Coin은 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| denom | string | reward의 denom |
| amount | uint256 | reward의 수량 |
withdrawValidatorCommission
검증자의 수수료를 출금합니다.
검증자가 수수료로 받는 모든 유형의 토큰이 단일 트랜잭션으로 출금됩니다.
WithdrawValidatorCommission은 수수료가 성공적으로 출금되었을 때 발생합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| amount | Coin[] | 검증자가 받을 다양한 토큰의 수수료 |
validatorDistributionInfo
검증자가 받을 reward를 나타내는 분배 정보를 반환합니다. 검증자는 자신의 주소로 토큰을 위임하여 자기 결합(self-bonded)이라고 하는 위임자 역할을 할 수 있습니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| distributionInfo | ValidatorDistributionInfo | 검증자의 분배 정보 |
ValidatorDistributionInfo는 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| operatorAddress | string | 검증자의 운영자 주소 |
| selfBondRewards | DecCoin[] | 검증자의 자기 결합 수량 |
| commission | DecCoin[] | 검증자의 수수료 |
DecCoin은 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| denom | string | reward의 denom |
| amount | uint256 | reward의 수량 |
| precision | uint8 | reward의 정밀도 |
validatorOutstandingRewards
검증자의 미지급 rewards를 반환합니다. 미지급 rewards는 검증자의 수수료와 자기 결합 rewards, 그리고 위임자들의 총 rewards로 구성된 총 reward 금액을 나타냅니다. 검증자 A가 있고 위임자 B, C, D가 A에게 위임하는 경우, 검증자의 미지급 rewards는 A의 수수료와 자기 결합 rewards + B, C, D의 rewards의 합계입니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| rewards | DecCoin[] | 검증자의 미지급 rewards |
validatorCommission
검증자의 수수료를 반환합니다. 이 메서드는 withdrawValidatorCommission 메서드를 호출하기 전에 검증자의 수수료를 조회하는 데 사용됩니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| commission | DecCoin[] | 검증자의 수수료 |
validatorSlashes
시작 높이와 종료 높이 사이에 검증자의 슬래시 이력을 반환합니다. 슬래싱은 검증자가 악의적으로 행동하거나 이중 서명, 잘못된 행동, 체인 규칙을 따르지 않는 등의 네트워크 규칙을 위반했을 때 부과되는 벌금입니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
| startingHeight | uint64 | 시작 높이 |
| endingHeight | uint64 | 종료 높이 |
| pageRequest | PageReq | 페이지네이션 요청 |
PageReq는 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| key | bytes | 페이지네이션의 키 |
| offset | uint64 | 페이지네이션의 오프셋 |
| limit | uint64 | 페이지네이션의 제한 |
| countTotal | bool | 총 페이지 수를 계산할지 여부 |
| reverse | bool | 페이지네이션을 역순으로 할지 여부 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| slashes | ValidatorSlashEvent[] | 검증자의 슬래시 |
| pagination | PageResp | 페이지네이션 응답 |
ValidatorSlashEvent는 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorPeriod | uint64 | 검증자의 기간 |
| fraction | Dec | 슬래시의 비율 |
Dec은 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| value | uint64 | Dec의 값 |
| precision | uint8 | Dec의 정밀도 |
PageResp는 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| nextKey | bytes | 페이지네이션의 다음 키 |
| total | uint64 | 총 페이지 수 |
delegationRewards
위임자가 검증자로부터 받는 rewards를 반환합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 hex 주소 |
| validatorAddress | string | 검증자의 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| rewards | DecCoin[] | 위임자가 검증자로부터 받는 rewards |
delegationTotalRewards
위임자가 모든 검증자로부터 받는 총 rewards를 반환합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 hex 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| rewards | DelegationDelegatorReward[] | 위임자가 모든 검증자로부터 받는 총 rewards |
| total | DecCoin[] | rewards의 총 수량 |
DelegationDelegatorReward는 다음 필드를 가진 구조체입니다:
| 이름 | 타입 | 설명 |
|---|---|---|
| validatorAddress | string | 검증자의 주소 |
| reward | DecCoin[] | 위임자가 검증자로부터 받는 rewards |
delegatorValidators
위임자가 결합된 검증자들을 반환합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 hex 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| validators | string[] | 위임자가 결합된 검증자들 |
delegatorWithdrawAddress
setWithdrawAddress 메서드로 설정한 위임 rewards를 받을 주소를 반환합니다.
입력
| 이름 | 타입 | 설명 |
|---|---|---|
| delegatorAddress | address | 위임자의 hex 주소 |
출력
| 이름 | 타입 | 설명 |
|---|---|---|
| withdrawAddress | string | 위임 rewards를 받을 주소 |
이벤트
SetWithdrawAddress
| 이름 | 타입 | 인덱스 | 설명 |
|---|---|---|---|
| caller | address | Y | 호출자(위임자)의 주소 |
| withdrawAddress | string | N | 위임 rewards를 받을 주소 |
WithdrawDelegatorRewards
| 이름 | 타입 | 인덱스 | 설명 |
|---|---|---|---|
| delegatorAddress | address | Y | 위임자의 주소 |
| validatorAddress | address | Y | 검증자의 주소 |
| amount | uint256 | N | reward의 수량 |
WithdrawValidatorCommission
| 이름 | 타입 | 인덱스 | 설명 |
|---|---|---|---|
| validatorAddress | string | Y | 검증자의 주소 |
| commission | uint256 | N | 수수료의 총 수량 |

