Msg/CreatePolicyTemplate
CreatePolicyTemplate(ctx context.Context, in *MsgCreatePolicyTemplate) (*MsgCreatePolicyTemplateResponse, error) 재사용 가능한 새로운 정책 템플릿을 온체인에 생성하고 등록합니다. 정책 템플릿은 스마트 컨트랙트에 적용될 수 있는 컴플라이언스 규칙 집합을 포함합니다. 이 작업은 지정된 정책 관리자만 수행할 수 있습니다.
파라미터
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
authority | string | ✓ | 정책 관리자 계정의 bech32 주소입니다. pcl 모듈의 policy_admin 매개변수와 일치해야 합니다. |
name | string | ✓ | 정책 템플릿을 위한 고유하고 사람이 읽을 수 있는 이름입니다 (예: 'kyc-level-1-required'). |
description | string | - | 정책 템플릿이 강제하는 내용에 대한 간략한 설명입니다. |
rules | Rule[] | ✓ | 컴플라이언스 로직을 정의하는 규칙 객체의 배열입니다. 각 규칙은 사전 정의된 검사를 나타내는 문자열입니다 (예: 'SENDER_HAS_KYC'). |
반환값
타입:
MsgCreatePolicyTemplateResponse 새로 생성된 정책 템플릿의 고유 ID를 포함하는 응답을 반환합니다.
에러
| 코드 | 이름 | 설명 |
|---|---|---|
codes.PermissionDenied | Unauthorized | `authority` 주소가 모듈의 정책 관리자와 일치하지 않을 경우 발생합니다. |
codes.AlreadyExists | TemplateNameInUse | 주어진 `name`을 가진 정책 템플릿이 이미 존재할 경우 발생합니다. |
예제
Go 클라이언트를 사용한 템플릿 생성
이 예제는 트랜잭션 발신자가 유효한 KYC 증명을 갖도록 요구하는 간단한 정책 템플릿을 생성합니다.
import (
"context"
pclv1 "maroo/api/maroo/pcl/v1"
"google.golang.org/grpc"
)
func createKycPolicy(conn *grpc.ClientConn, adminAddr string) (*pclv1.MsgCreatePolicyTemplateResponse, error) {
msgClient := pclv1.NewMsgClient(conn)
msg := &pclv1.MsgCreatePolicyTemplate{
Authority: adminAddr,
Name: "kyc-required-policy",
Description: "Requires sender to have completed KYC.",
Rules: []*pclv1.Rule{{Definition: "SENDER_HAS_KYC"}},
}
return msgClient.CreatePolicyTemplate(context.Background(), msg)
} grpcurl을 사용한 템플릿 생성
커맨드라인에서 동일한 KYC 정책 템플릿을 등록하는 `grpcurl` 명령어입니다.
grpcurl -d '{
"authority": "maroo1...",
"name": "kyc-required-policy",
"description": "Requires sender to have completed KYC.",
"rules": [
{ "definition": "SENDER_HAS_KYC" }
]
}' -plaintext [maroo-node-ip]:9090 maroo.pcl.v1.Msg.CreatePolicyTemplate