testnet
GitHub EN

PCL 이중 트랙 트랜잭션 모델

mechanism compliance

개방적이고 무허가적인 컨텍스트 또는 규제되고 준수되는 컨텍스트에서 트랜잭션을 실행합니다.

마루의 PCL은 스마트 컨트랙트 상호작용을 위한 이중 트랙 시스템을 가능하게 합니다. '오픈 트랙'은 PCL 검사를 우회하는 표준적인 직접 EVM 호출로 구성됩니다. '규제 트랙'은 상호작용이 IPcl.runOnPcl 함수를 통해 라우팅되는 옵트인 모델로, 의도된 로직을 실행하기 전에 적용 가능한 모든 규제 준수 정책을 시행합니다. 이는 개발자에게 무허가 및 허가된 구성 요소를 모두 갖춘 애플리케이션을 설계할 수 있는 유연성을 제공합니다.

오픈 트랙

이것은 모든 EVM 호환 체인의 기본 동작입니다. EOA나 다른 컨트랙트로부터의 직접 호출(예: myToken.transfer(recipient, amount))은 PCL 개입 없이 함수의 코드를 실행합니다. 이 트랙은 분산 오라클이나 공개 NFT 마켓플레이스와의 상호작용과 같이 규제 감독이 필요 없는 애플리케이션 부분에 적합합니다.

규제 트랙

PCL을 사용하려면 트랜잭션이 명시적으로 규제 트랙을 통해 라우팅되어야 합니다. 이는 원래 호출을 IPcl.runOnPcl 내에 래핑하여 달성됩니다. 예를 들어, myToken.transfer(...) 대신 호출자는 PCL_CONTRACT.runOnPcl(address(myToken), abi.encodeWithSignature("transfer(address,uint256)", recipient, amount), 0)을 실행합니다. 이 함수 호출은 마루 노드에게 먼저 myToken 컨트랙트와 관련된 모든 PCL 검사를 수행하도록 지시합니다. 검사가 통과하면 노드는 transfer 호출을 실행하고, 실패하면 트랜잭션은 되돌려집니다.

구현 전략

규제 준수 컨트랙트는 일반적으로 민감한 기능에 대해 규제 트랙 사용을 강제하도록 설계됩니다. 일반적인 패턴은 핵심 로직 함수(예: _transfer)를 internal로 만들고, 컨트랙트 자체만 호출할 수 있는 public 래퍼 함수를 노출하는 것입니다. 그런 다음 주 public 함수(transfer)는 자신과 자신의 내부 함수를 대상으로 IPcl.runOnPcl을 호출하는 로직을 포함하게 됩니다. 이는 외부 호출자가 PCL 검사를 우회할 수 없도록 보장합니다.
소스: maroo
ESC
검색어를 입력하세요