FastPQ
FastPQ-ը Iroha-ի կողմից ընտրված կատարման ազդեցությունների համար STARK ապացուցող ուղին է: Այն չի փոխարինում գործարքի սովորական կատարումը կամ համաձայնությունը: Գործարքները դեռ շարունակվում են ISI, IVM, եւ Sumeragi-ով, ինչպես միշտ; FastPQ սպառում է դետերմինիստական կատարման վկան եւ վերածում աջակցվող ազդեցությունները ապացույցների խմբերի:
Ներկայիս հյուրընկալող ինտեգրումը ունի երեք հիմնական ուղիներ.
- բլոկի կատարման ընթացքում գրանցված թվային ակտիվների թափանցիկ փոխանցումները
- Nexus ստուգված երթուղային ռեալեր, որոնց AXT ապացուցման փաթեթը պարունակում է FastPQ կապում
- SCCP թափանցիկ հաղորդագրության ապացույցի օգնականներ, որոնք փակում են FastPQ ապացույցը բաց ստուգման փաթեթի մեջ
Վկաների երթուղին փոխանցելը
Թվային փոխանցումները ստեղծում են կառուցվածքային փոխանցման տրանսկրիպտ, երբ հրահանգը փոխակերպում է հավասարակշռությունները:
- աղբյուրի հաշվին, նպատակային հաշվին, ակտիվների սահմանմանը եւ գումարը
- ուղարկողի եւ ստացողի հավասարակշռությունը փոխանցումից առաջ եւ հետո
- գործարքի մուտքային կետի hash-ը, որը օգտագործվում է որպես խմբաքանակի hash
- ներկայացնող հաշվետվությունից ստացված իշխանության ցուցակը
- Պոզեյդոնի դիժեսը մեկ դելտային տրանսկրիպտի համար
Բաժանային փոխանցումներում օգտագործվում է մի քանի դելտա պարունակող տեքստ, այդ դեպքում բացակայում է մեկ դելտայի Պոզեյդոնի թեստը:
Բլոկի վերջնականացման ժամանակ Iroha խմբավորում է այս տրանսկրիպտերը մուտքային կետի хэշի համաձայն: Գործադրման վկանը ապա տեղափոխում է ինչպես սկզբնական տրանսկրիտների փաթեթները, այնպես էլ FastPQ անցումային խմբաքանակները, որոնք պատրաստված են պրոֆերի համար:
Յուրաքանչյուր տրանսֆերային դելտա դառնում է երկու անցումային շարքեր.
| Սարք | Գլխավոր ձեւ | Նախագծային արժեք | Հետագա արժեք |
|---|---|---|---|
| Հեռորդի դեբետ | asset/<asset-definition>/<source-account> | նախորդ ուղարկողի հավասարակշռությունը | ուղարկողի հավասարակշռությունը |
| Գնորդի վարկը | asset/<asset-definition>/<destination-account> | ստացողի հաշվեկշիռը նախ | ստացողի հաշվեկշիռը |
Թվային արժեքները նորմալացվում են ամբողջական թվերի վկայական միավորներով: FastPQ խմբավորման համար մի արժեք մերժվում է, եթե այն չի կարող ներկայացվել որպես ոչ բացասական u64 ընտրված տասնամյակային մասշտաբում:
Հանրային ներդրումներ
Յուրաքանչյուր FastPQ անցումային խմբաքանակ ունի հանրային մուտքագրություններ, որոնք ապացույցը կապում են բլոկի եւ կատարման համատեքստին.
| Ներմուծում | Նշում |
|---|---|
dsid | Տվյալների տիրույթի նույնականացողը կոդավորվում է որպես փոքր բայթներ |
slot | Բլոկի ստեղծման ժամանակը վերածվել է նանոսեկունդ: |
old_root | Ծնողական պետության արմատը ստացվել է մահապատժի վկանից |
new_root | Poststate արմատը ստացվել է մահապատժի վկանից |
perm_root | Պոզեյդոնի պարտավորությունը ակտիվ դերային թույլտվությունների նկատմամբ |
tx_set_hash | Հաշիվը վերապատրաստված գործարքի եւ ժամանակային դրդող մուտքային կետի հաշիվները |
Հյուրընկալողը օգտագործում է fastpq-lane-balanced որպես այդ խմբերի համար սահմանված կանոնիկական պարամետր:
Մաթեմատիկական մոդել
Այս բաժինը նկարագրում է ընթացիկ Rust ստուգիչի եւ հաստատողի կողմից իրականացվող հաշվետվությունը: Ստորեւ ներկայացված բոլոր դաշտային գործողությունները կատարվում են Goldilocks- ի առաջնային դաշտից:
FastPQ Օգտագործում է Poseidon2 F դաշտի պարտավորությունների համար: Սպոնջը լայն է t = 3, տոկոսադրույք r = 2, եւ հզորություն 1. Hash- ը ներբեռնում է դաշտի տարրերը rate-2 բլոկներում եւ մի քանի դաշտային տարրեր ավելացնում 1 նախքան վերջնական փոխարկումը.
Բայթային շղթաները փաթեթավորվում են 7 բայտանոց փոքր-ինչի վերջույթների մեջ, այնպես որ յուրաքանչյուր վերջույթ խիստ ցածր է p:
Դոմեյնային առանձնացված դաշտերի շիշերը ներկայացվում են հետեւյալ կերպ.
FastPQ բայթ-դոմեյնային դիժեստներից սկսած շիշերի համար քարտեզավորում է առաջին ութ փոքր բայտները դաշտում.
Այստեղ Hash նշանակում է Iroha-ի iroha_crypto::Hash::new 32-բայթ Blake2bVar դիժեսը, եթե բանաձեւում բացարձակ անվանում չկա Poseidon2 կամ SHA-256:
Դաշտի հաշվետվություն
Rust կոդը ներկայացնում է դաշտի տարրերը որպես u64 վարկանիշներ [0,p): Բարելավումը եւ հանումը հետեւյալն են.
բազմապատկումը առաջին հերթին հաշվարկում է 128-բիթային արտադրանքը.
Goldilocks կրճատման ապա օգտագործում է նույնականությունը:
Եթե:
ապա կրճատիչը հաշվարկում է.
Իրագործումը պայմանական կերպով ավելացնում կամ հանում է p մինչեւ արդյունքը կանոնիկ լինի: ստորագրված ամբողջ թվերը, ինչպիսիք են հավասարակշռման դելտանները, ներմուծվում են հետեւյալ կերպ.
Պոզեյդոն 2 Փերմուտացիա
Պոզեյդոն 2 փոխարկման վիճակը հետեւյալն է.
Նրա S-կապիկը հետեւյալն է.
FastPQ-ում օգտագործվում է չորս ամբողջական փուլ, քսանհինգ յոթ մասնակի փուլ, ապա եւս չորս լիակատար փուլ: Ամբողջական փուլ ՝ պարագային կայուններով c_r = (c_{r,0}, c_{r,1}, c_{r,2}):
Կիսական փուլը հետեւյալն է.
Բոլոր ավելացումները եւ բազմապատկությունները F են: Քանոնիկ MDS մատրիքը հետեւյալն է.
Field hash- ը սկսվում է զրոյական վիճակից: Յուրաքանչյուր ամբողջական rate-2 բլոկի համար (u,v):
Վերջնական բլոկը հավելում է 1 պարունակող տարրը նախքան վերջին փոփոխությունը: Արտադրանքը x_0 է:
Հասարակական մուտքի պարտավորություն
Հյուրընկալողը կոդավորում է տվյալների տարածքի ID- ն ՝ գրելով դրա u64 արժեքը 16-բայթային դաշտի առաջին ութ փոքր-հասարակական բայտներում.
Բլոկի ստեղծման ժամանակը փոխակերպվում է միլիսեկունդից նանոսեկունդներ:
Transaction-set hash-ը բայթային տիրույթի hash-ն է սորտիացված մուտքի կետի hash-ների վրա.
որտեղ h_i դասակարգված են գործարքի եւ ժամանակի սանձազերծման մուտքային կետերի շիշերը: Պրոֆեսիոնալ հանրության մեջ IO, եթե perm_root կամ tx_set_hash բոլորն էլ զրոյական են, պրովը լրացնում է հետընթաց արժեքները.
Թվային նորմալացումը
Յուրաքանչյուր փոխանցման դելտայի համար նպատակային տասնամյակի մասշտաբը չափի եւ երկու հավասարակշռման ակնթարթների առավելագույն կտրված մասշտաբն է.
Ա Numeric արժեքը mantissa- ի հետ m եւ մասշտաբ q ընդունվում է միայն, երբ m >= 0 եւ q <= s. Իրենց FastPQ վկա արժեքը հետեւյալն է.
Նորմալացված արդյունքը պետք է համապատասխանի u64:
Քանոնիկական կարգադրություն
Հետեւանքների շինարարությունից առաջ, խմբաքանակը դասակարգվում է անցումային բանալիների, գործողությունների կարգի եւ սկզբնական ներմուծման ինդեքսով.
Հրամանագրման պարտավորությունը Poseidon2- ի դաշտի հաշինգն է fastpq:v1:ordering տիրույթի եւ կարգավորված անցումների Norito կոդավորման վրա:
որտեղ P 7-բայթային փաթեթավորում է, E է Norito կոդավորում, D_o է fastpq:v1:ordering, եւ T* է սորտաժված անցումային ցուցակը:
Տրանսֆերային հավասարությունները
Տրանսֆերային գումարի համար a, ուղարկողի հավասարակշռության համար f եւ ստացողի հավասարում t, FastPQ հավաստիացնում է վկաների նորմալացված արժեքները նախքան հետագա կառուցումը.
Դրանից հետո անցումային շարքերը կոդավորում են.
Դիտարկման մեջ ստորագրված դելտաները կրճատվում են F:
Ընտրական միավոր դելտա փոխանցման դիջեսը պարտավորեցնում է կոդավորված փոխանցման նախանկարը.
Բազմդելտային փոխանցման տրանսկրիպտների համար ներկայիս ձեւաչափը պահանջում է, որ այս բարձր մակարդակի պարունակությունը բացակայում լինի:
Հյուրընկալող իշխանությունը փոխանցման տրանսկրիպտերի համար ներմուծում է հետեւյալը.
Հետեւանքների շարքեր
Թող դասակարգված անցումային ցուցակը պարունակում է n իրական շարքեր: Հետագա երկարությունը հաջորդ ուժը երկու:
0..n-1 տողերը ակտիվ են, n..N-1 տողերը լցոնային տողեր են: Յուրաքանչյուր իրական տող ունի մեկ գործողության ընտրիչի հավաքածու.
Բոլոր ընտրիչ սյունակները բուլյան են.
Թույլտվության որոնման շարքերը ճիշտ են դերի տրամադրման եւ դերի չեղարկման շարքեր.
Թվային գործողությունների շարքերի համար'
Շինարարը նաեւ հետեւում է ակտիվի հաշվով իրականացվող դելտաների:
Միայն մինետի եւ այրման շարքերը թարմացնում են մատակարարման հաշվիչը.
Մետադատա եւ տվյալների տարածքի հետույքային սյունակները գծի նյութափոխանակությունից առաջ ստացված դաշտի շիշներ են.
Մետադատա-հիշերը, տվյալների տարածքի հիշերը եւ սլոտները կայուն են հարեւան հետքուղիների վրա.
Տեղափոխել Merkle սյունակները
Փոխանցման տողերը կրում են 32 մակարդակի պակաս Merkle ուղին: Եթե բացակայում է հյուրընկալող ապացույցը, prover- ը համադրում է որոշիչ ուղին տողերի բանալից, նախնական հավասարակշռությունից եւ թե արդյոք տողը ուղարկողի կամ ստացողի կողմն է:
Սինթետիկ ուղիների համար ճաշակային աղը fastpq:smt:from է ուղարկող շարքերի համար եւ fastpq:smt:to՝ ստացողի շարքերի համար:
Սինթետիկ թղթի եւ ներքին հանգույցները հետեւյալն են.
Հետեւանքը արձանագրում է բիթը b_l, եղբայրը s_l, մուտքային հանգույցը x_l եւ ելքային հանգուցանը x_{l+1} յուրաքանչյուր մակարդակի վրա: Կոդի մասնաճյուղի կոնվենցիայի միջոցով.
Թույլտվության շիշեր
Դասերի տրամադրել եւ վերացնել շարքերը hash թույլտվության վկան:
Հյուրընկալող թույլտվությունների աղյուսակի արմատը դասակարգում է մուտքերը ըստ դերային բայթների, թույլտվության բայտների եւ ժամանակաշրջանի բայտերի, ապա կառուցում Poseidon2 Merkle ծառ:
Զարմանալի լայնության մակարդակները կրկնապատկում են վերջնական տարրը:
Հանձնառությունը հետեւել
Յուրաքանչյուր տողերի համար c, FastPQ առաջին հերթին ինտերպոլում է տողերի արժեքները տողային դոմենի վրա եւ hashes կոֆիենցիոն վեկտորը:
Աղբյուրի արմատը Poseidon2 Merkle արմատն է տողերի պարտավորությունների վրա.
Վերջին հանձնառությունը տիրույթի, պարամետրերի հավաքածուի վրա բայթային хэշ է, տիրույթի ձեւը, գնդակի դիժեստը եւ տիրույթի արմատը.
որտեղ D_c կազմում է fastpq:v1:trace_commitment.
AIR կազմը
V1 AIR բաղադրության արժեքը շարքի տեղական մնացորդների գծային համադրություն է: Transcript նմուշները ներառում են երկու մարտահրավերներ.
Յուրաքանչյուր հարակից զույգ տողերի համար (i,i+1) ստուգիչը հաշվարկում է՝
մնացորդները rho, կոդային կարգով, հետեւյալն են.
Թվային սյունակներով շարքերի համար'
եւ կայուն խմբաքանակի համատեքստային գծերի համար.
Վավերացնողը վերաշվարկում է A_i նմուշագրված շարքի բացությունների համար եւ այն ստուգում AIR կազմի Merkle արմատով պարտավորվող բաղադրիչային արժեքի հետ:
Հետազոտական արտադրանքը
Թույլտվության որոնման կուտակիչը օգտագործում է Fiat-Shamir մարտահրավերը gamma ։ s_perm եւ perm_hash ցածր աստիճանի ընդլայնման գնահատումներում, գործնական արտադրանքը հետեւյալն է.
Պատվաստանյութերը:
ցածր աստիճանի ընդլայնում
Թող omega_T լինի հետեւողական տիրույթի գեներատորը, omega_E ՝ գնահատականի տիրույթի Գեներատորը եւ g ՝ կոնֆigurված կոսեթային փոխհատուցումը: Որպես արժեքներ ունեցող հետեւողական սյունակի համար v_i, ինտերպոլացիան արտադրում է koeffensive a_j այնպիսի, որ
ցածր աստիճանի ընդլայնումը գնահատում է նույն բազմաբնույթը կոսետի վրա.
Կազմակերպումը հաշվարկում է այն՝ բազմապատկելով կոֆեսիոնալ գործակիցները մինչեւ FFT:
եւ այնուհետեւ գնահատում a' գնահատման դոմենի վրա:
CPU FFT-ը կրկնվող արմատ-2 Կուլի-Թուքեյի փոխակերպում է բիթ-վերադարձ մուտքերի վրա: Դարաշրջանի երկարությամբ L, կես երկարությամբ H=L/2 եւ փուլային արմատով.
յուրաքանչյուր թիթեռը հաշվարկում է.
FFT հակադարձը կատարում է նույն փոխակերպումը, ինչպես omega^{-1} եւ չափվում է հակառակ դոմենի չափով.
Կատալոգի արմատները նախքան օգտագործումը հաստատվում են.
Catalogue root-ից ստացված ավելի փոքր տիրույթների համար գեներատորը հետեւյալն է.
Գծերի եւ տերեւների շիշներ
Հետո LDE, FastPQ hashes յուրաքանչյուր շարքը ամբողջությամբ LDE սյունակները: m սյունակներ.
Եթե շարքի հաշեները դեռեւս գտնվում են գնահատման դոմենի փոխարեն հետագա տիրույթում, prover- ը ինտերպոլատացնում եւ ընդլայնում է այդ մեկ գիծային-հաշե սյունակը նույն coset LDE գործընթացով:
Merkle- ի բացումները
LDE արժեքները խմբավորվում են հետեւյալ մասերի:
Յուրաքանչյուր կտոր տերեւը հետեւյալն է.
Մերքլի ծնողները հետեւյալն են.
Տարբեր մակարդակները կրկնապատկում են վերջին հանգույցը: Հարցման ուղիները ստուգվում են ձախ կամ աջ հաշինգով ըստ հարցման էջի ինդեքսային հավասարության յուրաքանչյուր մակարդակի վրա:
Աղբյուրի համար' ինդեքսով i, ուղի (s_0,\ldots,s_{d-1}) ստուգում է արմատի դեմ R կրկնվողության դեպքում'
Չեկը անցնում է միայն այն դեպքում, երբ.
AIR հետքերով շարքի տերեւները հետեւյալն են.
AIR կազմի տերեւները հետեւյալն են.
LDE հարցման բացումը նաեւ ստուգում է, որ գնահատման ինդեքսում բացված արժեքը i գտնվում է իր հավաստագրված մասում.
FRI Հավաքում
FRI-ը պարտավորվում է կատարել AIR կազմի գնահատականներ: Յուրաքանչյուր փուլ l -ի համար տրանսկրիպտային նմուշները մարտահրավեր են վերցնում beta_l։ Լայնը լցվում է հորիզոնականի բազմապատիկի վրա՝ կրկնելով վերջին արժեքը։ Յուրաքանչյուր հորիզոնի չափով խումբ բարդում է հետեւյալ կերպ.
որտեղ a-ը կազմում է FRI բազան: Փաստաբանն ստուգում է, որ յուրաքանչյուր նմուշագրված հարցման շղթայի համար,
եւ հավատարմագրում է յուրաքանչյուր բացված FRI խմբի համար համապատասխան FRI շերտային արմատը:
Fiat-Shamir տրանսկրիպտ
Քանոնիկ պարամետրերի կատալոգը վերագրման хэշը նշում է որպես SHA3-256. Ներկայիս պրովեր եւ ստուգիչի իրականացումը բխում է մարտահրավերային բայտներից ՝ iroha_crypto::Hash::new, որը 32-բայթ Blake2bVar դիժեսն է, այնուհետեւ նվազեցնում է առաջին ութ փոքր-հանդիսական բայտները F:
Հարձակման զանգերը հավելում են ամբողջական պարունակությունը վերագրերի վիճակում: Վերադարձի կարգն է.
- հանրային IO, արձանագրության տարբերակ, պարամետրերի տարբերակ եւ պարամետրի անվանում
- LDE արմատը եւ հետագա արմատները
gamma- AIR կազմի մարտահրավերները
alpha_0,alpha_1 - AIR հետագա արմատը եւ AIR կազմի արմատն
- searchup մեծ արտադրանքը
- FRI շերտերի արմատների եւ
beta_lմարտահրավերների - նմուշագրված հարցման ցուցանիշները
Հարցազրույցի նմուշագրությունը շարունակում է նկարել 32-բայթանոց մարտահրավերային դիջետներ եւ կարդալ դրանք որպես փոքր-ինչ u64 կտորներ, մինչեւ այն ունենա պահանջված յուրահատուկ ինդեքսների թիվը.
Նմուշների հավաքածուն վերադարձվում է կարգավորված կարգով:
Վավերացողի կրկնօրինակում
Վավերացնողը նախ վերաշվարկում է խմբաքանակի պարտավորությունը.
եւ պահանջում է:
Այն նաեւ վերակառուցում է հանրային IO:
Յուրաքանչյուր դաշտ պետք է համապատասխանի ապացույցի հանրային IO բայտ-բայթին: Այնուհետեւ ստուգիչը վերակառուցում է նույն տրանսկրիպտը եւ ստանում է նույնը.
Յուրաքանչյուր ցուցադրված հարցման համար q, այն ստուգում է՝
եւ
AIR կազմի բացումը պետք է ստուգվի R_air_composition ներքո: Այնուհետեւ FRI շղթան սկսվում է նույն A_q եւ պետք է ավարտվի վերջնական հաստատված FRI թերթով, որը գտնվում է տերմինալ FRI արմատի տակ:
Այն, ինչ ստուգում է առակ
Նախքան հետագա կառուցումը, FastPQ պրովերը կանոնիկացնում է խմբաքանակի կարգը անցումային բանալինով, գործողության դասակարգմամբ եւ տեղադրման կարգով: Տրանսֆերային տողերը նույնպես պահանջում են վերագրված մետադատա: Տարածված խմբաքանակը, որն ունի փոխանցման տողեր, բայց ոչ մի փոխանցման վերագրություն անվավեր է:
Տրանսֆերային արձանագրությունների համար ստուգումները ներառում են՝
- ուղարկողի հավասարակշռությունը չպետք է նվազի
sender_afterպետք է հավասար լինիsender_before - amountreceiver_afterպետք է հավասար լինիreceiver_before + amount- վերագրը պետք է ընդգրկի խմբաքանակում գտնվող յուրաքանչյուր փոխանցման տող
- Պոզեյդոնի մեկ դելտա պարունակող դիժեսը, երբ ներկա է, պետք է համապատասխանի տրանսկրիպտի նախանկարի պատկերին
- provided sparse-Merkle proofs must decode as version 1; missing paths are filled with deterministic synthetic proofs (հետաքրքիր է, որ պակասող ուղիները լցված են դետերմինիստիկ սինթետիկ ապացույցներով)
Հետեւանքը պարունակում է ընտրող սյունակներ փոխանցման, մինետի, այրման, դերի տրամադրման, դերակատարության հետաձգման, մետադատա հավաքածու եւ թույլտվությունների որոնման շարքերի համար: Թվային գործառույթների շարքերը նաեւ կրում են ստորագրված դելտաներ, գործում են յուրաքանչյուր ակտիվի դելթաններ եւ մատակարարման հաշվիչներ:
Պրոբեր Լեյն
irohad սկսում է FastPQ պրովեր լեյնը մեկնարկելիս, եթե պրովերի հետագա վերջը կարող է նախաձեռնվել: Լեյնը ֆոնային խնդիր է սահմանված հերթով: Երբ բլոկը արտադրում է կատարման վկան, commit ուղին ներկայացնում է պրովոր աշխատանք, որը պարունակում է բլոկի շիշը, բարձրությունը, տեսքը եւ վկանը:
Եթե երթուղին չի աշխատում կամ հերթը լցված է, աշխատանքը բաց է թողնում եւ բլոկի սովորական մշակումը շարունակվում է: Սա նշանակում է, որ ֆոնային պրովեր երթուղինը գործարքի ընդունման կամ համաձայնության դարպաս չէ: Այն ապացուցող արտադրության ուղին է պետության վրա, որը արդեն կատարվել է:
Դարպասը կառուցում է պրովեր, որն ունի
parameter = "fastpq-lane-balanced"
execution_mode = auto | cpu | gpu
poseidon_mode = auto | cpu | gpuauto թույլ է տալիս ստուգողին ընտրել մատչելի հետագա վերջը: cpu pins կատարման է CPU. gpu նախընտրում է GPU կատարում, CPU fallback, երբ backend- ը չի կարող օգտագործել պահանջված միջուկները:
Փորձարկում
FastPQ ապացույցի ստուգումը վերակառուցում է քանոնիկ խմբաքանակի պարտավորությունը եւ փոխարինում է հանրային տրանսկրիպտը: Վավերացնողը ստուգում է արձանագրության տարբերակը, պարամետրերի սահմանված տարբերակը, կրկնօրինակման սահմանափակումները, հետեւողական պարտավորությունները, հանրային մուտքերը, նմուշավորված Merkle բացումները, AIR բացումները եւ FRI հարցման շղթան:
Նախադրյալ կրկնօրինակման սահմանները ներառում են.
| Սահմանափակ | Նախադրյալ |
|---|---|
| անցումային շարքեր | 256 |
| Բարշային բեռի չափը | 256 KiB |
| FRI շերտեր | 16 |
| Հարցազրույցներ | 128 |
Nexus Փորձարկված ռեալեր
Nexus AXT ապացույցի փաթեթները կարող են ներմուծել AxtFastpqBinding։ Երբ RegisterVerifiedLaneRelay կատարում է, Iroha:
- ստուգում է երթուղի ռելեյի փաթեթը եւ FastPQ ապացույցային նյութը:
- ստուգում է տվյալների տարածքը եւ manifest root- ը
- վերագրում է AXT ապացույցի փաթեթը:
- պահանջում է
fastpq_binding - վերակառուցում է FastPQ խմբաքանակը այդ կապից
- կոդավորում է ներմուծված FastPQ ապացույցը:
- զանգահարում է FastPQ ստուգողին վերակառուցված խմբաքանակի եւ ապացույցների վերաբերյալ
Եթե ստուգումը հաջողվում է, Iroha-ը պահում է VerifiedLaneRelayRecord, որը պարունակում է ռելեյի հղումը, օրիգինալ փաթեթը, ապացուցման օգտակար բեռնվածության хэշը, ստուգման բարձրությունը, manifest root-ը եւ FastPQ կոճակը։
Փողոցային ռելեյի փաթեթները նաեւ համապարփակ են FastPQ ապացուցման նյութը: Մատेरियलն անցնում է երթուղի ID, տվյալների տարածքի ID, բլոկ բարձրությունը, ստուգման բարձրությունը, բլոք գլխավորության hash, Settlement hash, եւ manifest root. Relay միավորումը թույլատրելի է միայն այն դեպքում, երբ այն ունի երկու QC եւ վավեր FastPQ ապացույցի նյութ:
AXT Մաթեմատիկա
Nexus AXT փաթեթների համար, AxtFastpqBinding-ը կանոնիկացվում է ապացույցի կրկնումից առաջ: Հեռու պարամետրերի արժեքները նախընտրում են fastpq-lane-balanced; դատարկ ստուգիչի ID եւ տարբերակի նախընտրման համար fastpq եւ v1; պահանջի տիպը կտրված է եւ ցածր դասակարգված:
AXT FastPQ հանրային մուտքերը դետերմինիստիկ բայթային շիշներ են.
AXT անցումային բանալիները'
authorization պահանջի մեջ տեղադրվում է դերակատարման համար նախատեսված տող.
compliance պահանջը ներառում է երկու մետադատա շարքեր. մեկը քաղաքականության եւ մեկը՝ նպատակային տվյալների տարածքների համար:
tx_predicate եւ value_conservation համար օգտագործվում է բացարձակ ազդեցության ծավալ, երբ կապը պարունակում է դրական աղբյուրի կամ նպատակային ծավալ: Այլ դեպքում կոդը բխում է սահմանված որոշման քանակից.
Այնուհետեւ օգտագործվում են նույն փոխանցման հավասարումները.
Սինթետիկ ուղարկողի եւ ստացողի հաշիվի ID-ները ստեղծվում են առանցքային սերմերից.
Տրանսֆերային խմբաքանակի շիշը հետեւյալն է.
AXT խմբաքանակի manifest digest-ը կազմում է SHA-256՝ քանոնիկ կապի Norito կոդավորման վրա.
SCCP Հաղորդագրության թափանցիկ ապացույցներ
SCCP օգնական տուփը նաեւ օգտագործում է FastPQ թափանցիկ խաչմերուկային հաղորդագրությունների ապացուցման համար: Այս ուղին առանձին է irohad ֆոնային պրովեր լայնից: Այն կառուցում է FastPQ խմբաքանակ ուղղակիորեն SCCP հաղորդագրության ապացույցի փաթեթից եւ մանիֆեստից, այնուհետեւ փակում է ստացված ապացույցը բաց ստուգման համար:
SCCP խմբաքանակում օգտագործվում է fastpq-lane-balanced եւ երեք մետադատային անցում:
| Գլխավոր | Օպերացիա |
|---|---|
sccp:transparent:v1:statement | MetaSet |
sccp:transparent:v1:context | MetaSet |
sccp:transparent:v1:payload | MetaSet |
Դրա հանրային մուտքերը բխում են SCCP թափանցիկ ներքին ապացույցից.
| FastPQ մուտք | SCCP աղբյուր |
|---|---|
dsid | Blake2b-ի առաջին 16 բայթը բլեյք 2բ հայտարարության վրա |
slot | Վերջնականության բարձրություն |
old_root | Օգտագործելի բեռի շիշ |
new_root | Հանձնառության արմատը |
perm_root | Վերջնական բլոկ hash |
tx_set_hash | Զեկույցի շիշ |
SCCP քանոնիկ կոդավորիչները գրում են ամբողջական թվերը փոքր-հասակ եւ կոդավորում են փոփոխական երկարության բայթային շարքերը որպես.
Հանրային մուտքի թափանցիկ բայտ շղթան հետեւյալն է.
Անցանցիկ հայտարարության բայթները են տարբերակի, շղթայի ընտանիքի, տեղական եւ հակառակորդի տիրույթների համազերծումը, անվտանգության մոդելը, օղակային կառավարումը, հաշիվի կոդեկը, վերջնականության մոդելը, վավերացողի թիրախը, վերիֆիկատորի հետադարձ ընտանությունը, երկարությամբ նախանշված շղթա/հետադարձ/մանիֆիստ դոմեյնները, նպատակային կապակցող хэշը, հաշիվի կոդեկ բանալին, payload տեսակը, հանրային մուտքի բայթները, եւ payload hash.
Այս ապացույցի ուղու համար FastPQ տվյալների տարածքի ID- ը եւս մեկ նախանշված Blake2b պարունակության առաջին տասնվեց բայթներն են.
SCCP FastPQ խմբաքանակն է ճշգրիտ'
ապա դասակարգվում է նույն FastPQ կարգավորման կանոնով:
OpenVerify ստուգիչի պարտավորությունը SHA-256 է SCCP հաղորդագրության հետադարձ անվանումը եւ քանոնիկ FastPQ ստուգողի նկարագիրը.
Կարմիր FastPQ ապացույցը Norito-կոդավորված է StarkFriOpenProofV1, ապա փակված է OpenVerifyEnvelope հետագա ավարտով Stark. SCCP ստուգման վերակառուցում է նույն FastPQ փաթեթից եւ manifesto, ստուգում է բաց վավերացման փաթեթի մետադատային տվյալները, եւ կանչում է FastPQ վերակառուցված խմբաքանակի ստուգիչը եւ ապացույցը:
պարամետրերի հավաքածուներ
Կանոնիկ պարամետրերի կատալոգը բացահայտում է երկու պարամետրային հավաքածու: Host prover lane- ը ներկայումս օգտագործում է fastpq-lane-balanced.
| Պարամետր | Նպատակ | դաշտ | Հիշեր | FRI |
|---|---|---|---|---|
fastpq-lane-balanced | հավասարակշռված պրովերային անցում | Goldilocks քառակուսի ընդլայնում | Poseidon2 պարտավորությունները, կատալոգը SHA3 | Արթուր 8, պայթյուն 8, 46 հարցեր |
fastpq-lane-latency | լատենցիային զգայուն ուղիները | Goldilocks քառակուսի ընդլայնում | Poseidon2 պարտավորությունները, կատալոգը SHA3 | Arity 16, blowup 16, 34 հարցեր |
Երկուսն էլ նպատակ են դնում 128-բիթային անվտանգության եւ օգտագործում են 2^16 տիրույթի չափը: Rust V1 վերագրական կրկնօրինակման կոդը ներկայումս արտացոլում է Fiat-Shamir մարտահրավեր բայթները ՝ օգտագործելով iroha_crypto::Hash::new, այլ ոչ թե ուղղակիորեն հրավիրելով SHA3-256:
Rust ստուգիչի կողմից օգտագործվող կատալոգային կոնսանտանները հետեւյալն են.
| Անընդհատ | 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 |
Կազմակերպություն
FastPQ կարգավորումը տեղադրված է zk.fastpq ներքեւում:
[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 = falseՆույն կատարման եւ հեռաչափության տեքստերը կարող են վերածվել irohad:
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 integratedՇրջակա միջավայրի փոփոխականները աջակցվում են նաեւ կոնֆիգուրացիոն դաշտերի համար: FastPQ- ի հատուկ փոփոխականները ներառում են՝
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
Մետրիկներ
Երբ հեռաչափությունը հնարավորություն է տրվում, FastPQ արտահանում է ֆունկցիայի ընտրության եւ Metal runtime վարքագծի չափանիշները.
| Մետրիկ | Նշում |
|---|---|
fastpq_execution_mode_total | Պահանջված եւ լուծված կատարման ռեժիմը ՝ ըստ backend- ի եւ սարքի տեքստերի |
fastpq_poseidon_pipeline_total | Պահանջված եւ լուծված Պոզեյդոնի գազատարի ուղին |
fastpq_metal_queue_depth | Մետաղական հերթի սահմանը, թռիչքի ընթացքում առավելագույն թիվը, առաքման թիվը եւ նմուշների հավաքման պատուհանը |
fastpq_metal_queue_ratio | Մետաղական հերթը զբաղված է եւ փոխկապակցում հարաբերությունները |
fastpq_zero_fill_duration_ms | Հյուրընկալող զրոյական լցման տեւողությունը մետաղի համար: |
fastpq_zero_fill_bandwidth_gbps | Պահանջված զրոյական լրիվության թողունակություն |
Գլխավոր կատարողականի դասակարգման համար օգտագործեք դրանք կատարողականի եւ չափանիշների ցուցակում նշված կոնսենսուսի եւ հերթի ազդանշաններով:
Կապակցված հղում
- Տվյալների մոդելային սխեման ՝ արտադրված տեսակի մանրամասների համար
FastpqTransitionBatchFastpqPublicInputsTransferTranscriptAxtFastpqBindingLaneFastpqProofMaterialirohadFastPQ տարբերակներ