FastPQ
FastPQ bo ' lmoqda Iroha Bu ... STARK tanlangan ijro ta'sirlari uchun isbot yo'li. Bu odatdagi tranzaksiyalarni bajarish yoki konsensusni almashtirmaydi. Transaksiyalar hali ham o ' tmoqda ISI, IVM, va Sumeragi odatdagidek; FastPQ deterministik ijro guvohlarini iste'mol qiladi va qo'llab-quvvatlanadigan effektlarni dalil partiyalariga aylantiradi.
Hozirgi uy egasi integratsiyasi uchta asosiy yoʻlga ega:
- blokni amalga oshirish paytida qayd etilgan shaffof raqamli aktiv o'tkazmalari
- Nexus ta'minlangan yo'nalishdagi relaylar AXT ko'rsatkich zarfida FastPQ bog'lovchi
- SCCP ochiq tekshirish qadoqchasida FastPQ isbotni o'rab oladigan shaffof xabarlarni tasdiqlovchi yordamchilar
Shohidlik yo'lini ko'chirish
Ochiq raqamli o'tkazuvlar ko'rsatma muvozanatni mutatsiya qilganda tuzilgan o'tkazish transkripti yaratadi. Transkript qayd etadi:
- manba hisobvarag'i, maqsadli hisobvaraq, aktivni aniqlash va miqdori
- O'tkazishdan oldin va keyin jo'natgich va qabul qiluvchining balanslari
- partiya hash sifatida ishlatiladigan tranzaksiya kirish nuqtasi
- taqdim etuvchi hisob raqamidan olingan vakolat to'g'risida ma'lumot
- Single-delta transkripsiyalari uchun Poseidon digest
Kataklarni o'tkazishda bir nechta deltalardan iborat transkript ishlatiladi. O'sha holda, bitta deltaga ega bo'lgan "Poseidon" digesti yo'q.
Blokni yakunlash paytida Iroha ushbu transkripsiyalarni kirish nuqtasi hashidan guruhlaydi. Ijro guvohligi keyinchalik dastlabki transkripsiya to'plamlarini ham, prover uchun tayyorlangan FastPQ o'tish partiyalarini ham olib keladi.
Har bir transfer delta ikki oʻtish satrlariga aylanadi:
| Qoʻshish | Asosiy shakli | Oldingi qiymat | Qiymatdan keyin |
|---|---|---|---|
| Yo ' lovchi debeti | asset/<asset-definition>/<source-account> | oldingi jo ' natuvchi bilansi | jo ' natuvchining balansidan keyin |
| Qabul qiluvchi kreditlari | asset/<asset-definition>/<destination-account> | oluvchi balansidan oldin | oluvchi balansidan keyin |
Raqamli qiymatlar to'liq sonli guvoh birliklariga normalashtiriladi. FastPQ partiyasi uchun qiymat tanlangan o'nlik ko'rsatkichda salbiy bo'lmagan u64 sifatida ifoda etilishi mumkin bo'lmasa rad etiladi.
Davlat mablag'lari
Har bir FastPQ o'tish partiyasida blok va ijro kontekstiga dalilni bog'laydigan ommaviy kirish ma'lumotlari mavjud:
| Kiritish | Maʼnosi |
|---|---|
dsid | Maʼlumotlar maydonining identifikatori kichik baytlar sifatida kodlangan |
slot | Blok yaratish vaqti nanosekundlarga aylantiriladi |
old_root | Oʻlim guvohlaridan kelib chiqqan ota-ona davlatining ildizlari |
new_root | Hukm qilish guvohlaridan kelib chiqqan post-davlat ildizlari |
perm_root | Poseidonning faol rolga ruxsat berish bilan bogʻliq majburiyatlari |
tx_set_hash | Tashkilot va vaqtni qoʻzgʻatadigan kirish nuqtasi hashlari ustidan hash |
Uy egasi fastpq-lane-balanced ni ushbu partiyalar uchun qo'yilgan kanonik parametr sifatida ishlatadi.
Matematikaviy model
Ushbu bo'limda joriy Rust prover va verificator tomonidan amalga oshirilgan aritmetika tasvirlanadi. Quyida keltirilgan barcha maydon operatsiyalari Goldilocks boshlangʻich maydoni ustida:
FastPQ dala majburiyatlari uchun F o'rniga Poseidon2dan foydalanadi. Spongning kengligi t = 3, darajasi r = 2 va quvvati 1 bo'ladi. Hash 2-darajali bloklarda maydon elementlarini o'z ichiga oladi va yakuniy permutatsiya qilishdan oldin bitta maydon elementi 1 qo'shadi:
Byte simlari 7 bytli kichik endiklar bilan to'planadi, shuning uchun har bir a'zo p dan kamroq bo'ladi:
Domenlar boʻyicha ajratilgan maydon hashlari quyidagicha ifodalanadi:
Byte-domain digestlaridan boshlanadigan hashlar uchun FastPQ birinchi sakkiz kichik indian byetlarini maydonga xaritalaydi:
Bu yerda Hash Iroha ning iroha_crypto::Hash::new 32-baytli Blake2bVar digestini anglatadi, agar formulada Poseidon2 yoki SHA-256 nomi aniq berilmagan bo'lsa.
Maydon aritmetikasi
Rust kodi maydon elementlarini [0,p)dagi kanonik u64 qiymatlari sifatida ifodalaydi. Qo'shish va kamaytirish quyidagilardir:
Koʻpaytirish birinchi navbatda 128 bitli mahsulotni hisoblaydi:
Goldilocks kamaytirish keyin kimlik ishlatiladi:
Agar:
so'ngra reduktor hisoblaydi:
Amalga oshirish sharti bilan p ni qo'shadi yoki chiqarib tashlaydi. Natija kanonik bo'lishigacha. Imzolangan to'liq sonlar, masalan balans deltalari quyidagilardan iborat bo'ladi:
Poseidon2 Permutatsiya
Poseidon2 permutatsiya holati quyidagicha:
Uning " S-box " nomi:
FastPQ to'rtta to'liq turdan, ellik yettita qisman turdan, so'ngra yana to'rt nafar to'la turdan foydalanadi. c_r = (c_{r,0}, c_{r,1}, c_{r,2}) davraviy konstantalarga ega bo'lgan to'liq round:
Ba'zi qismlar:
Barcha qo'shish va ko'paytirishlar F. Kanonik MDS matrisi quyidagilardan iborat:
Hudud hashsizligi nol holatdan boshlanadi. Har bir to'liq stavka-2 blok uchun (u,v):
So'nggi blokda 1 so'nggi permutatsiyadan oldin to'ldirish elementi. x_0.
Jamoatga kiritiladigan ma'lumotlar
Uy egasi u64 qiymatini 16-bayt maydonining birinchi sakkiz kichik bytilariga yozib, ma'lumotlar maydoni identifikatorini kodlaydi:
Blok yaratish vaqti millisekundlardan nanosekundlarga aylantiriladi:
Transaction-set hash toʻgʻri yoʻlga qoʻyilgan kirish nuqtasi hashlariga nisbatan byte-domin hash hisoblanadi:
qaerda h_i Transaksiya va vaqtni qo'zg'atadigan kirish nuqtasi hashlari tarqatilgan. IO, agar perm_root yoki tx_set_hash barchasi nol bo'lsa, prover fallback qiymatlarini to'ldiradi:
Raqamli normalizatsiya
Har bir uzatish delta uchun maqsadli o'nlik ko'rsatkich miqdori bo'ylab eng yuqori kesilgan ko'rsatkichi va ikkala muvozanat sur'atlari:
A Numeric mantissa bilan qiymat m va hajmi q faqat m >= 0 va q <= s. Uning FastPQ guvohning qiymati quyidagicha:
Normallashtirilgan natija u64 ga mos bo'lishi kerak.
Kanonik tartibga solish
Ko'rsatkichlar qurilishidan oldin partiya o'tish kalitlari, ishlash darajasi va asl qo'shish indekslari bo'yicha tartiblanadi:
Sortlangan o'tishlarning fastpq:v1:ordering domeni va Norito kodlash usuli bo'yicha Poseidon2 maydonining hashini tashkil etish majburiyati:
qaerda P 7 baytli paket bo'ladi, E bo ' lmoqda Norito kodlash, D_o bo ' lmoqda fastpq:v1:ordering, va T* to'g'rilashtirilgan o'tish ro'yxatidir.
Oʻtkazish tenglamalari
O'tkazish summasi a, jo'natgich saldi f va qabul qiluvchining saldi t uchun, izni yaratishdan oldin FastPQ normallashtirilgan guvoh qiymatlarini tasdiqlaydi:
Oʻtish qatorlari keyinchalik kodlanadi:
Ko'rsatkich ichida imzolangan deltalar F ga kamaytirilgan:
Optativ yagona delta o'tkazib yuborish digesti kodlangan o'tkaziladigan oldindan tasvirni amalga oshiradi:
Ko'p delta uzatish transkripsiyalari uchun joriy formatda ushbu yuqori darajadagi tarjima yo'q bo'lishi kerak.
Oʻtkazish transkripsiyalari uchun qabul qiluvchi organni isteʼmol qilish:
Izlar qatorlari
Sortlangan o'tish ro'yxatida n haqiqiy satrlar bo'lsin.
0..n-1 qatorlari faol; n..N-1 qatorlari to'ldirish satrlaridir. Har bir haqiqiy qatorda bitta operatsion tanlovchining seti mavjud:
Barcha selektor ustunlari Boolean:
Ruxsatlarni qidirish qatorlari to'g'ri rol berish va roli bekor qilish qatorlaridir:
Raqamli operatsion satrlar uchun:
Quruvchi shuningdek , har bir aktiv boʻyicha ishlaydigan deltalarni kuzatadi:
Faqat "Mint" va "burn" qatorlari ta'minot hisoblagichini yangilaydi:
Metadonlar va ma'lumotlar maydonining izlari ustunlari qator materiallashuvidan oldin hosil bo'lgan maydon hashlari:
Metadata hash, ma'lumotlar maydonining hash va slotlar yonma-yon iz qatorlarida barqaror:
Merkle ustunlarini oʻtkazish
O'tkazib yuborish satrlari 32 darajali kamroq Merkle yo'nalishini o'z ichiga oladi. Agar uy egasi dalil yo'q bo'lsa, prover qator kalitidan deterministik yo'nalishni sintezlaydi, oldindan muvozanatni saqlaydi va satr jo'natgich yoki qabul qiluvchi tomondanmi.
Sintetik yo'nalishlar uchun aromat tuzlari fastpq:smt:from jo'natgich qatorlar va fastpq:smt:to qabul qiluvchi qatorlar uchun:
Sintetik varaq va ichki nodlar quyidagilardan iborat:
Iz bitini b_l, aka-uka s_l, kirish nodini x_l va chiqish nodini x_{l+1} har bir darajadagi qayd etadi. Kodning shoxkon konvensiyasi bilan:
Ruxsat berish hashlari
Roli berish va bekor qilish satrlari ruxsat guvohini hash qilish:
Qo'shni ruxsatlar jadvali ilovalarni rol baytlari, ruxsat baytlari va davr baytlari bo'yicha ajratadi, so'ngra Poseidon2 Merkle daraxtini yaratadi:
Bo'sh kenglik darajasi oxirgi elementni ikki marta ko'paytiradi.
O'z izini yo'qotish
Har bir iz ustuni uchun c, FastPQ birinchi navbatda iz maydoni bo'ylab ustun qiymatlarini interpollaydi va koeffitsiyent vektorini hash qiladi:
Iz ildizlari ustun majburiyatlari ustidan Poseidon2 Merkle ildizidir:
Yakuniy izlanish majburiyati domen, parametrlar to'plami, izlanish shakli, ustun o'chirib tashlash va izlanish ildizidagi byt hashdir:
D_c bo'lganda fastpq:v1:trace_commitment.
AIR tarkibi
V1 AIR tarkib qiymati qator-lokal qoldiqlarning chiziqli kombinatsiyasi hisoblanadi. Transkript namunalari ikkita qiyinchilikni ko'rsatadi:
Har bir qo'shni satr juftligi uchun (i,i+1) prover quyidagilarni hisoblaydi:
Qoldiqlar rho kod tartibida quyidagicha:
Hisob ustunlari bo'lgan satrlar uchun:
Va barchning barqaror kontekst ustunlari uchun:
Tekshirishchi A_i namuna ko'rib chiqilgan qatorning ochilishlarini qayta hisoblab chiqadi va uni AIR tarkibidagi Merkle ildizida belgilangan tarkibiy qiymatga nisbatan tekshiradi.
Qidiruv mahsuloti
Ruxsatlarni qidirish akkumulyatorida Fiat-Shamir musobaqasi gamma qo'llaniladi. s_perm va perm_hash ning past darajadagi kengaytma baholari davomida ishlaydigan mahsulot quyidagicha:
Ko'rsatkichlar:
Kichik darajadagi kengaytma
omega_T izlanish domenlari generatorini, omega_E baholash domenlari generatorini va g konfiguratsiyalangan coset offseti bo'lishi kerak. v_i qiymatlariga ega bo'lgan izlanish ustuni uchun interpolatsiya a_j koeffitsiyentlarini hosil qiladi:
Past darajali kengaytma kosetdagi bir xil polinomni baholaydi:
Amalga oshirilishi ko'rsatkichlarni FFT dan oldin coset ofsetning kuchlari bilan ko'paytirish orqali hisoblab chiqiladi:
so'ngra baholash domenida a' ni baholash.
CPU FFT bit-inversed kirish usuli bo'yicha iterativ radix-2 Cooley-Tukey transformasi. bosqich uzunligi L, yarim uzunligi H=L/2 va bosqich ildizida:
har bir tola hisoblaydi:
Reversal FFT omega^{-1} bilan bir xil transformatsiyani amalga oshiradi va reversal domen o'lchamiga ko'tarilgan:
Katalog ildizlari foydalanishdan oldin tasdiqlanadi:
Katalog ildizidan olingan kichikroq domenlar uchun generator quyidagicha:
Qatlam va barg hashlari
LDE dan keyin FastPQ har bir satrni barcha LDE ustunlarda hash qiladi. m ustunlari uchun:
Agar satr hashlari baholash domenidan ko'ra iz domenida bo'lsa, prover ushbu bitta satr hash ustunini LDE jarayoni bilan interpolatsiya qiladi va uzaytiradi.
Merkle ochilishlari
LDE qiymatlari quyidagi qismlarga bo'lingan:
Har bir parcha barg quyidagicha:
Merklning ota-onasi:
O'zgarmas darajalar so'nggi nodni takrorlaydi. So'rov yo'llari har bir darajadagi so'rov varaqining indeks paritetiga ko'ra chap yoki o'ngga hash qilish orqali tasdiqlangan.
i ko'rsatkichdagi barg uchun (s_0,\ldots,s_{d-1}) yo'nalishi R ildizga nisbatan takrorlanishi bilan aniqlanadi:
Chek faqat quyidagi hollarda o'tkaziladi:
AIR izlar qatorli barglar quyidagicha:
AIR kompozitsiya barglari quyidagicha:
LDE so'rovni ochish, shuningdek, baholash indeksida i ochilgan qiymat uning tasdiqlangan qismida mavjudligini tekshiradi:
FRI Qo'shish
FRI AIR tarkibining baholovchilarini amalga oshiradi. Har bir tur uchun l, transkript namunalari qiyinchilikka duchor bo'ladi beta_l. qatlam oxirgi qiymatni takrorlash orqali aritasining ko'paytirishiga to'ldirilgan.
a - bu FRI ariteti bo'lgan joyda. Tekshiruvchi har bir namunaga olingan so'rov zanjirida quyidagilarni tekshiradi:
va har bir ochilgan FRI guruhni tegishli FRI qatlamli ildiz bilan tasdiqlaydi.
Fiat-Shamir transkripti
Kanonik parametrlar katalog transkript hashini SHA3-256 deb belgilaydi. Hozirgi prover va tasdiqlovchi implementatsiyasi iroha_crypto::Hash::new bilan musobaqa bytlarini keltirib chiqaradi, bu 32 baytli Blake2bVar digestidir, so'ngra birinchi sakkiz kichik indian bytlarni F ga kamaytiradi:
Muammo qo'ng'iroqlari transkripsiya holatiga to'liq o'qishni qo'shadi. Takrorlash tartibi quyidagicha:
- IO, protokol versiyasi, parametr versiyasi va parametr nomi
- LDE ildiz va izlar ildiz
gamma- AIR tarkib muammolari
alpha_0,alpha_1 - AIR orzu ildiz va AIR tarkibiy ildiz
- buyuk mahsulot qidirish
- FRI qatlam ildizlari va
beta_lqiyinchiliklari - namuna ko'rsatkichlari
So'rovli namuna olish 32-baytlik musobaqalarni chizishni davom ettiradi va uni talab qilingan yagona indekslar soniga ega bo'lgunga qadar u64 kichik xilma-xil qismlar sifatida o'qiydi:
Namunalar to'plami tartib bo'yicha qaytariladi.
Verifikatorni takrorlash
Tekshiruvchi birinchi navbatda partiya majburiyatini qayta hisoblaydi:
va quyidagilarni talab qiladi:
Bundan tashqari, u IO davlatni tiklaydi:
Har bir maydon dalilning ommaviy IO byte-for-bytega mos bo'lishi kerak. Keyin tasdiqlovchi o'sha transkriptni rekonstruksiya qilib, uni quyidagicha keltirib chiqaradi:
Har bir namunaviy so'rov uchun q, u quyidagilarni tekshiradi:
va:
AIR tarkibning ochilishi R_air_composition ostida tasdiqlanishi kerak. FRI zanjiri keyinchalik xuddi shu A_q dan boshlanadi va FRI tugma chizig'i ostida tasdiqlangan oxirgi FRI varaq bilan yakunlanishi kerak.
Masalchi nimalarni tekshiradi
FastPQ proveri izni yaratishdan oldin partiya tartibini o'tish tugmasi, operatsion daraja va qo'shish tartibi bo'yicha kanonikalashtiradi. O'tkazish satrlari transkript metadatalarini ham talab qiladi. Transfer satrlari mavjud bo'lgan partiya, ammo transfer transkriptlari yo'q.
O'tkazish transkripsiyalari bo'yicha provayderlar tomonidan tekshiruvlar quyidagilarni o'z ichiga oladi:
- jo'natgichning muvozanati past o'tishi mumkin emas
sender_afterteng bo'lishi keraksender_before - amountreceiver_afterteng bo'lishi kerakreceiver_before + amount- transkripsiya partiyadagi har bir o'tkazish satrini qamrab olishi kerak
- Poseidonning bitta deltali dijesining mavjud bo'lganida transkript oldindan ko'rsatilgan tasvirga mos kelishi kerak
- agar kamroq Merkle isbotlari 1 versiyasi sifatida dekodlash kerak bo'lsa; yo'qolgan yo'llar deterministik sintetik isbotlar bilan to'ldiriladi
Izda o'tkazish, mint, yoqish, rol berish, roli bekor qilish, metadatalar to'plami va ruxsat qidirish satrlari uchun selektor ustunlari mavjud. Raqamli operatsion satrlarda imzolangan deltalar ham bor.
Provor Lane
irohad ishga tushirishda FastPQ prover yo'nalishini boshlaydi, agar prover backendni dastlabkilashtirish mumkin bo'lsa. Yo'nalish cheklangan navbatga ega fon vazifasidir. Bir blok ijro guvohini ishlab chiqargandan so'ng, commit yo'li blok hash, balandlik, ko'rinish va guvohlarni o'z ichiga olgan prover vazifasini taqdim etadi.
Agar yo'nalish ishlamayotgan bo'lsa yoki navbat to'liq bo'lsa, ish o'tkaziladi va odatdagidek blokni qayta ishlash davom etadi. Bu shuni anglatadiki, orqa fon prover yo'nalishi tranzaksiya qabul qilish yoki konsensus darvoza emas. Bu allaqachon amalga oshirilgan holat ustidan isbot ishlab chiqarish yo'li hisoblanadi.
Yo ' lda quyidagilardan foydalanib prover qurilgan:
parameter = "fastpq-lane-balanced"
execution_mode = auto | cpu | gpu
poseidon_mode = auto | cpu | gpuauto ko'rsatgichga mavjud orqa qismni tanlash imkonini beradi. cpu o ' rnatish uchun CPU. gpu afzalliklari GPU ijro etish, CPU orqa tomonda talab qilingan yadrolardan foydalanish imkoniyati bo'lmagan holda.
Tekshirish
FastPQ isbot tekshiruvi kanonik partiya majburiyatini qayta tiklaydi va ommaviy transkriptini almashtiradi. Tekshiruvchi protokol versiyasini, parametrlar o'rnatilgan versiyani, takrorlash cheklovlarini, izlanish majburiyatini, jamoatchi kirishlarni, namunalashtirilgan Merkle ochilishlarini, AIR ochilishlarini va FRI so'rov zanjirini tekshiradi.
Dastlabki takrorlash cheklovlariga quyidagilar kiradi:
| Chegara | Koʻrsatkichlar |
|---|---|
| Oʻtish qatorlari | 256 |
| Batchning foydali yuk hajmi | 256 KiB |
| FRI qatlamlari | 16 |
| Savollar | 128 |
Nexus Tekshirilgan relaylar
Nexus AXT isbot konvertlarida AxtFastpqBinding qo'shilishi mumkin. RegisterVerifiedLaneRelay bajarilganda, Iroha:
- yo'nalish relay qoplamasi va FastPQ issiqlik materialini tekshiradi;
- ma'lumotlar maydonini va rootni tekshiradi
- AXT isbot qadoqchasini ko'chirish
fastpq_bindingtalab qiladi- FastPQ partiyasini o'sha bog'lanishdan qayta qurish
- o'rnatilgan FastPQ isbotni dekodlash
- qayta tiklangan partiya va isbot haqida FastPQ tekshiruvchini chaqiradi
Agar tekshirish muvaffaqiyatli bo'lsa, Iroha saqlash a VerifiedLaneRelayRecord relay ma'lumotnomasini, asl qadoqchani, isbotli yuk hashini, tekshirish balandligini, manifest ildizini o'z ichiga oluvchi va FastPQ bog'lovchi.
Lane relay zarflari ham kompakt FastPQ isbotlovchi materialni o'z ichiga oladi. Material yo'l identifikatori, ma'lumotlar maydonining identifikatori, blok balandligi, tasdiqlash balandligi, blok boshliq hash, qarorlash hash va manifest ildizidan iborat. Relay faqat QC va FastPQ tasdiqlangan materiallarga ega bo'lganida qo'shiladi.
AXT Bog'lovchi matematika
Nexus AXT zarflari uchun, AxtFastpqBinding isbotni takrorlashdan oldin kanonikalashtirilgan. Bo'sh parametr qiymatlari andoza fastpq-lane-balanced; bo'sh tasdiqlovchi id va versiyasi andoza fastpq va v1; talab turi qisqartirilgan va pastga ko'paytirilgan.
AXT FastPQ ommaviy kirishlar deterministik bayt hashlari hisoblanadi:
AXT o'tish kalitlari quyidagilardir:
authorization talabnomasiga ro'yxatni qo'shish satri kiritiladi:
compliance da'vosi ikkita metadata satrini kiritadi: bittasi siyosat uchun va bittasi maqsadli ma'lumotlar maydonlari uchun.
tx_predicate va value_conservation uchun, bog'lanishda ijobiy manba yoki belgilangan miqdor mavjud bo'lganda aniq ta'sir miqdori ishlatiladi. Aks holda kod cheklangan deterministik miqdordan kelib chiqadi:
Keyin bir xil o'tkazish tenglamalari qo'llaniladi:
Sentetik jo'natgich va qabul qiluvchining hisob raqamlari asosiy urug'lardan hosil qilinadi:
Oʻtkazish partiyasi hash quyidagicha:
AXT partiya manifestini SHA-256 kanonik bog'lanishning Norito kodlash usulidan o'chirish:
SCCP Ochiq xabarni tasdiqlovchi hujjatlar
SCCP yordamchi qutisi ham shaffof zanjirli o'tkazib yuborilgan xabarlarni tasdiqlash uchun FastPQ dan foydalanadi. Ushbu yo'l irohad orqa fon prover yo'nalishidan ajralib turadi. U FastPQ partiyasini to'g'ridan-to'g'ri SCCP xabarni tasdiqlovchi paket va manifestdan yaratadi, so'ngra hosil bo'lgan dalilni ochiq tekshirish uchun o'rab oladi.
SCCP partiyasida fastpq-lane-balanced va uchta metadata o'tishi ishlatiladi:
| Ochiq | Operatsiya |
|---|---|
sccp:transparent:v1:statement | MetaSet |
sccp:transparent:v1:context | MetaSet |
sccp:transparent:v1:payload | MetaSet |
Uning ommaviy kirish vositalari SCCP shaffof ichki isbotdan olinadi:
| FastPQ kirish | SCCP manbai |
|---|---|
dsid | Blake2b faylining birinchi 16 baytlari bashorat hashini oʻz ichiga oladi . |
slot | Yakuniylik balandligi |
old_root | Faydali yuk hash |
new_root | Bagʻishlanish ildizlari |
perm_root | Nihoyat blok hash |
tx_set_hash | Bayonot hash |
SCCP kanonik kodlovchilar to'liq sonlarni kichik xilda yozadi va o'zgaruvchan uzunlikdagi baytlar qatorlarini quyidagicha kodlaydi:
Ochiq ommaviy kirish bytlari qatorida quyidagilar mavjud:
shaffof baytlar - versiya, zanjir oilasi, mahalliy va qarama-qarshi domenlar, xavfsizlik modeli, quvur boshqaruvi, hisob kodeksi, yakuniylik modeli, tasdiqlovchi maqsad, tasdiqlovchi orqa tomoni oilasi, uzunlikdagi prefiks qilingan zanjir/orqa tomoni/manifest maydonlari, manzil bog'lovchi hash; hisob kodek kalitlari, foydali yukning turi, ommaviy kirish bytlari va foydali yuk hash.
Ushbu isbot yo'li uchun FastPQ ma'lumotlar maydonining identifikatori Blake2b digestning birinchi o'n oltita bayti hisoblanadi:
SCCP FastPQ partiyasi aniqlik bilan:
so'ngra xuddi shu FastPQ buyurtma qoidasiga ko'ra tartibga solinadi.
OpenVerify tekshiruvchining majburiyati SHA-256 bo'yicha SCCP xabarning orqa tomoni nomi va kanonik FastPQ tekshiruvchining tavsifi:
Quru FastPQ dalil Norito-kodlangan StarkFriOpenProofV1, so'ngra bir OpenVerifyEnvelope orqa tomoni bilan Stark. SCCP tekshiruvi o'sha-o'sha tuzatish FastPQ to'plam va manifestdan partiya, ochiq tekshirish qadoqlagi metadatalarni tekshiradi va FastPQ qayta tiklangan partiyaning tekshiruvchisi va isbotlovchi qismlari.
Parametrlar toʻplami
Kanonik parametrlar katalogida ikkita parametr to'plami mavjud. Uy egasi prover yo'nalishi hozirda fastpq-lane-balanceddan foydalanadi.
| Parametri | Maqsad | Maydon | Hashlar | FRI |
|---|---|---|---|---|
fastpq-lane-balanced | muvozanatli provayder oʻtkazib berish | Oltin boʻgʻimlar kvadrat kengaytmasi | Poseidon2 majburiyatlari, katalog SHA3 etiketi | 8-o'rin, 8, 46 ta so'rovlar |
fastpq-lane-latency | kechikish uchun sezgir yo'llar | Oltin boʻgʻimlar kvadrat kengaytmasi | Poseidon2 majburiyatlari, katalog SHA3 etiketi | 16-o'rin, 16, 34 ta savollar |
Ikkalasi ham 128-bitli xavfsizlikni maqsad qilib qo'yishadi va 2^16 ning izlanish domen o'lchamidan foydalanadilar. Rust V1 transkript takrorlash kodi hozirda SHA3-256 bilan Fiat-Shamir musobaqasining bytlarini to'g'ridan-to'g'ri chaqirishning o'rniga, iroha_crypto::Hash::new bilan olib keladi.
Rust proveri tomonidan ishlatiladigan aniq katalog konstantalari quyidagilardir:
| Doimiy | fastpq-lane-balanced | fastpq-lane-latency |
|---|---|---|
target_security | 128 | 128 |
grinding_bits | 23 | 21 |
trace_log_size | 16 | 16 |
trace_root | 0x002a247f81c6f850 | 0x6a9f4eb38fb9b892 |
lde_log_size | 19 | 20 |
lde_root | 0x60263388dbbf9b2a | 0x9c9c3a571b6f89ac |
permutation_size | 65,536 | 65,536 |
lookup_log_size | 19 | 20 |
omega_coset | 0x6af325e825ad5c18 | 0x3a5fd4171e3c3a4d |
fri_arity | 8 | 16 |
fri_blowup | 8 | 16 |
fri_max_reductions | 8 | 6 |
fri_queries | 46 | 34 |
Konfiguratsiya
FastPQ konfiguratsiyasi zk.fastpq ostida o'rnatiladi.
[zk.fastpq]
execution_mode = "auto"
poseidon_mode = "auto"
# Optional telemetry labels.
device_class = "apple-m4"
chip_family = "m4"
gpu_kind = "integrated"
# Optional Metal backend tuning.
metal_queue_fanout = 3
metal_queue_column_threshold = 24
metal_max_in_flight = 5
metal_threadgroup_width = 128
metal_trace = false
metal_debug_enum = false
metal_debug_fused = falseO'sha o'rnatish va telemetriya etiketlarini irohad dan bekor qilish mumkin:
irohad --fastpq-execution-mode auto
irohad --fastpq-poseidon-mode cpu
irohad --fastpq-device-class apple-m4
irohad --fastpq-chip-family m4
irohad --fastpq-gpu-kind integratedKonfiguratsiya maydonlari uchun ham atrof-muhit o'zgaruvchilari qo'llab-quvvatlanadi. FastPQ xususiyatiga ega bo'lgan o'zgaluvchilar quyidagilarni o'z ichiga oladi:
FASTPQ_EXECUTION_MODEFASTPQ_POSEIDON_MODEFASTPQ_DEVICE_CLASSFASTPQ_CHIP_FAMILYFASTPQ_GPU_KINDFASTPQ_METAL_QUEUE_FANOUTFASTPQ_METAL_COLUMN_THRESHOLDFASTPQ_METAL_MAX_IN_FLIGHTFASTPQ_METAL_THREADGROUPFASTPQ_METAL_TRACEFASTPQ_DEBUG_METAL_ENUMFASTPQ_DEBUG_FUSED
Metriklar
Telemetriya o'rnatib qo'yilganda FastPQ backend tanlash va Metal ish vaqti xatti-harakatini ko'rsatkichlarni eksport qiladi:
| Metrik | Maʼnosi |
|---|---|
fastpq_execution_mode_total | Orqa tomoni va qurilma etiketlari boʻyicha talab qilingan va hal etilgan ijro usuli |
fastpq_poseidon_pipeline_total | Soʻragan va hal qilingan Poseidon quvurining yoʻnalishi |
fastpq_metal_queue_depth | Metall navbat cheklovlari, parvozda maksimal soni, jo'natish soni va namuna olish oynasi |
fastpq_metal_queue_ratio | Metall navbatda mashgʻul va oʻzaro taqqoslash nisbatlari |
fastpq_zero_fill_duration_ms | Metall oʻtishlari uchun toʻldirish muddati nol . |
fastpq_zero_fill_bandwidth_gbps | Null toʻldirish bandwidthlari |
Umumiy ishlashni sinchkovlik qilish uchun Ishlab chiqarish va metrikalar da ko'rsatilgan konsensus va navbat signallari bilan ularni ishlating.
Bog'liq ma'lumot
- Ishlab chiqarilgan turning tafsilotlari uchun ma'lumotlar modeli sxemasi
FastpqTransitionBatchFastpqPublicInputsTransferTranscriptAxtFastpqBindingLaneFastpqProofMaterialirohadFastPQ variantlari