Рабочы працэс
Служба імёнаў PIVX (PiNS) дазваляе карыстальнікам рэгістраваць, абнаўляць, пералічваць і перадаваць зручныя для чытання даменныя імёны (напрыклад, myname.pivx) і бяспечна супастаўляць іх з адрасамі PIVX shielded (Sapling).
Паколькі PIVX з'яўляецца блокчейном на аснове UTXO без смарт-кантрактаў агульнага прызначэння, ён не можа першапачаткова запускаць складаную сістэму баз дадзеных, такую як рэестр дамена. Каб вырашыць гэтую праблему, PiNS выкарыстоўвае Архітэктуру ў стылі Rollup, якая выконвае аперацыі па-за ланцужком, захоўвае даныя на PIVX і замацоўвае бяспеку на Arbitrum.
Сістэма сілкуецца ад пяці ўзаемазвязаных кампанентаў:
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: Механізм нулявых ведаў (ад Succinct)
Пакет транзакцый адпраўляецца ў SP1 Zero-Knowledge Virtual Machine (zkVM). ZkVM запускае спецыялізаваную гасцявую праграму Rust, якая дзейнічае як арбітр строгага пратаколу. Праверка правярае кожную транзакцыю ў пакете:
- Ці подпісы сапраўдныя і падпісаны фактычнымі ўладальнікамі дамена?
- Ці строга павялічваюцца аднаразовыя нумары, каб прадухіліць атакі прайгравання?
- Ці правільна адфарматаваны прэфіксы дамена?
- Ці плаціць транзакцыя
BUYдакладную цану, указаную ў транзакцыіLST? - Ці правільна
REG0__ пераходзіць уREG1__ з выкарыстаннем матэматычных доказаў Меркла?
Калі ўсе правілы выкананы, zkVM стварае крыптаграфічны доказ ZK-SNARK (з дапамогай Groth16). Гэтым доказам з'яўляецца малюсенькі сертыфікат, які матэматычна дэкларуе: "Пачынаючы з кораня стану A, пасля прымянення гэтай сапраўднай партыі транзакцый новы корань стану - B."
Кожная скампіляваная версія гэтай гасцявой праграмы дае ўнікальны крыптаграфічны ідэнтыфікатар, які называецца Ключ праверкі (vkey). REG2__ - гэта 32-байтны хэш самой структуры скампіляванай гасцявой праграмы. Калі хаця б адзін радок праверачнага кода будзе зменены, праграма кампілюецца ў зусім іншы REG3__.
4. Смарт-кантракт Arbitrum: якар
Згенераванае доказ ZK і яго агульнадаступныя ўводы адпраўляюцца ў смарт-кантракт PiNSAnchor на Arbitrum. Кантракт выступае ў якасці разліковага шлюза.
- Крыптаграфічная прывязка: у смарт-кантракце
REG4__ (чаканы 32-байтны хэш гасцявой праграмы) захоўваецца ў ланцужку. Калі доказ падаецца, кантракт накіроўвае доказ іREG5__ на шлюз праверкі Succinct SP1. - Праверка блакіроўкі ключа: шлюз праверкі зацвердзіць доказ, толькі калі ён быў згенераваны дакладнай гасцявой праграмай, якая адпавядае зарэгістраванаму
REG6__. - Калі доказ сапраўдны і пацверджаны ў адпаведнасці з зарэгістраваным
REG7__, кантракт абнаўляе афіцыйны, глабальна прыняты корань стану даREG8__ і захоўвае яго ў сваёй гісторыі. - Калі было парушана адно правіла або калі доказ быў створаны з дапамогай мадыфікаванай гасцявой праграмы (якая стварала б іншы
REG9__), кантракт адхіляе транзакцыю, прадухіляючы несанкцыянаваныя пераходы стану.
5. Размеркаваныя індэксатары: рэзолверы
Любы можа запусціць незалежны Indexer Node. Індэксатары скануюць блокчейн PIVX на наяўнасць транзакцый дамена і скануюць кантракт Arbitrum на прадмет правераных каранёвых кантрольных кропак. Яны прымяняюць транзакцыі лакальна, вылічваюць сваё ўласнае дрэва Merkle і правяраюць, што іх лакальны корань супадае з кантрольнай кропкай Arbitrum.
- Гэта гарантуе, што ўсе індэксатары, незалежна ад таго, дзе яны запускаюцца, заўсёды вырашаюць дамены па точна аднолькавым мэтавым адрасе (падтрымліваючы адзіны ўніфікаваны стан на размеркаваных канцах).