Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar

El protocol de consens Stellar es va descriure per primera vegada a article científic David Mazier el 2015. Es tracta d'un "sistema d'acord bizantí federal" que permet que les xarxes informàtiques descentralitzades i sense líder arribin de manera eficient a un consens sobre una decisió. La xarxa de pagament Stellar utilitza el Protocol de consens estel·lar (SCP) per mantenir un historial de transaccions coherent que sigui visible per a tots els participants.

Els protocols de consens es consideren difícils d'entendre. SCP és més senzill que la majoria d'ells, però encara comparteix aquesta reputació, en part a causa de la idea equivocada que la "votació federada", que és el tema de la primera meitat de l'article científic, és SCP. Però això no és cert! Aquest és només un bloc de construcció important que la segona meitat de l'article utilitza per crear real Protocol de consens estel·lar.

En aquest article explicarem breument què és un "sistema d'acords", què pot fer-lo "bizantí" i per què fer el sistema bizantí "federal". A continuació, explicarem el procediment de votació federada descrit a l'article SCP i, finalment, explicarem el propi protocol SCP.

Sistemes de conveni

Un sistema d'acords permet a un grup de participants arribar a un consens sobre un tema, com ara què demanar per dinar.

A Interstellar, hem implementat el nostre propi sistema d'acords de menjador: demanem el que diu el nostre director d'operacions, John. Aquest és un sistema de conveni senzill i eficaç. Tots confiem en John i creiem que trobarà alguna cosa interessant i nutritiva cada dia.

Però, què passa si en John abusa de la nostra confiança? Ell pot decidir per si sol que tots hauríem de ser vegans. D'aquí a una o dues setmanes, probablement el derrocarem i lliurarem el poder a Elizabeth. Però de sobte li encanten els alvocats amb anxoves i creu que tothom hauria de ser així. El poder corromp. Per tant, és millor trobar un mètode més democràtic: una manera d'assegurar-se que es tenen en compte les diferents preferències, tot garantint un resultat puntual i inequívoc, perquè ningú acabi demanant el dinar, o cinc persones facin encàrrecs diferents, o la discussió. s'allarga fins al vespre.

Sembla que la solució és senzilla: feu una votació! Però aquesta és una impressió enganyosa. Qui recollirà les paperetes i informarà dels resultats? I per què els altres haurien de creure el que diu? Potser podem al principi votar per un líder en qui confiem que lideri la votació, però que la dirigirà первым amb votació? Què passa si no podem posar-nos d'acord sobre un líder? O què passa si arribem a un acord, però aquest líder s'encalla en una reunió o se'n va de baixa?

Problemes similars es produeixen a les xarxes d'ordinadors distribuïdes. Tots els participants o nodes han de posar-se d'acord en alguna decisió, com ara el torn de qui és actualitzar un fitxer compartit o eliminar una tasca de la cua de processament. En una xarxa de criptomoneda, els nodes han de triar repetidament com sembla la història completa entre diverses versions possibles, que de vegades entren en conflicte. Aquest acord de xarxa garanteix al destinatari que la moneda és (a) vàlida (no falsificada) i (b) encara no s'ha gastat en cap altre lloc. Això també garanteix que podrà gastar les monedes en el futur perquè el nou destinatari tindrà les mateixes garanties pels mateixos motius.

Qualsevol sistema de consens en una xarxa informàtica distribuïda ha de ser tolerant a errors: ha de produir resultats coherents malgrat errors com ara enllaços lents, nodes que no responen i ordenació incorrecta dels missatges. bizantí El sistema d'acord també és resistent als errors "bizantins": nodes que donen informació falsa, ja sigui a causa d'un error o en un intent deliberat de soscavar el sistema o obtenir algun avantatge. La tolerància a falles "bizantina": la capacitat de confiar en una decisió del grup fins i tot quan alguns membres del grup poden mentir o no seguir les regles de la presa de decisions. paràbola sobre els generals de l'Imperi Bizantíque va intentar coordinar l'atac. Bona descripció a Anthony Stevens.

Penseu en la propietaria de monedes criptogràfiques Alice, que ha d'escollir entre comprar un deliciós gelat a Bob i pagar el deute de Carol. Potser l'Alice els vol pagar a tots dos alhora gastant la mateixa moneda de manera fraudulenta. Per fer-ho, ha de convèncer l'ordinador d'en Bob que la moneda no es va pagar mai a Carol, i convèncer l'ordinador de la Carol que la moneda mai no es va pagar a en Bob. El sistema bizantí d'acords ho fa pràcticament impossible, utilitzant una forma de govern majoritari anomenada quòrum. Un node d'aquesta xarxa es nega a passar a una versió determinada de la història fins que no veu que un nombre suficient de companys (un quòrum) accepten aquesta transició. Un cop això passi, formaran un bloc de votació prou gran com per obligar els nodes de xarxa restants a estar d'acord amb la seva decisió. L'Alice pot forçar alguns nodes a mentir en el seu nom, però si la xarxa és prou gran, el seu intent es veurà desbordat pels vots dels nodes honestos.

Quants nodes es necessiten per al quòrum? Com a mínim, una majoria, o millor dit, una majoria qualificada per combatre els errors i el frau. Però per comptar amb la majoria, cal saber el nombre total de participants. A l'oficina d'Interstellar o a les eleccions de districte, aquests números són fàcils de trobar. Però si el vostre grup és una xarxa poc definida en la qual els nodes poden entrar i sortir a voluntat sense l'aprovació del centre, llavors necessiteu federal un sistema d'acord bizantí capaç de determinar quòrums no a partir d'una llista predeterminada de nodes, sinó de manera dinàmica, a partir d'una instantània de nodes en constant canvi i inevitablement incompleta en un moment determinat.

Pot semblar impossible crear un quòrum des de la perspectiva d'un sol node en una gran xarxa, però és possible. Aquest quòrum pot fins i tot garantir els resultats de la votació descentralitzada. El llibre blanc de SCP mostra com fer-ho mitjançant un procediment anomenat per vot federal.

Per impacients

La resta de l'article descriu la votació federada i el protocol de consens Stellar amb més detall. Si no us interessen els detalls, aquí teniu una visió general del procés.

  1. Els nodes realitzen rondes de votació federal sobre els "nominats". Una votació federal significa:
    • El node vota alguna afirmació, per exemple, "Propose el valor de V";
    • El node escolta les veus dels companys fins que en troba una que pugui "rebre";
    • El node busca un "quòrum" per a aquesta afirmació. Un quòrum "confirma" el candidat.
  2. Una vegada que un node pot confirmar un o més candidats, intenta "preparar" la "boleta" mitjançant diverses rondes de votació federada.
  3. Una vegada que un node és capaç de verificar que la papereta està a punt, intenta comprometre-la mitjançant encara més rondes de votació federada.
  4. Una vegada que un node pot confirmar la confirmació d'una papereta, pot "externalitzar" el valor d'aquesta papereta utilitzant-la com a resultat de consens.

Aquests passos impliquen múltiples rondes de votació federada, que col·lectivament formen una ronda SCP. Mirem més de prop què passa a cada pas.

Votació federada

El vot federat és un procediment per determinar si la xarxa pot acordar una proposta. A la ronda de votació, cada node ha de triar un dels possibles valors possibles. No pot fer-ho tret que estigui segur que altres nodes de la xarxa no triaran un resultat diferent. Per assegurar-se d'això, els nodes intercanvien una pluja de missatges d'anada i tornada perquè tothom confirmatQue quòrum nusos pren mateix la decisió. La resta d'aquesta secció explica els termes d'aquesta frase i com es produeix tot el procediment.

Quòrums i parts de quòrum

Comencem per definir un quòrum. Com hem comentat anteriorment, en una xarxa descentralitzada amb membres dinàmics, és impossible saber per endavant el nombre de nodes i, per tant, quants són necessaris per a la majoria. El vot federat resol aquest problema introduint una nova idea retallada de quòrum (part de quòrum): un petit conjunt d'iguals en què un node confia per comunicar la informació de l'estat de la votació a la resta de la xarxa. Cada node defineix la seva pròpia secció de quòrum (del qual esdevé membre de facto).

La formació del quòrum comença amb una retallada de quòrum. Per a cada node, s'afegeixen els seus nodes tallats. A continuació, s'afegeixen els termes de la porció aquests nodes etcètera. A mesura que continueu, hi ha més i més nodes que no podeu afegir perquè ja estan inclosos al sector. Quan no hi ha més nodes per afegir, el procés s'atura: hem format un quòrum per "tancament transitiu" de la part de quòrum del node inicial.

Comprensió del protocol de consens estel·lar
Per trobar quòrum d'un node donat...

Comprensió del protocol de consens estel·lar
... afegeix membres de la seva porció...

Comprensió del protocol de consens estel·lar
...després afegim membres de tall d'aquests nodes.

Comprensió del protocol de consens estel·lar
Continuem fins que no quedin nodes per afegir.

Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar
No queden nodes per afegir. Això és un quòrum.

De fet, cada node pot aparèixer en més d'una porció. Per formar quòrum, seleccioneu només una de les seccions i afegiu membres; a continuació, seleccioneu qualsevol porció per a cadascun dels membres i afegiu-hi membres el tallar i així successivament. Això vol dir que cada node és membre de molts quòrums possibles.

Comprensió del protocol de consens estel·lar
Seleccioneu només una secció de quòrum a cada pas.

Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar
Un quòrum possible. O una alternativa...

Comprensió del protocol de consens estel·lar
...selecciona altres rodanxes...

Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar
…(quan sigui possible)…

Comprensió del protocol de consens estel·lar
... crea un altre quòrum.

Com sap un node en quins sectors es troben els altres nodes? De la mateixa manera que la resta d'informació sobre altres nodes: des de les transmissions que cada node emet a la xarxa quan canvia l'estat de votació. Cada transmissió inclou informació sobre les rodanxes del node d'enviament. El llibre blanc de l'SCP no especifica cap mecanisme de comunicació. Les implementacions s'utilitzen normalment protocol de xafarderies per garantir la difusió de missatges a tota la xarxa.

Recordem que en el sistema d'acords bizantí no federal, un quòrum es defineix com la majoria de tots els nodes. El sistema d'acord bizantí està dissenyat des del punt de vista de la pregunta: quants nodes deshonests pot tolerar el sistema? En un sistema de N nodes dissenyat per sobreviure a f errors, un node hauria de poder avançar rebent retroalimentació de N−f iguals, ja que f d'ells poden estar caigudes. Però havent rebut una resposta de N−f iguals, podem suposar que tots els f peers (dels quals el node no va rebre cap resposta) són realment honestos. Per tant, f dels N−f iguals (dels quals es va rebre la resposta) són maliciosos. Perquè els nodes arribin al mateix consens, la majoria dels nodes restants han de ser honestos, és a dir, necessitem que N−f sigui més gran que 2f o N > 3f. Per tant, normalment un sistema dissenyat per sobreviure a errors f tindrà un total de N=3f+1 nodes i una mida de quòrum de 2f+1. Una vegada que una proposta supera el llindar de quòrum, la resta de la xarxa està convençuda que qualsevol proposta en competència fallarà. Així és com la xarxa convergeix al resultat.

Però en un sistema d'acord bizantí federal, no només no hi pot haver majoria (perquè ningú sap la mida total de la xarxa), sinó que el concepte de majoria és completament inútil! Si la pertinença al sistema està oberta, algú pot obtenir la majoria simplement realitzant l'anomenat atac Sybil: unint-se repetidament a la xarxa a través de diversos nodes. Aleshores, per què es pot anomenar el tancament transitiu de la porció? quòrum, i com és capaç de suprimir propostes en competència?

Tècnicament, de cap manera! Imagineu una xarxa de sis nodes on dos triplets estan aïllats en els sectors de quòrum de l'altre. El primer subgrup pot prendre una decisió de la qual el segon mai no sabrà parlar, i viceversa. No hi ha manera que aquesta xarxa arribi a consens (excepte per casualitat).

Per tant, SCP requereix que per a la votació federada (i perquè s'apliquin els teoremes importants del document), la xarxa ha de tenir una propietat anomenada intersecció de quòrums. En una xarxa amb aquesta propietat, els dos quòrums que es puguin construir sempre es superposen en almenys un node. Per determinar el sentiment predominant de la xarxa, això és tan bo com tenir majoria. Intuïtivament, això vol dir que si algun quòrum està d'acord amb l'enunciat X, cap altre quòrum mai podrà acceptar cap altra cosa, perquè necessàriament inclourà algun node del primer quòrum que ja hagi votat X.

Comprensió del protocol de consens estel·lar
Si hi ha una intersecció de quòrums a la xarxa...

Comprensió del protocol de consens estel·lar
... llavors dos quòrums qualsevol que podeu construir...

Comprensió del protocol de consens estel·lar
... sempre es creuarà.

Comprensió del protocol de consens estel·lar

Comprensió del protocol de consens estel·lar

(Per descomptat, els nodes superposats poden resultar ser bizantins o d'una altra manera dolents. En aquest cas, la intersecció del quòrum no ajuda gens a que la xarxa estigui d'acord. Per aquest motiu, molts dels resultats del llibre blanc de SCP es basen en hipòtesis explícites, com ara el que queda a l'encreuament del quòrum de la xarxa fins i tot després d'eliminar els nodes dolents. Per simplificar, deixem aquestes suposicions implícit a la resta de l'article).

Pot semblar poc raonable esperar que sigui possible un encreuament fiable del quòrum en una xarxa de nodes independents. Però hi ha dues raons per les quals això és així.

El primer motiu és l'existència d'Internet en si. Internet és un exemple perfecte de xarxa de nodes independents amb quòrums que s'entrecreuen. La majoria de nodes d'Internet es connecten només a uns quants altres nodes locals, però aquests petits conjunts se superposen prou perquè es pugui accedir a tots els nodes des de tots els altres nodes al llarg d'alguna ruta.

El segon motiu és específic de la xarxa de pagament Stellar (l'ús més comú de SCP). Cada actiu de la xarxa Stellar té un emissor i les directrius de Stellar requereixen que cada emissor designi un o més nodes de la xarxa per processar les sol·licituds de bescanvi. És del vostre interès incloure directament o indirectament aquests nodes a les parts de quòrum per a cada actiu que us interessa. Els quòrums per a tots els nodes interessats en un actiu determinat es superposaran almenys en aquests nodes de redempció. Els nodes interessats en diversos actius inclouran tots els nodes de bescanvi dels emissors respectius a les seves parts de quòrum i intentaran agrupar tots els actius. A més, qualsevol actiu que no estigui vinculat d'aquesta manera a altres a la xarxa, i no ha d'estar connectat - això està dissenyat perquè no hi hagi una superposició de quòrum per a aquesta xarxa (per exemple, els bancs de la zona del dòlar de vegades volen comerciar amb bancs de la zona euro i bancs de la zona del peso, de manera que estan a la mateixa xarxa, però cap d'ells es preocupen per la xarxa separada de nens que venen cartes de beisbol).

Per descomptat, expectativa el pas de quòrum no ho és garantia. Altres sistemes d'acords bizantins deuen gran part de la seva complexitat a la garantia dels quòrums. Una innovació important de SCP és que elimina la responsabilitat de crear quòrums del propi algorisme de consens i el porta al nivell d'aplicació. Així, tot i que el vot federat és prou general com per votar sobre qualsevol qüestió, la seva fiabilitat depèn en realitat de manera crítica del significat més ampli d'aquests significats. Alguns usos hipotètics poden no ser tan propis per crear xarxes ben connectades com altres.

Votació, acceptació i confirmació

En una ronda de votació federada, un node opcionalment comença a votar algun valor V. Això vol dir emetre un missatge a la xarxa: "Sóc el node N, els meus sectors de quòrum són Q i estic votant per V". Quan un node vota d'aquesta manera, promet que mai ha votat en contra de V i mai ho farà.

En les emissions peer-to-peer, cada node veu com voten els altres. Una vegada que un node ha recollit prou d'aquests missatges, pot fer un seguiment de les parts de quòrum i intentar trobar quòrums. Si veu un quòrum de companys que també voten per V, pot procedir a adopció V i va emetre aquest nou missatge a la xarxa: "Sóc el node N, les meves parts de quòrum són Q i accepto V". L'acceptació proporciona una garantia més forta que la simple votació. Quan un node vota per V, mai pot votar per altres opcions. Però si un node accepta V, cap node de la xarxa acceptarà mai l'altra opció (el teorema 8 del llibre blanc de SCP ho demostra).

Per descomptat, hi ha una gran probabilitat que no hi hagi immediatament un quòrum de nodes que estiguin d'acord amb V. Altres nodes poden votar per altres valors. Però hi ha una altra manera perquè un node passi de la simple votació a l'acceptació. N pot acceptar un valor diferent per a W, fins i tot si no l'ha votat, i fins i tot si no hi veu quòrum. Per decidir canviar el vostre vot, només cal veure conjunt de bloqueig nodes que han acceptat W. Un conjunt de bloqueig és un node de cadascuna de les parts de quòrum N. Com el seu nom indica, pot bloc qualsevol altre significat. Si tots els nodes d'aquest conjunt accepten W, aleshores (segons el teorema 8) mai serà possible formar un quòrum que prengui un valor diferent i, per tant, també és segur que N accepti W.

Comprensió del protocol de consens estel·lar
Node N amb tres parts de quòrum.

Comprensió del protocol de consens estel·lar
BDF és un conjunt de bloqueig per a N: inclou un node de cadascuna de les llesques de N.

Comprensió del protocol de consens estel·lar
BE també és un conjunt de bloqueig per a N perquè E apareix en dues llesques de N.

Però el conjunt de bloqueig no és un quòrum. Seria massa fàcil enganyar el node N perquè acceptés el valor desitjat si n'hi hagués prou amb piratejar només un node en cadascuna de les llesques de N. Per tant, acceptar el valor no és el final de la votació. En canvi, N ha de confirmar el valor, és a dir, veure un quòrum de nodes que l'accepten. Si s'arriba tan lluny, aleshores, com demostra el document blanc de l'SCP (al Teorema 11), la resta de la xarxa també confirmarà finalment el mateix valor, de manera que N acabarà el vot federat amb un determinat valor com a resultat.

Comprensió del protocol de consens estel·lar
Votació federada.

El procés de votació, acceptació i confirmació constitueix una ronda completa de votació federada. El protocol de consens Stellar combina moltes d'aquestes rondes per crear un sistema de consens complet.

Protocol de consens estel·lar

Les dues propietats més importants d'un sistema de consens són − seguretat и supervivència. Un algorisme de consens és "segur" si mai pot donar resultats diferents a diferents participants (la còpia de la història de Bob mai contradirà Carol). "Livability" vol dir que l'algorisme sempre produirà un resultat, és a dir, que no s'enganxarà.

Procediment de votació federal descrit Caixa forta en el sentit que si un node confirma el valor de V, cap altre node confirmarà l'altre valor. Però "no confirmarà un altre significat" no vol dir que necessàriament confirmarà alguna cosa. Els participants poden votar tants valors diferents que res arribarà al llindar d'acceptació. Això vol dir que en la votació federal no hi ha supervivència.

El protocol de consens Stellar utilitza el vot federat d'una manera que garanteix la seguretat i la supervivència. (Les garanties de seguretat i supervivència de SCP tenen un límit teòric. El disseny tria una garantia de seguretat molt forta, sacrificant una petita mitigació de supervivència, però amb el temps suficient, és molt probable que s'arribi a un consens). En poques paraules, la idea és tenir múltiples vots federats sobre diversos valors fins que un d'ells superi totes les fases de votació SCP que es descriuen a continuació.

Els valors sobre els quals SCP busca consens podrien ser l'historial de transaccions o una comanda de dinar o una altra cosa, però és important tenir en compte que aquests no són els valors que s'accepten o confirmen. En canvi, la votació federal es produeix segons declaracions sobre aquests valors.

Les primeres rondes de votacions federals tenen lloc fase de nominació (fase de nominació), en un conjunt d'afirmacions com "Nomino V", potser per a molts valors diferents de V. El propòsit de la nominació és trobar una o més afirmacions que passen per acceptació i confirmació.

Després de trobar candidats verificables, SCP passa a la fase de votació, on l'objectiu és trobar un determinat butlletí (és a dir, un contenidor per al valor proposat) i un quòrum que pugui declarar comprometre's per això (comprometre). Si un quòrum compromet una votació, el seu valor s'accepta com a consens. Però abans que un node pugui votar en una votació compromesa, primer ha de confirmar cancel·lació totes les paperetes amb un valor de comptador inferior. Aquests passos (cancel·lar les paperetes per trobar-ne una que es pugui comprometre) impliquen diverses rondes de votació federada sobre diverses reclamacions de vots.

Les seccions següents descriuen la nominació i la votació amb més detall.

Nominació

Al començament de la fase de nominació, cada node pot triar espontàniament un valor per a V i votar per la declaració "Nomino V". L'objectiu en aquesta fase és confirmar la nominació d'algun valor mitjançant una votació federada.

Potser hi ha prou nodes que voten proposicions prou diferents perquè cap nominació pugui assolir el llindar d'acceptació. Per tant, a més d'emetre els seus propis vots de nominació, els nodes "reflecteixen" les nominacions dels seus companys. Eco significa que si un node vota per la nominació V, però veu un missatge d'un veí que vota per la nominació W, ara votarà tant per V com per W. (No tots els vots dels companys es fan ressò durant la nominació perquè això pot provocar una explosió de diferents candidats. SCP inclou un mecanisme per regular aquests vots. En resum, hi ha una fórmula per determinar la "prioritat" d'un igual des del punt de vista d'un node, i només es reflecteixen els vots dels nodes d'alta prioritat. Com més llarga sigui la nominació pren, com més baix sigui el llindar, de manera que el node expandeix el conjunt d'iguals els vots dels quals reflectirà. La fórmula de prioritat inclou el número d'espai com una de les seves entrades, de manera que un peer de prioritat alta per a un espai pot ser un peer de baixa prioritat per a un altre, i viceversa).

Conceptualment, la nominació és paral·lela, tant V com W són vots federals separats, cadascun d'ells capaç d'aconseguir l'acceptació o la confirmació. A la pràctica, els missatges del protocol SCP empaqueten aquests vots individuals.

Tot i que votar per la nominació de V és una promesa de no votar mai en contra de la nominació de V, és a nivell d'aplicació -en aquest cas SCP- on es determina què significa "en contra". SCP no veu cap afirmació que contradigui el vot "Nomino X", és a dir, no hi ha cap missatge "Estic en contra de nomenar X", de manera que el node pot votar per nominar qualsevol valor. Moltes d'aquestes nominacions no aniran enlloc, però finalment el node podrà acceptar o confirmar un o més valors. Un cop confirmat un nominat, es converteix en candidat.

Comprensió del protocol de consens estel·lar
Nominació SCP mitjançant el vot federat. Hi pot haver molts valors "B" proposats pels companys i "reflexionats" pel node.

Les nominacions poden donar lloc a múltiples candidats confirmats. Per tant, SCP requereix que la capa d'aplicació proporcioni algun mètode per combinar els candidats en un sol compost (compost). El mètode d'unió pot ser qualsevol cosa. El més important és que si aquest mètode és determinista, cada node combinarà els mateixos candidats. En un sistema de votació a l'hora de dinar, la "unificació" pot significar simplement abandonar un dels dos candidats. (Però d'una manera determinista: cada node ha de seleccionar el mateix valor per restablir. Per exemple, la selecció anterior en ordre alfabètic). A la xarxa de pagament Stellar, on es vota l'historial de transaccions, la fusió de dos candidats proposats implica la fusió de les transaccions que contenen i l'última de les seves dues marques de temps.

El document blanc SCP demostra (teorema 12) que al final de la fase d'extensió, la xarxa finalment convergeix en un únic compost. Però hi ha un problema: el vot federat és un protocol asíncron (com SCP). En altres paraules, els nodes no estan coordinats pel temps, sinó només pels missatges que envien. Des del punt de vista del node, no està clar quan acabat fase d'extensió. I tot i que tots els nodes arribaran finalment al mateix compost, poden prendre diferents rutes al llarg del camí, creant diferents candidats compostos al llarg del camí, i mai no podran saber quin és el final.

Però és normal. La nominació és només una preparació. El més important és limitar el nombre de candidats per aconseguir el consens, que es produeix en el procés postulant al càrrec (votació).

Córrer

El Butlletí és una parella , on el comptador és un nombre enter que comença per 1 i el valor és un candidat de l'etapa de nominació. Aquest pot ser un candidat propi d'un node o un candidat d'un node veí acceptat per aquest node. A grans trets, una votació implica intents repetits d'obligar la xarxa a arribar a un consens sobre algun candidat en alguna votació mitjançant la celebració de molts vots federats en les declaracions de votació. Els comptadors de les paperetes fan un seguiment dels intents fets, i les paperetes amb recomptes més alts tenen prioritat sobre les paperetes amb recomptes més baixos. Si el butlletí s'encalla, comença una nova votació, ara a la votació .

És important distingir valors (per exemple, quina ha de ser la comanda del dinar: pizza o amanides), butlletins informatius (parell de contravalor) i declaracions sobre les paperetes. La ronda SCP inclou diverses rondes de votació federal, en particular sobre les declaracions següents:

  • "Estic preparat per cometre la papereta B" i
  • "Anuncio la celebració de la votació B"

Des de la perspectiva d'un node determinat, s'arriba al consens quan troba una papereta B per a la qual pot confirmar (és a dir, trobar un quòrum que accepti) la declaració "Emprometo la papereta B". A partir d'aquest moment, és segur actuar amb el valor especificat a B, per exemple, fent aquesta comanda per dinar. Es diu exteriorització significats. Un cop confirmada l'acceptació de la papereta, un node pot estar segur que qualsevol altre node ha externalitzat el mateix valor o ho farà en el futur.

Tot i que molts vots federats es realitzen conceptualment sobre reclamacions per a moltes paperetes diferents, no intercanvien tants missatges perquè cada missatge encapsula una sèrie de paperetes. Així, un missatge promou l'estat de molts vots federats alhora, per exemple: "Accepto vots de compromís que van des de abans "

Què signifiquen els termes "preparat" i "compromí"?

Un node vota per comprometre una papereta quan està segur que altres nodes no comprometran paperetes amb valors diferents. Convèncer d'això és l'objectiu de preparar la sol·licitud. Una votació que diu "Estic preparat per comprometre la papereta B" és una promesa de no comprometre mai una papereta més petita que B, és a dir, amb un recompte menor (SCP requereix que els valors de les paperetes estiguin en un ordre determinat. Així, el butlletí informatiu menys , si N1

Per què "Estic preparat per enviar la papereta B" vol dir "Prometo no comprometre mai les paperetes més petites que la B"? Perquè SCP defineix avortar com el contrari de commit. Una votació per preparar una votació també implica una votació per desqualificar algunes altres paperetes i, com hem comentat anteriorment, votar una cosa és una promesa de no votar mai en contra.

Abans d'emetre una confirmació, un node primer ha de trobar un butlletí que pugui confirmar com a preparat. És a dir, realitza una votació federada sobre el tema “Estic preparat per cometre la votació B”, possiblement en moltes paperetes diferents, fins que en troba una que accepti el quòrum.

D'on surten les paperetes per preparar la votació? En primer lloc, el node emet els preparatius per votar <1,C>, on C és el candidat compost produït en l'etapa de nominació. No obstant això, fins i tot després que comencin els preparatius per a la votació, les nominacions poden donar lloc a que candidats addicionals apareguin com a noves paperetes. Mentrestant, els companys poden tenir candidats diferents i poden formar un conjunt de bloqueig que accepti "Estic preparat per comprometre la papereta B2", cosa que convencerà el node perquè també l'accepti. Finalment, hi ha un mecanisme de temps d'espera que genera noves rondes de votació federada en noves paperetes amb recomptes més alts si les paperetes actuals estan encallades.

Tan bon punt el node troba una papereta B que pot confirmar com a preparada, emet un missatge nou "Commet vot B". Aquest vot diu als companys que el node mai renunciarà a B. De fet, si B és una papereta , després "Comprometeu la votació " significa el consentiment incondicional per votar a favor de la preparació de cada papereta a <∞, s>. Aquest valor addicional ajuda a altres companys a posar-se al dia amb el commit peer si encara es troben en etapes anteriors del protocol.

En aquesta fase, val la pena destacar una vegada més que es tracta de protocols asíncrons. El fet que un node enviï vots positius per a un commit no vol dir que els seus companys també ho facin. Alguns d'ells encara estan votant declaracions en preparació de la votació, d'altres potser ja n'han externalitzat el significat. SCP explica com ha de processar un node cada tipus de missatge entre iguals independentment de la seva fase.

Si el missatge "He anunciat un compromís » no es pot rebre ni confirmar, és a dir, la probabilitat que el missatge sigui acceptat o confirmat o - o, en tot cas, qualsevol papereta amb el valor C, i no cap altra, ja que el node ja s'ha compromès a no cancel·lar mai. . Quan un node emet vots per a un commit, serà C o res, depenent de fins on arribi el consens. Tanmateix, això encara no és suficient perquè el node exterioritzi C. Alguns parells bizantins (que constitueixen menys d'un quòrum, segons els nostres supòsits de seguretat) poden mentir al node. Acceptar i després confirmar alguna papereta (o rang de paperetes) és el que dóna al node la confiança per externalitzar finalment C.

Comprensió del protocol de consens estel·lar
Votació SCP mitjançant votació federada. No es mostra: el temporitzador es pot apagar en qualsevol moment, augmentant el recompte a la papereta (i possiblement produint un nou conjunt de candidats nominats addicionals).

I és tot! Un cop la xarxa ha arribat a un consens, està disposada a fer-ho una i altra vegada. A la xarxa de pagament Stellar, això passa aproximadament un cop cada 5 segons: una proesa que requereix tant la seguretat com la supervivència garantides per SCP.

SCP pot aconseguir-ho confiant en diverses rondes de votació federada. La votació federada és possible gràcies al concepte de segments de quòrum: conjunts d'iguals en els quals cada node ha decidit confiar com a part del seu quòrum (subjectiu). Aquesta configuració significa que es pot arribar a un consens fins i tot en una xarxa amb membres oberts i enganys bizantins.

Per llegir més

  • Es pot trobar el llibre blanc de SCP original aquíI aquí projecte de especificacions per a la seva implementació.
  • L'autor original del protocol SCP, David Mazier, ho explica d'una manera simplificada (però encara tècnica). aquí.
  • És possible que us hagi sorprès no trobar els termes "mineria" o "prova de treball" en aquest article. SCP no utilitza aquests mètodes, però alguns altres algorismes de consens sí. Zane Witherspoon va escriure accessible visió general dels algorismes de consens.
  • Descripció pas a pas una xarxa senzilla que arriba a un consens en una ronda completa de SCP.
  • Per als lectors interessats en les implementacions SCP: vegeu codi C++, utilitzat per la xarxa de pagament Stellar, o Anar codi, que vaig escriure per entendre millor SCP.

Font: www.habr.com

Afegeix comentari