FastPQ
FastPQ - таңдалған орындалу әсерлері үшін Iroha STARK дәлелді жолы. Ол қалыпты транзакцияны орындауды немесе келісімді алмастырады. Транзакциялар әлі күнге дейін әдеттегідей ISI, IVM және Sumeragi арқылы өтеді; FastPQ детерминистік орындалу куәсін жеп, қолданатын эффекттерді дәлелдік партияларға айналдырады.
Қазіргі қоректенуші интеграцияның негізгі үш жолы бар:
- Блоктарды орындау кезінде есепке алынған мөлдір сандық активтер аударымы
- Nexus тексерілген жолақ релелері, олардың AXT дәлелді қаптамасында FastPQ байланысы бар
- SCCP ашық тексеру конвертіне FastPQ дәлелдемесін орайтын мөлдір хабарламаға куәлік беретін көмекшілер
Куәгерлік жолды ауыстыру
Өткінші сандық аударымдар нұсқаулық тепе-теңдіктерді өзгерткенде құрылымдалған трансфер транскриптісін жасайды.
- бастапқы шот, мақсатты шот, активтердің анықтамасы және сомасы
- Жеткізуші мен алушы теңгерімдері - трансферттен бұрын және кейін
- транзакцияның кіріс нүктесі хэш ретінде пайдаланылады
- Ұсынылатын есептен алынған уәкілетті орган деректері
- Бір дельталы транскрипттерге арналған Посейдон сыныбы
Партиялық трансферттерде бірнеше дельталы бір транскрипт қолданылады. Бұл жағдайда бір дельталы Посейдонның сынығы жоқ.
Блокты аяқтау кезінде Iroha бұл транскриптілерді кіріс нүктесі хэш бойынша топтастырады. Орындау куәгері кейін бастапқы транскрипт топтамаларын да, провер үшін дайындалған FastPQ ауысу партияларын да алып жүреді.
Әрбір трансфер дельтасы екі өтпелі жолға айналады:
| Сызық | Кілт пішіні | Алдын ала баға | Бағадан кейінгі |
|---|---|---|---|
| Жеткізуші дебеті | asset/<asset-definition>/<source-account> | жөнелтуші балансы бұрын | жөнелтушінің балансы |
| Алушы кредиті | asset/<asset-definition>/<destination-account> | қабылдаушы балансы бұрын | қабылдаушы балансы |
Сандық мәндер бүтін сандық куәлік бірліктеріне қалыпқа келтіріледі. FastPQ партиясы үшін егер таңдалған ондық шкалада ол теріс емес u64 ретінде көрсетілмесе, мәні қабылданбайды.
Қоғамдық кіріс
Әрбір FastPQ ауысу партиясында блок пен орындалу контекстіне дәлелді байланыстыратын қоғамдық кірістер болады:
| Кіріс | Мағынасы |
|---|---|
dsid | Деректер кеңістігінің идентификаторы кішкентай байт ретінде кодталған |
slot | Блоктарды құру уақыты наносекундтарға аударылды |
old_root | Ата-ана мемлекетінің түпнұсқасы орындалған куәден алынған . |
new_root | Өлкеден кейінгі тамыр , жазалау куәсынан алынған . |
perm_root | Посейдонның белсенді рөлге рұқсат беруіне қатысты міндеттемесі |
tx_set_hash | Тартиптелген транзакция мен уақыт триггері кіру нүктесі хэштегі |
Үйлестіруші fastpq-lane-balanced -ды осы партиялар үшін орнатылған каноникалық параметр ретінде пайдаланады.
Математикалық модель
Осы бөлімде ағымдағы Rust провер және верификатор арқылы іске асырылатын арифметика сипатталады. Төмендегі барлық өріс операциялары Goldilocks бастапқы өрісі бойынша:
FastPQ Poseidon2 арқылы қолданылады F Тегістік тапсырмалар үшін. t = 3, мөлшерлемесі r = 2, және қуаттылығы 1. Хаш 2 блоктарда өріс элементтерін сіңіріп, бір өріс элементін қосады . 1 соңғы пермутациядан бұрын:
Байт жіптері 7 байттан үлкен кішкентай бөліктерге жинақталған, сондықтан әрбір бөлік p -тен төмен болады:
Доменге бөлінетін өрістің хештары келесідей көрсетіледі:
Байт-домен дигеттерінен басталатын хештар үшін FastPQ өріске алғашқы сегіз кішкентай андиан байтын карталайды:
Бұл жерде Hash - Iroha-нің iroha_crypto::Hash::new 32-байтты Blake2bVar дигесін білдіреді, егер формула Poseidon2 немесе SHA-256 атауларын айқын көрсетпеген жағдайда.
Өрістің арифметикасы
Rust коды өрістің элементтерін [0,p) каноникалық u64 мәндері ретінде білдіреді. Қосылу және алу мыналар:
Көбейту ең алдымен 128 битті есептейді:
Содан кейін Goldilocks азайту сәйкестігін пайдаланады:
Егер:
Содан кейін азайтушы есептейді:
Орындалу шартты түрде p қосып немесе алып тастайды. Нәтижесі каноникалық болады. Қол қойылған бүтін сандар, мысалы баланс дельталары:
Посейдон2 пермутациясы
Poseidon2 пермутациясы:
Оның S-кестесі:
FastPQ төрт толық раунд, елу жетi жартылай раунд, одан кейiн тағы төрт толық раунд. c_r = (c_{r,0}, c_{r,1}, c_{r,2}) болып табылады:
Қисмалы дөңгелек:
Барлық қосылулар мен көбейтулер F. Каноникалық MDS матрицасы:
Елі хэш нөлдік күйден басталады. Әрбір толық ставка-2 блогы үшін (u,v):
Соңғы бөлік 1 соңғы пермутациядан бұрын толтыру элементі. x_0.
Қоғамдық кіріс міндетті
Хост u64 құнын 16-байт өрісінің алғашқы сегіз кішкентай ендіан байтына жазу арқылы деректер кеңістігі ID-ін кодтайды: .
Блок жасау уақыты миллисекундтардан наносекундтарға айналады:
Транзакция жиынтығының хэшігі - сұрыпталған кіріс нүктесі хэштегінің үстінен байт-доменге арналған хеш:
мұнда h_i сұрыпталған транзакция және уақыт триггерінің кіріс нүктесі хэшестері болып табылады. дәлелдеудің ашық IO бөлімінде, егер perm_root немесе tx_set_hash барлық нөл болса, провер керісінше мәндерді толтырады:
Сандық қалыптау
Әрбір трансфер дельтасы үшін мақсатты ондық масштаб - бұл соманың ең жоғары кесілген масштабы және екі теңестіру сұлбалары:
А Numeric мантиссамен құн 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 толтыру саптары. Әрбір нақты қатарда бір операциялық таңдаушы жиынтығы бар:
Барлық селекторлық бағандар boolean:
Рұқсат іздеу қатарлары рөлді беру және рөлді қайтару саптары:
Сандық операциялар жолақтары үшін:
Құрылыс жасаушы сондай-ақ активтер бойынша дельталарды орындайды:
Жабдықтау есептегішін тек минда және күйдіру қатарлары ғана жаңартады:
Метадеректер мен деректер кеңістігінің із бағаналары - жолды материализациялаудан бұрын алынған өрістер хэшесі:
Метамәліметтер хэшігі, деректер кеңістігінің хэшігі және ұяшығы көршілес ізді жолдар бойынша тұрақты:
Меркл бағаналарын ауыстыру
Трансферлік жолдар 32 деңгейлі жалпақ Меркл жолын қамтиды. Егер қоректендіру дәлелі жоқ болса, провер реттік кілтіден детерминистік жолды синтездейді, алдын ала теңгерімделеді және реттік жіберуші немесе қабылдаушы тарап болып табылса да.
Синтетикалық жолдар үшін дәмді тұз fastpq:smt:from жөнелтуші қатарлар үшін және fastpq:smt:to қабылдаушы қатарлар үшін:
Синтетикалық жапырақтар мен ішкі түйіндер:
Табыс бітті тіркейді b_l, бауырлас s_l, кіріс түйіндері x_l, және шығыс түйіні x_{l+1} Кодтың тармақ конвенциясымен:
Рұқсаттар шешелері
Ролды беру және қайтару қатарлары рұқсатты куәландыру:
Қабылдаушы рұқсаттар кестесі түбір жазуларды рөл байттары, рұқсат байттары және эпоха байттары бойынша жіктейді, содан кейін Poseidon2 Merkle ағашын құрады:
Қисық ен деңгейлері соңғы элементті қайталайды.
Пайдалануы
Әрбір із тізбегі c, FastPQ үшін, алдымен, бағананың мәндерін із доменінің үстінен интерполациялап, коэффициент векторын хэш етеді:
Табыс түбірі - бағана міндеттемелерінің үстіндегі Poseidon2 Merkle түбі:
Ақырғы трас міндеттемесі домен, параметрлер жиынтығы, трас пішіні, баған дигестері және трас тамырлары бойынша байт хэші болып табылады:
мұнда D_c - fastpq:v1:trace_commitment.
AIR құрамы
V1 AIR құрамының мәні қатар-орындардағы қалдықтардың сызықтық комбинациясы болып табылады.
Әрбір жапсарлас қатар жұп (i,i+1) үшін провер есептейді:
Қалдықтар rho коды бойынша:
Сандық бағандар бар жолдар үшін:
Ал тұрақты партиялық контекст бағандары үшін:
Тексергіш A_i сынамаға алынған жолдың ашық орындары үшін қайта есептеледі және оны AIR құрамының Merkle тамыры бойынша жасалған құрамындағы құнмен салыстырғанда тексереді.
Іздестіру өнімі
Рұқсат іздеу аккумуляторы Fiat-Shamir сынағын gamma пайдаланады. s_perm және perm_hash төмен дәрежелі кеңейту бағалары бойынша жұмыс істеп тұрған өнім мынадай:
Дәлелдеу жазбалары:
Төменгі деңгейлі кеңейту
omega_T трас-домен генераторы, omega_E бағалау домен генераторы және g конфигурацияланған косет орнын толтыру болып табылады. v_i мәндері бар трас бағаны үшін интерполяция a_j коэффициенттерін береді:
Төмен дәрежелі кеңейту косеттегі бірдей көптікті бағалайды:
Осыны іске асыру коэффициенттерді FFT алдындағы coset offset күшімен көбейту арқылы есептейді:
содан кейін a' бағалау доменінде бағалау.
Қауымдастық CPU FFT редикс-2 Cooley-Tukey түрлендіруі биттік кері кірістер бойынша. L, жартылай ұзындығы H=L/2, және этаптық тамыр:
әрбір бауырлас есептейді:
FFT керісі omega^{-1}мен бірдей трансформацияны жүзеге асырады және кері домен өлшемі бойынша масштабталады:
Каталогтың тамырлары пайдаланудан бұрын расталады:
Каталог тамырынан алынған кіші домендер үшін генератор:
Сызық және жапырақ шешелері
LDE аяқталғаннан кейін, FastPQ барлық LDE бағандардағы әрбір жолды хэш етеді. m бағандар үшін:
Егер жолақтың хештары бағалау доменінен гөрі іздік доменде болса, провер бұл бір қатарлы хеш бағанды LDE процесін қолдана отырып интерполяциялап, кеңейтеді.
Меркл ашылымдары
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 құрамындағы тамыр
- іздеу ұлы өнім
- 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- транскрипт партиядағы әрбір көшірме жолдарын қамтыуы тиіс
- Poseidon-ның бір дельталы дигеті, егер бар болса, транскрипттің алдындағы суретіне сәйкес келуі тиіс
- шартты түрде қатерлі-Меркл дәлелдемелері 1-версияға шифрлансын; жоғалған жолдар детерминистік синтетикалық дәлелдемелермен толтырылады.
Тректе көшіру, монета, күйдіру, рөл беру, рөлді қайтарып алу, метамәліметтер жиынтығы және рұқсат іздеу қатарлары үшін таңдаушы бағандар бар. Сандық операциялар қатарларында қол қойылған дельталар, активтер бойынша дельталар және жеткізу санағыштар болады.
Провер Лейн
irohad іске қосылған кезде FastPQ prover жолын бастайды, егер prov backend-ті бастауға болады. Lane - бұл шектелген кезегі бар аяқтық тапсырма. Блок орындау куәсін шығарғаннан кейін, commit жолы блок хэшін, биіктігін, көрініс пен куәсын қамтитын prover жұмысын ұсынады.
Егер жол жүрмесе немесе кезек толы болса, жұмыс өткізіледі және қалыпты блок өңдеу жалғасады. Бұл фоновый провер лентасы транзакцияны қабылдау немесе консенсус қақпасы емес дегенді білдіреді. Ол қазірдің өзінде орындалған мемлекет бойынша дәлелді-өндірістік жолы.
Жолдың құрамында мыналар бар:
parameter = "fastpq-lane-balanced"
execution_mode = auto | cpu | gpu
poseidon_mode = auto | cpu | gpuauto проверге қол жетімді бэкэндін таңдауға мүмкіндік береді. cpu пин орындалуы CPU үшін артықшылығын береді. gpu GPU орындалуды жақсы көреді, мұнда CPU बैक-энд сұралған ядроларды пайдалана алмайтын.
Тексеру
FastPQ дәлелді тексеру каноникалық партия міндеттемелерін қайта құруды және қоғамдық транскриптті қалпына келтіреді. Тексеруші протокол нұсқасын, параметрлерді орнату нұсқасын, қайта орындау шектерін, ізділеу міндеттемесін, қоғамдық кірістерді, үлгіні Меркл ашуын, AIR ашуын және FRI сұрау салу тізбесін тексереді.
Әдеттегі қайта ойнау шектері:
| Шекарасы | Әдеттегісі |
|---|---|
| Өтпелі жолдар | 256 |
| Партиялық жүк көлемі | 256 KiB |
| FRI қабаттар | 16 |
| Сұрау салу орындары | 128 |
Nexus Тексерілген релелер
Nexus AXT дәлелді конверттерде AxtFastpqBinding қосқан болуы мүмкін. RegisterVerifiedLaneRelay орындалған кезде, Iroha:
- жолақ эстафетасының қаптамасын және FastPQ сынақ материалдарын тексеру
- деректер кеңістігін және деректі тамырды тексереді
- AXT куәлік конвертін декодтайды
fastpq_bindingталап етеді- FastPQ партиясын осы байланыстан қайта құру
- кіріктірілген FastPQ дәлелді кодты өшіреді
- қалпына келтірілген партия мен дәлелдеме бойынша FastPQ тексерушіге шақырады
Егер тексеру сәтті болса, Iroha эстафеталық анықтаманы, түпкілікті конвертті, дәлелді пайдалы жүктеме хэшін, тексеру биіктігін, манифестикалық тамырды және FastPQ байлауын қамтитын VerifiedLaneRelayRecord тіркемесін сақтайды.
Жол релейлі конверттерінде сондай-ақ компактты FastPQ дәлелді материал бар. Материал жол идентификаторы, деректер кеңістігінің идентификаторы, блок биіктігі, тексеру биіктісі, блок бастығының хэшігі, есеп айырысу хэшігі және манифесттік түбірдің терісі. Эстафетаға QC және жарамды FastPQ дәлелді материалы бар кезде ғана қосылуға рұқсат етіледі.
AXT Математикаға байланысты
Nexus AXT конверттері үшін, дәлелді қайта ойнаудан бұрын AxtFastpqBinding канонизацияланады. Бос параметрдің әдетті мәндері fastpq-lane-balanced; бос тексеруші идентификаторы мен нұсқаның әдеттілігі fastpq және v1; талап ету түрі қысқартылады және төменгі сыныпта болады.
AXT FastPQ мемлекеттік кірістері детерминистік байт хэштері болып табылады:
AXT ауысу кілттері:
authorization талапкерлік тізімінде рөлді беру жолына енген:
compliance өтініші екі метамәдени деректі жолды енгізеді: бірі - саясатты және екіншісі - мақсатты деректер қорын.
tx_predicate және value_conservation үшін, егер байланыстыруда оң көз немесе мақсатты мөлшер бар болса, нақты әсер мөлшері қолданылады. Әйтпесе код шектелген детерминисттік мәнді алады:
Содан кейін бірдей трансферттік теңдеулер қолданылады:
Синтетикалық жөнелтуші мен қабылдаушы тіркелгінің идентификаторлары негізгі тұқымдардан жасалады:
Трансферлік партияның хэшігі:
Қауымдастық AXT партиялық манифесттің асқынуы 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 | Блейк2Б-ның алғашқы 16 байт жарнасы hash арқылы өшіріледі |
slot | Аяқтау биіктігі |
old_root | Пайдалы жүктеме шешесі |
new_root | Қатысу тамырлары |
perm_root | Ақырықтау блогы |
tx_set_hash | Баяндама шеше |
SCCP каноникалық кодтаушылар бүтін сандарды аз ендікпен жазады және өзгеріске ұзындығы бар байт массивтерін былай деп кодтайды:
Ашық кіріс байт тізбектері:
Ашықсыз мәлімдеме байттары - нұсқаның, тізбектер отбасының, жергілікті және қарсыластар домендерінің, қауіпсіздік моделі, якорь басқаруы, шот кодекінің, түпкіліктілік үлгісінің, тексерушінің нысанасы, тексерушінің бэк-энд отбасы, ұзындығы префиксиленген тізбек/бэк-энд/манифест өрістері, мақсатты байыту хэші. тіркелгі кодек кілті, пайдалы жүктеме түрі, қоғамдық кіріс байттары және пайдалы жүктеме хэші.
Бұл дәлелді жолдың FastPQ деректер кеңістігінің идентификаторы - тағы бір префиксті Blake2b дигесінің алғашқы он алты байт:
SCCP FastPQ партиясы дәл мынадай:
содан кейін FastPQ тапсырыс қағидасы бойынша сұрыпталады.
OpenVerify тексерушінің міндеті - SHA-256 SCCP хабарламаның аяқтық атауы мен каноникалық FastPQ тексерушінің сипаттамасы бойынша:
Шикізат FastPQ дәлел Norito- кодталған StarkFriOpenProofV1, содан кейін оралған OpenVerifyEnvelope аяқпен Stark. SCCP тексеру бірдей қайта құру FastPQ топтама мен манифесттен партия, ашық тексеру конверті метамәліметтерін тексереді, және FastPQ Қайта құрылған партияны тексеруші және дәлелдеуші.
Параметрлер жиынтығы
Канондық параметрлер каталогы екі параметр жиынтығын көрсетеді. Үйлестіруші провер лентасы қазіргі уақытта fastpq-lane-balanced пайдаланады.
| Параметр | Мақсаты | Өрісте | Шештер | FRI |
|---|---|---|---|---|
fastpq-lane-balanced | теңгерімделген провайдерлік өткізу | Goldilocks квадратты ұзарту | Poseidon2 міндеттемелері, каталог SHA3 белгісі | 8-ші бөлім, 8-ші бөлім. 46 сұрақ. |
fastpq-lane-latency | ұзындығына бейім жолдар | Goldilocks квадратты ұзарту | Poseidon2 міндеттемелері, каталог SHA3 белгісі | 16-шы бөлім, 16-сынып, 34 сұрақ |
Екеуі де 128-биттік қауіпсіздікті мақсат етеді және 2^16 доменінің өлшемін пайдаланады. Rust V1 транскрипті қайта ойнату коды қазіргі уақытта iroha_crypto::Hash::new арқылы Fiat-Shamir сынақ байттарын тікелей шақырудың орнына, 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 | Арнаулы және құрылғы таңбалары бойынша сұралған және шешілген орындалу режимі |
fastpq_poseidon_pipeline_total | Сұралған және шешілген Poseidon құбыр жолы |
fastpq_metal_queue_depth | Металл кезек шегі, ұшудағы ең көп сан, жөнелту саны және үлгіні алу терезесі |
fastpq_metal_queue_ratio | Металл кезегі қашықтығы мен үлесінің арақатынасы |
fastpq_zero_fill_duration_ms | Металл жүгіру үшін хост нөлді толтыру ұзақтығы |
fastpq_zero_fill_bandwidth_gbps | Алынған нөлдік толтыру жолақтығы |
Жалпы өнімділікті сұрыптау үшін оларды Орындау және метрикалар бөлімінде көрсетілген консенсус және кезек сигналдарымен пайдалану.
Осыған байланысты анықтама
- Жаратылған типтік мәліметтер үшін деректер үлгісі схемасы
FastpqTransitionBatchFastpqPublicInputsTransferTranscriptAxtFastpqBindingLaneFastpqProofMaterialirohadFastPQ параметрлері