Консенсус
Транзакциялар Sumeragi оларды блокқа ұсынғанға дейін кезекке кіреді. Валидаторлар ұсынысты дербес растайды және орындайды, содан кейін олар қайталай алатын мемлекеттік ауысуды ғана қол қояды. Блок талап етілетін валидатордың кворумы осы нәтижеге келіскеннен кейін және сәйкес келетін пайдалы жүктеме болғаннан кейін міндеттенеді.
Барлық Iroha 3 желілер деректерге қол жетімділік пен сенімді хабар тарату жолдарын пайдаланады. Олар консенсус талаптары болып табылады, параметрлерді қолданбау үшін емес.
Sumeragi
Sumeragi - Iroha византиялық қатеге төзімді консенсус қозғалтқышы. Ол кезектен мәмілелерді алады, растаушы әріптестерін бірдей тапсырылған блокқа келіседі және бұл блокты жеткілікті растаушылар сол нәтижеді қайталандырғаннан кейін ғана аяқтайды және міндеттеме куәлігіне қол қойды.
Ұсыныс және міндеттемелер бағыты
Sumeragi кітапшаны бір уақытта бір блок биіктігімен алға жылжытады. Әр биіктікте бір растаушы ағымдағы көрініс үшін ұсыныс беруші ретінде әрекет етеді. Ұсыныс беруші кезектен жарамды мәмілелерді алып тастайды, кандидат блогын жасайды және ұсынысты белсенді растаушының жиынтығына жариялайды.
Sumeragi құбыры рұқсат етілген және НОС (Nominated Proof-of-Stake) орналасуы үшін қолданылады:
- Валидатор кезекпен жасалатын транзакцияларды тоқтатуды ұсынады.
- Валидаторлар ұсынысты бір үкiметтiк мемлекетпен жасалатын операцияларды жүзеге асыру арқылы растайды.
- Құрастырушылар дауыс пен кворум куәліктерін ағымдағы биіктігі мен көрінісі үшін алмастырады.
- Комитет кворумына қол жеткізілгеннен кейін, теңгерімдер блокпен айналысып, өздерінің әлемдік жағдайын жаңартады.
Куәландырушылар тек жергілікті түрде қайтаруға болатын деректерге қол қояды. дауыс беруден бұрын, куәландырушы ұсыныстың күтілетін тізбекке, биіктікке және көрініске жататынын; транзакция қолтаңбалары мен шектері жарамды екенін; жол бағытын және орындаушының құдіреттілігін анықтайтынын тексереді; және пайдалы жүктемені орындау күтілетін мемлекеттік ауысымды тудырады. Егер жергілікті нәтиже өзгеше болса, растаушы оған дауыс берудің орнына ұсынысты қабылдамайды.
Дауыстар - бұл кішкентай қол қойылған консенсус хабарламалары. Олар ұсынылған блок, биіктік, көрініс және растаушының жеке басын білдіреді. Жинақтаушылар осы дауыстарды кворум куәлігіне немесе міндетті сертификатқа жинақтап алады. Куәлік - бұл бір блок үшін жеткілікті сандағы куәландырушылар бірдей нәтиже көрсеткенін дәлелдейтін тұрақты дәлел.
Кворум, жинақшылар және бақылаушылар
Тауыс беру растаушыларының саны n Византиялық қате бюджетін анықтайды. Кем дегенде төрт растаушы бар желілер үшін бюджет f = floor((n - 1) / 3) және комиссия кворумы 2f + 1. Бір-үш растаушы үшін барлық растаушылар commit үшін қажет, бұл даму үшін пайдалы, бірақ практикалық офлайн босаңсыту жоқ.
Жинақтаушылар - бұл оптималдастыру. Әрбір растаушы әрбір дауысты басқа растаушыға жіберудің орнына, Sumeragi бір немесе бірнеше жинақшыны биіктікке сай таңдауға болады. және қосарланған дауыс беру трафигін азайту. GET /v1/sumeragi/collectors; Атап айтқанда CLI Ол ... ops sumeragi telemetry Снапшот ағымдағы жинақшылардың санын көрсетеді.
Байқаушы теңгерімдері басталған блоктарды қадамдастыра алады, бірақ олар ұсыныстарды ұсынбайды, дауыс бермейді, дауыс жинамайды немесе комитет кворумына қарай есептелмейді. Олай болса . Жергiлiктi сұрау салу, индекстеу, мониторинг қажет болған жағдайда бақылаушыларды қолдану немесе дауыс беруді растаушылардың санын ұлғайтусыз аймақтық блок репликациясы.
Өзгерістер мен қалпына келтіруді қарау
Көрініс - Sumeragi бір биіктікті белгілі бір ұсыныс берушімен және уақыт жоспарымен аяқтау әрекеті. Егер ұсыныс, пайдалы жүктеме, дауыс беру немесе алға басу тосқауылдары болса, жүрек белгісі биіктікті кейінгі көрініске жылжыта алады. Көріністің өзгеруі міндеттемеленген блокты қайта жаза алмайды. Ол растаушылардың міндеттелмеген биіктікті аяқтауға қалай тырысатынын өзгертеді, ең жоғары белгілі кворумды немесе дәлелдемелерді жүзеге асырады, сондықтан теңтуарлар қарама-қайшылықты блоктарды аяқтай алмайды.
Пайдалы жүктемені қалпына келтіру соңғы шешімнен бөлек. Бір теңгерім толық блок пайдалы жүктемені алғанға дейін кворум немесе міндеттеме куәлігін ала алады. Бұл жағдайда теңгерім пайдалы жүктемені қалпына келтіру үшін сенімді трансляция (RBC) немесе блок синхронизацияны пайдаланады, оны жарнамаланған хештарға сәйкес тексереді, және тек содан кейін ғана блок әлемдік мемлекетке және Kura қолданылады.
Консенсус режимдері
Таңдалған режим растаушы жиынтығының қалай қалыптасқанын және жұмыс істейтінін бақылайды. Ол consensus_mode арқылы генезисте және sumeragi.consensus_mode арқылы теңгерімдік конфигурацияда жарияланады. Оны бүкіл желідегі жағдай ретінде қараңыз: валидаторларға бірдей қол қойылған генез, топология, сенімді әріптестер деректері және тиімді Sumeragi параметрлері қажет.
| Режим | Ең қолайлысы . | Валидатор жиынтығы | Операциялық фокус |
|---|---|---|---|
| Рұқсат етілді . | Жеке, консорциум және операторлар басқаратын желілер | Валидаторлар іске қосумен келісілген сенімді теңгерімдік топологиядан келеді | Барлық растаушыларды бірдей қол қойылған генезиске, сенімді теңгерімдерге, теңгерім кілттеріне және Sumeragi параметрлеріне сақтаңыз |
| НПОС | Қоғамдық немесе Nexus бағдарланған желілер , егер беделдеу номинация мен қатысу саясатын қамтитын болса . | Валидаторлар NPoS профилі бойынша, әдетте кезең-кезеңдер бойынша таңдалады және BLS кілттерін және иелік дәлелдемелерін қажет етеді. | Желідегі ойынды кескіндерді, эпоха параметрлерін, валидаторды PoPs және NPoS фазалық уақытты желі бойынша сәйкестендіру |
Рұқсат етілген режим
Валидатор тізімі айқын операциялық таңдау болған кезде рұқсат етілген режимді қолдану. Бұл өзін-өзі хостинг Iroha желілерінің әдеттегі бастапқы нүктесі, өйткені мүшелік өзгерістері қасақана басқару немесе әкімшілердің әрекеттері болып табылады. Міндетті жұмыс ережесі - әрбір растаушы генезистің, сенімді әріптестерінің, BLS Меншіктік дәлелдемелерінің және Sumeragi параметрлерінің бірдей көзқарасымен жұмыс істеуі керек.
NPOS режимі
NPoS режимін пайдаланыңыз, егер орналасу профилі растаушының қатысуын номинация мен ойын жағдайына байланысты көтереді. Қоғамдық SORA Nexus орналасулар NPoS-ті пайдаланады және олардың туылған профильдері BLS растаушы сәйкестіктерін, иелік дәлелдемелерін, эпохалық параметрлерді қамтиды; және Sumeragi NPoS параметрлері іске қосылу кезінде қажет. Эпох өзгерістері белгіленген биіктікте орнатылған белсенді растаушыны алмастыра алады, сондықтан операторлар консенсус денсаулығын және келесі тізімді қоректенетін ойын немесе номинация жағдайын бақылауы қажет.
Көпжақты консенсус
Iroha көпжолғы консенсус жолы Nexus жолақты және деректер кеңістігін баптау арқылы іске асырылады. Ол әрбір жолаққа бөлек консенсус инстантын бастамайды. Sumeragi әлі күнге дейін бір тапсырылған блок ағынын аяқтайды; жолдар транзакциялардың сол ағымның ішінде қалай бағытталатындығын, жоспарланатындығын, есепке алынатынын және сақталатынын сипаттайды.
Жүргізу уақыты конфигурациясы үш жол күйін жасайды:
lane_catalog: конфигурацияланған жолдар, әрқайсысы сандықLaneId, псевдонимы, деректер кеңістігі, көрінісі, сақтау профилі, дәлелді схемасы және метамәдени деректерімен.dataspace_catalog: конфигурацияланған дерекқоры, олардың әрқайсысы сандықDataSpaceIdжәне эстафеталық комитет өлшемі үшін қолданылатын қате төзімділік мәнімен.routing_policy: әдеттегі жол/деталдар кеңістігі жұп және тіркелгілерге немесе нұсқаулық жолдарына сәйкес келетін реттелген бағытлау ережелері.
Транзакция кезекке кіргенде, жол маршрутизаторы оны RoutingDecision { lane_id, dataspace_id } деп шешеді. Жалғыз жол режимінде бұл әрдайым жол 0 және әмбебап деректер кеңістігі болып табылады. Nexus режимінде конфигурацияланған маршрутизатор деректер кеңістігі бойынша ережелерді, есеп айырысу бағытын, шот ережесін, айқын бағыттау ережесін және ақыр соңында әдеттегі бағытты қолданады. Шешірілген жол мен деректер кеңістігі олардың каталогтарында болуы керек, ал жол шешілген дерек кеңістігіне байланысты болуы тиіс. Әйтпесе транзакция кезекке тұру алдында қабылданбайды.
Кезекте бұл бағыттау шешімін транзакция хэшімен сақтайды, сондықтан кейінгі кезеңдерде оны қайталап шығарудың қажеті жоқ. Қорытындылай келе, жобаның құрылысында жолақ метамәдени деректері екі жолмен пайдаланылады:
- Ол транзакцияларды жолмен-жолмен ауыстырады, сондықтан бір жол бірінші кезекте тұрғандықтан ғана блокқа билік жүргізбейді.
- Бұл жолға транзакцияларды орындау бірлігі (TEU) шектерін қолданады. Жолдың конфигурацияланған қуатынан асатын транзакциялар кейінге қалдырылады және кезекке қойылады, тек жолақтың алғашқы артық салмақты транзакциясы тірі тұмаудан аулақ болу үшін қабылдануы мүмкін.
Қауіпсіз хабар тарату кезінде, Sumeragi жоспарланған пайдалы жүктемені жолақ және деректер кеңістігі бойынша жиынтықтайды. Пайдалы жүктеме байттары, және TEU. Одан кейін бұл жиынтықтар жол және деректер кеңістігі бойынша міндеттемелерді Sumeragi Егер блокта жолақты есеп айырысу квитанциялары бар болса, блокты өңдеу сондай-ақ жолақты есептеу міндеттемелерін және реле лерді жасайды. блок басына байланысты конверттер, міндеттеме куәлігі, деректерге қолжетімділік міндеттемесінің хэшігі, есеп айырысу дәлелі, және жолақтың пайдалы жүк көлемі.
Ынтымақлы хабар тарату (RBC)
Сенімді хабар тарату (RBC) - Sumeragi пайдалы жүктемені тарату және қалпына келтіру жолы. Ол растаушылар мен байқаушыларға ұсынысқа жататын блок корпусын немесе сертификатты алуға көмектеседі, әсіресе BlockCreated хабарламасы, блок-синхрондық жаңарту немесе тікелей пайдалы жүктеменің берілуі кешіктірілсе немесе жоғалғанда.
RBC пайдалы жүктеме деңгейінде жұмыс істейді. Ұсыныс беруші блок биіктігі, көрінісі және пайдалы жүктеме хэш үшін RBC сессиясын жариялайды, содан кейін міндетті топология арқылы пайдалы жүктеме бөліктерін жібереді. Жарыстар бөлшекті қабылдауды қадағалайды, қалпына келтірілген пайдалы жүктемені жарнамаланған хэшке қарсы растайды және READY мен DELIVER сигналдарын алмастырады. Сессиялар TTL, бөлшек, fanout, күту-қойма және тұрақты сақтау шектеулерімен шектеледі, сондықтан қалпына келтіру трафигі шексіз өсе алмайды.
RBC бөлек консенсус шешімі емес және ол commit сертификатын алмастырмайды. Блок әлі күнге дейін жарамды commit сертификаты мен сәйкес келетін пайдалы жүктеме бар жерде ғана аяқталады. RBC міндетті қолжетімділік дәлелдемелерін және пайдалы жүктемені қалпына келтіруді ұсынады, ал commit прогрессі commit сертификаты мен жергілікті пайдалы жүктемеге негізделеді. Егер сертификат пайдалы жүктемеден бұрын келсе, теңгерімші RBC немесе блок синхрон арқылы пайдалы жүктемені қайтарып алады, содан кейін commit жасай алады.
Операциялық тұрғыдан алғанда, RBC жоғалған пайдалы жүктеме мен деректерге қол жетімділік бөбекшелерінің диагностикалау үшін пайдалы:
iroha --output-format text ops sumeragi telemetryжиынтық қолжетімділік дауыстарын, ағымдағы жинақшылардың санын және RBC кезекті отырыстарды көрсетеді.GET /v1/sumeragi/rbcжәнеGET /v1/sumeragi/rbc/sessionsегжей-тегжейлі жиынтық және белсенді сеанс деректерін ашу Torii, оның ішінде бөлшектік прогресс, дайындық, жеткізу жағдайы және жолақ немесе деректер кеңістігінің артта қалдырылуы; қараңыз; Torii аяқталу нүктелері.- Prometheus сигналдары, мысалы
sumeragi_rbc_store_pressure,sumeragi_rbc_backpressure_deferrals_totalжәне жолаққа немесе деректер кеңістігіне арналған артта қалу өлшегіштері RBC желі жоғалтуын, бөлшектерді қалпына келтіруді және сақтау қысымын бөлектеуге көмектеседі; қараңыз Бұйымдылық және өлшемдер.
Kura сақтау орналасуы үшін шығарылған жолақ конфигурациясын пайдаланады. Әр жолақ blocks/lane_000_core және merge_ledger/lane_000_core_merge.log сияқты детерминистикалық сақтау атауларын алады; жолдың өмірлік циклін өзгертулер осы сегменттерді жалпы блоктардың тәртібі өзгерместен қамтамасыз ете алады, тоқтата алады немесе қайта таңбалайды.