Das Stellar-Konsensprotokoll
Resumen
Los pagos internacionales son lentos y costosos, en parte debido al enrutamiento de pagos de múltiples saltos a través de canales heterogéneos. sistemas bancarios. Stellar es una nueva red de pagos global que puede transferir dinero digital directamente a cualquier parte del mundo mundo en segundos. La innovación clave es una transacción segura mecanismo a través de intermediarios no confiables, utilizando un nuevo Protocolo de acuerdo bizantino llamado SCP. Con SCP, cada institución especifica otras instituciones con las cuales permanecer de acuerdo; a través de la interconexión global de la sistema financiero, toda la red se pone de acuerdo en términos atómicos. transacciones que abarcan instituciones arbitrarias, sin solvencia ni riesgo de tipo de cambio por parte de emisores de activos intermediarios o creadores de mercado. Presentamos el modelo, protocolo y verificación formal; describir la red de pago Stellar; y finalmente evaluar Stellar empíricamente a través de puntos de referencia y nuestra experiencia con varios años de uso en producción. Conceptos de CCS • Seguridad y privacidad →Distribuida seguridad de sistemas; • Organización de sistemas informáticos → Arquitecturas de igual a igual; • Sistemas de información → Transferencia electrónica de fondos. Palabras clave blockchain, BFT, quórumes, pagos Formato de referencia ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pagos globales rápidos y seguros con Stellar. En SOSP '19: Simposio sobre principios de sistemas operativos, 27 al 30 de octubre, 2019, Huntsville, ON, Canadá. ACM, Nueva York, NY, EE.UU., 17 páginas. https://doi.org/10.1145/3341301.3359636
Zusammenfassung
Internationale Zahlungen sind langsam und teuer, was teilweise auf die Multi-Hop-Zahlungsweiterleitung über heterogene Systeme zurückzuführen ist Bankensysteme. Stellar ist ein neues globales Zahlungsnetzwerk das digitales Geld direkt überall in der Welt überweisen kann Welt in Sekunden. Die entscheidende Neuerung ist eine sichere Transaktion Mechanismus über nicht vertrauenswürdige Vermittler unter Verwendung eines neuen Byzantinisches Vereinbarungsprotokoll namens SCP. Mit SCP, jeweils Die Institution gibt andere Institutionen an, bei denen sie bleiben soll im Einvernehmen; durch die globale Vernetzung der Finanzsystem, das gesamte Netzwerk einigt sich dann auf Atomarität Transaktionen zwischen beliebigen Institutionen, ohne Solvenz- oder Wechselkursrisiko durch zwischengeschaltete Emittenten von Vermögenswerten oder Market Maker. Wir präsentieren SCPs Modell, Protokoll und formelle Überprüfung; Beschreiben Sie das Zahlungsnetzwerk Stellar; und schließlich Stellar empirisch durch Benchmarks bewerten und unsere Erfahrung aus mehrjährigem Produktionseinsatz. CCS-Konzepte • Sicherheit und Datenschutz → Verteilt Systemsicherheit; • Organisation von Computersystemen → Peer-to-Peer-Architekturen; • Informationssysteme → Elektronischer Geldtransfer. Schlüsselwörter blockchain, BFT, Quoren, Zahlungen ACM-Referenzformat: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Schnelle und sichere globale Zahlungen mit Stellar. Im SOSP ’19: Symposium zu Betriebssystemprinzipien, 27.–30. Oktober, 2019, Huntsville, ON, Kanada. ACM, New York, NY, USA, 17 Seiten. https://doi.org/10.1145/3341301.3359636
Introducción
Los pagos internacionales son notoriamente lentos y costosos [32]. Considere la impracticabilidad de enviar 0,50 dólares desde EE.UU. a *Galois, Inc. †UCLA Permiso para realizar copias digitales o impresas de todo o parte de este trabajo para El uso personal o en el aula se concede sin cargo, siempre que no se realicen copias. realizados o distribuidos con fines de lucro o ventaja comercial y que las copias lleven este aviso y la cita completa en la primera página. Derechos de autor de los componentes de este trabajo propiedad de terceros distintos de ACM deben ser respetados. Abstraer con Se permite el crédito. Para copiar de otra manera, o republicar, para publicar en servidores o para redistribuir a listas, requiere permiso previo específico y/o una tarifa. Solicitar permisos de [email protected]. SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá © 2019 Asociación de Maquinaria de Computación. ACM ISBN 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 México, dos países vecinos. Los usuarios finales pagan casi 9 dólares para el promedio de dicha transferencia [32], y un acuerdo bilateral mediada por los bancos centrales de los países sólo podría reducir el costo bancario subyacente a $0,67 por artículo [2]. Además de las tarifas, la latencia de los pagos internacionales generalmente se cuenta en días, lo que hace imposible sacar dinero del extranjero rápidamente en emergencias. En países donde el sistema bancario no funciona o no sirve a todos los ciudadanos, o cuando las tarifas son intolerables, la gente recurre a enviar pagos en autobús [38], por barco [19], y ocasionalmente ahora por Bitcoin [55], todos los cuales incurrir en riesgos, latencia o inconvenientes. Si bien siempre habrá costos de cumplimiento, la evidencia sugiere que se pierde una cantidad significativa por falta de competencia [21], lo cual se ve exacerbado por la tecnología ineficiente. donde la gente puede innovar, los precios y las latencias bajan. Por ejemplo, las remesas desde cuentas bancarias en el segundo trimestre de 2019 costaron un promedio de 6,99%, mientras que la cifra del dinero móvil fue sólo del 4,88% [13]. Una red de pagos abierta y global que atrae la innovación y la competencia de entidades no bancarias podría reducir costos y latencias en todas las capas, incluido el cumplimiento [83]. Este documento presenta Stellar, un pago basado en blockchain red diseñada específicamente para facilitar la innovación y Competencia en pagos internacionales. Stellar es el primero sistema para cumplir los tres objetivos siguientes (bajo un “hipótesis de Internet novedosa pero empíricamente válida”): 1. Membresía abierta: cualquiera puede emitir bonos respaldados por moneda. tokens digitales que se pueden intercambiar entre usuarios. 2. Finalidad impuesta por el emisor: el emisor de un token puede evitar transacciones en el token se reviertan o deshagan. 3. Atomicidad entre emisores: los usuarios pueden intercambiar atómicamente y negociar tokens de múltiples emisores. Lograr los dos primeros es fácil. Cualquier empresa puede ofrecer unilateralmente un producto como Paypal, Venmo, WeChat. Pay, o Alipay y garantizar la firmeza de los pagos en el monedas virtuales que han creado. Desafortunadamente, realizar transacciones atómicas entre estas monedas es imposible. De hecho, a pesar de que Paypal adquirió la empresa matriz de Venmo En 2013, todavía es imposible que los usuarios finales envíen Venmo. dólares a los usuarios de Paypal [78]. Sólo recientemente los comerciantes pueden incluso aceptar ambos con una sola integración. Los objetivos 2 y 3 se pueden lograr en un sistema cerrado. En particular, varios países cuentan con sistemas de pago internos eficientes. redes, normalmente supervisadas por una autoridad reguladora de confianza universal. Sin embargo, la membresía está limitada a un recinto cerrado. conjunto de bancos autorizados y las redes se limitan a la alcance de la autoridad reguladora de un país.SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Los objetivos 1 y 3 se han logrado en blockchain minados, más notablemente en forma de ERC20 tokens en Ethereum [3]. La idea clave de estos blockchains es crear una nueva criptomoneda con la que recompensar a las personas por establecerse transacciones difíciles de revertir. Desafortunadamente, esto significa que los emisores token no controlan la finalidad de la transacción. Si el software los errores hacen que el historial de transacciones se reorganice [26, 73], o cuando el botín de defraudar a la gente excede el costo de historial de reorganización [74, 97], los emisores pueden ser responsables de tokens ya han canjeado por dinero del mundo real. El Stellar blockchain tiene dos propiedades distintivas. En primer lugar, admite de forma nativa mercados eficientes entre tokens de diferentes emisores. Específicamente, cualquiera puede emitir un token, el blockchain proporciona un libro de pedidos integrado para el comercio entre cualquier par de token y los usuarios pueden emitir pagos de ruta que comercian atómicamente en varios pares de divisas mientras garantizando un precio límite de extremo a extremo. En segundo lugar, Stellar introduce un nuevo acuerdo bizantino. protocolo, SCP (Stellar Protocolo de Consenso), a través del cual Los emisores token designan servidores validator específicos para hacer cumplir finalidad de la transacción. Siempre y cuando nadie comprometa los validators de un emisor (y las firmas digitales subyacentes y Los hashes criptográficos permanecen seguros), el emisor sabe exactamente qué transacciones se han producido y evita el riesgo. de pérdidas por blockchain reorganización histórica. La idea clave de SCP es que la mayoría de los emisores de activos se benefician de mercados líquidos y quieren facilitar las transacciones atómicas con otros activos. Por lo tanto, los administradores validator configuran sus servidores para acordar con otros validators exactamente historial de todas las transacciones sobre todos los activos. Un validator v1 puede ser configurado para estar de acuerdo con v2, o v2 puede configurarse para estar de acuerdo con v1, o ambos pueden configurarse para que coincidan entre sí; En todos los casos, ninguno se comprometerá con un historial de transacciones hasta sabe que el otro no puede comprometerse con una historia diferente. Por transitividad, si v1 no puede estar en desacuerdo con v2 y v2 no puede estar en desacuerdo con v3 (o viceversa), v1 no puede estar en desacuerdo con v3, ya sea que v3 represente o no activos, v1 incluso ha escuchado de. Bajo la hipótesis de que estas relaciones de acuerdo conectar transitivamente toda la red, SCP garantiza acuerdo global, lo que lo convierte en un acuerdo bizantino global protocolo con membresía abierta. A este nuevo supuesto de conectividad lo llamamos hipótesis de Internet y observamos que posee tanto de “Internet” (que todo el mundo entiende como significa la red IP más grande conectada transitivamente) y pagos internacionales heredados (que son salto a salto no atómico, pero aprovecha un sistema global transitivamente conectado. red de instituciones financieras). Stellar ha estado en uso de producción desde septiembre de 2015. Para mantener manejable la longitud blockchain, el sistema ejecuta SCP a intervalos de 5 segundos: rápido según los estándares blockchain, pero mucho más lento que las aplicaciones típicas del acuerdo bizantino. Aunque el uso principal ha sido pagos, Stellar también ha probado atractivo para tokens fungibles no monetarios que se benefician de los mercados secundarios inmediatos (ver Sección 7.1). La siguiente sección analiza el trabajo relacionado. La sección 3 presenta SCP. La Sección 4 describe nuestra verificación formal de SCP. La sección 5 describe la capa de pago de Stellar. La sección 6 se relaciona parte de nuestra experiencia de implementación y lecciones aprendidas. La sección 7 evalúa el sistema. La sección 8 concluye.
Einführung
Internationale Zahlungen sind bekanntermaßen langsam und kostspielig [32]. Bedenken Sie, dass es unpraktisch ist, 0,50 US-Dollar aus den USA nach zu senden *Galois, Inc. †UCLA Erlaubnis, digitale oder gedruckte Kopien des gesamten oder eines Teils dieser Arbeit anzufertigen Die persönliche oder unterrichtsbezogene Nutzung ist unentgeltlich gestattet, sofern dies bei Kopien nicht der Fall ist zu Gewinnzwecken oder kommerziellen Vorteilen hergestellt oder verbreitet werden und dass Kopien berechtigt sind Diese Mitteilung und das vollständige Zitat auf der ersten Seite. Urheberrechte für Komponenten Werke, die anderen als ACM gehören, müssen gewürdigt werden. Abstrahieren mit Kredit ist zulässig. Zum anderweitigen Kopieren oder erneuten Veröffentlichen, zum Posten auf Servern oder auf Für die Weiterverbreitung in Listen ist eine vorherige ausdrückliche Genehmigung und/oder eine Gebühr erforderlich. Anfrage Berechtigungen von [email protected]. SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada © 2019 Association for Computing Machinery. ACM ISBN 978-1-4503-6873-5/19/10...15,00 $ https://doi.org/10.1145/3341301.3359636 Mexiko, zwei Nachbarländer. Endverbraucher zahlen fast 9 US-Dollar für den Durchschnitt einer solchen Übertragung [32] und eine bilaterale Vereinbarung Die von den Zentralbanken der Länder vermittelten Gelder konnten nur reduziert werden Die zugrunde liegenden Bankkosten belaufen sich auf 0,67 USD pro Artikel [2]. Zusätzlich zu den Gebühren Bei internationalen Zahlungen wird grundsätzlich die Latenz berücksichtigt innerhalb weniger Tage, was es unmöglich macht, schnell Geld ins Ausland zu bekommen Notfälle. In Ländern, in denen das Bankensystem dies nicht tut funktioniert oder nicht allen Bürgern dient, oder wenn die Gebühren untragbar sind, greifen die Menschen auf die Überweisung von Zahlungen per Bus [38], by zurück Boot [19] und gelegentlich jetzt auch mit Bitcoin [55], allesamt Risiken, Verzögerungen oder Unannehmlichkeiten mit sich bringen. Obwohl es immer Compliance-Kosten geben wird, deuten die Beweise darauf hin, dass ein erheblicher Betrag durch mangelnden Wettbewerb verloren geht [21], was durch ineffiziente Technologie noch verschärft wird. Wo Menschen kann innovativ sein, Preise und Latenzen sinken. Beispielsweise kosteten Überweisungen von Bankkonten im zweiten Quartal 2019 durchschnittlich 6,99 %, während der Wert für mobiles Geld nur 4,88 % betrug [13]. Ein offenes, globales Zahlungsnetzwerk, das Innovationen anzieht und die Konkurrenz durch Nichtbanken könnte nachlassen Kosten und Latenzen auf allen Ebenen, einschließlich Compliance [83]. In diesem Dokument wird Stellar vorgestellt, eine blockchain-basierte Zahlung Netzwerk, das speziell darauf ausgelegt ist, Innovationen zu erleichtern und Wettbewerb im internationalen Zahlungsverkehr. Stellar ist der erste System, um alle drei der folgenden Ziele zu erreichen (unter a neuartige, aber empirisch gültige „Internet-Hypothese“): 1. Offene Mitgliedschaft – Jeder kann währungsgestützte Ausgaben tätigen digitale tokens, die zwischen Benutzern ausgetauscht werden können. 2. Vom Emittenten erzwungene Endgültigkeit – Der Emittent eines token kann dies verhindern Transaktionen im token können nicht storniert oder rückgängig gemacht werden. 3. Emittentenübergreifende Atomizität – Benutzer können atomar austauschen und handeln Sie tokens von mehreren Emittenten. Die ersten beiden zu erreichen ist einfach. Jedes Unternehmen kann einseitig ein Produkt wie Paypal, Venmo, WeChat anbieten Bezahlen Sie oder Alipay und stellen Sie die Endgültigkeit der Zahlungen sicher virtuelle Währungen, die sie geschaffen haben. Leider ist eine atomare Transaktion über diese Währungen hinweg nicht möglich. Tatsächlich, obwohl Paypal die Muttergesellschaft von Venmo übernommen hat Im Jahr 2013 ist es für Endbenutzer immer noch unmöglich, Venmo zu versenden Dollar an Paypal-Benutzer [78]. Erst seit kurzem können Händler Akzeptieren Sie sogar beides mit einer einzigen Integration. Die Ziele 2 und 3 können in einem geschlossenen System erreicht werden. Insbesondere verfügen einige Länder über einen effizienten Inlandszahlungsverkehr Netzwerke, die in der Regel von einer allgemein vertrauenswürdigen Regulierungsbehörde überwacht werden. Die Mitgliedschaft ist jedoch auf eine geschlossene Mitgliedschaft beschränkt Die Anzahl der zugelassenen Banken und die Netzwerke sind auf die beschränkt Reichweite der Regulierungsbehörde eines Landes.SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. Die Ziele 1 und 3 wurden in abgebauten blockchains erreicht, vor allem in Form von ERC20 tokens auf Ethereum [3]. Die Kernidee dieser blockchains besteht darin, eine neue Kryptowährung zu schaffen, mit der Menschen für ihre Abwicklung belohnt werden können Transaktionen sind schwer rückgängig zu machen. Leider bedeutet dies, dass die Emittenten von token die Endgültigkeit der Transaktion nicht kontrollieren. Wenn Software Fehler führen dazu, dass der Transaktionsverlauf neu organisiert wird [26, 73], oder wenn die Beute betrügerischer Menschen die Kosten übersteigt Durch die Neuordnung der Historie [74, 97] können Emittenten für tokens haftbar gemacht werden Sie wurden bereits gegen echtes Geld eingelöst. Der Stellar blockchain hat zwei charakteristische Eigenschaften. Erstens unterstützt es nativ effiziente Märkte zwischen tokens von verschiedenen Emittenten. Konkret kann jeder ein token ausstellen, Der blockchain bietet ein integriertes Orderbuch für den Handel zwischen einem beliebigen Paar von tokens, und Benutzer können Pfadzahlungen ausstellen die gleichzeitig atomar über mehrere Währungspaare hinweg handeln Gewährleistung eines End-to-End-Grenzpreises. Zweitens führt Stellar ein neues byzantinisches Abkommen ein Protokoll, SCP (Stellar Consensus Protocol), über das token-Aussteller benennen bestimmte validator-Server zur Durchsetzung Endgültigkeit der Transaktion. Solange niemand die validators eines Ausstellers (und die zugrunde liegenden digitalen Signaturen und kryptografische hashes bleiben sicher), der Emittent weiß genau, welche Transaktionen stattgefunden haben und vermeidet das Risiko der Verluste aus der Umstrukturierung der blockchain-Historie. Die Kernidee von SCP besteht darin, dass die meisten Emittenten von Vermögenswerten davon profitieren liquide Märkte und wollen atomare Transaktionen ermöglichen mit anderen Vermögenswerten. Daher konfigurieren validator Administratoren ihre Server, um sich mit anderen validators auf das Genaue zu einigen Historie aller Transaktionen mit allen Vermögenswerten. Ein validator v1 kann sein entweder so konfiguriert werden, dass sie v2 zustimmt, oder v2 kann so konfiguriert werden, dass sie zustimmt mit v1, oder beide können so konfiguriert werden, dass sie miteinander übereinstimmen; In allen Fällen wird sich keiner von beiden auf eine Transaktionshistorie festlegen, bis Es weiß, dass der andere sich nicht auf eine andere Geschichte festlegen kann. Wenn aufgrund der Transitivität v1 nicht mit v2 und v2 mit v3 nicht einverstanden sein kann (oder umgekehrt), kann v1 nicht mit v2 übereinstimmen v3, ob v3 Vermögenswerte darstellt oder nicht, hat v1 überhaupt gehört von. Unter der Annahme, dass diese Vereinbarungsbeziehungen Transitiv das gesamte Netzwerk verbinden, garantiert SCP globales Abkommen, was es zu einem globalen byzantinischen Abkommen macht Protokoll mit offener Mitgliedschaft. Wir nennen diese neue Verbundenheitsannahme die Internet-Hypothese und stellen fest, dass dies der Fall ist gilt sowohl für „das Internet“ (was jeder versteht). bedeuten das größte transitiv verbundene IP-Netzwerk) und alte internationale Zahlungen (die Hop-by-Hop sind). nicht-atomar, sondern nutzen eine transitiv verbundene, globale Netzwerk von Finanzinstituten). Stellar ist seit September 2015 im Produktionseinsatz. Um die Länge von blockchain überschaubar zu halten, läuft das System SCP in 5-Sekunden-Intervallen – für blockchain-Verhältnisse schnell, aber weitaus langsamer als typische Anwendungen byzantinischer Vereinbarungen. Obwohl der Hauptzweck Zahlungen waren, gilt dies auch für Stellar hat sich als attraktiv für nicht durch Geld fungible tokens erwiesen, die davon profitieren aus unmittelbaren Sekundärmärkten (siehe Abschnitt 7.1). Im nächsten Abschnitt werden verwandte Arbeiten besprochen. Abschnitt 3 präsentiert SCP. Abschnitt 4 beschreibt unsere formelle Überprüfung von SCP. Abschnitt 5 beschreibt die Zahlungsebene von Stellar. Abschnitt 6 betrifft einige unserer Einsatzerfahrungen und gewonnenen Erkenntnisse. Abschnitt 7 bewertet das System. Abschnitt 8 schließt ab.
Stellar protocolo de consenso
El protocolo de consenso (SCP) Stellar es un protocolo basado en quórum Protocolo de acuerdo bizantino con membresía abierta. Los quórums surgen de las decisiones de configuración local combinadas de nodos individuales. Sin embargo, los nodos sólo reconocen quórums a los que pertenecen ellos mismos, y sólo después aprender las configuraciones locales de todos los demás miembros del quórum. Un beneficio de este enfoque es que SCP es inherentemente Tolera visiones heterogéneas de los nodos que existen. Por lo tanto, Los nodos pueden unirse y salir unilateralmente sin necesidad de un Protocolo de “ver cambio” para coordinar la membresía. 3.1 Acuerdo bizantino federado El problema tradicional del acuerdo bizantino consiste en una sistema cerrado de N nodos, algunos de los cuales están defectuosos y pueden comportarse arbitrariamente. Los nodos reciben valores de entrada e intercambian mensajes para decidir sobre un valor de salida entre las entradas. Un protocolo de acuerdo bizantino es seguro cuando no hay dos nodos con buen comportamiento que produzcan decisiones diferentes y el único decisión fue un insumo válido (para alguna definición de acuerdo válidoSOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. previamente). Un protocolo está activo cuando garantiza que cada nodo honesto eventualmente genera una decisión. Normalmente, los protocolos suponen N = 3f + 1 para algún número entero f > 0, entonces garantizamos seguridad y alguna forma de vida para que siempre y cuando como máximo f nodos estén defectuosos. En algún momento de estos protocolos, los nodos votan sobre los valores propuestos y una propuesta recibir 2f + 1 votos, llamado quórum de votos, se convierte en la decisión. Con N = 3f + 1 nodos, dos quórumes cualesquiera de el tamaño 2f + 1 se superpone en al menos f + 1 nodos; incluso si f de estos Los nodos superpuestos son defectuosos, los dos quórums comparten al menos un nodo no defectuoso, evitando decisiones contradictorias. Sin embargo, este enfoque sólo funciona si todos los nodos están de acuerdo lo que constituye un quórum, lo cual es imposible en SCP donde Es posible que dos nodos ni siquiera sepan de la existencia del otro. Con SCP, cada nodo v declara unilateralmente conjuntos de nodos, llamado sus sectores de quórum, de modo que (a) v cree que si todos los miembros de un segmento están de acuerdo sobre el estado del sistema, entonces tienen razón, y (b) v cree que al menos una de sus porciones estará disponible para brindar información oportuna sobre la estado del sistema. Llamamos al sistema resultante, que consiste de nodos y sus cortes, un Acuerdo Bizantino Federado (Logística de Amazon). Como veremos a continuación, surge un sistema de quórum de los cortes de los nodos. De manera informal, las porciones de un nodo Logística de Amazon expresan con quién El nodo requiere acuerdo. Por ejemplo, un nodo puede requerir un acuerdo con 4 organizaciones específicas, cada una de las cuales ejecuta 3 nodos; a acomodar el tiempo de inactividad, puede configurar sus sectores para que sean todos los conjuntos compuesto por 2 nodos de cada organización. Si esto “requiere La relación “acuerdo con” relaciona transitivamente dos nodos cualesquiera, conseguimos un acuerdo global. De lo contrario, podemos obtener divergencia, pero sólo entre organizaciones ninguna de las cuales requiere acuerdo con el otro. Dada la topología actual sistema financiero, planteamos la hipótesis de que la convergencia generalizada seguirá produciendo una historia de contabilidad única que la gente llama “la red Stellar”, del mismo modo que hablamos de Internet. Los quórums surgen de las porciones de la siguiente manera. Cada nodo especifica su quórum se divide en cada mensaje que envía. Sea S el conjunto de nodos desde los cuales se originó un conjunto de mensajes. un El nodo considera que el conjunto de mensajes ha alcanzado el quórum. umbral cuando cada miembro de S tiene un segmento incluido en S. Por construcción, tal conjunto S, si es unánime, satisface la requisitos de acuerdo de cada uno de sus miembros. Un par defectuoso puede anunciar porciones diseñadas para cambiar lo que Los nodos con buen comportamiento consideran quórumes. Por el bien del análisis del protocolo, definimos un quórum en Logística de Amazon como no vacío. conjunto S de nodos que abarcan al menos una porción de quórum de cada miembro no defectuoso. Esta abstracción es sólida, como cualquier conjunto. de mensajes que pretenden representar un quórum unánime realmente lo hace (incluso si contiene mensajes de nodos defectuosos), y es preciso cuando S contiene sólo nodos que se comportan bien. en En esta sección, también asumimos que los sectores de los nodos no cambian. Sin embargo, nuestros resultados se transfieren al caso del segmento cambiante. porque un sistema en el que cambian las porciones no es menos seguro que un sistema de corte fijo en el que los cortes de un nodo constan de todos los sectores que alguna vez utiliza en el caso de sectores cambiantes (ver Teorema 13 en [68]). Como se explica en la Sección 4, la vivacidad depende de Los nodos con buen comportamiento eventualmente eliminan los nodos no confiables. de sus rebanadas. Debido a que diferentes nodos tienen diferentes requisitos de acuerdo, Logística de Amazon excluye una definición global de seguridad. decimos Los nodos no defectuosos v1 y v2 se entrelazan cuando cada El quórum de v1 interseca cada quórum de v2 en al menos un nodo no defectuoso. Un protocolo de Logística de Amazon puede garantizar un acuerdo sólo entre nodos entrelazados; ya que SCP lo hace, es culpa suya La tolerancia a la seguridad es óptima. La hipótesis de Internet, subyacente al diseño de Stellar, afirma que los nodos que a la gente le importan sobre estarán entrelazados. Decimos que un conjunto de nodos I está intacto si I es un quórum uniformemente no defectuoso tal que cada dos miembros de I están entrelazados incluso si todos los nodos fuera de I son defectuosos. Intuitivamente, Entonces, debería permanecer inmune a las acciones de los no intactos. nodos. SCP garantiza tanto la vida sin bloqueo [93] como seguridad para conjuntos intactos, aunque los nodos en sí no necesitan saber (y tal vez no poder saber) qué conjuntos están intactos. Además, la unión de dos conjuntos intactos que se cruzan es un conjunto intacto. Por lo tanto, los conjuntos intactos definen una partición del Nodos de buen comportamiento, donde cada partición es segura y activa. (bajo algunas condiciones), pero pueden generarse diferentes particiones decisiones divergentes. 3.1.1 Consideraciones de seguridad versus vida en Logística de Amazon Con excepciones limitadas [64], la mayoría de los protocolos de acuerdos bizantinos cerrados están ajustados al punto de equilibrio en el que la seguridad y la vivacidad tienen la misma tolerancia a fallos. En Logística de Amazon, eso significa configuraciones en las que, independientemente de las fallas, todos Los conjuntos entrelazados también están intactos. Dado que Logística de Amazon determina quórums de forma descentralizada, es poco probable que las elecciones de sectores individuales conduzcan a este equilibrio. Además, en al menos en Stellar, el equilibrio no es deseable: las consecuencias de una falla de seguridad (es decir, dinero digital doblemente gastado) son mucho peores que los de una falla en la vida (es decir, retrasos en pagos que de todos modos tomaban días antes del Stellar). gente por lo tanto, debe seleccionar y selecciona porciones de quórum grandes tales que es más probable que sus nodos permanezcan entrelazados que intactos. Inclinando aún más la balanza, es más fácil recuperarse de fallas de vida típicas en un sistema Logística de Amazon que en uno cerrado tradicional. En sistemas cerrados, todos los mensajes deben ser interpretado con respecto al mismo conjunto de quórumes. Por lo tanto, Agregar y eliminar nodos para recuperarse de una falla requiere llegar a un consenso sobre un evento de reconfiguración, lo cual es difícil una vez que el consenso ya no existe. Por el contrario, con Logística de Amazon, cualquier nodo puede ajustar unilateralmente sus porciones de quórum en cualquier tiempo. En respuesta a una interrupción en un sistema de importancia sistémica organización, los administradores de nodos pueden ajustar sus sectores para solucionar el problema, un poco como coordinar respuestas a catástrofes de BGP [63] (aunque sin las limitaciones de enrutamiento a través de enlaces de red física).
Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá 3.1.2 El teorema de la cascada SCP sigue la plantilla del modelo redondo básico [42]; Los nodos avanzan a través de una serie de papeletas numeradas, cada una intentar tres tareas: (1) identificar un valor “seguro” que no esté en contradicción con ninguna decisión en una votación anterior (a menudo denominada preparar la papeleta), (2) acordar el valor seguro, y (3) detectar que el acuerdo fue exitoso. Sin embargo, Logística de Amazon está abierta La membresía obstaculiza varias técnicas comunes, lo que hace que sea imposible "portar" los protocolos cerrados tradicionales a la Logística de Amazon modelo simplemente cambiando la definición de quórum. Una técnica empleada por muchos protocolos es la rotación a través de los nodos líderes en forma de turnos después de los tiempos de espera. En un sistema cerrado, la selección del líder por turnos garantiza que eventualmente un líder único y honesto termine coordinando un acuerdo sobre un único valor. Desafortunadamente, todos contra todos no puede funcionar en un sistema Logística de Amazon con membresía desconocida. Otra técnica común que falla con Logística de Amazon es asumir que un quórum particular puede convencer a todos los nodos. Por ejemplo, Si todos reconocen cualquier nodo 2f + 1 como quórum, entonces 2f + 1 firmas son suficientes para demostrar el estado del protocolo en todos los nodos. De manera similar, si un nodo recibe un quórum de mensajes idénticos A través de la transmisión confiable [24], el nodo puede asumir que todos los nodos que no son defectuosos también verán un quórum. En cambio, en Logística de Amazon, una El quórum no significa nada para los nodos fuera del quórum. Por último, los sistemas no federados suelen emplear sistemas "al revés". razonamiento sobre seguridad: si los nodos f + 1 están defectuosos, toda la seguridad Se pierden las garantías. Por lo tanto, si el nodo v escucha f + 1 nodos, todos declarar algún hecho F, v puede suponer que al menos uno le está diciendo al verdad (y por tanto que F es verdadera) sin pérdida de seguridad. tal El razonamiento falla en Logística de Amazon porque la seguridad es una propiedad de pares. de nodos, por lo que un nodo que ha perdido seguridad para algunos pares puede Siempre se pierde seguridad frente a más nodos al asumir hechos incorrectos. Sin embargo, Logística de Amazon puede razonar al revés sobre la vitalidad. Defina un conjunto de bloqueo v como un conjunto de nodos que intersecta cada porción de v. Si un conjunto de bloqueo de v B es unánimemente defectuoso, B puede negarle al nodo v un quórum y costarle vida. Por lo tanto, si B declara unánimemente el hecho F, entonces v sabe que F es true o v no está intacto. Sin embargo, todavía necesita ver una versión completa. quórum para saber que los nodos entrelazados no contradicen a F, lo que conduce a una ronda final de comunicación en SCP y otros protocolos de Logística de Amazon [47] que no se requieren en casos análogos protocolos de membresía cerrada. El resultado es que tenemos tres posibles niveles de confianza en hechos potenciales: indeterminado, seguro de asumir entre nodos intactos (que veremos término hechos aceptados), y es seguro asumir entre entrelazados nodos (que llamaremos hechos confirmados). El nodo v puede determinar de manera eficiente si un conjunto B está bloqueando v verificando si B cruza todos sus sectores. Curiosamente, si los nodos siempre anuncian las declaraciones que aceptar y un quórum completo acepta una declaración, se desencadena un proceso en cascada mediante el cual las declaraciones se propagan a lo largo conjuntos intactos. Al hecho clave que subyace a esta propagación lo llamamos el teorema de la cascada, que establece lo siguiente: Si I es un conjunto intacto, Q es un quórum de cualquier miembro de I, y S es cualquier superconjunto de Q, entonces S ⊇I o hay un miembro v ∈I tal que v < S y I ∩S es v-bloqueo. Intuitivamente, ¿fue esto no es el caso, el complemento de S contendría un quórum que cruza I pero no Q, violando la intersección de quórum. Tenga en cuenta que si comenzamos con S = Q y expandimos repetidamente S hasta incluir todos los nodos que bloquea, obtenemos un efecto en cascada hasta que, eventualmente, S abarca todo I. 3.2 Descripción del protocolo SCP es un protocolo de consenso parcialmente sincrónico [42] que consta de una serie de intentos para llegar a un consenso llamado papeletas. Las papeletas emplean tiempos de espera de duración cada vez mayor. un El protocolo de sincronización de boletas garantiza que los nodos permanezcan encendidos. la misma papeleta por períodos de tiempo crecientes hasta que las papeletas son efectivamente sincrónicos. La rescisión no está garantizada hasta que las votaciones sean sincrónicas, pero dos votaciones sincrónicas en el que los miembros defectuosos de los sectores de nodos con buen comportamiento no no interferir son suficientes para que SCP termine. Un protocolo de votación especifica las acciones tomadas durante cada boleta. Una votación comienza con una fase de preparación, en la que los nodos tratar de determinar un valor a proponer que no contradiga cualquier decisión previa. Luego, en una fase de confirmación, los nodos intentan para tomar una decisión sobre el valor preparado. La votación emplea un subprotocolo de acuerdo llamado votación federada, in qué nodos votan sobre declaraciones abstractas eso eventualmente puede confirmarse o quedarse estancado. Algunas declaraciones pueden considerarse contradictorias y la seguridad La garantía del voto federado es que no pueden haber dos miembros de un conjunto entrelazado confirma afirmaciones contradictorias. La confirmación de una declaración no está garantizada excepto si está intacta. conjunto cuyos miembros votan todos de la misma manera. Sin embargo, si un miembro de un conjunto intacto confirma una declaración, federada la votación garantiza que todos los miembros del conjunto intacto eventualmente confirmen esa afirmación. Por lo tanto, tomar medidas irreversibles en respuesta a declaraciones confirmatorias preserva la vivacidad de nodos intactos. Los nodos inicialmente proponen valores obtenidos de una nominación. protocolo que aumenta las posibilidades de todos los miembros de una comunidad intacta. conjunto que propone el mismo valor, y que eventualmente converge (aunque no hay forma de determinar que la convergencia sea completa). La nominación combina la votación federada con la selección de líderes. Debido a que el sistema de todos contra todos es imposible en Logística de Amazon, la nominación utiliza un esquema probabilístico de selección de líderes. El teorema de la cascada juega un papel crucial tanto en la votación sincronización y en evitar estados bloqueados desde los cuales la terminación ya no es posible. 3.2.1 votación Los nodos SCP proceden a través de una serie de votaciones numeradas, empleando votación federada para acordar declaraciones sobre qué Los valores se deciden o no en qué papeletas. Si hay asincronía o un comportamiento incorrecto impide llegar a una decisión en la votación n, Los nodos se agotan y vuelven a intentarlo en la boleta n + 1.
SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Recordemos que el voto federado podría no terminar. Por lo tanto, algunos Las declaraciones sobre las papeletas pueden quedar atascadas permanentemente. Estado indeterminado donde los nodos nunca pueden determinar si todavía están en progreso o atascados. Porque los nodos no pueden descartar la posibilidad de que declaraciones indeterminadas luego resulten verdaderas, nunca deben intentar una votación federada sobre nuevas declaraciones contradictorios con los indeterminados. En cada votación n, los nodos utilizan votación federada en dos tipos de declaración: • preparar ⟨n,x⟩– indica que ningún valor distinto de x se decidió o se decidirá alguna vez en cualquier votación ≤n. • comprometer ⟨n,x⟩– indica que x se decide en la votación n. Es importante destacar que preparar ⟨n,x⟩contradice el compromiso ⟨n′,x ′⟩cuando n ≥n′ y x , x ′. Un nodo inicia la votación n intentando la votación federada en un declaración preparar ⟨n,x⟩. Si alguna declaración previa preparar fue confirmado con éxito mediante votación federada, el El nodo elige x del grupo confirmado de la boleta superior. De lo contrario, el nodo establece x como la salida del protocolo de nominación descrito en la siguiente subsección. Si y sólo si un nodo confirma con éxito preparar ⟨n,x⟩ en la votación n, intenta la votación federada sobre el compromiso ⟨n,x⟩. si que tiene éxito, significa que SCP ha decidido, por lo que el nodo genera el valor de la declaración de confirmación confirmada. Considere un conjunto S entrelazado. Dado que como máximo un valor pueden ser confirmados preparados por miembros de S en una votación determinada, no se pueden confirmar dos valores diferentes comprometidos por miembros de S en una votación determinada. Además, si se compromete ⟨n,x⟩ se confirma, luego prepare ⟨n,x⟩se confirmó también; desde preparar ⟨n,x⟩ contradice cualquier compromiso anterior por un valor diferente, por el acuerdo que garantiza el voto federado conseguimos que no se puede decidir ningún valor diferente en una fecha anterior votación de los miembros de S. Por inducción sobre los números de la boleta, Por lo tanto, consiga que SCP sea seguro. Para darle vida, considere un conjunto I intacto y un tiempo suficientemente largo. votación sincrónica Si aparecen nodos defectuosos en los cortes de nodos con buen comportamiento no interfieren en n, luego por votación n + 1 todos los miembros de I han confirmado el mismo conjunto P de declaraciones de preparación. Si P = ∅ y la votación n fue lo suficientemente larga, la El protocolo de nominación habrá convergido en algún valor x. De lo contrario, sea x el valor del equipo con la votación más alta en P. De cualquier manera, intentaré uniformemente votar sobre preparar ⟨n + 1,x⟩ en la próxima votación. Por lo tanto, si n + 1 también es sincrónico, por lo que inevitablemente se sigue una decisión para x. 3.2.2 Nominación La nominación implica votación federada de las declaraciones: • nominar x – indica que x es un candidato de decisión válido. Los nodos pueden votar para nominar múltiples valores, diferentes Las declaraciones nominadas no son contradictorias. Sin embargo, una vez un nodo confirma cualquier declaración nominada, deja de votar para proponer nuevos valores. La votación federada todavía permite que un nodo confirmar nuevas declaraciones nominadas por las que no votó, que votar o aceptar un del quórum aceptar un del quórum una es válida aceptar un de conjunto de bloqueo no comprometido votó un aceptó un confirmó un votó ¬a Figura 1. Etapas del voto federado permite a los miembros de un conjunto intacto confirmar entre sí los valores nominados y al mismo tiempo retener nuevos votos. El resultado (evolutivo) de la nominación es una combinación determinista de todos los valores en las declaraciones de nominación confirmadas. si x representa un conjunto de transacciones, los nodos pueden tomar la unión de conjuntos, el conjunto más grande o el que tiene el hash más alto, por lo que siempre y cuando todos los nodos hagan lo mismo. Porque los nodos retienen nuevos votos después de confirmar una declaración nominada, el conjunto de Las declaraciones confirmadas sólo pueden contener un número finito de valores. El hecho de que las declaraciones confirmadas se difundieran de forma fiable conjuntos intactos significa que los nodos intactos eventualmente convergen en el mismo conjunto de valores nominados y, por tanto, resultado de la nominación, aunque en un punto desconocido arbitrariamente tarde en el protocolo. Los nodos emplean la selección de líderes federados para reducir la número de valores diferentes en declaraciones nominadas. Sólo un líder que aún no haya votado a favor de una declaración propuesta puede introducir una nueva x. Otros nodos esperan recibir noticias líderes y simplemente copiar los votos de nominación (válidos) de sus líderes. Para adaptarse al fracaso, el conjunto de líderes sigue creciendo a medida que avanza. Se producen tiempos de espera, aunque en la práctica sólo unos pocos nodos introducen nuevos valores de x. 3.2.3 Voto federado La votación federada emplea un protocolo de tres fases que se muestra en Figura 1. Los nodos intentan ponerse de acuerdo sobre declaraciones abstractas primero votar, luego aceptar y finalmente confirmar las declaraciones. Un nodo v puede votar por cualquier declaración válida a que no contradice su otrovotos pendientes y declaraciones aceptadas. Lo hace mediante la difusión de un mensaje de voto firmado. v luego acepta a si a es consistente con otras declaraciones aceptadas y (caso 1)v es miembro de un quórum en el que cada nodo vota por a o acepta a, o (caso 2) incluso si v no votó por a, un conjunto de bloqueo v acepta a. En el caso 2, v mayo han emitido previamente votos que contradicen a, que ahora han sido anulado. A v se le permite olvidarse de los votos anulados. y pretender que nunca los lanzó porque siv está intacto, lo sabe los votos anulados no pueden completar el quórum mediante el caso 1. v transmite que acepta a y luego confirma a cuando está en un quórum que acepte por unanimidad a. La figura 2 muestra la efecto de los conjuntos de bloqueo v y el teorema de la cascada durante votación federada. Dos nodos entrelazados no pueden confirmar declaraciones contradictorias, ya que los dos quórums requeridos tendrían que compartir unPagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá 3 4 2 1 5 7
Stellar Konsensprotokoll
Das Stellar-Konsensprotokoll (SCP) basiert auf einem Quorum Byzantinisches Vertragsprotokoll mit offener Mitgliedschaft. Quoren entstehen aus den kombinierten lokalen Konfigurationsentscheidungen einzelner Knoten. Knoten erkennen jedoch nur Kollegien, denen sie selbst angehören, und erst danach Lernen der lokalen Konfigurationen aller anderen Kollegiumsmitglieder. Ein Vorteil dieses Ansatzes besteht darin, dass SCP von Natur aus vorhanden ist toleriert heterogene Ansichten darüber, welche Knoten vorhanden sind. Daher, Knoten können einseitig beitreten und verlassen, ohne dass ein Knoten erforderlich ist „View Change“-Protokoll zur Koordinierung der Mitgliedschaft. 3.1 Föderiertes byzantinisches Abkommen Das traditionelle Problem der byzantinischen Vereinbarung besteht aus a geschlossenes System von N Knoten, von denen einige fehlerhaft sind und möglicherweise sich willkürlich verhalten. Knoten empfangen Eingabewerte und tauschen sie aus Nachrichten, um über einen Ausgabewert unter den Eingaben zu entscheiden. Ein byzantinisches Vereinbarungsprotokoll ist sicher, wenn keine zwei gut funktionierenden Knoten unterschiedliche Entscheidungen und die Einzigartigkeit ausgeben Entscheidung war eine gültige Eingabe (für eine Definition von gültig vereinbart).SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. (siehe vorher). Ein Protokoll ist dann live, wenn es dies garantiert Jeder ehrliche Knoten gibt schließlich eine Entscheidung aus. Normalerweise gehen Protokolle davon aus, dass N = 3f + 1 für eine ganze Zahl ist f > 0, dann garantieren Sicherheit und eine gewisse Lebendigkeit solange höchstens f Knoten fehlerhaft sind. Irgendwann in diesen Protokolle, Knoten stimmen über vorgeschlagene Werte und einen Vorschlag ab Der Erhalt von 2f + 1 Stimmen, ein sogenanntes Stimmenquorum, wird die Entscheidung. Mit N = 3f + 1 Knoten, zwei beliebige Quoren von Größe 2f + 1 Überlappung in mindestens f + 1 Knoten; auch wenn f davon Überlappende Knoten sind fehlerhaft, die beiden Quoren teilen sich zumindest ein fehlerfreier Knoten, wodurch widersprüchliche Entscheidungen verhindert werden. Allerdings funktioniert dieser Ansatz nur, wenn sich alle Knoten darauf einigen Was stellt ein Quorum dar, was in SCP wo unmöglich ist Zwei Knoten wissen möglicherweise nicht einmal von der Existenz des anderen. Mit SCP deklariert jeder Knoten v einseitig Knotenmengen, nennt seine Quorum-Slices, so dass (a) v das glaubt, wenn alle Die Mitglieder eines Slice sind sich also über den Zustand des Systems einig Sie haben Recht, und (b) v glaubt, dass mindestens eine seiner Scheiben wird zur Verfügung stehen, um rechtzeitig Informationen darüber bereitzustellen Zustand des Systems. Wir nennen das resultierende System bestehend von Knoten und ihren Slices, ein Föderiertes Byzantinisches Abkommen (FBA)-System. Wie wir als nächstes sehen werden, entsteht ein Quorumsystem aus Knotenscheiben. Informell geben die Slices eines FBA-Knotens an, mit wem der Knoten erfordert Zustimmung. Beispielsweise kann ein Knoten eine Vereinbarung mit vier spezifischen Organisationen erfordern, die jeweils drei Knoten betreiben. zu Um Ausfallzeiten zu berücksichtigen, kann es seine Slices so einstellen, dass sie alle Sätze sind bestehend aus 2 Knoten jeder Organisation. Wenn dies „erfordert „Übereinstimmung mit“-Beziehung verbindet transitiv zwei beliebige Knoten, Wir bekommen eine globale Einigung. Andernfalls kann es zu Divergenz kommen, aber nur zwischen Organisationen, die beides nicht erfordert Vereinbarung mit dem anderen. Angesichts der Topologie der heutigen Wir gehen davon aus, dass die umfassende Konvergenz im Finanzsystem weiterhin zu einer Singe-Ledger-Geschichte führen wird, die die Leute nennen „das Stellar-Netzwerk“, so wie wir auch vom Internet sprechen. Quoren entstehen wie folgt aus Slices. Jeder Knoten spezifiziert Sein Quorum schneidet jede Nachricht ab, die es sendet. Sei S das Gruppe von Knoten, von denen eine Gruppe von Nachrichten stammt. A Der Knoten geht davon aus, dass der Nachrichtensatz das Quorum erreicht hat Schwellenwert, wenn für jedes Mitglied von S ein Slice in S enthalten ist. Aufgrund der Konstruktion erfüllt eine solche Menge S, wenn sie einstimmig ist, die Zustimmungsanforderungen jedes seiner Mitglieder. Ein fehlerhafter Peer kann Slices anbieten, die so gestaltet sind, dass sie etwas ändern Gut erzogene Knoten berücksichtigen Quoren. Aus Gründen der Protokollanalyse definieren wir ein Quorum in FBA als nicht leer Menge S von Knoten, die mindestens ein Quorum-Slice umfassen jedes nicht fehlerhafte Mitglied. Diese Abstraktion ist wie jede Menge solide von Nachrichten, die angeblich ein einstimmiges Quorum darstellen tatsächlich (auch wenn es Nachrichten von fehlerhaften Knoten enthält), und es ist präzise, wenn S nur gut erzogene Knoten enthält. In In diesem Abschnitt gehen wir auch davon aus, dass sich die Slices der Knoten nicht ändern. Dennoch lassen sich unsere Ergebnisse auf den Fall der sich verändernden Schicht übertragen denn ein System, in dem sich Slices ändern, ist nicht weniger sicher als ein System mit festen Scheiben, bei dem die Scheiben eines Knotens aus allen bestehen Slices, die es jemals im Fall der sich verändernden Slices verwendet (siehe Theorem 13 in [68]). Wie in Abschnitt 4 erläutert, hängt die Lebendigkeit davon ab Gut erzogene Knoten entfernen schließlich unzuverlässige Knoten aus ihren Scheiben. Da verschiedene Knoten unterschiedliche Vereinbarungsanforderungen haben, schließt FBA eine globale Definition von Sicherheit aus. Wir sagen Die nicht fehlerhaften Knoten v1 und v2 sind jeweils miteinander verflochten Quorum von v1 schneidet jedes Quorum von v2 in mindestens einem nicht fehlerhafter Knoten. Ein FBA-Protokoll kann eine Einigung gewährleisten nur zwischen ineinander verschlungenen Knoten; Da SCP dies tut, ist es seine Schuld Die Sicherheitstoleranz ist optimal. Die Internet-Hypothese, Das zugrunde liegende Design von Stellar besagt, dass sich die Knoten um die Menschen kümmern ungefähr wird miteinander verflochten sein. Wir sagen, dass eine Menge von Knoten I intakt ist, wenn I ein einheitlich fehlerfreies Quorum ist, sodass alle zwei Mitglieder von I miteinander verflochten sind, selbst wenn jeder Knoten außerhalb von I fehlerhaft ist. Intuitiv, dann sollte ich für die Handlungen von Nichtintakten unempfindlich bleiben Knoten. SCP garantiert sowohl nicht blockierende Lebendigkeit [93] als auch Sicherheit für intakte Mengen, obwohl die Knoten selbst dies nicht benötigen zu wissen (und möglicherweise nicht wissen zu können), welche Sätze intakt sind. Darüber hinaus ist die Vereinigung zweier intakter Mengen, die sich schneiden ein intaktes Set. Daher definieren intakte Mengen eine Partition der gut erzogene Knoten, bei denen jede Partition sicher und aktiv ist (unter bestimmten Bedingungen), aber möglicherweise werden unterschiedliche Partitionen ausgegeben abweichende Entscheidungen. 3.1.1 Überlegungen zur Sicherheit vs. Lebendigkeit beim Versand durch Amazon Mit wenigen Ausnahmen [64] sind die meisten geschlossenen byzantinischen Vereinbarungsprotokolle auf den Gleichgewichtspunkt abgestimmt, an dem Sicherheit und Lebendigkeit haben die gleiche Fehlertoleranz. Bei Versand durch Amazon Das bedeutet Konfigurationen, bei denen unabhängig von Ausfällen alle Ineinander verschlungene Mengen sind ebenfalls intakt. Vorausgesetzt, FBA bestimmt Da die Quoren dezentral verteilt werden, ist es unwahrscheinlich, dass einzelne Wahlmöglichkeiten zu diesem Gleichgewicht führen. Darüber hinaus bei Zumindest in Stellar ist das Gleichgewicht nicht wünschenswert: die Konsequenzen eines Sicherheitsversagens (nämlich doppelt ausgegebenes digitales Geld) vorliegen weitaus schlimmer als die eines Liveness-Ausfalls (nämlich Verzögerungen). bei Zahlungen, die ohnehin Tage gedauert haben, bevor Stellar). Menschen Daher sollten und werden große Quorum-Slices ausgewählt, so dass Ihre Knoten bleiben eher miteinander verflochten als intakt. Je weiter die Waage kippt, desto einfacher ist es, sich davon zu erholen typischere Liveness-Fehler in einem FBA-System als in einem herkömmlichen geschlossenen System. In geschlossenen Systemen müssen alle Nachrichten vorhanden sein im Hinblick auf die gleiche Gruppe von Kollegien interpretiert werden. Daher, Das Hinzufügen und Entfernen von Knoten zur Wiederherstellung nach einem Ausfall ist erforderlich Einen Konsens über ein Neukonfigurationsereignis zu erzielen, was schwierig ist, wenn der Konsens nicht mehr besteht. Im Gegensatz dazu gilt bei FBA Jeder Knoten kann seine Quorum-Slices jederzeit einseitig anpassen Zeit. Als Reaktion auf einen Ausfall an einer systemrelevanten Stelle Organisation können Knotenadministratoren ihre Slices anpassen Umgehen des Problems, ähnlich wie beim Koordinieren von Antworten zu BGP-Katastrophen [63] (allerdings ohne die Einschränkungen von Routing über physische Netzwerkverbindungen).
Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada 3.1.2 Der Kaskadensatz SCP folgt der Vorlage des Grundrundenmodells [42]; Die Knoten durchlaufen jeweils eine Reihe nummerierter Stimmzettel Versuchen Sie drei Aufgaben: (1) Identifizieren Sie einen „sicheren“ Wert, der nicht durch eine Entscheidung in einem früheren Wahlgang im Widerspruch steht (oft als „sicherer“ Wert bezeichnet). Vorbereitung des Stimmzettels), (2) Einigung über den sicheren Wert und (3) Feststellung, dass die Einigung erfolgreich war. Versand durch Amazon ist jedoch geöffnet Die Mitgliedschaft behindert mehrere gängige Techniken und macht es möglich Es ist unmöglich, herkömmliche geschlossene Protokolle auf die FBA zu „portieren“. Modell durch einfaches Ändern der Definition des Quorums. Eine von vielen Protokollen verwendete Technik ist die Rotation nach Zeitüberschreitungen im Round-Robin-Verfahren durch die Leader-Knoten. In einem geschlossenen System wird die Leader-Auswahl im Round-Robin-Verfahren sichergestellt dass am Ende ein einzigartiger, ehrlicher Anführer eine Einigung über einen einzigen Wert erzielt. Leider Round-Robin kann nicht in einem FBA-System mit unbekannter Mitgliedschaft arbeiten. Eine weitere häufige Technik, die bei FBA fehlschlägt, besteht darin, anzunehmen, dass ein bestimmtes Quorum alle Knoten überzeugen kann. Zum Beispiel, Wenn jeder beliebige 2f + 1-Knoten als Quorum anerkennt, dann 2f + 1 Signaturen reichen aus, um allen Knoten den Protokollstatus nachzuweisen. Ähnlich verhält es sich, wenn ein Knoten ein Quorum identischer Nachrichten empfängt Durch die zuverlässige Übertragung [24] kann der Knoten davon ausgehen, dass alle nicht fehlerhaften Knoten ebenfalls ein Quorum sehen. Im Gegensatz dazu a Für Knoten außerhalb des Quorums bedeutet das Quorum nichts. Schließlich verwenden nicht-föderierte Systeme häufig „Rückwärts“-Methoden. Argumentation zur Sicherheit: Wenn f + 1 Knoten fehlerhaft sind, gilt für alle Sicherheit Garantien gehen verloren. Wenn also Knoten v alle f + 1 Knoten hört Geben Sie eine Tatsache an. F, v kann davon ausgehen, dass mindestens einer davon erzählt Wahrheit (und daher, dass F wahr ist) ohne Verlust der Sicherheit. So Die Argumentation schlägt bei FBA fehl, da Sicherheit eine Eigenschaft von Paaren ist von Knoten, so dass ein Knoten, der die Sicherheit einiger Peers verloren hat, dies kann Verlieren Sie immer die Sicherheit an mehr Knoten, indem Sie schlechte Fakten annehmen. FBA kann jedoch in Bezug auf die Lebendigkeit rückwärts denken. Definieren Sie einen V-Blocking-Satz als einen Satz von Knoten, die sich alle schneiden Scheibe von v. Wenn ein v-blockierender Satz B einstimmig fehlerhaft ist, B kann Node V ein Quorum verweigern und ihm die Lebendigkeit kosten. Daher, wenn B gibt einstimmig die Tatsache F an, dann weiß v, dass entweder F ist wahr oder v ist nicht intakt. Allerdings muss v noch vollständig angezeigt werden Quorum, um zu wissen, dass ineinander verschlungene Knoten F nicht widersprechen, was zu einer letzten Kommunikationsrunde in SCP führt und andere FBA-Protokolle [47], die analog nicht erforderlich sind geschlossene Mitgliedschaftsprotokolle. Das Ergebnis ist, dass wir es haben drei mögliche Ebenen des Vertrauens in potenzielle Fakten: unbestimmt, sicher unter intakten Knoten anzunehmen (was wir tun werden). Begriff akzeptierte Fakten) und sicher untereinander anzunehmen Knoten (die wir als bestätigte Fakten bezeichnen werden). Knoten v kann effizient bestimmen, ob eine Menge B blockiert, indem er prüft, ob B alle seine Slices schneidet. Interessanterweise kündigen Knoten immer ihre Anweisungen an Akzeptieren und ein vollständiges Quorum eine Aussage akzeptiert, löst dies einen Kaskadenprozess aus, durch den sich die Aussagen überall verbreiten intakte Sätze. Wir nennen die Schlüsseltatsache, die dieser Ausbreitung zugrunde liegt der Kaskadensatz, der Folgendes besagt: Wenn ich ein bin Intakte Menge, Q ist ein Quorum eines beliebigen Mitglieds von I und S ist ein beliebiges Obermenge von Q, dann ist entweder S ⊇I oder es gibt ein Mitglied v ∈I so dass v < S und I ∩S v-blockierend ist. Intuitiv war das so Ist dies nicht der Fall, würde das Komplement von S ein Quorum enthalten das schneidet I, aber nicht Q, und verstößt gegen die Quorum-Schnittmenge. Beachten Sie, dass wir mit S = Q beginnen und S wiederholt zu erweitern Wenn wir alle Knoten einbeziehen, die es blockiert, erhalten wir einen Kaskadeneffekt, bis schließlich umfasst S alles von I. 3.2 Protokollbeschreibung SCP ist ein teilweise synchrones Konsensprotokoll [42], das aus einer Reihe von Versuchen besteht, einen Konsens zu erreichen Stimmzettel. Bei Abstimmungen kommt es zu immer längeren Auszeiten. A Das Abstimmungssynchronisierungsprotokoll stellt sicher, dass die Knoten eingeschaltet bleiben den gleichen Stimmzettel für immer längere Zeiträume bis zu den Stimmzetteln sind effektiv synchron. Eine Kündigung ist nicht garantiert bis die Stimmzettel synchron sind, aber zwei synchrone Stimmzettel Dies ist bei fehlerhaften Mitgliedern von Slices gut erzogener Knoten der Fall Nichteingreifen reicht aus, damit SCP beendet wird. In einem Abstimmungsprotokoll werden die jeweils getroffenen Maßnahmen festgelegt Stimmzettel. Ein Stimmzettel beginnt mit einer Vorbereitungsphase, in der Knoten Versuchen Sie, einen Wert zu ermitteln, der nicht im Widerspruch steht eine frühere Entscheidung. Dann versuchen es die Knoten in einer Commit-Phase eine Entscheidung über den vorbereiteten Wert zu treffen. Bei der Stimmabgabe wird ein Vereinbarungs-Unterprotokoll namens „Federated Voting“ eingesetzt, dn welche Knoten über abstrakte Aussagen abstimmen das könnte sich irgendwann bestätigen oder stecken bleiben. Einige Aussagen könnten als widersprüchlich bezeichnet werden, und die Sicherheit Die Garantie der föderierten Abstimmung besteht darin, dass keine zwei Mitglieder einer Ineinander verschlungene Mengen bestätigen widersprüchliche Aussagen. Die Bestätigung einer Aussage kann nicht garantiert werden, es sei denn, sie ist intakt Gruppe, deren Mitglieder alle gleich abstimmen. Wenn jedoch a Mitglied einer intakten Menge bestätigt eine Aussage, föderiert Die Abstimmung garantiert, dass alle Mitglieder der intakten Menge diese Aussage letztendlich bestätigen. Daher werden irreversible Schritte unternommen als Antwort auf bestätigende Aussagen bewahrt die Lebendigkeit für intakte Knoten. Knoten schlagen zunächst Werte vor, die aus einer Nominierung stammen Protokoll, das die Chancen aller Mitglieder eines intakten Systems erhöht Satz, der denselben Wert vorschlägt, und der schließlich konvergiert (obwohl es keine Möglichkeit gibt, die Konvergenz als vollständig zu bestimmen). Die Nominierung kombiniert eine gemeinsame Abstimmung mit der Auswahl des Anführers. Da Round-Robin bei Versand durch Amazon nicht möglich ist, wird die Nominierung verwendet ein probabilistisches Führungsauswahlschema. Das Kaskadentheorem spielt bei der Stimmabgabe eine entscheidende Rolle Synchronisierung und bei der Vermeidung blockierter Zustände Eine Kündigung ist nicht mehr möglich. 3.2.1 Abstimmung SCP-Knoten führen eine Reihe nummerierter Abstimmungen durch und nutzen eine gemeinsame Abstimmung, um sich auf Aussagen darüber zu einigen Welche Werte in welchen Abstimmungen entschieden werden oder nicht. Wenn Asynchronität oder fehlerhaftes Verhalten eine Entscheidung in Abstimmung n verhindert, Zeitüberschreitung der Knoten und erneuter Versuch in Stimmzettel n + 1.
SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. Die Rückruf-Verbundabstimmung wird möglicherweise nicht beendet. Daher einige Aussagen zu Stimmzetteln können dauerhaft stecken bleiben unbestimmter Zustand, in dem Knoten niemals feststellen können, ob sie sind noch in Bearbeitung oder stecken fest. Weil Knoten nicht ausschließen können die Möglichkeit, dass sich unbestimmte Aussagen später als wahr erweisen, Sie dürfen niemals versuchen, gemeinsam über neue Stellungnahmen abzustimmen widersprüchliche unbestimmte. In jedem Wahlgang n nutzen die Knoten die föderierte Abstimmung für zwei Arten der Aussage: • Prepare ⟨n,x⟩– gibt an, dass es keinen anderen Wert als x gibt wurde oder wird jemals in einem Wahlgang ≤n entschieden. • commit ⟨n,x⟩– besagt, dass über x in Abstimmung n entschieden wird. Beachten Sie unbedingt, dass „prepare ⟨n,x⟩dem Commit widerspricht“. ⟨n′,x ′⟩wenn n ≥n′ und x , x ′. Ein Knoten beginnt mit Abstimmung n, indem er versucht, eine gemeinsame Abstimmung über a durchzuführen Anweisung vorbereiten ⟨n,x⟩. Falls vorhanden, vorbereiten Sie eine Anweisung wurde durch föderale Abstimmung erfolgreich bestätigt Der Knoten wählt x aus der bestätigten Liste des höchsten Stimmzettels. Andernfalls setzt der Knoten x auf die Ausgabe des Nominierungsprotokoll, das im nächsten Unterabschnitt beschrieben wird. Genau dann, wenn ein Knoten die Vorbereitung ⟨n,x⟩ erfolgreich bestätigt In Stimmzettel n versucht es eine föderierte Abstimmung über Commit ⟨n,x⟩. Wenn Wenn dies gelingt, bedeutet dies, dass der SCP eine Entscheidung getroffen hat und der Knoten etwas ausgibt der Wert aus der bestätigten Commit-Anweisung. Betrachten Sie eine ineinander verschlungene Menge S. Da höchstens ein Wert Kann von Mitgliedern von S in einem bestimmten Wahlgang bestätigt werden, es dürfen keine zwei unterschiedlichen Werte bestätigt werden Mitglieder von S in einem bestimmten Wahlgang. Darüber hinaus, wenn commit ⟨n,x⟩ bestätigt ist, dann Prepare ⟨n,x⟩wurde ebenfalls bestätigt; seitdem Prepare ⟨n,x⟩ widerspricht jedem früheren Commit für einen anderen Wert, da die Vereinbarung eine föderierte Abstimmung garantiert Wir erhalten, dass früher kein anderer Wert festgelegt werden darf Stimmzettel durch Mitglieder von S. Durch Einleitung der Stimmzettelnummern, wir Stellen Sie daher sicher, dass SCP sicher ist. Betrachten Sie für die Lebendigkeit einen intakten Satz I und einen ausreichend langen Satz synchroner Stimmzettel n. Wenn fehlerhafte Knoten in den Slices auftreten von gut erzogenen Knoten stören sich nicht an n, dann per Stimmzettel n + 1 alle Mitglieder von I haben die gleiche Menge P von Prepare-Anweisungen bestätigt. Wenn P = ∅und Stimmzettel n lang genug war, ist der Das Nominierungsprotokoll wird sich auf einen Wert x konvergiert haben. Andernfalls sei x der Wert aus dem Plan mit der höchsten Abstimmung in P. In jedem Fall werde ich es einheitlich mit dem Verbund versuchen Abstimmung über die Vorbereitung von ⟨n + 1,x⟩ im nächsten Wahlgang. Deshalb, wenn n + 1 ebenfalls synchron ist, folgt zwangsläufig eine Entscheidung für x. 3.2.2 Nominierung Die Nominierung erfordert eine gemeinsame Abstimmung über Stellungnahmen: • x nominieren – gibt an, dass x ein gültiger Entscheidungskandidat ist. Knoten können dafür stimmen, mehrere Werte zu nominieren – unterschiedliche Nominate-Aussagen sind nicht widersprüchlich. Allerdings einmal Bestätigt ein Knoten eine Nominierungsaussage, stimmt er nicht mehr dafür ab neue Werte benennen. Die föderierte Abstimmung ermöglicht es einem Knoten weiterhin Bestätigen Sie die Aussagen der neuen Nominierten, für die sie nicht gestimmt hat abstimmen oder annehmen a vom Kollegium akzeptiere a vom Kollegium a ist gültig akzeptiere ein von Sperrsatz unverbindlich stimmte a akzeptiert a bestätigt a stimmte mit ¬a Abbildung 1. Phasen der föderierten Abstimmung ermöglicht es Mitgliedern eines intakten Sets, sich gegenseitig zu bestätigen nominierten Werte, während gleichzeitig neue Stimmen zurückgehalten werden. Das (sich entwickelnde) Ergebnis der Nominierung ist eine deterministische Kombination aller Werte in bestätigten Nominierungsaussagen. Wenn x stellt eine Reihe von Transaktionen dar, Knoten können die Vereinigung annehmen von Mengen, die größte Menge oder die mit dem höchsten hash, also solange alle Knoten dasselbe tun. Weil Knoten Neues zurückhalten Stimmen nach Bestätigung einer Nominierungserklärung, der Satz von bestätigte Aussagen können nur endlich viele Werte enthalten. Die Tatsache, dass sich bestätigte Aussagen zuverlässig verbreiten Intakte Mengen bedeuten, dass intakte Knoten schließlich auf dem zusammenlaufen der gleiche Satz nominierter Werte und damit das gleiche Nominierungsergebnis, allerdings an einem unbekannten Punkt, willkürlich spät im Protokoll. Knoten verwenden eine föderierte Leiterauswahl, um die zu reduzieren Anzahl unterschiedlicher Werte in Nominate-Anweisungen. Nur Ein Anführer, der noch nicht für eine Nominierungserklärung gestimmt hat, kann ein neues x einführen. Andere Knoten warten darauf, von ihnen zu hören Führer und kopieren Sie einfach die (gültigen) Nominierungsstimmen ihrer Führer. Um Misserfolgen entgegenzuwirken, wächst die Gruppe der Führungskräfte immer weiter Es kommt zu Zeitüberschreitungen, obwohl in der Praxis nur wenige Knoten neue Werte von x einführen. 3.2.3 Föderierte Abstimmung Bei der föderierten Abstimmung wird ein dreiphasiges Protokoll verwendet, das in gezeigt wird Abbildung 1. Knoten versuchen zunächst, sich auf abstrakte Aussagen zu einigen Abstimmung, dann Annahme und schließlich Bestätigung von Aussagen. Ein Knoten v kann für jede gültige Anweisung a stimmen, die dies nicht tut dem anderen widersprechenausstehende Stimmen und angenommene Stellungnahmen. Dies geschieht durch die Ausstrahlung einer unterzeichneten Abstimmungsnachricht. v akzeptiert dann a, wenn a mit anderen akzeptierten Aussagen übereinstimmt und entweder (Fall 1)v Mitglied eines Quorums ist, in dem jeder Knoten stimmt entweder für a oder akzeptiert a, oder (Fall 2) auch wenn v habe nicht für a gestimmt, ein V-Blocking-Set akzeptiert a. Im Fall 2 kann v haben zuvor Stimmen abgegeben, die einem widersprechen, was jetzt der Fall ist überstimmt worden. v darf überstimmte Stimmen vergessen und tun Sie so, als hätte es sie nie gewirkt, weil ifv intakt ist, es weiß es Überstimmte Stimmen können kein Quorum durch Fall 1 vervollständigen. v sendet, dass es a akzeptiert, und bestätigt dann a, wenn es drin ist ein Quorum, das einstimmig annimmt. Abbildung 2 zeigt die Wirkung von V-Blocking-Sets und des Kaskadensatzes während föderierte Abstimmung. Zwei miteinander verflochtene Knoten können widersprüchliche Aussagen nicht bestätigen, da sich die beiden erforderlichen Quoren einen teilen müsstenSchnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada 3 4 2 1 5 7
Vota X
Vota Y (un) 3 4 2 1 5 7 6 votar x votar x votar x votar Y votar x votar Y votar Y (b) 3 4 2 1 5 7 6 Aceptar x votar x Aceptar x votar Y Aceptar x votar Y votar Y (c) 3 4 2 1 5 7 6 Aceptar x Aceptar x Aceptar x votar Y Aceptar x Aceptar x votar Y (d) 3 4 2 1 5 7 6 Aceptar x votar x Aceptar x Aceptar x Aceptar x Aceptar x Aceptar x (e) Figura 2. Efecto cascada en el voto federado. Cada nodo tiene un segmento de quórum indicado por flechas para los miembros del segmento. (a) Se introducen declaraciones contradictorias X e Y. (b) Los nodos votan por declaraciones válidas. (c) El nodo 1 acepta X después de su quórum {1, 2, 3, 4} vota unánimemente por X. (d) Los nodos 1, 2, 3 y 4 aceptan X; el conjunto {1} es de bloqueo 5, por lo que el nodo 5 acepta X, anulando su voto anterior por Y. (e) El conjunto {5} bloquea 6 y 7, por lo que 6 y 7 aceptan X. nodo no defectuoso que no podía aceptar declaraciones contradictorias. No se garantiza la confirmación de una declaración: en En caso de votación dividida, ambas declaraciones podrán ser permanentemente estancado esperando por un quórum en la fase de votación. Sin embargo, si un nodo en un conjunto intacto I confirma una declaración, la cascada teorema y acepte el caso 2, asegúrese de que todos los I eventualmente confirmar esa afirmación. 3.2.4 Sincronización de boletas Si los nodos no pueden confirmar una declaración de confirmación para el votación actual, se dan por vencidos después de un tiempo muerto. El tiempo de espera llega más tiempo con cada votación para ajustarse a límites arbitrarios en el retraso de la red. Sin embargo, los tiempos de espera por sí solos no son suficientes para sincronizar las votaciones de los nodos que no comenzaron al mismo tiempo o se desincronizó por otras razones. Para lograr la sincronización, los nodos inician el temporizador sólo una vez que son parte de un quórum que se obtiene en la votación actual (o en una posterior) n. esto ralentiza los nodos que se iniciaron temprano y garantiza que no miembro de un conjunto intacto se mantiene demasiado por delante del grupo. Además, si un nodo v alguna vez nota un bloqueo v establecido en un momento posterior votación, salta inmediatamente a la votación más baja, de modo que esta ya no es el caso, independientemente de los temporizadores. la cascada El teorema entonces asegura que todos los rezagados se pongan al día. El resultado es que las papeletas están aproximadamente sincronizadas en todo un país intacto. se establece una vez que el sistema se vuelve sincrónico. 3.2.5 Selección de líder federado La selección de líderes permite a cada nodo elegir líderes de tal manera forma en que los nodos generalmente solo eligen uno o un pequeño número de líderes. Para adaptarse al fracaso del líder, selección del líder procede a través de rondas. Si los líderes de la ronda actual parecen no estar cumpliendo con sus responsabilidades, luego de un ciertos nodos del período de tiempo de espera pasan a la siguiente ronda para ampliar el conjunto de líderes que siguen. Cada ronda emplea dos funciones criptográficas hash únicas, H0 y H1, que generan números enteros en el rango [0,hmax). Por ejemplo, Stellar usa Hi(m) = SHA256(i∥b∥r ∥m), donde b es la instancia SCP general (bloque o número de libro mayor), r es el número de ronda de selección de líder, y hmax = 2256. Dentro una ronda, definimos la prioridad del nodo v como: prioridad(v) = H1(v) Un muñeco de paja sería para que cada nodo eligiera como líder. el nodev con la mayor prioridad (v). Este enfoque funciona bien con porciones de quórum casi idénticas, pero no funciona correctamente Captar la importancia de los nodos en configuraciones desequilibradas. Por ejemplo, si Europa y China aportan cada una 3 nodos para cada quórum, pero China tiene 1000 nodos y Europa 4, entonces China tendrá el nodo de mayor prioridad (99,6%). de la época. Por lo tanto, introducimos una noción de peso de corte, donde peso(u,v) ∈[0, 1] es la fracción de los sectores de quórum del nodo u que contiene el nodo v. Cuando el nodo u selecciona un nuevo líder, sólo considera vecinos, definidos de la siguiente manera: vecinos(u) = { v | H0(v) < hmáx · peso(u,v) } Luego, un nodo comienza con un conjunto vacío de líderes, y en cada round le agrega el nodo v en vecinos(u) con el mayor prioridad (v). Si el conjunto de vecinos está vacío en cualquier ronda, u agrega el nodov con el valor más bajo de H0(v)/peso(u,v).
Abstimmung X
Stimme Y (a) 3 4 2 1 5 7 6 Abstimmung X Abstimmung X Abstimmung X Abstimmung Y Abstimmung X Abstimmung Y Abstimmung Y (b) 3 4 2 1 5 7 6 Akzeptiere X Abstimmung X Akzeptiere X Abstimmung Y Akzeptiere X Abstimmung Y Abstimmung Y (c) 3 4 2 1 5 7 6 Akzeptiere X Akzeptiere X Akzeptiere X Abstimmung Y Akzeptiere X Akzeptiere X Abstimmung Y (d) 3 4 2 1 5 7 6 Akzeptiere X Abstimmung X Akzeptiere X Akzeptiere X Akzeptiere X Akzeptiere X Akzeptiere X (e) Abbildung 2. Kaskadeneffekt bei der föderierten Abstimmung. Jeder Knoten verfügt über einen Quorum-Slice, der den Mitgliedern des Slice durch Pfeile angezeigt wird. (a) Widersprüchliche Aussagen X und Y werden eingeführt. (b) Knoten stimmen für gültige Aussagen. (c) Knoten 1 akzeptiert X nach Erreichen seines Quorums {1, 2, 3, 4} stimmt einstimmig für X. (d) Knoten 1, 2, 3 und 4 akzeptieren alle X; Satz {1} ist 5-blockierend, also akzeptiert Knoten 5 X und überstimmt seine vorherige Stimme für Y. (e) Satz {5} ist 6- und 7-blockierend, also akzeptieren 6 und 7 beide X. nicht fehlerhafter Knoten, der widersprüchliche Aussagen nicht akzeptieren konnte. Eine Bestätigung einer Aussage ist nicht gewährleistet: in Im Falle einer getrennten Abstimmung können beide Aussagen dauerhaft sein Ich muss in der Abstimmungsphase auf ein Quorum warten. Wenn jedoch ein Knoten in einer intakten Menge I bestätigt eine Aussage, die Kaskade Satz und akzeptiere Fall 2 stellen sicher, dass ich irgendwann alles tun werde bestätige diese Aussage. 3.2.4 Abstimmungssynchronisierung Wenn Knoten nicht in der Lage sind, eine Commit-Anweisung für zu bestätigen Aktueller Wahlgang, sie geben nach einer Auszeit auf. Die Zeitüberschreitung wird angezeigt mit jedem Wahlgang länger, um sich an willkürliche Grenzen anzupassen auf Netzwerkverzögerung. Timeouts allein reichen jedoch nicht aus, um Stimmzettel von Knoten zu synchronisieren, die nicht gleichzeitig gestartet sind oder wurde aus anderen Gründen desynchronisiert. Um eine Synchronisierung zu erreichen, starten Knoten den Timer erst, wenn sie Teil eines Knotens sind Quorum, das bei der aktuellen (oder einer späteren) Abstimmung gilt. Dies verlangsamt Knoten, die früh gestartet sind, und stellt sicher, dass keine Mitglied einer intakten Gruppe bleibt zu weit vor der Gruppe. Darüber hinaus, wenn ein Knoten v zu einem späteren Zeitpunkt jemals einen v-blockierenden Satz bemerkt Stimmzettel, es springt sofort zum niedrigsten Stimmzettel, so dass dieser Dies ist unabhängig von etwaigen Timern nicht mehr der Fall. Die Kaskade Der Satz stellt dann sicher, dass alle Nachzügler aufholen. Das Ergebnis ist, dass die Stimmzettel während eines ganzen Zeitraums ungefähr synchronisiert sind gesetzt, sobald das System synchron wird. 3.2.5 Auswahl des föderierten Anführers Durch die Auswahl von Anführern kann jeder Knoten Anführer in einem solchen Netzwerk auswählen So wählen Knoten im Allgemeinen nur eine oder eine kleine Anzahl aus von Führungskräften. Um dem Versagen des Leiters Rechnung zu tragen, erfolgt die Auswahl des Leiters geht durch Runden. Wenn Anführer der aktuellen Runde scheinen ihrer Verantwortung nicht nachzukommen, dann nach a Bestimmte Timeout-Knoten gehen in die nächste Runde über Erweitern Sie die Gruppe der Führungskräfte, denen sie folgen. Jede Runde verwendet zwei einzigartige kryptografische hash-Funktionen, H0 und H1, die Ganzzahlen im Bereich [0,hmax) ausgeben. Zum Beispiel verwendet Stellar Hi(m) = SHA256(i∥b∥r ∥m), wobei b ist die gesamte SCP-Instanz (Block- oder Ledger-Nummer), r ist die Anzahl der Leader-Auswahlrunden und hmax = 2256. Innerhalb In einer Runde definieren wir die Priorität von Knoten v als: Priorität(v) = H1(v) Jeder Knoten würde einen Strohmann als Anführer wählen der Knoten mit der höchsten Priorität (v). Dieser Ansatz funktioniert gut mit nahezu identischen Quorum-Slices, funktioniert aber nicht richtig Erfassen Sie die Bedeutung von Knoten in unausgeglichenen Konfigurationen. Wenn beispielsweise Europa und China jeweils 3 beitragen Knoten zu jedem Quorum, aber China betreibt 1.000 Knoten und Europa 4, dann wird China den Knoten mit der höchsten Priorität haben 99,6 % der Zeit. Wir führen daher einen Begriff des Scheibengewichts ein, wo Weight(u,v) ∈[0, 1] ist der Bruchteil der Quorum-Slices des Knotens u enthält den Knoten v. Wenn der Knoten u einen neuen Anführer auswählt, wird er berücksichtigt nur Nachbarn, die wie folgt definiert sind: Nachbarn(u) = { v | H0(v) < hmax · Gewicht(u,v) } Ein Knoten beginnt dann mit einem leeren Satz von Anführern und zwar bei jedem Runde fügt den Knoten v in Nachbarn (u) mit dem höchsten hinzu Priorität(v). Wenn die Menge der Nachbarn in einer Runde leer ist, fügt u stattdessen den Knoten v mit dem niedrigsten Wert von H0(v)/Gewicht(u,v) hinzu.
Verificación formal de SCP
Para eliminar errores de diseño, verificamos formalmente la seguridad de SCP. y propiedades de vida (ver [65]). En concreto, verificamos que los nodos entrelazados nunca están en desacuerdo y que, bajo las condiciones que se analizan más adelante, cada miembro de un conjunto intacto finalmente decide. Curiosamente, la verificación reveló que el Las condiciones bajo las cuales el SCP garantiza la vida son sutiles, y más fuerte de lo que se pensaba inicialmente [68]: como se analiza a continuación, nodos maliciosos que manipulan el tiempo sin otra cosa Es posible que sea necesario desalojar manualmente a aquellos que se desvían del protocolo. de porciones de quórum.
SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Para garantizar que las propiedades demostradas se mantengan en todos los aspectos posibles. Configuraciones y ejecuciones de Logística de Amazon, consideramos una opción arbitraria. número de nodos con configuraciones locales arbitrarias. esto incluye escenarios con conjuntos intactos desunidos, así como ejecuciones potencialmente infinitamente largas. El inconveniente es que nosotros enfrentar el desafiante problema de verificar un parámetro parametrizado sistema de estados infinitos. Para mantener la verificación manejable, modelamos SCP en lógica de primer orden (FOL) usando Ivy [69] y la metodología de [82]. El proceso de verificación consiste en proporcionar manualmente conjeturas inductivas que luego son verificadas automáticamente por Hiedra. El modelo FOL de SCP resume algunos aspectos de Sistemas FBA que son difíciles de manejar en FOL (por ejemplo, el teorema de la cascada se toma como axioma), por lo que verificamos la solidez de la abstracción usando Isabelle/HOL [75]. Después de expresar el problema de verificación en FOL, verificamos la seguridad proporcionando un invariante inductivo. el inductivo invariante consta de una docena de conjeturas de una sola línea durante aproximadamente 150 líneas de especificación de protocolo. Luego especificamos las propiedades de vida de SCP en la Lógica Temporal Lineal de Ivy y usamos el vida a la reducción de seguridad de [80, 81] para reducir la vida problema de verificación al problema de encontrar un inductivo invariante. Si bien la seguridad de SCP es relativamente sencilla de demostrar, el argumento de la vida de SCP es mucho más complejo y consta de alrededor de 150 invariantes de una sola línea. Demostrar vivacidad requería una formalización precisa de la supuestos bajo los cuales SCP garantiza la terminación. Inicialmente pensamos que un conjunto intacto siempre lo terminaría si todos Los miembros eliminaron nodos defectuosos de sus sectores [68]. Sin embargo, esto resultó ser insuficiente: un hombre bien educado (pero no intacto) nodo en un quórum de un miembro de Puedo, bajo el influencia de nodos defectuosos, evite la terminación completando un quórum justo antes del final de la votación, provocando así Los miembros de I elegirán diferentes valores de x en la próxima votación. Por lo tanto, debemos suponer además que, informalmente, cada nodo en un quórum de un miembro de I eventualmente se vuelve oportuno o no envía ningún mensaje durante un período de tiempo suficiente. En la práctica, esto significa que los miembros de I may necesitan ajustar sus rebanadas hasta que la condición se mantenga. esto El problema no es inherente a los sistemas Logística de Amazon: Losa et al. [47] presente un protocolo cuya vida depende de los estrictamente más débiles suposiciones de una eventual sincronía y una eventual elección de líder, sin la necesidad de eliminar los nodos defectuosos de los cortes.
Formale Überprüfung des SCP
Um Konstruktionsfehler auszuschließen, haben wir die Sicherheit von SCP offiziell überprüft und Lebendigkeitseigenschaften (siehe [65]). Konkret haben wir es überprüft dass ineinander verschlungene Knoten niemals anderer Meinung sind und dass unter den unten diskutierten Bedingungen jedes Mitglied einer intakten Menge letztendlich entscheidet. Interessanterweise ergab die Überprüfung, dass die Bedingungen, unter denen SCP Lebendigkeit garantiert, sind subtil, und stärker als zunächst angenommen [68]: wie unten besprochen, bösartige Knoten, die das Timing unbefugt manipulieren Abweichungen vom Protokoll müssen möglicherweise manuell entfernt werden aus Quorum-Slices.
SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. Um sicherzustellen, dass die bewährten Eigenschaften möglichst erhalten bleiben FBA-Konfigurationen und -Ausführungen betrachten wir als beliebig Anzahl der Knoten mit beliebigen lokalen Konfigurationen. Dies umfasst Szenarien mit disjunkten intakten Mengen sowie potenziell unendlich langen Ausführungen. Der Nachteil ist, dass wir stehen vor dem herausfordernden Problem der Verifizierung einer parametrisierten System mit unendlichen Zuständen. Um die Überprüfung nachvollziehbar zu halten, haben wir SCP in First-Order-Logik (FOL) unter Verwendung von Ivy [69] und der Methodik von [82] modelliert. Der Verifizierungsprozess besteht aus der manuellen Bereitstellung induktiver Vermutungen, die dann automatisch überprüft werden Efeu. Das FOL-Modell von SCP abstrahiert einige Aspekte von FBA-Systeme, die in FOL schwer zu handhaben sind (z. B. das Der Kaskadensatz wird als Axiom genommen), also überprüfen wir das Solidität der Abstraktion unter Verwendung von Isabelle/HOL [75]. Nachdem wir das Verifizierungsproblem in FOL ausgedrückt haben, verifizieren wir die Sicherheit, indem wir eine induktive Invariante bereitstellen. Das Induktive Invariante besteht aus einem Dutzend einzeiliger Vermutungen für etwa 150 Zeilen Protokollspezifikation. Anschließend spezifizieren wir die Lebendigkeitseigenschaften von SCP in Ivys linearer zeitlicher Logik und verwenden die Reduzierung der Lebendigkeit auf Sicherheit von [80, 81] zur Reduzierung der Lebendigkeit Verifikationsproblem zum Problem, eine Induktion zu finden invariant. Während die Sicherheit von SCP relativ einfach ist beweisen, dass das Lebendigkeitsargument von SCP viel komplizierter ist und besteht aus etwa 150 einzeiligen Invarianten. Der Nachweis der Lebendigkeit erforderte eine genaue Formalisierung des Annahmen, unter denen SCP die Beendigung sicherstellt. Wir dachten zunächst, dass ich einen intakten Satz immer beenden würde, wenn alle vorhanden wären Mitglieder haben fehlerhafte Knoten aus ihren Slices [68] entfernt. Dies erwies sich jedoch als unzureichend: ein braves (aber nicht intakt) Knoten in einem Quorum eines Mitglieds von I can, unter dem Einfluss fehlerhafter Knoten, Beendigung durch Abschluss verhindern ein Quorum kurz vor dem Ende eines Wahlgangs, wodurch verursacht wird Mitglieder von I sollen im nächsten Wahlgang andere Werte für x wählen. Wir müssen daher zusätzlich davon ausgehen, dass informell Jeder Knoten in einem Quorum eines Mitglieds von I. schließlich auch kommt pünktlich oder sendet über einen ausreichenden Zeitraum überhaupt keine Nachrichten. In der Praxis bedeutet dies, dass Mitglieder von I may müssen ihre Slices anpassen, bis die Bedingung erfüllt ist. Dies Das Problem ist bei FBA-Systemen nicht inhärent: Losa et al. [47] vorhanden ein Protokoll, dessen Lebendigkeit von den strikt Schwächeren abhängt Annahmen lediglich einer eventuellen Synchronität und einer eventuellen Leaderelection, ohne dass fehlerhafte Knoten aus den Slices entfernt werden müssen.
Red de pago
Esta sección describe la red de pago de Stellar, implementada como una máquina de estado replicada [88] encima de SCP. 5.1 modelo de libro mayor El libro mayor de Stellar está diseñado en torno a una abstracción de cuenta (en contraste con la producción de transacciones no gastadas más centradas en monedas o UTXO modelo de Bitcoin). El contenido del libro mayor consta de un conjunto de asientos contables de cuatro tipos distintos: cuentas, líneas de confianza, ofertas y datos de la cuenta. Las cuentas son los principales que poseen y emiten activos. cada uno La cuenta recibe el nombre de una clave pública. De forma predeterminada, la clave privada correspondiente puede firmar transacciones para la cuenta. Sin embargo, las cuentas se pueden reconfigurar para agregar otros firmantes y desautorizar la clave que nombra la cuenta, con un Opción “multisig” para requerir múltiples firmantes. cada cuenta también contiene: un número de secuencia (incluido en las transacciones para evitar la repetición), algunas banderas y un equilibrio en un “nativo” criptomoneda preminada llamada XLM, destinada a mitigar algunos ataques de denegación de servicio y facilitar la creación de mercado como moneda neutral. Las líneas fiduciarias rastrean la propiedad de los activos emitidos, que son nombrado por un par que consta de la cuenta emisora y una cuenta corta código de activo (por ejemplo, “USD” o “EUR”). Cada línea de confianza especifica una cuenta, un activo, el saldo de la cuenta en ese activo, un límite por encima del cual el saldo no puede aumentar, y algunas banderas. Una cuenta debe dar su consentimiento explícito a mantener un activo mediante creando una línea de confianza, evitando que los spammers ensillaran cuentas con activos no deseados. Las regulaciones de Know-your-customer (KYC) requieren que muchas instituciones financieras sepan de quién son los depósitos que tienen, por ejemplo, comprobando una identificación con fotografía. Para cumplir, los emisores pueden establecer una marca auth_reqired opcional en sus cuentas, restringiendo la propiedad de los activos que emiten a cuentas autorizadas. Para otorgar dicha autorización, el emisor fija un límite autorizado marcar las líneas de confianza de los clientes. Las ofertas corresponden a la voluntad de una cuenta de negociar a una cierta cantidad de un activo particular por otro en un momento dado precio en el libro de pedidos; se emparejan automáticamente y se llena cuando los precios de compra/venta se cruzan. Finalmente, los datos de la cuenta constan de triples de cuenta, clave y valor, lo que permite a los titulares de cuentas para publicar pequeños valores de metadatos. Para evitar el spam en el libro mayor, existe un saldo XLM mínimo, llamada reserva. La reserva de una cuenta aumenta con cada asiento contable asociado y disminuye cuando el asiento contable desaparece (por ejemplo, cuando se completa o cancela una orden, o cuando una se elimina la línea de confianza). Actualmente la reserva crece 0,5 XLM (~$0,03) por asiento del libro mayor. Independientemente de la reserva, es Es posible recuperar el valor total de una cuenta eliminando con una operación AccountMerge. Un encabezado de libro mayor, que se muestra en la Figura 3, almacena atributos globales: un número de libro mayor, parámetros como el saldo de reserva por asiento contable, un hash del encabezado del libro mayor anterior (en realidad varios hashes que forman una lista de omisión), la salida de SCP incluye un hash de nuevas transacciones aplicadas en este libro mayor, un hash de los resultados de esas transacciones (por ejemplo, éxito o fracaso para cada uno) y una instantánea hash de todos los asientos del libro mayor. Debido a que la instantánea hash incluye todo el contenido del libro mayor, validators no necesitan conservar el historial para validar las transacciones. Sin embargo, para escalar a cientos de millones de anticipados cuentas, no podemos rehash todas las tablas de asientos contables en cada cierre del libro mayor. Además, no es práctico transferir un libro mayorPagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá libro mayor # = 4 H(hdr anterior) salida SCP H∗(resultados) H∗(instantánea) ... encabezado libro mayor # = 5 H(hdr anterior) salida SCP H∗(resultados) H∗(instantánea) ... encabezado . . . Figura 3. Contenido del libro mayor. H es SHA-256, mientras que H ∗ representa la aplicación jerárquica o recursiva de H. Salida SCP También depende del encabezado anterior hash. Crear cuenta Crear y financiar un nuevo asiento de cuenta en el libro mayor Fusión de cuentas Eliminar asiento del libro mayor de cuenta Establecer opciones Cambiar indicadores y firmantes de cuentas Pago Pagar una cantidad específica de activo al destino. cuenta RutaPago Como Pago, pero paga en un activo diferente (hasta limitar); especificar hasta 5 activos intermediarios AdministrarOferta Crear/eliminar/cambiar asiento de libro mayor de ofertas, -Oferta Pasiva con variante pasiva para permitir un spread cero Administrar datos Crear/eliminar/cambiar cuenta. entrada de datos en el libro mayor CambiarConfianza Crear/eliminar/cambiar línea de confianza Permitir confianza Establecer o borrar la bandera autorizada en la línea de confianza Secuencia de golpes Aumentar sec. numero en cuenta Figura 4. Operaciones del libro mayor principal de ese tamaño cada vez que un nodo se ha desconectado de la red durante demasiado tiempo. Por lo tanto, la instantánea hash es diseñado para optimizar tanto la hashing como la conciliación estatal. Específicamente, la instantánea estratifica los asientos del libro mayor por tiempo. de la última modificación en un conjunto de contenedores de tamaño exponencial llamados cubos. La colección de cubos se llama cubo. lista, y tiene cierta similitud con los árboles de fusión estructurados logarítmicamente (árboles LSM) [77]. La lista de deseos no se lee durante el procesamiento de transacciones (consulte la Sección 5.4). Por lo tanto, cierto diseño Se pueden relajar algunos aspectos de los árboles LSM. En particular, al azar No se requiere acceso mediante clave y los depósitos solo se leen. secuencialmente como parte de la fusión de niveles. Haciendo el cubo La lista se realiza hashing cada depósito a medida que se fusiona y calculando un nuevo hash acumulativo del depósito hashes (un pequeño, índice fijo de referencia hashes) en cada cierre del libro mayor. Conciliar la lista de deseos después de la desconexión requiere descarga sólo cubos que difieren. 5.2 Modelo de transacción Una transacción consta de una cuenta fuente, criterios de validez, una memorándum y una lista de una o más operaciones. La Figura 4 enumera las operaciones disponibles. Cada operación tiene una cuenta fuente, que por defecto es el de la transacción global. Una transacción debe estar firmado por claves correspondientes a cada cuenta de origen en una operación. Las cuentas multifirma pueden requerir una firma más alta peso para algunas operaciones (como SetOptions) y menor para otros (como AllowTrust). Las transacciones son atómicas: si alguna operación falla, ninguna de ellas ellos ejecutan. Esto simplifica los acuerdos multidireccionales. Supongamos que un El emisor crea un activo para representar títulos de propiedad y el usuario A. quiere cambiar una pequeña parcela de tierra más $10,000 por una parcela de tierra más grande propiedad de B. Los dos usuarios pueden firmar una única transacción que contiene tres operaciones: dos terrenos Pagos y pago de un dólar. El principal criterio de validez de una transacción es su número de secuencia, que debe ser uno mayor que el de la transacción. asiento contable de la cuenta fuente. Ejecutar una transacción válida (con éxito o no) incrementa el número de secuencia, evitando la repetición. Los números de secuencia iniciales contienen el libro mayor. número en los bits altos para evitar la reproducción incluso después de eliminar y volver a crear una cuenta. El otro criterio de validez es un límite opcional sobre cuándo se puede ejecutar una transacción. Volviendo a la tierra y al dólar intercambio anterior, si A firma la transacción antes que B, A no puede quiere que B se quede sentado en la transacción durante un año antes de presentarla ello, y por lo tanto podría imponer un límite de tiempo que invalida la transacción después de unos días. También se pueden configurar cuentas multifirma para dar peso de firma a la revelación de una preimagen hash, que, combinado con límites de tiempo, permite el comercio atómico entre cadenas [1]. La cuenta fuente de una transacción paga una tarifa trivial en XLM, 10-5 XLM a menos que haya congestión. En condiciones de congestión, el El coste de las operaciones se fija en una subasta holandesa. Los validadores son no compensado por tarifas porque los validators son análogos a Bitcoin nodos completos, no mineros. En lugar de destruir XLM, las tarifas se reciclan y distribuyen proporcionalmente mediante el voto de titulares de XLM existentes, que en retrospectiva podrían o podrían No habría valido la pena la complejidad. 5.3 Valores de consenso Para cada libro mayor, Stellar utiliza SCP para acordar una estructura de datos con tres campos: un conjunto de transacciones hash (incluido un hash del encabezado del libro mayor anterior), una hora de cierre, unaactualizaciones. Cuando se confirma la nominación de varios valores, Stellar toma el conjunto de transacciones con más operaciones (rompiendo lazos por tarifas totales, luego conjunto de transacciones hash), la unión de todos actualizaciones y el tiempo de cierre más alto. Un tiempo cercano es sólo válido si es entre la hora de cierre del último libro mayor y la presente, por lo que los nodos no nominan tiempos no válidos. Las actualizaciones ajustan parámetros globales como el saldo de reserva, la tarifa mínima de operación y la versión del protocolo. cuando combinados durante la nominación, las tarifas más altas y los números de versión del protocolo reemplazan a los más bajos. Las actualizaciones afectan la gobernanza a través de un espacio de disputa de votación federada [34], ninguno de los dos igualitario ni centralizado. Cada validator está configurado como ya sea gobernante o no gubernamental (el valor predeterminado), según a si su operador quiere participar en la gobernanza. Los validator que gobiernan consideran tres tipos de actualización: deseado, válido e inválido (cualquier cosa que el validator no
SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. validator núcleo horizonte FS DB DB enviar cliente cliente otros validators Figura 5. Arquitectura Stellar validator saber implementar). Las actualizaciones deseadas se configuran para desencadenar en un momento específico, destinado a ser coordinado entre operadores. Los nodos gobernantes siempre votan para nominar a los candidatos deseados. actualizaciones, acepte pero no vote para nominar actualizaciones válidas (es decir, aceptar un quórum de bloqueo) y nunca votar por o aceptar actualizaciones no válidas. Eco no gubernamental de validators cualquier voto que vean para una actualización válida, esencialmente delegando la decisión sobre qué actualizaciones se desean para aquellos que optan para un rol de gobernanza. 5.4 Implementación La Figura 5 muestra la arquitectura validator de Stellar. un demonio llamado stellar-core (~92k líneas de C++, sin contar bibliotecas de terceros) implementa el protocolo SCP y la máquina de estado replicada. Producir valores para SCP requiere reducir un gran número de entradas del libro mayor a pequeños valores criptográficos. hashes. Por el contrario, la validación y ejecución de transacciones requiere buscar el estado de la cuenta y la correspondencia de pedidos en el mejor precio. Para cumplir ambas funciones de manera eficiente, stellar-core mantiene dos representaciones del libro mayor: una representación externa que contiene la lista de deseos, almacenada como archivos binarios que se puede actualizar de manera eficiente y modificar incrementalmentehash, y una representación interna en una base de datos SQL (PostgreSQL para nodos de producción). Stellar-core crea un archivo histórico de solo escritura que contiene cada conjunto de transacciones que se confirmó y instantáneas de cubos. El archivo permite que los nuevos nodos se inicien solos al unirse a la red. También proporciona un registro del libro mayor. historia: es necesario que haya algún lugar donde se pueda buscar una transacción de hace dos años. Dado que el historial es solo para agregar y se accede con poca frecuencia, se puede guardar en lugares baratos como Amazon Glacier o cualquier servicio que permita almacenar y recuperar archivos planos. Los hosts validadores normalmente no alojan sus propios archivos para evitar cualquier impacto en la validación desempeño de la historia del servicio. Para mantener simple el núcleo estelar, no está diseñado para ser utilizado directamente por las aplicaciones y expone sólo una interfaz muy estrecha para el envío de nuevas transacciones. para apoyar clientes, la mayoría de los validator ejecutan un demonio llamado horizonte (∼18k líneas de Go) que proporciona una interfaz HTTP para enviar y aprendizaje de transacciones. horizonte tiene acceso de sólo lectura a base de datos SQL de stellar-core, minimizando el riesgo de horizonte núcleo estelar desestabilizador. Funciones como la búsqueda de rutas de pago se implementan completamente en el horizonte y se pueden actualizar unilateralmente sin coordinarse con otros validators. Varios demonios opcionales de capa superior son clientes del horizonte, completando el ecosistema. Un servidor puente facilita integración de Stellar con sistemas existentes, por ejemplo, publicación de notificaciones de todos los pagos recibidos por una cuenta específica. un El servidor de cumplimiento proporciona ganchos para que las instituciones financieras intercambiar y aprobar información del remitente y del beneficiario sobre pagos, para el cumplimiento de listas de sanciones. Finalmente, un servidor de federación implementa un nombre legible por humanos sistema de cuentas. 6 Experiencia de implementación Stellar creció durante varios años hasta convertirse en un estado con una moderada número de operadores de nodo completo razonablemente confiables. Sin embargo, Las configuraciones de los nodos eran tales que la vida (aunque no seguridad) dependía de nosotros, la Fundación para el Desarrollo Stellar (FDS); Si SDF hubiera desaparecido repentinamente, otros operadores de nodos Habría sido necesario intervenir y eliminarnos manualmente. de porciones de quórum para que la red continúe. Si bien nosotros y muchos otros queremos reducir la importancia sistémica del SDF, este objetivo recibió una prioridad cada vez mayor después de Los investigadores [58] cuantificaron y dieron a conocer la centralización de la red sin diferenciar los riesgos para la seguridad y vivacidad. Varios operadores reaccionaron con ajustes activos de configuración, principalmente aumentando el tamaño de su divisiones de quórum en un esfuerzo por diluir la importancia del SDF; Irónicamente, esto sólo aumentó el riesgo para la vida. Dos problemas agravaron la situación. Primero, un popular herramienta de monitoreo de terceros Stellar [5] fue sistemáticamente sobreestimar el tiempo de actividad de validator al no verificarlo ese núcleo estelar estaba funcionando; esto lleva a la gente a incluir nodos poco confiables en sus sectores de quórum. En segundo lugar, un error en núcleo estelar significaba que una vez que un validator se movía al siguiente libro mayor, no ayudó adecuadamente a los nodos restantes a completar el proceso anteriorlibro mayor en caso de pérdida de mensajes. Como resultado, el La red experimentó 67 minutos de inactividad y requirió coordinación manual por parte de validator administradores para reiniciar. Peor aún, al intentar reiniciar la red, se produjeron reconfiguraciones apresuradas simultáneas en varios nodos. en una mala configuración colectiva que permitió que algunos nodos divergen, lo que requiere un apagado manual de esos nodos y nueva presentación de las transacciones aceptadas durante la divergencia. Afortunadamente, esta divergencia fue detectada y corregida. rápidamente y no contenía transacciones conflictivas, pero el riesgo de que la red no pueda disfrutar de la intersección del quórum: dividiéndose mientras se continúa aceptando situaciones potencialmente conflictivas. transacciones, simplemente debido a una mala configuración, se realizó muy concreto por este incidente. La revisión de estas experiencias llevó a dos conclusiones principales. y las acciones correctivas correspondientes.Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Crítico, 100% 51% 51% Alto, 67% 51% Medio, 67% 51% Bajo, 67% 51% 51% ... ... ... 51% ... 51% Figura 6. Jerarquía de calidad del validador. Nodos de la más alta calidad requieren el umbral más alto del 100%, mientras que las calidades más bajas están configuradas con un umbral del 67%. Nodos dentro de un solo organización requiere una mayoría simple del 51%. 6.1 Complejidad y fragilidad de la configuración. Stellar expresa sectores de quórum como conjuntos de quórum anidados que constan de n entradas y un umbral k donde cualquier conjunto de k entradas constituye una porción de quórum. Cada una de las n entradas entonces es una clave pública validator o, de forma recursiva, otro conjunto de quórum. Aunque flexibles y compactos, implementamos el quórum anidado conjuntos simultáneamente brindaban a los operadores de nodos demasiada flexibilidad y muy poca orientación: era fácil escribir datos inseguros (o incluso configuraciones sin sentido). Los criterios para agrupar nodos en conjuntos, para organizar subconjuntos en una jerarquía, y para elegir los umbrales no fueron suficientemente claros y contribuyeron a fallos operativos. No estaba claro si tratar un "nivel" en la jerarquía de conjuntos anidados como un nivel de confianza, o una organización, o ambos; muchas configuraciones en el campo mezcló estos conceptos, además de especificar peligros o umbrales sin sentido. Por lo tanto, agregamos un mecanismo de configuración más simple. que separa dos aspectos de los conjuntos de quórum anidados: agrupación nodos juntos por organización y etiquetando cada organización con una clasificación de confianza simple (baja, media, alta o crítico). Las organizaciones en niveles superiores y superiores deben publicar archivos de historia. El nuevo sistema sintetiza conjuntos de quórum anidados en los que cada organización está representada como un Se establece un umbral del 51 % y las organizaciones se agrupan en conjuntos con umbrales del 67% o 100% (dependiendo de la calidad del grupo). Cada grupo es una entrada única en el siguiente grupo (de mayor calidad), como se ilustra en la Figura 6. Este modelo simplificado reduce la probabilidad de una mala configuración, tanto en términos de la estructura de los conjuntos anidados sintetizados y los umbrales elegidos para cada conjunto. 6.2 Detección proactiva de errores de configuración En segundo lugar, nos dimos cuenta de que detectar la mala configuración colectiva esperando a observar sus efectos negativos es demasiado tarde. Especialmente con respecto a configuraciones erróneas que pueden divergir: un modo de falla más grave que detenerse: la red necesita para poder detectar errores de configuración inmediatamente para que los operadores puedan revertirlos antes de que ocurra cualquier divergencia. Para abordar esta necesidad, construimos un mecanismo en el software validator que recopila continuamente el estado de configuración colectiva de todos los pares en el cierre transitivo del nodo y detecta el potencial de divergencia, es decir, disjuntos. quórums, dentro de esa configuración colectiva. 6.2.1 Comprobando la intersección del quórum Si bien reunir porciones de quórum es fácil, encontrar quórums disjuntos entre ellas es co-NP-difícil [62]. Sin embargo, adoptamos un conjunto de heurísticas algorítmicas y reglas de eliminación de casos propuesto por Lachowski [62] que verifica casos típicos del problema varios órdenes de magnitud más rápido que el costo en el peor de los casos. En la práctica, la red actual Los cierres transitivos de sectores de quórum son del orden de 20 a 30. nodos y, con las optimizaciones de Lachowski, normalmente verifica en cuestión de segundos en una sola CPU. Si surge la necesidad Para mejorar el rendimiento, podemos paralelizar la búsqueda. 6.2.2 Comprobando configuraciones riesgosas Detectar que la red admite quórums disjuntos es un paso en la dirección correcta, pero advierte el peligro incómodamente tarde para un tema tan crítico. Idealmente, queremos que los operadores de nodos reciban advertencias cuando la configuración colectiva de la red simplemente se está acercando a un estado de riesgo. Por lo tanto, ampliamos el verificador de intersección de quórum para detectar una condición que llamamos criticidad: cuando la corriente La configuración colectiva está a una mala configuración de un estado que admite quórumes disjuntos. Para detectar la criticidad, el verificador reemplaza repetidamente la configuración de cada organización con una configuración incorrecta simulada en el peor de los casos, luego Vuelve a ejecutar el verificador de intersección del quórum interno en el resultado. Si existe algún error de configuración crítico, a un paso de distancia desde el estado actual, el software emite una advertencia y informa que la organización presenta un riesgo de configuración incorrecta. Estos cambios dan a la comunidad de operadores dos capas de aviso y orientación para aislarse contra las peores formas de una mala configuración colectiva.
Zahlungsnetzwerk
In diesem Abschnitt wird das Zahlungsnetzwerk von Stellar beschrieben, das als replizierte Zustandsmaschine [88] auf SCP implementiert ist. 5.1 Ledger-Modell Das Hauptbuch von Stellar basiert auf einer Kontoabstraktion (in Im Gegensatz zur eher münzenzentrierten nicht ausgegebenen Transaktionsausgabe oder UTXO Modell von Bitcoin). Der Hauptbuchinhalt besteht aus a Satz von Hauptbucheinträgen aus vier verschiedenen Typen: Konten, Treuhandlinien, Angebote und Kontodaten. Konten sind die Auftraggeber, die Vermögenswerte besitzen und ausgeben. Jeder Das Konto wird durch einen öffentlichen Schlüssel benannt. Standardmäßig kann der entsprechende private Schlüssel Transaktionen für das Konto signieren. Konten können jedoch neu konfiguriert werden, um andere Unterzeichner hinzuzufügen und den Schlüssel, der das Konto benennt, mit einem zu deaktivieren „Multisig“-Option, um mehrere Unterzeichner zu erfordern. Jedes Konto enthält außerdem: eine Sequenznummer (in Transaktionen enthalten). um eine Wiederholung zu verhindern), einige Flags und ein Gleichgewicht in einer „nativen“ Vorab erstellte Kryptowährung namens XLM, die Abhilfe schaffen soll einige Denial-of-Service-Angriffe und erleichtern das Market-Making als neutrale Währung. Trustlines verfolgen das Eigentum an ausgegebenen Vermögenswerten benannt durch ein Paar bestehend aus dem ausstellenden Konto und einem Short Anlagecode (z. B. „USD“ oder „EUR“). Jede Vertrauenslinie gibt an ein Konto, ein Vermögenswert, der Kontostand in diesem Vermögenswert, a Grenze, über die der Saldo nicht steigen kann, und einige Flaggen. Ein Konto muss dem Halten eines Vermögenswerts ausdrücklich zustimmen Erstellen einer Vertrauenslinie, um Spammer daran zu hindern, sich anzumelden Konten mit unerwünschten Vermögenswerten. Die KYC-Vorschriften (Know Your Customer) verlangen von vielen Finanzinstituten, dass sie wissen, wessen Einlagen sie halten. zum Beispiel durch die Überprüfung des Lichtbildausweises. Zur Einhaltung können Emittenten festlegen ein optionales auth_reqired-Flag auf ihren Konten, das den Besitz der von ihnen ausgegebenen Vermögenswerte auf autorisierte Konten beschränkt. Um eine solche Autorisierung zu erteilen, legt der Emittent eine Autorisierung fest Markieren Sie die Vertrauenslinien der Kunden. Angebote entsprechen der Bereitschaft eines Kontos, nach oben zu handeln einen bestimmten Betrag eines bestimmten Vermögenswerts für einen anderen zu einem bestimmten Zeitpunkt zu übertragen Preis im Auftragsbuch; Sie werden automatisch abgeglichen und gefüllt, wenn sich Kauf-/Verkaufspreise kreuzen. Schließlich bestehen Kontodaten aus Konto-, Schlüssel- und Werttripeln, die den Kontoinhabern ermöglichen um kleine Metadatenwerte zu veröffentlichen. Um Ledger-Spam zu verhindern, gibt es ein XLM-Mindestguthaben. als Reserve bezeichnet. Die Reserve eines Kontos erhöht sich mit jedem zugeordneten Hauptbucheintrag und verringert sich, wenn der Hauptbucheintrag erfolgt verschwindet (z. B. wenn eine Bestellung ausgeführt oder storniert wird oder wenn a Trustline wird gelöscht). Derzeit wächst die Reserve um 0,5 XLM (∼0,03 $) pro Hauptbucheintrag. Unabhängig von der Reserve ist es so Es ist möglich, durch Löschung den gesamten Wert eines Kontos zurückzufordern es mit einer AccountMerge-Operation. Ein Hauptbuchkopf, wie in Abbildung 3 dargestellt, speichert globale Attribute: eine Hauptbuchnummer, Parameter wie der Reservesaldo pro Hauptbucheintrag, ein hash des vorherigen Hauptbuchkopfes (eigentlich mehrere hashes, die eine Skiplist bilden), einschließlich der SCP-Ausgabe a hash neuer Transaktionen, die in diesem Hauptbuch angewendet wurden, a hash von die Ergebnisse dieser Transaktionen (z. B. Erfolg oder Misserfolg für jeweils) und eine Momentaufnahme hash aller Hauptbucheinträge. Da der Snapshot hash alle Hauptbuchinhalte enthält, validators müssen den Verlauf nicht aufbewahren, um Transaktionen zu validieren. Allerdings ist mit einer Skalierung auf Hunderte Millionen zu rechnen Konten können wir nicht alle Hauptbucheintragstabellen für alle neu erstellen Hauptbuch schließen. Darüber hinaus ist es nicht praktikabel, ein Hauptbuch zu übertragenSchnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Hauptbuch # = 4 H(vorheriges HDR) SCP-Ausgabe H∗(Ergebnisse) H∗(Schnappschuss) ... Kopfzeile Hauptbuch # = 5 H(vorheriges HDR) SCP-Ausgabe H∗(Ergebnisse) H∗(Schnappschuss) ... Kopfzeile . . . Abbildung 3. Hauptbuchinhalte. H ist SHA-256, während H ∗ eine hierarchische oder rekursive Anwendung von H darstellt. SCP-Ausgabe Hängt auch vom vorherigen Header hash ab. Konto erstellen Erstellen und finanzieren Sie einen neuen Kontoeintrag Kontozusammenführung Kontobucheintrag löschen SetOptions Kontokennzeichnungen und Unterzeichner ändern Zahlung Zahlen Sie eine bestimmte Menge an Vermögenswerten an das Ziel. Konto. PathPayment Wie „Zahlung“, aber zahlen Sie in einem anderen Guthaben ein (aufwärts). begrenzen); Geben Sie bis zu 5 zwischengeschaltete Vermögenswerte an Angebot verwalten Angebotsbucheintrag erstellen/löschen/ändern, -Passives Angebot mit passiver Variante, um eine Nullausbreitung zu ermöglichen Daten verwalten Konto erstellen/löschen/ändern Datenbucheintrag ChangeTrust Trustline erstellen/löschen/ändern AllowTrust Setzen oder löschen Sie das Autorisierungskennzeichen auf der Trustline BumpSequence Erhöhen Sie die Folge. Nummer auf dem Konto Abbildung 4. Hauptbuchoperationen dieser Größe jedes Mal, wenn die Verbindung zu einem Knoten getrennt wurde zu lange im Netzwerk. Der Snapshot hash ist daher Entwickelt, um sowohl den hashing als auch den Zustandsabgleich zu optimieren. Konkret werden in der Momentaufnahme die Hauptbucheinträge nach Zeit geschichtet der letzten Änderung in einer Reihe exponentiell großer Container sogenannte Eimer. Die Ansammlung von Eimern wird Eimer genannt Liste und weist eine gewisse Ähnlichkeit mit logarithmisch strukturierten Zusammenführungsbäumen auf (LSM-Bäume) [77]. Die Bucket-Liste wird während der Transaktionsverarbeitung nicht gelesen (siehe Abschnitt 5.4). Daher bestimmtes Design Aspekte von LSM-Bäumen können gelockert werden. Insbesondere zufällig Ein Zugriff per Schlüssel ist nicht erforderlich und Buckets werden immer nur gelesen nacheinander im Rahmen der Zusammenführung von Ebenen. Den Eimer hashen Die Liste wird erstellt, indem jeder Bucket beim Zusammenführen hash wird und ein neuer kumulativer hash der Bucket-hashes berechnet wird (ein kleiner, fester Referenzindex hashes) bei jedem Ledgerabschluss. Der Abgleich der Bucket-Liste nach der Trennung erfordert einen Download nur Eimer, die sich unterscheiden. 5.2 Transaktionsmodell Eine Transaktion besteht aus einem Quellkonto, Gültigkeitskriterien, a Memo und eine Liste von einem oder mehreren Vorgängen. Abbildung 4 listet die verfügbaren Operationen auf. Jeder Vorgang verfügt über ein Quellkonto, das Der Standardwert ist der der gesamten Transaktion. Eine Transaktion muss mit Schlüsseln signiert sein, die jedem Quellkonto in entsprechen eine Operation. Multisig-Konten können eine höhere Signierung erfordern Gewicht für einige Operationen (z. B. SetOptions) und niedriger für andere (z. B. AllowTrust). Transaktionen sind atomar – wenn eine Operation fehlschlägt, keine davon sie ausführen. Dies vereinfacht Mehrweggeschäfte. Angenommen, ein Der Emittent erstellt einen Vermögenswert, um Landurkunden darzustellen, und Benutzer A möchte ein kleines Grundstück plus 10.000 US-Dollar gegen ein tauschen größeres Grundstück im Besitz von B. Die beiden Nutzer können beide unterzeichnen eine einzelne Transaktion mit drei Vorgängen: zwei Grundstücke Zahlungen und Ein-Dollar-Zahlung. Das wichtigste Gültigkeitskriterium einer Transaktion ist ihre Sequenznummer, die um eins größer sein muss als die der Transaktion Hauptbucheintrag des Quellkontos. Eine gültige Transaktion ausführen (erfolgreich oder nicht) erhöht die Sequenznummer und verhindert so die Wiedergabe. Die anfänglichen Sequenznummern enthalten das Hauptbuch Nummer in den hohen Bits, um eine erneute Wiedergabe auch nach dem Löschen zu verhindern und ein Konto neu erstellen. Das andere Gültigkeitskriterium ist eine optionale Begrenzung des Zeitpunkts Eine Transaktion kann ausgeführt werden. Zurück zum Land und zum Dollar Swap oben: Wenn A die Transaktion vor B unterzeichnet, kann A dies möglicherweise nicht tun Ich möchte, dass B die Transaktion ein Jahr lang abwartet, bevor sie sie einreicht Dies könnte dazu führen, dass eine Frist gesetzt wird, die die Transaktion ungültig macht nach ein paar Tagen. Es können auch Multisig-Konten konfiguriert werden um der Enthüllung eines hash Vorbildes signierendes Gewicht zu verleihen, Dies ermöglicht in Kombination mit Zeitgrenzen den atomaren Cross-Chain-Handel [1]. Das Quellkonto einer Transaktion zahlt eine geringe Gebühr in XLM. 10−5 XLM, es sei denn, es liegt eine Überlastung vor. Unter Stau ist die Die Betriebskosten werden durch eine niederländische Auktion festgelegt. Validatoren sind nicht durch Gebühren kompensiert, da validators analog sind zu Bitcoin vollständigen Knoten, nicht zu Minern. Anstatt XLM zu zerstören, Die Gebühren werden recycelt und anteilig durch Abstimmung verteilt bestehende XLM-Inhaber, die im Nachhinein möglicherweise oder könnten war die Komplexität nicht wert. 5.3 Konsenswerte Für jedes Hauptbuch verwendet Stellar SCP, um eine Datenstruktur zu vereinbaren mit drei Feldern: einem Transaktionssatz hash (einschließlich eines hash des vorherigen Ledger-Kopfes), ein Abschlusszeitpunkt, eind Upgrades. Wenn mehrere Werte als bestätigt bestätigt werden, wird Stellar übernommen der Transaktionssatz mit den meisten Operationen (Unterbrechung von Bindungen). nach Gesamtgebühren, dann Transaktionssatz hash), die Vereinigung aller Upgrades und die höchste Schließzeit. Eine enge Zeit ist nur gültig, wenn es zwischen dem Abschlusszeitpunkt des letzten Hauptbuchs und dem liegt vorhanden, sodass Knoten keine ungültigen Zeiten nominieren. Durch Upgrades werden globale Parameter wie der Reservesaldo, die Mindestbetriebsgebühr und die Protokollversion angepasst. Wann Während der Nominierung werden höhere Gebühren und Protokollversionsnummern kombiniert und ersetzen niedrigere. Upgrades wirken sich auf die Governance durch einen Streitraum mit gemeinsamer Abstimmung aus [34], aber auch nicht weder egalitär noch zentralisiert. Jeder validator ist konfiguriert als entweder regierend oder nicht regierend (Standardeinstellung). davon, ob sein Betreiber sich an der Governance beteiligen möchte. Die validators berücksichtigen drei Arten von Upgrades: erwünscht, gültig und ungültig (alles, was validator nicht tut).
SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. validator Kern Horizont FS DB DB einreichen Kunde Kunde andere validators Abbildung 5. Stellar validator Architektur wissen, wie man es umsetzt). Gewünschte Upgrades werden konfiguriert Auslöser zu einem bestimmten Zeitpunkt, der koordiniert werden soll Betreiber. Regierende Knoten stimmen immer für die Nominierung der gewünschten Personen Upgrades akzeptieren, aber nicht stimmen, um gültige Upgrades zu nominieren (d. h. einem Sperrquorum zustimmen) und niemals dafür stimmen oder ungültige Upgrades akzeptieren. Nicht regierendes validators-Echo Jede Stimme, die sie für ein gültiges Upgrade sehen, delegiert im Wesentlichen Die Entscheidung darüber, welche Upgrades gewünscht werden, liegt bei denjenigen, die sich dafür entscheiden für eine Führungsrolle. 5.4 Umsetzung Abbildung 5 zeigt die validator-Architektur von Stellar. Ein Dämon namens stellar-core (ca. 92.000 Zeilen C++, ohne Bibliotheken von Drittanbietern) implementiert das SCP-Protokoll und die replizierte Zustandsmaschine. Um Werte für SCP zu erzeugen, muss eine große Anzahl von Hauptbucheinträgen auf kleine kryptografische Werte reduziert werden hashes. Im Gegensatz dazu Transaktionsvalidierung und -ausführung erfordert die Suche nach Kontostatus und Auftragsabgleich unter der beste Preis. Um beide Funktionen effizient zu erfüllen, stellar-core Behält zwei Darstellungen des Ledgers: eine externe Darstellung, die die Bucket-Liste enthält und als Binärdateien gespeichert wird kann effizient aktualisiert und inkrementell rehashed werden, und eine interne Darstellung in einer SQL-Datenbank (PostgreSQL für Produktionsknoten). Stellar-core erstellt ein schreibgeschütztes Verlaufsarchiv mit Jeder Transaktionssatz, der bestätigt wurde, und Snapshots davon Eimer. Das Archiv ermöglicht es neuen Knoten, sich selbst zu booten beim Beitritt zum Netzwerk. Es bietet auch eine Aufzeichnung des Hauptbuchs Geschichte – es muss einen Ort geben, an dem man nachschlagen kann Transaktion von vor zwei Jahren. Da der Verlauf nur angehängt werden kann Da es selten genutzt wird und selten darauf zugegriffen wird, kann es an günstigen Orten aufbewahrt werden wie Amazon Glacier oder jeder andere Dienst, der das Speichern ermöglicht und Flatfiles abrufen. Validator-Hosts hosten normalerweise nicht ihre eigenen Archive, um jegliche Auswirkungen auf die Validierung zu vermeiden Leistung aus dem Dienst der Geschichte. Um den Sternkern einfach zu halten, ist er nicht für die Verwendung vorgesehen direkt durch Anwendungen und stellt nur eine sehr schmale Schnittstelle für die Übermittlung neuer Transaktionen bereit. Zur Unterstützung Clients führen die meisten validators einen Daemon namens Horizon aus (∼18k Zeilen von Go), die eine HTTP-Schnittstelle zum Senden bereitstellt und Lernen von Transaktionen. Horizon hat nur Lesezugriff auf Die SQL-Datenbank von stellar-core minimiert das Risiko von Horizon Destabilisierender Sternenkern. Funktionen wie die Zahlungspfadfindung sind vollständig in Horizon implementiert und können erweitert werden einseitig ohne Abstimmung mit anderen validators. Mehrere optionale Daemons höherer Ebenen sind Clients für Horizon und runden das Ökosystem ab. Ein Bridge-Server erleichtert dies Integration von Stellar in bestehende Systeme, z. B. Verbuchung von Benachrichtigungen über alle auf einem bestimmten Konto eingegangenen Zahlungen. A Der Compliance-Server bietet Hooks für Finanzinstitute Austausch und Genehmigung von Absender- und Empfängerinformationen zu Zahlungen, zur Einhaltung von Sanktionslisten. Schließlich, Ein Verbundserver implementiert eine für Menschen lesbare Benennung System für Konten. 6 Bereitstellungserfahrung Stellar entwickelte sich über mehrere Jahre zu einem Staat mit gemäßigtem Anzahl einigermaßen zuverlässiger Full-Node-Betreiber. Allerdings Die Konfigurationen der Knoten waren so, dass Lebendigkeit (obwohl nicht Sicherheit) hing von uns ab, der Stellar Development Foundation (SDF); SDF war plötzlich verschwunden, andere Knotenbetreiber hätte eingreifen und uns manuell entfernen müssen von Quorum-Slices, damit das Netzwerk fortfahren kann. Während wir und viele andere die systemische Bedeutung von SDF reduzieren wollen, hat dieses Ziel seitdem immer mehr Priorität erhalten Forscher [58] quantifizierten und veröffentlichten die Zentralisierung des Netzwerks, ohne die Risiken für Sicherheit und Sicherheit zu differenzieren Lebendigkeit. Eine Reihe von Betreibern reagierte mit aktiven Konfigurationsanpassungen, vor allem mit der Vergrößerung ihrer Anlagen Quorum-Scheiben, um die Bedeutung der SDF abzuschwächen; Ironischerweise erhöhte dies nur das Risiko für die Lebendigkeit. Zwei Probleme verschärften die Situation. Erstens ein beliebter Das Überwachungstool [5] eines Drittanbieters Stellar wurde systematisch durchgeführt Überschätzung der Betriebszeit von validator durch nicht tatsächliche Überprüfung dieser Sternenkern lief; Dies führte dazu, dass Menschen einbezogen wurden unzuverlässige Knoten in ihren Quorum-Slices. Zweitens ein Fehler Stellar-Core bedeutete, dass einmal ein validator in das nächste Hauptbuch verschoben wurde, Es hat den verbleibenden Knoten nicht ausreichend dabei geholfen, die Previ abzuschließenNotieren Sie sich Ihr Konto für den Fall, dass Nachrichten verloren gehen. Infolgedessen ist die Das Netzwerk hatte eine Ausfallzeit von 67 Minuten und war erforderlich manuelle Koordination durch validator-Administratoren zum Neustart. Schlimmer noch: Beim Versuch, das Netzwerk neu zu starten, kam es gleichzeitig zu überstürzten Neukonfigurationen auf mehreren Knoten in einer kollektiven Fehlkonfiguration, die es einigen Knoten ermöglichte divergieren, was ein manuelles Herunterfahren dieser Knoten erfordert und Wiedervorlage der während der Divergenz akzeptierten Transaktionen. Glücklicherweise wurde diese Abweichung erkannt und korrigiert schnell und enthielt keine widersprüchlichen Transaktionen, aber die Risiko, dass das Netzwerk die Quorum-Überschneidung nicht erreicht – Spaltung unter gleichzeitiger Akzeptanz potenzieller Konflikte Transaktionen, einfach aufgrund einer Fehlkonfiguration, wurden durchgeführt sehr konkret durch diesen Vorfall. Die Überprüfung dieser Erfahrungen führte zu zwei wichtigen Schlussfolgerungen und entsprechende Korrekturmaßnahmen.Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Kritisch, 100 % 51 % 51 % Hoch, 67 % 51 % Mittel, 67 % 51 % Niedrig, 67 % 51 % 51 % ... ... ... 51 % ... 51 % Abbildung 6. Qualitätshierarchie des Validators. Knoten höchster Qualität erfordern den höchsten Schwellenwert von 100 %, während niedrigere Qualitäten auf einen Schwellenwert von 67 % konfiguriert sind. Knoten innerhalb eines einzigen Für die Organisation ist eine einfache Mehrheit von 51 % erforderlich. 6.1 Komplexität und Fragilität der Konfiguration Stellar drückt Quorum-Slices als verschachtelte Quorum-Sets aus, die aus n Einträgen und einem Schwellenwert k bestehen, wobei jeder Satz von k Einträgen besteht stellt einen Quorum-Slice dar. Jeder der n Einträge ist dann entweder ein öffentlicher Schlüssel validator oder, rekursiv, ein anderer Quorumsatz. Obwohl es flexibel und kompakt ist, haben wir ein verschachteltes Quorum realisiert Sets boten den Knotenbetreibern gleichzeitig zu viel Flexibilität und zu wenig Anleitung: Es war leicht, unsichere (bzw auch unsinnige) Konfigurationen. Die Kriterien für die Gruppierung Knoten in Mengen, zum Organisieren von Teilmengen in einer Hierarchie und zur Auswahl der Schwellenwerte waren alle nicht ausreichend klar und trugen zu Betriebsausfällen bei. Es war nicht klar, ob Behandeln Sie eine „Ebene“ in der Hierarchie der verschachtelten Mengen als eine Vertrauensebene. oder eine Organisation oder beides; viele Konfigurationen im Feld vermischte diese Konzepte zusätzlich zur Angabe gefährlicher oder bedeutungslose Schwellenwerte. Wir haben daher einen einfacheren Konfigurationsmechanismus hinzugefügt das zwei Aspekte verschachtelter Quorum-Sets trennt: Gruppierung Knoten nach Organisation zusammenfassen und jede Organisation mit einer einfachen Vertrauensklassifizierung (niedrig, mittel, hoch usw.) kennzeichnen kritisch). Organisationen auf und über hoher Ebene sind dazu verpflichtet Geschichtsarchive veröffentlichen. Das neue System synthetisiert verschachtelte Quorum-Sets, in denen jede Organisation als eine dargestellt wird Es wurde ein Schwellenwert von 51 % festgelegt und Organisationen werden in Gruppen eingeteilt mit 67 %- oder 100 %-Schwellenwerten (abhängig von der Gruppenqualität). Jede Gruppe ist ein einzelner Eintrag in der nächsten (höherwertigen) Gruppe. wie in Abbildung 6 dargestellt. Dieses vereinfachte Modell reduziert die Wahrscheinlichkeit einer Fehlkonfiguration, sowohl hinsichtlich der Struktur der synthetisierten verschachtelten Mengen und der dafür gewählten Schwellenwerte Jeder Satz. 6.2 Proaktive Erkennung von Fehlkonfigurationen Zweitens haben wir erkannt, dass es zu spät ist, kollektive Fehlkonfigurationen zu erkennen, indem man auf die Beobachtung ihrer negativen Auswirkungen wartet. Insbesondere im Hinblick auf Fehlkonfigurationen, die abweichen können – a schwerwiegenderer Fehlermodus als Anhalten – das Netzwerk benötigt um in der Lage zu sein, Fehlkonfigurationen sofort zu erkennen, so dass Bediener sie rückgängig machen können, bevor es tatsächlich zu Abweichungen kommt. Um diesem Bedarf gerecht zu werden, haben wir einen Mechanismus in die Software validator eingebaut, der kontinuierlich den kollektiven Konfigurationsstatus aller Peers im transitiven Abschluss des Knotens erfasst und das Potenzial für Divergenz – d. h. Disjunktheit – erkennt Kollegien – innerhalb dieser kollektiven Konfiguration. 6.2.1 Überprüfung der Quorum-Schnittmenge Während das Sammeln von Quorum-Slices einfach ist, ist es schwierig, disjunkte Quoren unter ihnen zu finden.[62]. Wir haben es jedoch angenommen eine Reihe algorithmischer Heuristiken und Falleliminierungsregeln vorgeschlagen von Lachowski [62], die typische Instanzen überprüfen des Problems mehrere Größenordnungen schneller als die Kosten im schlimmsten Fall. Praktisch gesehen das aktuelle Netzwerk Die transitiven Quorum-Slice-Abschlüsse liegen in der Größenordnung von 20–30 Knoten und, mit Lachowskis Optimierungen, typischerweise überprüfen in Sekundenschnelle auf einer einzigen CPU. Sollte sich der Bedarf ergeben Um die Leistung zu verbessern, können wir die Suche parallelisieren. 6.2.2 Überprüfung riskanter Konfigurationen Zu erkennen, dass das Netzwerk disjunkte Quoren zulässt, ist ein Schritt in die richtige Richtung, macht aber unangenehm spät auf die Gefahr aufmerksam für solch ein kritisches Thema. Im Idealfall möchten wir, dass Knotenbetreiber Warnungen erhalten, wenn die kollektive Konfiguration des Netzwerks erfolgt nähert sich lediglich einem riskanten Zustand. Daher haben wir den Quorum-Intersection-Checker erweitert Um einen Zustand zu erkennen, nennen wir ihn Kritikalität: wenn der Strom Die kollektive Konfiguration ist nur eine Fehlkonfiguration entfernt ein Staat, der disjunkte Quoren zulässt. Um Kritikalität zu erkennen, Der Prüfer ersetzt dann wiederholt die Konfiguration jeder Organisation durch eine simulierte Worst-Case-Fehlkonfiguration führt die innere Quorum-Schnittpunktprüfung für das Ergebnis erneut aus. Wenn eine solche kritische Fehlkonfiguration vorliegt, ist nur ein Schritt entfernt Ab dem aktuellen Stand gibt die Software eine Warnung aus und meldet, dass die Organisation ein Fehlkonfigurationsrisiko darstellt. Durch diese Änderungen erhält die Betreibergemeinschaft zwei Ebenen von Hinweisen und Anleitungen, um sich vor den schlimmsten Formen zu schützen kollektiver Fehlkonfiguration.
Evaluación

Comprender la idoneidad de Stellar como pago global y red comercial, evaluamos el estado de la red pública y realizó experimentos controlados en un laboratorio experimental privado. red. Nos centramos en las siguientes preguntas: • ¿Cómo es la topología de la red de producción? ¿Cuántos mensajes se transmiten en promedio y ¿Cómo experimenta SCP los tiempos de espera? • ¿Las latencias de actualización del consenso y del libro mayor siguen siendo independientes del número de cuentas?SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. • ¿Cómo se ven afectadas las latencias por el aumento de (a) las transacciones por segundo (y, en consecuencia, las transacciones por segundo)? libro mayor), y (b) el número de validator nodos? • ¿Cuál es el costo de ejecutar un nodo en términos de CPU? memoria y ancho de banda de la red? Las redes de pago tienen tasas de transacción bajas en comparación a otros tipos de sistemas distribuidos. Los principales blockchains, Bitcoin y Ethereum, confirman hasta 15 transacciones/segundo, menos de Stellar. Además, estos sistemas tardan unos minutos en Una hora para confirmar una transacción de forma segura, porque la prueba de trabajo requiere esperar a que se extraigan varios bloques. el La red SWIFT no blockchain promedió solo 420 transacciones por segundo en su día pico [14]. Por lo tanto elegimos para comparar nuestras mediciones con el objetivo de 5 segundos intervalo del libro mayor, un objetivo más agresivo. Nuestros resultados muestran que las latencias están cómodamente por debajo de este límite incluso con Varias optimizaciones no implementadas aún están en proceso. 7.1 Anclas Los principales activos negociados por volumen incluyen divisas (por ejemplo, 3 USD anclas, 2 CNY), un ancla Bitcoin, un valor respaldado por bienes raíces token [92] y una moneda en la aplicación [8]. Diferentes anclas tienen diferentes políticas. Por ejemplo, un ancla en USD, Stronghold, establece auth_reqired y requiere un proceso de conocimiento de su cliente (KYC) para cada cuenta que tenga su activos. Otro, AnchorUSD, cualquiera puede recibir e intercambiar sus USD (haciendo literalmente posible enviar $0.50 a México en 5 segundos con una tarifa de $0.000001). Sin embargo, AnchorUSD requiere KYC y tarifas para comprar o canjear sus USD con transferencias bancarias convencionales. En Filipinas, donde Las regulaciones bancarias son más laxas para los pagos entrantes, monedas.ph admite el retiro de PHP en cualquier cajero automático [36]. Además de la seguridad token mencionada anteriormente y la moneda de la aplicación, existe una variedad de tokens no monetarios que van desde bonos comerciales [22] y créditos de carbono [85, 96] a más activos esotéricos como un token que incentiva la colaboración recuperación del automóvil [35]. 7.2 Red pública Al momento de escribir este artículo, hay 126 nodos completos activos, 66 de los cuales participar en el consenso firmando mensajes de voto. Figura 7 (generado por [5]) visualiza la red, con una línea entre dos nodos si uno aparece en los sectores de quórum del otro y un Línea azul más oscura para mostrar dependencia bidireccional. en el El centro es un grupo de 17 “validators de nivel uno” de facto dirigidos por SDF, SatoshiPay, LOBSTR, COINQVEST y Keybase. Hace cuatro meses, antes de los acontecimientos de la Sección 6, había Había 15 nodos sistémicamente importantes: 3 de aparentemente organizaciones de primer nivel y varios singletons aleatorios. el El gráfico también parecía mucho menos regular. Por lo tanto, el nuevo mecanismo de configuración y/o mejores decisiones del operador parecen contribuir a una topología de red más saludable. sin Grandes recursos financieros (y el correspondiente accionista). Figura 7. Mapa de porción de quórum obligaciones), hubiera sido difícil reclutar 5 niveles uno organizaciones desde el principio. Esto sugiere quórum Los sectores desempeñan un papel útil en el arranque de la red: cualquiera puede unirse con el objetivo de convertirme en un jugador importante porque no existen barreras para el acuerdo por parejas. Actualmente hay más de 3,3 millones de cuentas en el libro mayor. Más En un período reciente de 24 horas, Stellar promedió 4,5 transacciones y 15,7 operaciones por segundo. Revisando los libros de contabilidad recientes, la mayoría Las transacciones parecen tener una sola operación, mientras que cada pocos En los libros mayores vemos transacciones que contienen muchas operaciones que parecen provenir de creadores de mercado que gestionan ofertas. el Los tiempos medios para lograr el consenso y actualizar el libro mayor fueron 1061 ms y 46 ms, respectivamente. Los percentiles 99 fueron 2252 ms y 142 ms (el primero refleja un tiempo de espera de 1 segundo en la selección del líder de nominación). Tenga en cuenta que el rendimiento de SCP es en su mayoría independiente de las transacciones por segundo, ya que SCP acuerda un hash de muchas transacciones arbitrarias. Es más probable que surjan cuellos de botella al propagar el candidato. transacciones durante la nominación, ejecución y validación transacciones y fusión de depósitos. todavía no hemos necesitado para paralelizar el procesamiento de transacciones de stellar-core en múltiples núcleos de CPU o unidades de disco. También evaluamos la cantidad de mensajes SCP transmitidos. en la red de producción. En el caso normal con un solo líder elegido para nominar un valor, esperamos siete lógicas mensajes a difundir: dos mensajes para votar y aceptar una nomiDeclaración de nacimiento, dos mensajes para aceptar y confirmar. una declaración de preparación, dos mensajes para aceptar y confirmar una declaración de confirmación y, finalmente, un mensaje de externalización (enviado después de enviar un nuevo libro mayor al disco para ayudar a los rezagados ponerse al día). La implementación combina confirmar el compromiso. y externalizar mensajes como una optimización, ya que es Es seguro externalizar un valor una vez comprometido. Luego analizamos las métricas recopiladas en una producción Stellar validator. Más En el transcurso de 68 horas se emitieron 1,3 mensajes/segundo, con un promedio de 6 a 7 mensajes por libro mayor. Observamos que el total
Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá percentil Número de tiempos de espera Nominación votación 75% 0 0 99% 1 0 máx. 4 1 Figura 8. Tiempos de espera por libro mayor de 68 horas El recuento de mensajes transmitidos por validators es mayor, ya que en Además de los mensajes de votación federados, los nodos también transmiten cualquier transacción que conozcan. La Figura 8 muestra los tiempos de espera experimentados por una producción. validator durante un período de 68 horas. Los tiempos de espera para las nominaciones son una medida de la (in)eficacia de la función de elección del líder, mientras que los tiempos de espera de las votaciones dependen en gran medida de la red y posibles retrasos en los mensajes. Los tiempos de espera son consistentes. con el número de mensajes emitidos: seis mensajes en el en el mejor de los casos, y al menos siete mensajes si se necesita una ronda de nominaciones adicional. 7.3 Experimentos controlados Realizamos experimentos controlados en contenedores empaquetados en Instancias Amazon EC2 c5d.9xlarge con 72 GiB de RAM, 900 GB de SSD NVMe y 36 vCPU. Cada instancia estaba en la misma región EC2 y tenía un ancho de banda fijo de 10 Gbps. Usamos SQLite como tienda. (Stellar también es compatible con PostgreSQL, pero eso tiene tareas asincrónicas que inyectan ruido en las mediciones). Stellar proporciona una consulta de tiempo de ejecución integrada, generateload, que permite generar carga sintética en un objetivo específico transacción/segunda tasa. Aunque Stellar admite varios Funciones comerciales, como libro de órdenes y ruta entre activos. pagos, nos centramos en pagos simples. La confirmación de transacciones consta de varios pasos, por lo que registró las medidas para cada uno de los siguientes: • Nominación: tiempo desde la nominación hasta la primera preparación. • Votación: tiempo desde la primera preparación hasta la confirmación de una boleta comprometida • Actualización del libro mayor: es hora de aplicar el valor de consenso • Recuento de transacciones: transacciones confirmadas por libro mayor Cada uno de nuestros experimentos estuvo definido por tres parámetros: el número de asientos de cuenta en el libro mayor, la cantidad de carga (en forma de pagos XLM) enviada por segundo, y el número de validators. Configuramos cada validator saber sobre todos los demás validator (el peor de los casos para SCP), con porciones de quórum establecidas en cualquier mayoría simple de nodos (para maximizar el número de quórums diferentes). Línea de base Nuestro experimento de referencia midió Stellar con 100.000 cuentas, cuatro validator y la generación de carga tasa de 100 transacciones/segundo. Observamos 507 transacciones por libro mayor en promedio, con una desviación estándar de 49 (9,7%). Tenga en cuenta que no se descartaron transacciones; el ligero 105 106 107 0 500 1.000 1.500 2.000 Cuentas Latencia [ms] Actualización del libro mayor votación Nominación Figura 9. Latencia a medida que aumenta el número de cuentas La variación se debe a limitaciones de programación del generador de carga. Observamos que el número de transacciones por libro mayor fue consistente con nuestra tasa de generación de carga, dado el libro mayor cerrando cada 5 segundos. Nominación, votación y libro mayor La actualización mostró latencias medias de 82,53 ms, 95,96 ms y 174,08 ms, respectivamente. Observamos que la latencia de nominación El percentil 99 está constantemente por debajo de 61 ms, con ocasionales picos de aproximadamente 1 segundo, correspondientes al primer paso en la función de tiempo de espera de la selección de líder. Dado el desempeño de referencia, analizamos los efectos de variar cada uno de los parámetros de configuración de la prueba. Cuentas Los datos de la Figura 9 sugieren que Stellar escala así como el número de cuentas aumenta. Generación de prueba Las cuentas se convirtieron en un proceso largo, ya que la creación de depósitos y la fusión nos impidió simplemente poblar la base de datos con cuentas directamente a través de SQL. Por lo tanto, llevamos a cabo nuestra experimentos para hasta 50.000.000 de cuentas. mientras hay impacto mínimo en las latencias de actualización del consenso y del libro mayor, observamos que el aumento de cuentas crea un gasto general de fusionando cubos, que se hacen más grandes. Tasa de transacción La tasa de transacción afecta la cantidad de multidifusión de tráfico entre validators, el número de transacciones incluidas en cada libro mayor y el tamaño del nivel superior cubos. Comprender los efectos del aumento de las transacciones. carga, realizamos un experimento con 100.000 cuentas y 4 validators. La Figura 10 muestra un lento crecimiento en la latencia del consenso, mientras que la mayor parte del tiempo se dedicó a actualizar el libro mayor. No es sorprendente que a medida que el conjunto de transacciones aumenta de tamaño, lleva más tiempo enviarlo a la base de datos. También notamos que La latencia de actualización del libro mayor depende en gran medida de la implementación. y se ve afectado por la elección de la base de datos. Nodos validadores Para ver cómo aumenta el número de tíone validatorsimpacta el rendimiento, realizamos experimentos con 100.000 cuentas, 100 transacciones por segundo y un número variable de validators de 4 a 43. Aparecieron todos los validators en todos los sectores de quórum de validators; porciones de quórum más pequeñas tienen un menor impacto en el rendimiento.SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Carga [transacciones/segundo] Latencia [ms] Actualización del libro mayor votación Nominación Figura 10. Latencia a medida que aumenta la carga de transacciones 10 20 30 40 0 500 1.000 1.500 2.000 Validadores Latencia [ms] Actualización del libro mayor votación Nominación Figura 11. Latencia a medida que aumenta el número de nodos Cambiar el número de nodos de validación en la red afecta la cantidad de mensajes SCP intercambiados, así como el número de valores potenciales durante la nominación. Figura 11 muestra que el tiempo de nominación crece a un ritmo relativamente pequeño. Si bien los datos sugieren que las votaciones son el cuello de botella, Creemos que muchos problemas de escala se pueden abordar mejorando Red superpuesta de Stellar para optimizar el tráfico de red. como Como era de esperar, la latencia de actualización del libro mayor se mantuvo independiente de el número de nodos. Tasa de cierre Por último, queríamos medir el rendimiento de extremo a extremo de Stellar midiendo la frecuencia con la que se confirman los libros de contabilidad y si Stellar cumple su objetivo de 5 segundos sin abandonar cualquier transacción. Observamos un cierre promedio del libro mayor tiempos de 5,03 s, 5,10 s y 5,15 s a medida que aumentamos la cuenta entradas, tasa de transacción y número de nodos, respectivamente. Los resultados sugieren que Stellar puede cerrar libros contables de forma consistente bajo carga alta. 7.4 Ejecutando un validator Una de las características importantes de Stellar es el bajo costo de ejecutando un validator, ya que los anclajes deben ejecutarse (o contraerse) validators para hacer cumplir la finalidad. SDF ejecuta 3 validator de producción, todos en instancias c5.large de AWS, que tienen dos núcleos, 4 GiB de RAM y CPU Intel(R) Xeon(R) Platinum 8124M @ Procesadores de 3,00 GHz. Inspeccionar el uso de recursos en uno de estas máquinas, observamos el proceso Stellar usando alrededor del 7% de la CPU y 300 MiB de memoria. En términos de tráfico de red, con 28 conexiones a pares y un tamaño de quórum de 34, las velocidades entrantes y salientes fueron de 2,78 Mbit/s y 2,56 Mbit/s, respectivamente. Hardware necesario para ejecutar tal El proceso es económico. En nuestro caso, el coste es de 0,054$/hora. o alrededor de $40/mes. 7.5 Trabajo futuro Estos experimentos sugieren que Stellar puede escalar fácilmente entre 1 y 2 pedidos de magnitud más allá del uso actual de la red. porque el Las demandas de rendimiento han sido tan modestas hasta la fecha, Stellar deja espacio para muchas optimizaciones sencillas utilizando técnicas bien conocidas. Por ejemplo, transacciones y SCP los mensajes son transmitidos por validators usando una inundación ingenua protocolo, pero idealmente debería utilizar métodos más eficientes y estructurados. multidifusión punto a punto [30]. Además, con muchas bases de datos El tiempo de actualización del libro mayor se puede mejorar mediante técnicas estándar de procesamiento por lotes y captación previa.
Auswertung

Um die Eignung von Stellar als globales Zahlungsmittel zu verstehen und Handelsnetzwerk haben wir den Zustand des öffentlichen Netzwerks bewertet und führte kontrollierte Experimente auf einem privaten Experiment durch Netzwerk. Dabei haben wir uns auf folgende Fragen konzentriert: • Wie sieht die Topologie des Produktionsnetzwerks aus? Wie viele Nachrichten werden durchschnittlich gesendet und Wie kommt es bei SCP zu Zeitüberschreitungen? • Bleiben Konsens- und Ledger-Update-Latenzen unabhängig von der Anzahl der Konten?SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. • Wie werden Latenzen durch die Erhöhung (a) der Transaktionen pro Sekunde (und folglich der Transaktionen pro Sekunde) beeinflusst? Ledger) und (b) die Anzahl der validator Knoten? • Wie hoch sind die Kosten für den Betrieb eines Knotens in Bezug auf die CPU? Speicher und Netzwerkbandbreite? Zahlungsnetzwerke weisen im Vergleich niedrige Transaktionsraten auf zu anderen Arten von verteilten Systemen. Die führenden blockchains, Bitcoin und Ethereum, bestätigen bis zu 15 Transaktionen/Sekunde, weniger als Stellar. Darüber hinaus dauert die Installation dieser Systeme nur wenige Minuten eine Stunde, um eine Transaktion sicher zu bestätigen, da für den Proof-of-Work darauf gewartet werden muss, dass mehrere Blöcke abgebaut werden. Die Nicht-blockchain Das SWIFT-Netzwerk verzeichnete an seinem Spitzentag [14] durchschnittlich nur 420 Transaktionen pro Sekunde. Deshalb haben wir uns entschieden um unsere Messungen mit dem 5-Sekunden-Ziel zu vergleichen Ledger-Intervall, ein aggressiveres Ziel. Unsere Ergebnisse zeigen dass die Latenzen auch mit deutlich unter dieser Grenze liegen Mehrere nicht implementierte Optimierungen sind noch in der Pipeline. 7.1 Anker Zu den volumenmäßig am häufigsten gehandelten Vermögenswerten gehören Währungen (z. B. 3 USD). Anker, 2 CNY), ein Anker Bitcoin, ein immobilienbesichertes Wertpapier token [92] und eine In-App-Währung [8]. Verschiedene Anker haben unterschiedliche Richtlinien. Zum Beispiel ein USD-Anker, Stronghold legt auth_reqired fest und erfordert einen Know-Your-Customer-Prozess (KYC) für jedes Konto, das seinen Kunden besitzt Vermögenswerte. Ein anderes, AnchorUSD, lässt jeden empfangen und handeln ihren USD (was es buchstäblich möglich macht, 0,50 $ nach Mexiko zu senden). in 5 Sekunden mit einer Gebühr von 0,000001 $). Allerdings AnchorUSD Für den Kauf oder die Einlösung ihrer USD sind KYC und Gebühren erforderlich mit herkömmlichen Überweisungen. Auf den Philippinen, wo Laut Coins.ph sind die Bankvorschriften für eingehende Zahlungen laxer unterstützt die Auszahlung von PHP an jedem Geldautomaten [36]. Zusätzlich zu der oben genannten Sicherheit token und der In-App-Währung gibt es eine Reihe von Nicht-Währungs-tokens von Handelsanleihen [22] und Emissionsgutschriften [85, 96] bis mehr esoterische Vermögenswerte wie eine token, die Anreize für die Zusammenarbeit bietet Autorücknahme [35]. 7.2 Öffentliches Netzwerk Zum jetzigen Zeitpunkt gibt es 126 aktive Vollknoten, davon 66 Nehmen Sie am Konsens teil, indem Sie Abstimmungsbotschaften unterzeichnen. Abbildung 7 (generiert von [5]) visualisiert das Netzwerk mit einer Linie dazwischen zwei Knoten, wenn einer in den Quorum-Slices des anderen erscheint und a Eine dunkelblaue Linie zeigt die bidirektionale Abhängigkeit. Am Center ist ein Cluster von 17 De-facto-„Tier-One-validators“, die von betrieben werden SDF, SatoshiPay, LOBSTR, COINQVEST und Keybase. Vor vier Monaten, vor den Ereignissen von Abschnitt 6, dort Es gab 15 systemisch wichtige Knoten: 3 von scheinbar Tier-1-Organisationen und mehrere zufällige Singletons. Die Die Grafik sah auch viel weniger regelmäßig aus. Daher scheinen der neue Konfigurationsmechanismus und/oder bessere Bedienerentscheidungen zu sein um zu einer gesünderen Netzwerktopologie beizutragen. Ohne große finanzielle Mittel (und entsprechender Anteilseigner). Abbildung 7. Quorum-Slice-Map Verpflichtungen) wäre es schwierig gewesen, fünf Tier-1-Mitarbeiter zu rekrutieren Organisationen jedoch von Anfang an. Dies deutet auf ein Quorum hin Slices spielen beim Netzwerk-Bootstraping eine nützliche Rolle: Das kann jeder Treten Sie mit dem Ziel bei, ein wichtiger Spieler zu werden, denn Es gibt keine Gatekeeper für die paarweise Vereinbarung. Derzeit befinden sich über 3,3 Millionen Konten im Hauptbuch. Vorbei In den letzten 24 Stunden hat Stellar durchschnittlich 4,5 Transaktionen durchgeführt und 15,7 Operationen pro Sekunde. Meistens die Überprüfung aktueller Bücher Transaktionen scheinen einen einzigen Vorgang zu haben, während alle paar In Hauptbüchern sehen wir Transaktionen, die viele Vorgänge enthalten scheinen von Market Makern zu stammen, die Angebote verwalten. Die Die durchschnittlichen Zeiten, um einen Konsens zu erzielen und das Hauptbuch zu aktualisieren, waren 1061 ms bzw. 46 ms. Die 99. Perzentile waren 2252 ms und 142 ms (ersteres entspricht einer Zeitüberschreitung von 1 Sekunde). bei der Auswahl des Nominierungsleiters). Beachten Sie, dass die Leistung von SCP beträgt weitgehend unabhängig von Transaktionen pro Sekunde, da SCP stimmt einem hash beliebig vieler Transaktionen zu. Es ist wahrscheinlicher, dass Engpässe durch die Verbreitung von Kandidaten entstehen Transaktionen während der Nominierung, Ausführung und Validierung Transaktionen und das Zusammenführen von Buckets. Wir haben es noch nicht gebraucht um die Transaktionsverarbeitung von Stellar-Core über mehrere CPU-Kerne oder Festplatten zu parallelisieren. Wir haben auch die Anzahl der gesendeten SCP-Nachrichten ausgewertet im Produktionsnetzwerk. Im Normalfall mit einer Single Führer gewählt, um einen Wert zu nominieren, erwarten wir sieben logische Zu sendende Nachrichten: zwei Nachrichten zum Abstimmen und Annehmen ein Nominate-Anweisung, zwei Nachrichten zum Akzeptieren und Bestätigen eine Vorbereitungserklärung, zwei Nachrichten zum Akzeptieren und Bestätigen eine Commit-Anweisung und schließlich eine Externalize-Nachricht (wird gesendet, nachdem ein neues Hauptbuch auf die Festplatte übertragen wurde, um Nachzüglern zu helfen aufholen). Die Implementierung kombiniert Commit bestätigen und externalisieren Sie Nachrichten als Optimierung, da dies der Fall ist Es ist sicher, einen Wert zu externalisieren, nachdem er festgeschrieben wurde. Anschließend analysieren wir die für eine Produktion erfassten Metriken Stellar validator. Vorbei Im Laufe von 68 Stunden wurden 1,3 Nachrichten/Sekunde ausgesendet, Durchschnittlich 6-7 Nachrichten pro Hauptbuch. Wir stellen fest, dass die Summe
Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Perzentil Anzahl der Timeouts Nominierung Abstimmung 75 % 0 0 99 % 1 0 Max 4 1 Abbildung 8. Timeouts pro Ledger über 68 Stunden Die Anzahl der von validators gesendeten Nachrichten ist größer, seit in Zusätzlich zu den föderierten Abstimmungsnachrichten senden die Knoten auch Nachrichten alle Transaktionen, von denen sie erfahren. Abbildung 8 zeigt die Zeitüberschreitungen bei einer Produktion validator über einen Zeitraum von 68 Stunden. Nominierungs-Timeouts sind ein Maß für die (Un-)Wirksamkeit der Funktion zur Wahl des Vorsitzenden, während Abstimmungszeitüberschreitungen stark vom Netzwerk abhängen und mögliche Nachrichtenverzögerungen. Die Timeouts sind konsistent mit der Anzahl der ausgegebenen Nachrichten: sechs Nachrichten im Best-Case-Szenario und mindestens sieben Nachrichten, falls eine weitere Nominierungsrunde erforderlich ist. 7.3 Kontrollierte Experimente Wir führten kontrollierte Experimente in aufgepackten Behältern durch Amazon EC2 c5d.9xlarge-Instances mit 72 GiB RAM, 900 GB NVMe SSD und 36 vCPUs. Jede Instanz war in derselben EC2-Region und hatte eine feste Bandbreite von 10 Gbit/s. Wir haben SQLite als Speicher verwendet. (Stellar unterstützt auch PostgreSQL, aber das hat asynchrone Aufgaben, die Rauschen in die Messungen einbringen.) Stellar bietet eine integrierte Laufzeitabfrage, genericload, Dies ermöglicht die Erzeugung einer synthetischen Last an einem bestimmten Ziel Transaktion/Zweitkurs. Obwohl Stellar verschiedene unterstützt Handelsfunktionen wie Orderbuch und Cross-Asset-Pfad Im Bereich Zahlungen haben wir uns auf einfache Zahlungen konzentriert. Die Bestätigung von Transaktionen besteht aus mehreren Schritten zeichnete die Messungen für jedes der folgenden Elemente auf: • Nominierung: Zeit von der Nominierung bis zur ersten Vorbereitung • Abstimmung: Zeit von der ersten Vorbereitung bis zur Bestätigung a Stimmzettel begangen • Ledger-Aktualisierung: Zeit, den Konsenswert anzuwenden • Transaktionsanzahl: bestätigte Transaktionen pro Hauptbuch Jedes unserer Experimente wurde durch drei Parameter definiert: die Anzahl der Kontoeinträge im Hauptbuch, der Betrag von Last (in Form von XLM-Zahlungen), die pro Sekunde übermittelt wird, und die Anzahl der validators. Wir haben jeden validator konfiguriert über jeden anderen validator Bescheid wissen (ein Worst-Case-Szenario). für SCP), wobei die Quorum-Slices auf eine beliebige einfache Mehrheit eingestellt sind Knoten (um die Anzahl verschiedener Quoren zu maximieren). Grundlinie Unser Basisexperiment hat Stellar mit gemessen 100.000 Konten, vier validators und die Lastgenerierung Rate von 100 Transaktionen/Sekunde. Wir haben durchschnittlich 507 Transaktionen pro Hauptbuch beobachtet, mit einer Standardabweichung von 49 (9,7 %). Beachten Sie, dass keine Transaktionen gelöscht wurden; das Geringste 105 106 107 0 500 1.000 1.500 2.000 Konten Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 9. Latenz bei zunehmender Anzahl von Konten Die Abweichung ist auf Planungseinschränkungen des Lastgenerators zurückzuführen. Wir haben beobachtet, dass die Anzahl der Transaktionen pro Ledger entsprach unserer Lastgenerierungsrate, gegeben im Hauptbuch Schließt alle 5 Sekunden. Nominierung, Abstimmung und Protokoll Das Update zeigte mittlere Latenzen von 82,53 ms, 95,96 ms und 174,08 ms. Wir haben diese Nominierungslatenz beobachtet Das 99. Perzentil liegt gelegentlich unter 61 ms Spitzen von etwa 1 Sekunde, entsprechend dem ersten Schritt in der Timeout-Funktion der Leader-Auswahl. Angesichts der Ausgangsleistung haben wir uns die Auswirkungen angesehen Möglichkeit, die einzelnen Parameter des Testaufbaus zu variieren. Konten Die Daten in Abbildung 9 deuten darauf hin, dass Stellar skaliert Außerdem steigt die Anzahl der Konten. Testgenerierung Konten wurden zu einem langwierigen Prozess, da die Bucket-Erstellung und Durch die Zusammenführung konnten wir die Datenbank nicht einfach füllen mit Konten direkt über SQL. Deshalb haben wir unsere durchgeführt Experimente für bis zu 50.000.000 Konten. Während es gibt minimale Auswirkung auf Konsens- und Ledger-Update-Latenzen, Wir stellen fest, dass die Erhöhung der Konten einen Overhead von verursacht Zusammenführen von Eimern, die größer werden. Transaktionsrate Die Transaktionsrate beeinflusst die Menge Traffic-Multicast zwischen validators, die Anzahl der in jedem Ledger enthaltenen Transaktionen und die Größe der obersten Ebene Eimer. Die Auswirkungen zunehmender Transaktionen verstehen Beim Laden haben wir ein Experiment mit 100.000 Konten und 4 validators durchgeführt. Abbildung 10 zeigt das langsame Wachstum der Konsenslatenz. während die meiste Zeit für die Aktualisierung des Hauptbuchs aufgewendet wurde. Es überrascht nicht, dass es mit zunehmender Größe des Transaktionssatzes zunimmt Es dauert länger, es in die Datenbank zu übernehmen. Das nehmen wir auch zur Kenntnis Die Latenz der Ledger-Aktualisierung ist stark von der Implementierung abhängig. und wird durch die Wahl der Datenbank beeinflusst. Validatorknoten Um zu sehen, wie sich die Anzahl der Tierone validators erhöhtAuswirkungen auf die Leistung haben, haben wir Experimente durchgeführt mit 100.000 Konten, 100 Transaktionen/Sekunde und einer variierenden Anzahl von validators von 4 bis 43. Alle validators wurden angezeigt in allen Quorum-Slices von validators; kleinere Quorum-Slices würden es tun einen geringeren Einfluss auf die Leistung haben.SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Laden [Transaktionen/Sekunde] Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 10. Latenz bei steigender Transaktionslast 10 20 30 40 0 500 1.000 1.500 2.000 Validatoren Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 11. Latenz mit zunehmender Knotenanzahl Ändern der Anzahl validierender Knoten im Netzwerk wirkt sich auch auf die Anzahl der ausgetauschten SCP-Nachrichten aus die Anzahl der potenziellen Werte während der Nominierung. Abbildung 11 zeigt, dass die Nominierungszeit relativ langsam zunimmt. Während die Daten darauf hindeuten, dass die Stimmabgabe der Engpass ist, haben wir sind davon überzeugt, dass viele Skalierungsprobleme durch Verbesserungen gelöst werden können Das Overlay-Netzwerk von Stellar zur Optimierung des Netzwerkverkehrs. Als erwartet, blieb die Latenz der Ledger-Aktualisierung unabhängig davon die Anzahl der Knoten. Schlusskurs Schließlich wollten wir die End-to-End-Leistung von Stellar messen, indem wir messen, wie oft Hauptbücher bestätigt werden und ob Stellar sein 5-Sekunden-Ziel ohne Bestätigung erreicht alle Transaktionen fallen lassen. Wir haben einen durchschnittlichen Hauptbuchabschluss beobachtet Zeiten von 5,03 s, 5,10 s und 5,15 s, als wir das Konto erhöhten Einträge, Transaktionsrate bzw. Anzahl der Knoten. Die Ergebnisse legen nahe, dass Stellar Hauptbücher konsistent schließen kann unter hoher Belastung. 7.4 Ausführen eines validator Eines der wichtigen Merkmale von Stellar sind die geringen Kosten Ausführen eines validator, da Anker ausgeführt (oder mit ihnen kontrahiert) werden sollen validators, um die Endgültigkeit zu erzwingen. SDF führt drei Produktions-validators aus, alle auf c5.large AWS-Instanzen, die über zwei Kerne verfügen. 4 GiB RAM und Intel(R) Xeon(R) Platinum 8124M CPU @ 3,00-GHz-Prozessoren. Überprüfen der Ressourcennutzung auf einem Bei diesen Maschinen haben wir den Prozess Stellar beobachtet etwa 7 % der CPU und 300 MiB Speicher. Bezogen auf den Netzwerkverkehr mit 28 Verbindungen zu Peers und einer Quorumgröße Von 34 betrugen die eingehenden und ausgehenden Raten 2,78 Mbit/s und 2,56 Mbit/s. Hardware, die zum Ausführen eines solchen erforderlich ist Der Prozess ist kostengünstig. In unserem Fall betragen die Kosten 0,054 $/Stunde oder etwa 40 $/Monat. 7.5 Zukünftige Arbeit Diese Experimente legen nahe, dass Stellar problemlos 1–2 Ordnungen skalieren kann in einer Größenordnung, die über die heutige Netzwerknutzung hinausgeht. Denn die Die Leistungsanforderungen waren bisher so bescheiden, Stellar lässt Raum für viele einfache Optimierungen bekannte Techniken. Zum Beispiel Transaktionen und SCP Nachrichten werden von validators mithilfe einer naiven Flutung gesendet Protokoll, sollte aber idealerweise effizienter und strukturierter sein Peer-to-Peer-Multicast [30]. Zudem datenbanklastig Die Aktualisierungszeit des Hauptbuchs kann durch Standard-Batching- und Prefetching-Techniken verbessert werden.
Conclusión
Los pagos internacionales son caros y tardan días. Fondo la custodia pasa a través de múltiples instituciones financieras, incluidos bancos corresponsales y servicios de transferencia de dinero. Debido a que se debe confiar plenamente en cada salto, es difícil para los nuevos nuevos participantes ganen cuota de mercado y compitan. Stellar muestra cómo enviar dinero a todo el mundo de forma económica en segundos. el La innovación clave es un nuevo protocolo de acuerdo bizantino de membresía abierta, SCP, que aprovecha la estructura de igual a igual. de la red financiera para lograr un consenso global bajo un Nueva hipótesis de Internet. SCP permite que Stellar se comprometa atómicamente transacciones irreversibles entre participantes arbitrarios que no se conocen ni confían el uno en el otro. Esto, a su vez, garantiza a los nuevos participantes el acceso a los mismos mercados establecidos. jugadores, hace que sea seguro obtener el mejor intercambio disponible tasas incluso de creadores de mercado que no son de confianza, y dramáticamente Reduce la latencia de pago. Agradecimientos Stellar no estaría donde está hoy sin el temprano liderazgo de Joyce Kim o las tremendas contribuciones de Scott Fleckenstein y Bartek Nowotarski en la construcción y manteniendo horizonte, el SDK Stellar y otras piezas clave del ecosistema Stellar. También agradecemos a Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, los revisores anónimos y nuestra pastora Justine Sherry por sus útiles comentarios sobre borradores anteriores. Descargo de responsabilidad La contribución del profesor Mazières a esta publicación fue como consultor remunerado y no formó parte de su Deberes o responsabilidades de la Universidad de Stanford.
Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá
Abschluss
Internationale Zahlungen sind teuer und dauern Tage. Fonds Die Verwahrung erfolgt über mehrere Finanzinstitute, darunter Korrespondenzbanken und Geldtransferdienste. Da jeder Hop vollständig vertrauenswürdig sein muss, ist es schwierig, neue Hops zu erstellen Marktteilnehmer, um Marktanteile zu gewinnen und im Wettbewerb zu bestehen. Stellar zeigt So senden Sie Geld in Sekundenschnelle günstig um die Welt. Die Die wichtigste Innovation ist ein neues byzantinisches Vereinbarungsprotokoll mit offener Mitgliedschaft, SCP, das die Peer-to-Peer-Struktur nutzt des Finanznetzwerks, um einen globalen Konsens unter a zu erreichen neuartige Internet-Hypothese. SCP lässt Stellar atomar festschreiben irreversible Transaktionen zwischen beliebigen Teilnehmern, die Sie wissen nichts voneinander und vertrauen einander nicht. Dies wiederum garantiert neuen Marktteilnehmern Zugang zu denselben Märkten wie etablierten Spieler, macht es sicher, den besten verfügbaren Austausch zu erhalten selbst von nicht vertrauenswürdigen Market Makern, und zwar dramatisch reduziert die Zahlungsverzögerung. Danksagungen Stellar wäre ohne die frühen nicht da, wo es heute ist Führung von Joyce Kim oder die enormen Beiträge von Scott Fleckenstein und Bartek Nowotarski im Bauwesen und Aufrechterhaltung des Horizonts, des Stellar SDK und anderer wichtiger Elemente des Ökosystems Stellar. Wir danken auch Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, die anonymen Gutachter und unserer Schäferin Justine Sherry für ihre hilfreichen Kommentare zu frühere Entwürfe. Haftungsausschluss Der Beitrag von Professor Mazières zu dieser Veröffentlichung erfolgte als bezahlter Berater und war nicht Teil seiner Aufgaben oder Verantwortlichkeiten der Stanford University.
Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada