PCL 정책 관리자

component compliance

PCL 템플릿과 전역 정책 설정을 관리할 수 있는 유일한 체인 단위 주소이며, 자기 자신이 만든 규칙에 의해 잠기지 않도록 복구용 우회 경로가 내장되어 있습니다.

PCL 정책 관리자는 x/pcl 모듈 파라미터에 저장되고 IPcl.policyAdmin()으로 노출되는 단일 주소입니다. 정책 템플릿을 등록·제거하고 GlobalPolicyConfig를 설정·해제할 수 있는 유일한 호출자입니다. 잘못 구성된 전역 정책이나 denylist가 관리자 자신의 트랜잭션을 거절하는 상황에서도 관리자가 항상 복구할 수 있도록, 관리자가 PCL의 특정 제어 평면 메서드를 호출하면 사전 실행 단계의 오퍼레이션 추출과 사후 실행 단계의 전송 스캔 훅 모두에서 PCL 정책 평가를 우회합니다.

현재 정책 관리자 조회

현재 관리자 주소는 단순 view 조회로 얻을 수 있습니다. 관리자용 도구 흐름을 시작할 때마다 이 값을 조회해야 하며 세션 간에 캐시하지 마십시오. 관리자 회전은 컨소시엄 거버넌스 작업이라 별도 경로로 언제든 발생할 수 있습니다.
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.28;

import "@maroo-chain/contracts/precompiles/pcl/IPcl.sol";

contract AdminProbe {
    IPcl constant pcl = IPcl(0x1000000000000000000000000000000000000005);

    function currentAdmin() external view returns (address) {
        return pcl.policyAdmin();
    }
}

관리자가 할 수 있는 일

관리자는 정확히 네 개의 PCL 진입점에만 권한이 있습니다. 그 외의 모든 PCL 호출(컨트랙트 범위 정책 관리, view 메서드, 프록시 배포)은 적절한 호출자에게 열려 있으며 관리자 권한과 무관합니다.

메서드용도
registerPolicyTemplate(string)내장 템플릿을 활성 레지스트리에 추가하여 PolicySet으로 인스턴스화할 수 있게 합니다.
removePolicyTemplate(string)템플릿을 레지스트리에서 제거합니다. 레지스트리가 더 이상 템플릿별 사용 컨트랙트를 추적하지 않으므로 이 호출은 PolicyTemplateInUse로 revert되지 않습니다. 제거된 템플릿을 참조하는 기존 PolicySet은 이후 평가 시점에 PolicyTemplateNotFound(templateId)로 실패합니다.
setGlobalPolicies(GlobalPolicyConfig)체인 단위 GlobalPolicyConfig를 교체합니다.
removeGlobalPolicies()체인 단위 GlobalPolicyConfig를 해제합니다.

그 외의 호출자가 이 메서드를 호출하면 Unauthorized()로 revert됩니다.

복구 우회 — 관리자의 제어 평면 호출은 PCL을 건너뜁니다

관리자가 실수로든 아니든 자기 주소를 거절하는 GlobalPolicyConfig를 배포한 경우 — 예를 들어 관리자 자신을 포함하는 DENYLIST_POLICY나, 관리자가 이미 초과한 PERIODIC_VOLUME_POLICY 등 — 순진한 PCL이라면 관리자가 문제를 고치기 위해 보내는 그 트랜잭션마저 거절하게 됩니다. 이 교착을 방지하기 위해 msg.sender가 정책 관리자이고, 호출 대상이 PCL 프리컴파일이며, 4바이트 selector가 위 네 개 제어 평면 메서드 중 하나인 트랜잭션은 복구용 호출로 처리됩니다. 사전 실행 단계의 오퍼레이션 추출과 사후 실행 단계의 전송 스캔 훅 모두에서 PCL 정책 평가를 완전히 건너뜁니다. 그 외 모든 관리자 트랜잭션 — 일반 전송, PCL이 아닌 컨트랙트 호출, 심지어 selector가 이 네 개에 속하지 않는 PCL 호출(예: contractPolicies view 또는 changeContractPolicies) — 은 정상적으로 PCL 강제를 통과합니다.

호출자 관점의 실질적 함의

dApp 작성자 관점에서 핵심은 좁습니다. 관리자는 여러분의 컨트랙트에 대해 어떠한 상시 특권도 갖지 않습니다. 관리자가 VOLUME_POLICY를 넘어 OKRW를 몰래 전송할 수 없고, 여러분이 등록한 토큰의 EAS_POLICY를 우회할 수 없으며, 컨트랙트 범위 DENYLIST_POLICY도 벗어날 수 없습니다. 우회는 PCL 프리컴파일 주소 자체에 대한 네 개의 제어 평면 selector에만 국한됩니다. 실제로는 관리자가 이전 실수를 되돌리기 위해 새로운 전역 설정을 언제든 발행할 수 있지만, 새 설정은 그 이후의 모든 트랜잭션에 — 관리자 자신의 트랜잭션에도 — 강제 적용되며, 관리자가 제어 평면 경로에 머무를 때만 우회됩니다.
ESC
검색어를 입력하세요