스마트 계정과 검증기
Pali 스마트 계정은 모듈이 제어할 수 있는 EVM 컨트랙트 계정입니다. 패스키는 스마트 계정을 제어하는 지원 방식 중 하나입니다. 일반 EOA 개인 키로 매번 서명하는 대신, 브라우저나 운영체제의 패스키 화면에서 작업을 승인할 수 있습니다.
WebAuthn 패스키는 내부적으로 P-256 서명을 사용합니다. Pali의 패스키 검증기는 스마트 계정이 이 P-256 증명을 검증할 수 있도록 설계되어 있습니다. 따라서 생체 인증이나 플랫폼 패스키 승인으로 온체인 작업을 허가하면서도, 패스키 개인 키를 Pali나 dapp에 노출하지 않을 수 있습니다.
스마트 계정을 사용하는 이유
- 일상적인 사용을 위한 모듈형 승인 방식.
- 일반 지갑 키가 계정을 소유해야 할 때 사용할 수 있는 지갑 소유 ECDSA 제어.
- 복합 검증기를 통한 공동 관리 정책.
- 한 번의 사용자 승인으로 일괄 실행.
- 타임록 이후 가디언 복구.
- Pali가 계정 기록을 재구성할 수 있는 결정적 계정 생성.
패스키, ECDSA, 공동 관리 계정

Pali는 다음 검증기 방식을 지원합니다.
- 패스키: 브라우저 또는 운영체제가 WebAuthn 승인을 요청합니다.
- ECDSA: 설정된 EVM 소유자 주소가 계정 작업을 승인합니다.
- SLH-DSA: Pali의 로컬 양자 내성 서명기가 암호화된 서명기 상태를 사용해 작업을 승인합니다. 백업 및 서명 카운터의 제약은 양자 내성 서명기를 참조하세요.
- 복합: 패스키나 ECDSA 같은 하위 검증기를 임계값에 따라 조합합니다.
검증기는 “누가 이 계정의 작업을 승인할 수 있는가?”에 대한 답이라고 생각하면 됩니다. 유용한 점은 계정을 바꾸지 않고도 그 답을 변경할 수 있다는 것입니다.
- 하나의 승인(1-of-N): 설정된 하위 검증기 하나가 승인해야 합니다.
- 임계값만큼의 승인(t-of-N): 최소한 설정된 수의 하위 검증기가 승인해야 합니다.
- 모든 승인(N-of-N): 설정된 모든 하위 검증기가 승인해야 합니다.
Pali는 정책에 설정된 순서대로 로컬에서 사용 가능한 기본 제공 하위 검증기의 승인을 수집하여 임계값을 충족합니다. 승인을 거절하면 해당 요청이 중단되며, Pali가 거절 후 다른 서명기로 조용히 전환하지는 않습니다. 정책은 임계값을 충족할 수 있을 만큼 로컬 서명이 가능한 기본 제공 하위 검증기를 유지해야 합니다. 호환되는 사용자 정의 검증기를 선택적 하위 검증기로 포함할 수 있지만, Pali는 이들을 위한 외부 또는 사용자 정의 서명이나 기기 간 승인을 수집하지 않습니다. 이 버전은 중첩된 복합 정책을 지원하지 않습니다.
복합 정책 구성기에는 설치된 검증기가 최소 두 개 필요합니다. 안내형 승인 방식 변경 흐름은 기존 검증기를 교체합니다. 현재의 고급 사용자 지정 검증자 흐름에서는 호환되는 검증기를 추가로 유지할 수 있지만, 올바른 모듈 초기화 데이터가 필요합니다. 기기 간 승인을 간단히 설정하는 흐름은 아닙니다.
검증기를 변경해도 스마트 계정의 주소, 잔액, 기록은 바뀌지 않습니다. 로컬 서명기에 접근하려면 여전히 키나 패스키를 사용할 수 있어야 합니다. 정책을 변경해도 누락된 서명기 상태가 복원되거나 복원된 여러 기기 간 SLH-DSA 사용 내역이 조정되지는 않습니다.
가디언은 일상적인 승인 방식과 별개인 지연된 권한입니다. 충분한 가디언 승인은 계정 제어를 바꿀 수 있으므로 신중히 선택하고 보호해야 합니다. 대기 시간이 있다고 해서 신뢰할 수 없는 가디언이 안전해지는 것은 아닙니다.
Pali는 공유 지갑 패스키 프로필을 사용하거나, 계정별로 별도의 패스키 자격 증명을 만들 수 있습니다. 공유 패스키는 지갑이 제어하는 하나의 패스키를 쓰려는 사용자에게 편리합니다. 별도의 패스키는 서비스나 정책별로 자격 증명을 분리하는 데 도움이 됩니다.
배포
Pali가 생성을 준비하는 동안 스마트 계정은 카운터팩추얼 주소로 존재할 수 있습니다. Pali는 결정적인 팩토리 입력값에서 주소를 파생하고, Pali 팩토리를 통해 배포하며, 영구 계정 메타데이터를 로컬에 저장합니다.
계정은 결정적 배포를 위해 지갑이 소유한 부트스트랩 검증기로 시작합니다. 사용자나 dapp이 패스키 또는 다른 검증기를 선택하면, Pali는 스마트 계정 실행을 통해 해당 검증기를 설치하고 부트스트랩 검증기를 제거합니다.
네트워크 지원
스마트 계정을 사용하려면 활성 체인에서 Pali가 사용하는 주소에 Pali 팩토리와 모듈 컨트랙트가 있어야 합니다. 이 Pali 빌드에는 zkTanenbaum 테스트넷의 스마트 계정 생성이 설정되어 있으며, zkSYS 운영 환경도 운영용 팩토리와 모듈 주소가 설정되면 같은 모델을 사용합니다.
다른 EVM 호환 체인도 동일한 컨트랙트를 사용할 수 있습니다. 활성 네트워크가 표준 CREATE2 배포를 지원하면, Pali는 지갑 안에서 누락된 스마트 계정 기반 컨트랙트를 배포할 수 있습니다. 설정의 고급 메뉴로 이동한 뒤 스마트 계정 설정의 배포 버튼을 사용하세요. 패스키 검증기에는 P-256 WebAuthn 검증 지원이 필요하며, 많은 최신 EVM 환경에서는 P-256/패스키 프리컴파일을 통해 이 기능을 제공합니다.
대기 중인 설정
설정이 느려지면 상태 확인 작업이 표시됩니다. 페이지를 벗어나거나 네트워크를 전환해도 이미 제출한 트랜잭션은 취소되지 않습니다. 다시 배포하기 전에 원래 네트워크로 돌아가 설정 상태를 확인하세요. 시간 초과나 응답 누락이 아무것도 배포되지 않았다는 뜻은 아닙니다.
복구

로컬 지갑 상태가 삭제되거나 새 기기에 Pali를 설치한 경우, 결정적으로 생성된 Pali 스마트 계정은 지갑 메타데이터와 체인 설정에서 재구성할 수 있습니다. 패스키 검증기를 사용하는 계정은 작업을 승인할 때 해당 패스키 자격 증명에 계속 접근할 수 있어야 합니다.
하나의 패스키 자격 증명으로 여러 스마트 계정을 제어할 수 있습니다. Pali는 패스키 자격 증명 프로필과 배포된 각 계정의 스마트 계정 메타데이터를 분리하여 관리합니다.
가디언 복구
Pali는 스마트 계정 복구에 자체 관리형 복구 가디언을 사용합니다. 가디언은 사용자가 활성 검증기와 별도로 제어하는 EVM 주소입니다. 보통 백업 EVM 지갑, 가져온 계정 또는 하드웨어 지갑을 사용하지만, 온체인에서는 컨트랙트 계정을 포함하여 서명을 증명할 수 있는 모든 계정이 가디언이 될 수 있습니다. 계정에 정상적으로 접근할 수 있을 때 정책 화면에서 가디언을 추가·제거하고 복구 대기 기간을 변경할 수 있습니다.
복구 모듈은 표준 서명 검증으로 가디언 승인을 확인합니다. 일반 주소는 ECDSA 서명을 사용하고, 가디언 주소 자체가 컨트랙트이면 ERC-1271 컨트랙트 서명 검증을 사용합니다. 따라서 복합 정책, 사용자 정의 검증기 또는 향후 양자 내성 검증기로 서명하는 다른 스마트 계정도 가디언이 될 수 있습니다. 복구 경로는 가디언 계정이 적용하는 서명 방식을 따르므로, 복구 보안은 기존 ECDSA 키에만 한정되지 않습니다.
Pali의 가디언 화면은 로컬 키 기반 가디언(지갑, 가져온 계정 또는 하드웨어 계정)과 Pali가 서명할 수 있는 로컬 스마트 계정 가디언의 승인을 수집할 수 있으며, SLH-DSA 스마트 계정도 포함됩니다. 스마트 계정 가디언이 ERC-1271 서명 확인에 응답하려면 이미 온체인에 배포되어 있어야 합니다. Pali의 로컬 서명 계정으로 사용할 수 없는 외부 가디언은 여전히 외부 복구 흐름을 통해 승인을 생성해야 합니다.
가디언 복구는 즉시 완료되지 않습니다. 복구를 시작하면 대체 복구 대상을 만들고, 설정된 가디언에게 복구 의도에 서명하도록 요청한 뒤, 타임록이 적용된 복구 요청을 제출합니다. 대기 기간이 지나면 누구나 복구 트랜잭션을 완료할 수 있습니다. 이후 사용자는 교체된 검증기로 계정을 사용할 수 있습니다.
가디언 서명은 체인, 계정 주소, 복구 모듈, 복구 솔트, 실행 모드, 복구 호출 데이터를 함께 결합합니다. Pali는 복구를 시도할 때마다 새 솔트를 사용하며, 모듈은 계정마다 하나의 활성 복구만 허용합니다.
기술 참고: 가디언 복구 실행기는 계정별 가디언 집합, 임계값, 지연 시간, 만료 시간, 대기 중인 복구를 저장합니다. Pali는 화면을 명확하게 유지하기 위해 단순한 가디언 흐름을 제공하지만, 모듈은 1-of-N 또는 M-of-N 같은 임계값 정책을 지원합니다.
dapp이 생성한 계정
dapp은 wallet_prepareSmartAccount로 스마트 계정을 요청할 수 있습니다.
{
"label": "Trading desk",
"authenticator": {
"id": "p256-webauthn"
}
}
dapp은 ECDSA 검증기도 요청할 수 있습니다.
{
"label": "Trading desk",
"authenticator": {
"id": "ecdsa",
"config": {
"owners": ["0x..."],
"threshold": 1
}
}
}
요청한 ECDSA 소유자가 로컬 Pali 계정이 아니면, Pali는 경고를 표시하고 명시적인 확인을 받아야 계속 진행합니다.
표준 참조
Pali 스마트 계정은 다음과 같은 공개 스마트 계정 표준을 기반으로 합니다.
- ERC-4337 계정 추상화: UserOperation 방식의 계정 실행.
- ERC-7579 모듈형 스마트 계정: 검증기 및 실행기 모듈.
- ERC-1271 컨트랙트 서명 검증: 컨트랙트 계정의 서명.
- WebAuthn Level 3: 패스키 승인.
가디언 복구 단계별 안내
지갑의 로컬 기록 복원과 계정 제어권 변경은 서로 다릅니다. 시드를 복원해도 설치된 검증기를 우회할 수 없습니다. 가디언 복구는 대기 시간이 지난 뒤 동일한 스마트 계정의 승인 방식을 변경합니다.
- 설정: 현재 승인 방식을 사용할 수 있을 때 복구 설정을 여세요. 아직 배포되지 않은 계정은 먼저 등록하세요. 별도로 관리하는 가디언과 대기 시간을 선택하고 온체인 설정을 승인하세요. 가스 지불 계정에 필요한 잔액을 유지하세요.
- 시작: 접근 권한을 잃었다면 자신이 제어하는 새 승인 방식을 선택하고 제어권을 증명하세요. 설정된 가디언이 정확한 복구 의도에 서명합니다. 전송에는 가스가 필요하지만 아직 제어권이 바뀌지는 않습니다.
- 대기와 완료: 복구가 성공적으로 완료될 때까지 기존 승인 방식이 활성 상태로 유지됩니다. 대기 후 동일한 계정과 네트워크로 돌아오세요. 대기 시간이 지나면 누구나 가디언이 이미 승인한 정확한 복구의 완료 거래를 만료 전에 전송할 수 있습니다. 이후 새 방식이 같은 계정을 제어하며 주소, 자금, 기록은 유지됩니다.
완료 후 교체된 활성 방식은 해당 계정을 더 이상 승인하지 못합니다. 이전 키나 패스키는 다른 계정과 네트워크에서 필요하지 않은지 확인한 뒤 삭제하세요. 완료 전에 요청이 만료되면 새 복구 시도가 필요합니다.
새 Pali 정책은 3일 또는 7일 대기를 제공합니다. 10분은 알려진 테스트넷 전용입니다. 이는 Pali의 설정 선택지이며 계약 전체에 강제되는 최솟값이 아닙니다. 기존 온체인 설정이 기준입니다. 대기 시간과 이후 완료할 수 있는 기간은 서로 다릅니다.
예상하지 못한 복구 중지
현재 승인 방식을 여전히 제어한다면 복구 설정에서 Disable guardian recovery(가디언 복구 비활성화)를 선택하세요. 계정과 네트워크를 확인하고 승인한 뒤 가스를 지불하세요. 제거가 확정되면 지갑 외부에서 시작된 것을 포함한 모든 대기 중 복구가 무효화되고 복구 경로가 제거됩니다. 계속 사용하려면 신뢰할 수 있는 가디언을 다시 설정하세요.
원치 않는 복구가 완료되기 전에 제거가 확정되어야 하며, 이미 완료된 복구는 되돌릴 수 없습니다. 결과가 불확실하면 먼저 온체인 상태를 확인하세요. 오류, 시간 초과, 창 닫기는 전송된 거래를 취소하지 않습니다. 확인 없이 다시 보내지 마세요.
선택적 이메일 알림
설정 링크는 Sysnode Account → Recovery alerts를 엽니다. 확인된 이메일을 사용하고 지원 네트워크의 배포된 스마트 계정을 연결한 뒤 현재 승인 방식으로 등록 메시지에 서명하세요. 가디언 설정과 별개인 선택 기능이며, Sysnode에는 개인 키가 전달되지 않고 자금 이동이나 복구 취소 권한도 없습니다.
Pali를 닫아도 모니터링은 계속되지만 서비스, 해당 RPC, 이메일 전송에 의존합니다. 알림이 늦거나 전달되지 않을 수 있고 최근 체인 관측은 재구성될 수 있습니다. 이메일이 없다고 복구가 없다는 뜻은 아닙니다. 정확한 계정과 네트워크를 신뢰하는 지갑에서 확인하세요.