작업 흐름
PIVX 이름 지정 서비스(PiNS)를 사용하면 사용자는 사람이 읽을 수 있는 도메인 이름(예: myname.pivx)을 등록, 업데이트, 나열 및 전송할 수 있으며 이를 PIVX shielded(Sapling) 주소에 안전하게 매핑할 수 있습니다.
PIVX은 범용 스마트 계약이 없는 UTXO 기반 블록체인이기 때문에 도메인 레지스트리와 같은 복잡한 데이터베이스 시스템을 기본적으로 실행할 수 없습니다. 이 문제를 해결하기 위해 PiNS는 오프체인 작업을 실행하고 PIVX에 데이터를 저장하며 Arbitrum에 보안을 고정하는 롤업 스타일 아키텍처를 사용합니다.
시스템은 5개의 상호 연결된 구성 요소로 구동됩니다.
1. PIVX 블록체인: 데이터 가용성 계층
이름 등록(REG), 주소 업데이트(UPD), 소유권 이전(CHG), 시장 상장(LST), 상장 해제(ULT) 또는 구매(BUY) 등 사용자가 취하는 모든 작업은 기본 PIVX 거래로 시작됩니다. 거래의 거래 메모 필드에 구조화된 텍스트 명령이 포함되어 있습니다(예: PiNS:1:REG:domain:address:pubkey:nonce:signature).
- PIVX 체인은 정보의 원천입니다. 모든 도메인 명령을 영구적으로 저장합니다. 기록된 PIVX 트랜잭션 없이는 상태 변경이 발생할 수 없습니다.
2. 등록자 노드: 시퀀서
자동화된 등록 노드는 PIVX 블록체인을 스캔합니다. 도메인 명령을 읽고 사용자가 올바른 거래 수수료를 지불했는지 확인하고 작업을 대기열에 추가합니다. 등록자는 10분마다 이러한 작업을 단일 배치로 묶습니다.
3. SP1 zkVM: 영지식 엔진(by Succinct)
일괄 트랜잭션은 **SP1 영지식 가상 머신(zkVM)**으로 전송됩니다. zkVM은 엄격한 프로토콜 심판자 역할을 하는 특수한 Rust 게스트 프로그램을 실행합니다. 증명자는 배치의 모든 트랜잭션을 확인합니다.
- 서명이 유효하고 실제 도메인 소유자가 서명했습니까?
- 재생 공격을 방지하기 위해 nonce가 엄격하게 증가하고 있습니까?
- 도메인 접두어 형식이 올바르게 지정되어 있나요?
BUY거래는LST거래에 지정된 정확한 가격을 지불합니까?- 수학적 Merkle 증명을 사용하여
REG0__이REG1__로 올바르게 전환됩니까?
모든 규칙이 충족되면 zkVM은 ZK-SNARK 암호화 증명(Groth16 사용)을 생성합니다. 이 증명은 다음과 같이 수학적으로 선언하는 작은 인증서입니다. "상태 루트 A에서 시작하여 이 유효한 트랜잭션 배치를 적용한 후 새로운 상태 루트는 B입니다."
이 게스트 프로그램의 모든 컴파일된 버전은 **확인 키(vkey)**라는 고유한 암호화 식별자를 생성합니다. REG2__는 컴파일된 게스트 프로그램 구조 자체의 32바이트 해시입니다. 인증 코드 한 줄이라도 수정되면 프로그램은 완전히 다른 REG3__로 컴파일됩니다.
4. Arbitrum 스마트 계약: 앵커
생성된 ZK 증명과 공개 입력은 Arbitrum의 PiNSANchor 스마트 계약으로 전송됩니다. 계약은 결제 게이트웨이 역할을 합니다.
- 암호화 바인딩: 스마트 계약 내에서
REG4__(게스트 프로그램의 예상 32바이트 해시)가 온체인에 저장됩니다. 증명이 제출되면 계약은 증명과REG5__을 Succinct SP1 Verifier Gateway로 전달합니다. - 키 잠금 유효성 검사: 확인 게이트웨이는 등록된
REG6__과 일치하는 정확한 게스트 프로그램에 의해 생성된 경우에만 증명을 승인합니다. - 증명이 유효하고 등록된
REG7__에 대해 확인된 경우 계약은 전 세계적으로 허용되는 공식 상태 루트를REG8__로 업데이트하고 기록에 저장합니다. - 단일 규칙을 위반했거나 수정된 게스트 프로그램(다른
REG9__을 생성함)을 사용하여 증명이 생성된 경우 계약은 거래를 거부하여 무단 상태 전환을 방지합니다.
5. 분산 인덱서: 확인자
누구나 독립적인 인덱서 노드를 실행할 수 있습니다. 인덱서는 PIVX 블록체인에서 도메인 트랜잭션을 검색하고 Arbitrum 계약에서 확인된 루트 체크포인트를 검색합니다. 그들은 트랜잭션을 로컬로 적용하고, 자체 머클 트리를 계산하고, 로컬 루트가 Arbitrum 체크포인트와 일치하는지 확인합니다.
- 이렇게 하면 모든 인덱서가 실행되는 위치에 관계없이 항상 도메인을 정확히 동일한 대상 주소로 확인합니다(분산된 끝에서 단일 통합 상태 유지).