왜 증명이 필요한가?
인덱서는 PIVX 블록체인을 스캔해 이름 대장을 구축합니다. 그런데 왜 그것을 신뢰해야 할까요? 만약 그것이:
- 체인에서 일어난 적 없는 등록을 지어낸다면?
- 잘못된 수수료를 청구한다면?
- 같은 이름을 두 번 등록한다면?
- 대장의 상태를 조작한다면?
ZK 증명은 이런 의문을 없애줍니다. 각 증명은 해당 등록이 올바르게 처리되었다는 암호학적 증서입니다. 누구나 독립적으로 증명을 검증할 수 있습니다.
각 증명이 검증하는 것
PIVX 증명 생성기는 RISC-V 영지식 가상 머신인 SP1을 사용합니다. 도메인이 포함된 각 트랜잭션에 대해 생성기는 zkVM 내부에서 다음 검사를 수행합니다:
- 이름 유효성 — 1~64자, 소문자 영숫자와 하이픈, 허용된 영역 내
- 주소 유효성 — 대상 주소가 올바른 네트워크의 PIVX Sapling 차폐 주소이며 최신 bech32 형식인지
- Ed25519 서명 — 정확한 서명 대상 메시지에 대한 서명이 유효하며, 해당 연산이 요구하는 키로 만들어졌는지
- 연산 불변식 — 소유권, 가격 상태, nonce 순서가 수행 중인 연산과 일관되는지
- 재생 방지 — nonce가 레코드의 이전 nonce보다 엄격히 큰지
- 상태 전이 — 머클 증명이 이전 루트를 재구성하고, 새 루트가 정확히 이 변경을 적용한 결과인지
어느 하나라도 통과하지 못하면 증명을 생성할 수 없습니다.
증명이 확인하지 않는 것
여기서는 인상적으로 들리는 것보다 정확한 것이 더 중요합니다:
- 결제는 회로 내부에서 검증되지 않습니다. 트랜잭션이 올바른 수수료를 지불했는지,
BUY가 실제로 자금을 이전했는지는 레지스트라가 오프체인에서 강제하며, 공개된 열람 키로 체인을 재생하는 누구나 확인할 수 있습니다. zkVM 안에서 노트 소유권을 증명하려면 오늘날 배치 전체에 드는 비용보다 훨씬 큰 비용이 들고, 게다가 복제가 이미 제공하는 것보다 더 약한 보장을 줄 뿐입니다 — 회로는 노트 커밋먼트만 볼 수 있지만, 재생하는 인덱서는 복호화된 금액과 메모를 봅니다. - 회로는 입력이 진짜 체인이었음을 증명하지 않습니다. 이 배치가 주어졌을 때 전이가 규칙을 따른다는 것을 증명할 뿐입니다. 그 배치가 진짜이고 완전하며 올바르게 정렬된 명령 흐름인지는 복제가 확립합니다 — 신뢰와 프라이버시를 참조하세요.
그래서 PiNS는 부정을 막는 것이 아니라 드러나게 만듭니다. 잘못된 배치는 애초에 증명될 수 없고, 진짜 체인에서 오지 않은 배치는 모든 독립 인덱서에 의해 반박됩니다.
공개 출력
각 증명은 자신과 영구히 결속된 3개의 값에 약속합니다:
| 출력 | 설명 |
|---|---|
old_root | 이 등록 이전의 머클 트리 루트 |
new_root | 이 등록 이후의 머클 트리 루트 |
end_block_height | 해당 등록 배치의 마지막 PIVX 블록 |
end_block_height는 체크포인트처럼 증명을 특정 PIVX 블록에 고정합니다. 누구나 공개된 열람 키로 그 높이까지 체인을 스캔해, 메모와 금액이 배치가 주장한 내용과 일치하는지 확인할 수 있습니다.