규정 준수

이중 트랙 트랜잭션 mechanism

마루는 두 가지 별개의 경로를 통해 트랜잭션을 처리합니다. 표준 저위험 활동을 위한 개방 경로(Open Path)와 고가치 또는 규제 자산 전송을 위한 규제 경로(Regulated Path)입니다. PCL이 올바른 경로를 자동으로 결정합니다.

Legal Oracle mechanism

규제는 변합니다. Travel Rule 임계 금액이 바뀌고, 제재 리스트가 갱신되고, 관할권 규칙이 진화합니다. 마루는 정책 엔진 (PCL — 안정적, 거의 변하지 않음)과 파라미터 공급 (Legal Oracle — 법·정책 변화에 따라 갱신)을 분리합니다. 새로운 규제 요구는 파라미터 추가로 — 길어야 새 PolicyTemplate 등록으로 — 흡수되며, 체인 코어 코드는 건드리지 않습니다. Legal Oracle의 파라미터 갱신 권한 자체도 거버넌스로 통제됩니다 — 모든 변경은 온체인에서 가시화되고 감사 가능합니다.

PCL 이중 트랙 트랜잭션 모델 mechanism

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

프로그래머블 컴플라이언스 레이어 (PCL)

프로그래머블 컴플라이언스 레이어(PCL)는 마루 네트워크의 핵심 모듈로, 블록체인 상에서 직접 컴플라이언스 정책을 생성하고 시행할 수 있게 합니다. 이 모듈은 트랜잭션이 처리되기 전에 가로채어, 전역 및 컨트랙트별 규칙 집합에 대해 유효성을 검사합니다. 이를 통해 스마트 컨트랙트의 핵심 로직을 변경하지 않고도 KYC/AML 확인, 전송 제한, 거래량 한도와 같은 복잡한 규제 요건을 구현할 수 있습니다.

PCL 정책 관리자 term

Policy Admin은 호출자가 IPcl.policyAdmin()로 확인할 수 있는 단일 주소 — 내장 PolicyTemplate 등록/제거와 체인 전역 GlobalPolicyConfig 설정/제거 권한을 가집니다. 네트워크의 모든 트랜잭션에 영향을 주는 변경은 이 역할을 거칩니다. admin 슬롯은 체인 파라미터 — 단일 키 보유자가 임의로 가져가거나 다른 주소로 옮길 수 없습니다.

PCL 정책 시행 mechanism

모든 마루 트랜잭션은 상태 변경 작업이 실행되기 전 PCL로 필터링됩니다. 글로벌 정책 (정책 관리자가 설정한 GlobalPolicyConfig)은 모든 트랜잭션에 평가됩니다. 컨트랙트 범위 정책 (컨트랙트 admin이 등록한 ContractPolicyConfig)은 호출이 규제 경로로 그 컨트랙트를 대상으로 할 때만 적용됩니다. 정책이 하나라도 실패하면 전체 트랜잭션이 구조화된 PCL ReasonCode와 함께 거절되며, 어떤 컴플라이언스 검사도 우회할 수 없습니다.

PCL 정책 구조 component

PCL은 컴플라이언스 규칙을 JSON 객체가 아니라 Solidity로 정의된 ABI 튜플로 저장합니다. 구조는 3계층으로, PolicyTemplate(정책 관리자가 등록하는 규칙 타입)이 PolicySet(타입 ID + ABI 인코딩 파라미터 blob + 선택적 함수 selector)으로 인스턴스화되고, PolicyConfig(전역 또는 컨트랙트별 설정)에 묶입니다. 초기 초안에서 중간 계층을 PolicyRef라 불렀으나, IPcl 인터페이스의 정식 명칭은 PolicySet이며 policy 필드가 ABI 인코딩된 파라미터 바이트입니다.

PCL 내장 정책 템플릿 component

마루의 PCL은 가장 일반적인 규제·비즈니스 컴플라이언스 게이트를 다루는 7개의 내장 정책 템플릿을 기본 제공합니다. 각 템플릿은 Solidity 파라미터 struct(abi.encodePolicySet.policy에 인코딩)와 평가 규칙을 정의합니다. 관리자는 PolicySet 엔트리로 인스턴스화하여 GlobalPolicyConfig(네트워크 전역) 또는 ContractPolicyConfig(컨트랙트별)에 그룹화합니다. 기존 평가자를 사용하는 새 템플릿은 거버넌스로 체인 코어 변경 없이 등록할 수 있으며, 새 평가자를 도입하려면 체인 업그레이드가 필요합니다.

PCL 프리컴파일 component

프로그래머블 컴플라이언스 레이어(PCL) 프리컴파일은 고정 주소 0x1000000000000000000000000000000000000005에 위치하며, 컴플라이언스 관련 모든 작업의 정식 표면입니다. 정책 템플릿 등록, 컨트랙트별 PolicySet 등록, 현재 규칙 조회, runOnPcl을 통한 EVM 호출 사전 평가를 담당합니다. 이제 모듈 파라미터를 단일 getParams() view 한 번으로 얻을 수 있으며, 반환되는 PclParams struct는 policyAdmin(템플릿과 글로벌 정책 등록 권한을 가진 체인 전역 admin)과 entrypoints(호출 시 트랜잭션을 규제 EVM 경로로 라우팅하는 컨트랙트 주소 배열)를 포함합니다.

PCL ReasonCode mechanism

모든 PCL 거절은 IPcl에 정의된 타입화된 Solidity 오류 중 하나를 동반합니다. 지갑과 dApp 코드는 IPcl ABI에 대해 revert 페이로드를 디코드하고 오류 이름과 인자를 기준으로 UX를 분기해야 하며, 자유 텍스트에 의존해서는 안 됩니다. 코드는 세 그룹으로 나뉩니다. 정책 위반 코드는 사용자 트랜잭션이 컴플라이언스 검사를 통과하지 못한 경우에 발행되며 일부는 사용자 액션으로 해소할 수 있습니다. 템플릿 관리 코드register…set… 호출에서 발생하는 admin 도구 오류로, 규제 경로에서 최종 사용자가 보는 일은 없습니다. 내부 코드는 체인 설정 오류이며 운영자에게만 surface됩니다.

AGENT_OKRW_TRANSFER_LIMIT_POLICY component

에이전트 지갑이 수행하는 단일 OKRW 전송에 대해, ERC-8004 IdentityRegistry의 온체인 메타데이터(getMetadata(agentId, "TransferLimit"))에 저장된 한도를 적용합니다. 정책 struct 자체에는 설정 필드가 없으며, 상한은 에이전트 소유자가 메타데이터에 입력한 값을 그대로 사용합니다. 비에이전트 발신자에게는 적용되지 않습니다. 사람이 제어하는 계정은 막지 않으면서 에이전트(자동화된 키)가 한 트랜잭션당 옮길 수 있는 가치의 상한을 부과할 때 사용합니다.

DENYLIST_POLICY component

가장 단순한 PCL 템플릿입니다. 호출자(그리고 글로벌 설정에서는 종종 수신자도 함께)를 차단된 주소의 정적 목록과 대조합니다. 제재 강제와 동결 계정 라우팅에 사용합니다.

EAS_POLICY component

발신자가 특정 EAS 스키마로 발행된 유효한 (만료되지 않고 폐기되지 않은) attestation을 보유했는지를 트랜잭션 게이트의 기준으로 삼습니다. KYC, KYB, 자격 증명, 자격 기반 게이트를 구현하는 표준 프리미티브입니다. EAS 프리컴파일을 통해 attestation을 해결하므로 AnteHandler 평가 중 조회가 저렴합니다.

OKRW_EAS_PERIODIC_VOLUME_LIMIT_POLICY component

PERIODIC_VOLUME_POLICY의 리셋 주기 누적 추적을 EAS attestation 조건과 결합하여, 미인증 발신자에게는 엄격한 일/월 OKRW 상한을 부여하고 인증 발신자는 이 템플릿의 회계에서 완전히 면제됩니다. Travel Rule 스타일 임계값을 구현하는 표준 프리미티브입니다.

OKRW_EAS_TRANSFER_LIMIT_POLICY component

EAS attestation 검사와 건당 OKRW 상한을 결합한 템플릿입니다. 상한은 미인증 발신자에게만 발동되며, 인증된 발신자는 금액과 무관하게 입장이 허용됩니다(다른 적용 정책의 영향은 별도). KYC 계층 접근의 가장 일반적인 프로덕션 패턴으로, 미인증은 소액, 인증은 무제한(또는 다른 정책의 제약을 받음)으로 동작합니다.

PERIODIC_VOLUME_POLICY component

설정된 리셋 주기에 걸쳐 발신자별 denom별 누적 트랜잭션 금액을 추적하고, 누적 합계가 한도를 넘는 트랜잭션을 거절합니다. 각 트랜잭션을 독립적으로 검사하는 VOLUME_POLICY와는 구별됩니다. 일/월 전송 상한 및 Travel Rule 스타일 임계값에 사용합니다.

VOLUME_POLICY component

하나 이상의 토큰 denom에 대해 건당 최소·최대 금액 한도를 강제하는 템플릿입니다. 각 트랜잭션은 다른 트랜잭션과 독립적으로 평가되며 롤링 윈도우나 누적 추적은 없습니다. 기간 기반 누적이 필요한 경우 PERIODIC_VOLUME_POLICY 페이지를 참고합니다.

개방적이되 규제를 준수 mechanism

마루는 누구나 지갑을 생성할 수 있는 무허가형 체인입니다. 그러나 거래 상대방의 신원, 거래 규모 및 자산 유형에 따라 트랜잭션을 규제 경로(Regulated Path) 또는 개방 경로(Open Path)로 동적으로 라우팅합니다.

Recovery Primitive — 동결 / 소각 / 재발행 mechanism

해킹, 피싱, 명백히 불법인 자금 흐름은 실제 결제 시스템에서 발생합니다. 마루는 체인을 롤백하지 않고도 상태를 교정할 수 있도록 범위 제한된 3개의 recovery primitive를 제공합니다. 동결, 소각, 재발행이 그 세 가지입니다. 셋 모두 문서화된 법적 근거가 있고 정해진 절차가 이행된 경우에만 작동하며, 모든 발동은 Observer Node와 거버넌스 감사 로그에 기록됩니다. 상시 개입 장치가 아니며, 법적 근거가 허용하는 한 마루는 과거 이력 재작성 대신 전방 교정(이전 상태를 무효화하는 새 트랜잭션)을 선호합니다.

ESC
검색어를 입력하세요