본문으로 건너뛰기

보안 모델

Pali는 non-custodial wallet입니다. Pali는 private key를 dapp에 노출하지 않습니다. dapp은 injected provider로 요청을 보내고, Pali는 해당 요청을 검증하고 라우팅하며, 사용자는 extension UI에서 민감한 작업을 승인합니다.

핵심 원칙​

  • Origin-scoped connection: 연결은 dapp host별로 저장됩니다.
  • dapp당 하나의 active account: 여러 사이트가 연결될 수 있어도 연결된 사이트 하나는 한 번에 하나의 active account만 가집니다.
  • 직렬화된 approval: popup을 여는 차단형 요청은 사용자가 경쟁하는 approval에 파묻히지 않도록 조율됩니다.
  • Network-family check: EVM method와 UTXO method는 분리됩니다. 잘못된 계열의 호출은 복구 가능한 dapp error로 처리해야 합니다.
  • 명시적 서명: transaction, PSBT, typed data, message signing, passkey creation, passkey execution, asset watch request, chain change에는 올바른 wallet state와 사용자 approval이 필요합니다.
  • Provider isolation: Pali는 provider를 top-level page에 inject합니다. iframe에는 inject하지 않습니다.

dapp이 받는 것​

dapp은 public account identifier, provider state, signature, transaction hash, 명시적 RPC result를 받습니다. seed phrase, private key, passkey private material, authenticator secret은 절대 받지 않습니다.

Passkey 안전성​

Pali smart account는 WebAuthn credential을 사용합니다. Pali는 public metadata와 credential identifier를 저장하며, private key material은 authenticator 내부에 남아 있습니다. Pali는 cross-origin WebAuthn assertion을 거부하고 passkey action hash가 준비된 transaction set과 일치하는지 검증합니다.

Smart-account module policy 안전성​

기관 smart-account module policy는 다음으로 나뉩니다.

  • On-chain policy: mode, sponsor signer, sponsor URL.
  • Wallet metadata: 표시용 policy text 및 기타 local wallet context.

policyText field는 사용자에게 맥락으로 표시됩니다. 이는 on-chain enforcement primitive가 아닙니다.