프라이버시
마루의 검증 가능한 프라이버시를 다룹니다. 차폐 풀 기반 프라이버시 프리컴파일, EIP-712 위임 릴레이 도메인, 모든 프라이버시 호출에 적용되는 PCL 정책 연동, 규제 감사와 호환되는 선택적 공개 모델을 포함합니다.
프라이버시
IPrivacy의 *WithAuthorization 진입점은 특정 executor가 특정 effective sender를 대신하여 프라이버시 작업을 실행하도록 허가하는 서명을 받습니다. 이 서명은 프리컴파일이 고정한 EIP-712 다이제스트를 대상으로 하며, 도메인은 EIP712Domain(name="Maroo Privacy Precompile", version="1", chainId=<EVM chainId>, verifyingContract=<IPrivacy 주소>)이고 primary type은 PrivacyActionAuthorization입니다. EVM chain ID(uint256)와 Cosmos chain ID(해시로 struct에 포함)가 모두 다이제스트에 묶이므로, 한 네트워크에서 만든 서명을 다른 네트워크에서 재사용할 수 없습니다. 오프체인 서명자는 동일한 도메인과 struct 필드를 정확히 재구성해야 하며, 그렇지 않으면 프리컴파일이 EOA/ERC-1271/EIP-7702 signer mismatch 문자열 revert로 호출을 거절합니다.
대부분의 컨트랙트 범위 PCL 강제는 PCL 래핑 프록시를 통해 수행됩니다. 프록시의 preCall/postCall 훅이 프록시 주소에 바인딩된 ContractPolicyConfig를 평가하는 방식입니다. 정책 인식 프리컴파일은 이와 다릅니다. 바이너리가 지원하는 프리컴파일로, 자체 프리컴파일 경계에서 코드가 PCL 정책을 직접 평가합니다. 현재 정책 인식 프리컴파일은 0x100000000000000000000000000000000000000b의 Privacy 프리컴파일 하나입니다. 프리컴파일은 배포된 컨트랙트가 아니므로 PCL 프록시로 등록할 수 없고, 프록시 훅 경로를 거치지도 않습니다. 대신 프리컴파일 주소를 IPcl.changeContractPolicies로 ContractPolicyConfig에 직접 바인딩하며, 프리컴파일이 상태 변경 호출마다 그 설정을 읽습니다.
0x100000000000000000000000000000000000000b의 프라이버시 프리컴파일은 OKRW 은닉 풀을 구현합니다. 호출자는 투명 OKRW를 deposit하여 노트를 커밋하거나, Groth16 증명 아래에서 다른 수신자에게 노트를 transfer하거나, 노트를 투명 EOA로 withdraw할 수 있습니다. 각 메서드에는 EIP-712 기반 *WithAuthorization 릴레이 변형과 배치 변형이 함께 제공됩니다. 상태를 변경하는 모든 호출은 프리컴파일 경계에서 PCL 정책 평가를 통과하므로, 은닉 흐름도 투명 흐름과 동일한 컴플라이언스 규칙을 따릅니다. 실패는 이제 IPrivacy에 선언된 타입 지정 커스텀 오류로 revert됩니다. IPrecompile에서 상속되는 공통 오류, 요청 수명주기 계열(PrivacyNonPayable, PrivacyRequestExpired, PrivacyBatchSizeOutOfRange, PrivacyNativeDenomMismatch), 인증 계열(PrivacyInvalidAuthorizationField, PrivacyAuthorizationExpired, PrivacyAuthorizationNonceUsed, PrivacyAuthorizationSignerMismatch, PrivacyAuthorizationRejected, PrivacyInvalidAuthorizationMagic), 은닉 상태 계열(PrivacyDuplicateNullifier, PrivacyNullifierAlreadySpent, PrivacyDuplicateCommitment, PrivacyCommitmentAlreadyExists, PrivacyMerkleCapacityExceeded, PrivacyTxLimitExceeded, PrivacySenderTxLimitExceeded)이 포함됩니다.
사용자는 트랜잭션별로 공개할 내용(거래 상대방, 금액, 자산 유형)을 제어하고, 규제 기관은 법이 정한 범위 안에서 데이터에 접근합니다. 프라이버시와 컴플라이언스를 동시에 충족하는 것이 이 모델의 설계 목표입니다.
이 모델의 실행 계층은 이미 체인에 배포되어 있습니다. 0x1000…000b의 프라이버시 프리컴파일이 차폐 풀 기반 예치·이전·출금을 영지식 증명으로 검증하고, 모든 변경성 프라이버시 호출은 PCL 정책 평가를 거칩니다. 구체적인 메커니즘은 이 섹션의 개념 문서와 IPrivacy API 레퍼런스에서 다룹니다.