keeper.GlobalPolicyValidate
GlobalPolicyValidate(ctx sdk.Context, msgs []sdk.Msg) error 전역으로 구성된 PCL 정책에 대해 코스모스 SDK 메시지 슬라이스를 검증합니다. 이 함수는 모든 트랜잭션에서 실행되어 네트워크 전체의 컴플라이언스 규칙을 시행하는 PclAnteDecorator의 핵심 통합 지점입니다.
파라미터
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
ctx | sdk.Context | ✓ | 스토어, 블록 시간 등에 대한 접근을 제공하는 현재 블록체인 컨텍스트입니다. |
msgs | []sdk.Msg | ✓ | 검증할 트랜잭션에 포함된 메시지 슬라이스입니다. |
반환값
타입:
error 모든 전역 정책을 통과하면 nil을 반환합니다. 그렇지 않으면 어떤 정책이 위반되었는지를 나타내는 특정 오류(예: ErrorInDenylist, ErrorVolumeAboveMaxLimit)를 반환합니다.
에러
| 코드 | 이름 | 설명 |
|---|---|---|
ErrorInDenylist | ErrorInDenylist | 메시지 발신자가 활성 전역 거부 목록에 있습니다. |
ErrorEasAttestationRequired | ErrorEasAttestationRequired | 전역 EAS 정책이 활성화되어 있고 발신자가 필요한 증명을 가지고 있지 않습니다. |
예제
AnteDecorator 내 사용법
`ante.go`에서 가져온 이 코드 스니펫은 표준적인 사용법을 보여줍니다. 데코레이터는 `GlobalPolicyValidate`를 호출하고 오류가 반환되면 트랜잭션을 거부합니다.
func (pd PclAnteDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) {
// The core logic of the PCL ante handler.
err := pd.pclKeeper.GlobalPolicyValidate(ctx, tx.GetMsgs())
if err != nil {
// If validation fails, reject the transaction.
return ctx, err
}
// If validation succeeds, proceed to the next handler in the chain.
return next(ctx, tx, simulate)
}