testnet
GitHub EN

PCL을 활용한 규제 준수 토큰 만들기

intermediate integration 45 min

ERC20 토큰을 배포하고 마루의 프로그래머블 컴플라이언스 레이어를 사용하여 KYC 요구사항을 강제하는 방법을 배웁니다.

학습 목표

  • 마루에 표준 ERC20 배포하기
  • PCL 정책 템플릿 생성하기
  • 컨트랙트에 정책 바인딩하기
  • 비준수 사용자에 대한 트랜잭션 거부 확인하기

사전 요구사항

  • 기본 Solidity 지식
  • OKRW가 있는 마루 테스트넷 계정

필요 도구

HardhatMaroo CLI (marood)Go
이 튜토리얼에서는 유효한 KYC 증명이 있는 사용자 간에만 전송할 수 있는 '제한된 토큰'을 만듭니다. 화이트리스트를 추가하기 위해 Solidity 코드를 수정하지 않고, 대신 PCL을 사용하여 체인 수준에서 이를 강제합니다.
1

1. 토큰 배포

먼저 Hardhat을 사용하여 표준 OpenZeppelin ERC20 토큰을 배포합니다. 컨트랙트 주소를 기록해 두세요.
scripts/deploy.js javascript
const Token = await ethers.getContractFactory('MyToken');
const token = await Token.deploy();
await token.waitForDeployment();
console.log('Token deployed to:', token.target);
2

2. 정책 템플릿 생성

Maroo CLI를 사용하여 특정 EAS 스키마 UID(KYC를 나타냄)를 요구하는 정책을 생성합니다.
terminal bash
marood tx pcl create-policy-template --name "KYC-Required" --rules "require-schema:0x123..." --from my-wallet
참고: 규칙 구문은 특정 PCL 버전에 따라 다릅니다. 규칙 정의에 대한 참조를 확인하세요.
3

3. 컨트랙트에 정책 바인딩

이제 2단계에서 반환된 템플릿 ID를 배포된 컨트랙트 주소에 연결합니다.
terminal bash
marood tx pcl set-contract-policy --contract 0xYourTokenAddress --template-id 1 --from my-wallet
4

4. 강제 집행 테스트

증명이 없는 주소로 토큰을 전송해 봅니다. 트랜잭션은 프로토콜 수준에서 실패해야 합니다.
test/compliance.js javascript
try {
  await token.transfer(nonKycUser, 100);
} catch (error) {
  console.log('Transaction blocked by PCL:', error.message);
}

마무리

컴플라이언스 로직을 비즈니스 로직에서 성공적으로 분리했습니다. 이제 귀하의 토큰은 복잡한 Solidity 화이트리스트 없이도 규제를 준수합니다.
소스: maroo
ESC
검색어를 입력하세요