testnet
GitHub EN

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
ESC
검색어를 입력하세요