O Protocolo de Consenso Stellar
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
Resumo
Os pagamentos internacionais são lentos e caros, em parte devido ao roteamento de pagamentos multi-hop através de plataformas heterogêneas. sistemas bancários. Stellar é uma nova rede global de pagamentos que pode transferir dinheiro digital diretamente para qualquer lugar do mundo em segundos. A principal inovação é uma transação segura mecanismo através de intermediários não confiáveis, usando um novo Protocolo de acordo bizantino denominado SCP. Com o SCP, cada instituição especifica outras instituições com as quais permanecer de acordo; através da interconectividade global do sistema financeiro, toda a rede concorda então com a energia atômica transações abrangendo instituições arbitrárias, sem risco de solvência ou de taxa de câmbio de emissores intermediários de ativos ou formadores de mercado. Apresentamos o modelo, protocolo e verificação formal; descrever a rede de pagamento Stellar; e finalmente avaliar Stellar empiricamente através de benchmarks e nossa experiência com vários anos de uso em produção. Conceitos de CCS • Segurança e privacidade →Distribuído segurança de sistemas; • Organização de sistemas informáticos → Arquiteturas ponto a ponto; • Sistemas de informação → Transferência eletrônica de fundos. Palavras-chave blockchain, BFT, quóruns, pagamentos Formato de referência ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pagamentos globais rápidos e seguros com Stellar. No SOSP '19: Simpósio sobre Princípios de Sistemas Operacionais, 27 a 30 de outubro, 2019, Huntsville, ON, Canadá. ACM, Nova York, NY, EUA, 17 páginas. https://doi.org/10.1145/3341301.3359636
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.
Introdução
Os pagamentos internacionais são notoriamente lentos e caros [32]. Considere a impraticabilidade de enviar US$ 0,50 dos EUA para * Galois, Inc. †UCLA Permissão para fazer cópias digitais ou impressas de todo ou parte deste trabalho para o uso pessoal ou em sala de aula é concedido gratuitamente, desde que as cópias não sejam feitos ou distribuídos com fins lucrativos ou vantagens comerciais e que as cópias contenham este aviso e a citação completa na primeira página. Direitos autorais para componentes deste trabalho de propriedade de terceiros que não a ACM devem ser honrados. Abstraindo com crédito é permitido. Para copiar de outra forma, ou republicar, para postar em servidores ou para redistribuir para listas, requer permissão prévia específica e/ou taxa. Solicitação permissões de [email protected]. SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá © 2019 Associação de Máquinas de Computação. ACM ISBN 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 México, dois países vizinhos. Os usuários finais pagam quase US$ 9 para a média dessa transferência [32], e um acordo bilateral intermediada pelos bancos centrais dos países só poderia reduzir o banco subjacente custa US$ 0,67 por item [2]. Além das taxas, a latência dos pagamentos internacionais é geralmente contada em dias, impossibilitando a obtenção rápida de dinheiro no exterior em emergências. Em países onde o sistema bancário não funciona ou não serve todos os cidadãos, ou onde as taxas são intoleráveis, as pessoas recorrem ao envio de pagamentos por autocarro [38], por barco [19], e ocasionalmente agora por Bitcoin [55], todos os quais incorrer em risco, latência ou inconveniência. Embora sempre haja custos de conformidade, as evidências sugerem que uma quantia significativa é perdida devido à falta de concorrência [21], que é exacerbado pela tecnologia ineficiente. Onde as pessoas pode inovar, os preços e as latências caem. Por exemplo, as remessas de contas bancárias no segundo trimestre de 2019 custaram em média 6,99%, enquanto o valor do dinheiro móvel foi de apenas 4,88% [13]. Uma rede de pagamentos aberta e global que atrai inovação e a concorrência de entidades não bancárias poderá reduzir custos e latências em todas as camadas, incluindo conformidade [83]. Este artigo apresenta Stellar, um sistema de pagamento baseado em blockchain rede especificamente projetada para facilitar a inovação e concorrência nos pagamentos internacionais. Stellar é o primeiro sistema para atender a todos os três objetivos a seguir (sob um “hipótese da Internet” nova, mas empiricamente válida: 1. Associação aberta – Qualquer pessoa pode emitir títulos garantidos por moeda tokens digitais que podem ser trocados entre os usuários. 2. Finalidade imposta pelo emissor – O emissor de um token pode evitar transações em token sejam revertidas ou desfeitas. 3. Atomicidade entre emissores – Os usuários podem trocar atomicamente e negociar tokens de vários emissores. Alcançar os dois primeiros é fácil. Qualquer empresa pode oferecer unilateralmente um produto como Paypal, Venmo, WeChat Pay, ou Alipay e garantir a finalização dos pagamentos no moedas virtuais que eles criaram. Infelizmente, fazer transações atomicamente entre essas moedas é impossível. Na verdade, apesar do Paypal ter adquirido a controladora da Venmo em 2013, ainda é impossível para os usuários finais enviarem Venmo dólares para usuários do Paypal [78]. Só recentemente os comerciantes podem até mesmo aceitar ambos com uma única integração. Os objectivos 2 e 3 podem ser alcançados num sistema fechado. Em particular, vários países dispõem de sistemas de pagamento internos eficientes redes, normalmente supervisionadas por uma autoridade reguladora de confiança universal. No entanto, a adesão é limitada a um período fechado conjunto de bancos licenciados e as redes são limitadas ao alcance da autoridade reguladora de um país.SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. As metas 1 e 3 foram alcançadas em blockchains minadas, mais notavelmente na forma de ERC20 tokens em Ethereum [3]. A ideia principal desses blockchains é criar uma nova criptomoeda com a qual recompensar as pessoas por fazerem acordos transações difíceis de reverter. Infelizmente, isso significa que os emissores token não controlam a finalidade da transação. Se software erros fazem com que o histórico de transações seja reorganizado [26, 73], ou quando os despojos de fraudar as pessoas excedem o custo de reorganizando o histórico [74, 97], os emissores podem ser responsáveis por tokens eles já foram resgatados por dinheiro do mundo real. O Stellar blockchain possui duas propriedades distintas. Primeiro, ele oferece suporte nativo a mercados eficientes entre tokens de diferentes emissores. Especificamente, qualquer pessoa pode emitir um token, o blockchain fornece uma carteira de pedidos integrada para negociação entre qualquer par de tokens, e os usuários podem emitir pagamentos de caminho que negociam atomicamente em vários pares de moedas enquanto garantindo um preço limite de ponta a ponta. Em segundo lugar, Stellar introduz um novo acordo bizantino protocolo, SCP (Stellar Protocolo de Consenso), através do qual token emissores designam servidores validator específicos para aplicar finalidade da transação. Contanto que ninguém comprometa os validators de um emissor (e as assinaturas digitais subjacentes e hashes criptográficos permanecem seguros), o emissor sabe exatamente quais transações ocorreram e evita o risco de perdas decorrentes da reorganização histórica de blockchain. A ideia principal do SCP é que a maioria dos emitentes de activos beneficiam mercados líquidos e querem facilitar as transações atômicas com outros ativos. Portanto, os administradores validator configuram seus servidores para concordar com outros validators sobre o exato histórico de todas as transações em todos os ativos. Um validator v1 pode ser configurado para concordar com v2, ou v2 pode ser configurado para concordar com v1, ou ambos podem ser configurados para concordar entre si; em todos os casos, nenhum dos dois se comprometerá com um histórico de transações até sabe que o outro não pode comprometer-se com uma história diferente. Por transitividade, se v1 não pode discordar de v2 e v2 não pode discordar de v3 (ou vice-versa), v1 não pode discordar de v3. v3, se v3 representa ou não ativos, v1 já ouviu falar de. Sob a hipótese de que essas relações de acordo conectar transitivamente toda a rede, o SCP garante acordo global, tornando-o um acordo bizantino global protocolo com adesão aberta. Chamamos esta nova suposição de conectividade de hipótese da Internet, e notamos que ela detém tanto da “Internet” (que todos entendem significa a maior rede IP conectada transitivamente) e pagamentos internacionais legados (que são executados passo a passo não atômico, mas alavancar um mundo transitivamente conectado e global rede de instituições financeiras). Stellar está em uso em produção desde setembro de 2015. Para manter o comprimento blockchain gerenciável, o sistema executa SCP em intervalos de 5 segundos – rápido para os padrões blockchain, mas muito mais lento do que as aplicações típicas do acordo bizantino. Embora o uso principal tenha sido pagamentos, Stellar também comprovadamente atraente para tokens fungíveis não monetários que se beneficiam provenientes de mercados secundários imediatos (ver Secção 7.1). A próxima seção discute trabalhos relacionados. A seção 3 apresenta SCP. A Seção 4 descreve nossa verificação formal do SCP. A seção 5 descreve a camada de pagamento de Stellar. A seção 6 relaciona um pouco de nossa experiência de implantação e lições aprendidas. A seção 7 avalia o sistema. A seção 8 conclui.
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
Stellar protocolo de consenso
O protocolo de consenso Stellar (SCP) é um protocolo baseado em quórum Protocolo de acordo bizantino com adesão aberta. Os quóruns emergem das decisões combinadas de configuração local de nós individuais. No entanto, os nós só reconhecem quóruns aos quais eles próprios pertencem, e somente depois aprender as configurações locais de todos os outros membros do quórum. Um benefício desta abordagem é que o SCP inerentemente tolera visões heterogêneas de quais nós existem. Portanto, nós podem ingressar e sair unilateralmente sem necessidade de um Protocolo de “visualização de mudança” para coordenar a adesão. 3.1 Acordo Federado Bizantino O problema tradicional do acordo bizantino consiste em um sistema fechado de N nós, alguns dos quais são defeituosos e podem comportar-se arbitrariamente. Os nós recebem valores de entrada e trocam mensagens para decidir sobre um valor de saída entre as entradas. Um protocolo de acordo bizantino é seguro quando dois nós bem comportados não produzem decisões diferentes e o único decisão foi uma entrada válida (para alguma definição de acordo válidoSOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. previamente). Um protocolo está ativo quando garante que cada nó honesto eventualmente produz uma decisão. Normalmente, os protocolos assumem N = 3f + 1 para algum número inteiro f > 0, então garanta segurança e alguma forma de vivacidade para que desde que no máximo f nós estejam com defeito. Em algum momento destes protocolos, os nós votam nos valores propostos e uma proposta receber 2f + 1 votos, chamado de quórum de votos, torna-se a decisão. Com N = 3f + 1 nós, quaisquer dois quóruns de tamanho 2f + 1 sobreposição em pelo menos f + 1 nós; mesmo que f destes nós sobrepostos estão com defeito, os dois quóruns compartilham pelo menos um nó não defeituoso, evitando decisões contraditórias. No entanto, esta abordagem só funciona se todos os nós concordarem o que constitui um quórum, o que é impossível no SCP onde dois nós podem nem saber da existência um do outro. Com SCP, cada nó v declara unilateralmente conjuntos de nós, chamado de fatias de quorum, de modo que (a) v acredita que se todos membros de uma fatia concordam sobre o estado do sistema, então eles estão certos, e (b) v acredita que pelo menos uma de suas fatias estará disponível para fornecer informações oportunas sobre o estado do sistema. Chamamos o sistema resultante, consistindo de nós e suas fatias, um Acordo Bizantino Federado (FBA) sistema. Como veremos a seguir, surge um sistema de quórum das fatias dos nós. Informalmente, as fatias de um nó FBA expressam com quem o nó requer acordo. Por exemplo, um nó pode exigir acordo com 4 organizações específicas, cada uma executando 3 nós; para acomodar o tempo de inatividade, ele pode definir suas fatias como todas definidas consistindo em 2 nós de cada organização. Se isso “requer acordo com” relação relaciona transitivamente quaisquer dois nós, obtemos um acordo global. Caso contrário, podemos obter divergência, mas apenas entre organizações, nenhuma das quais exige acordo com o outro. Dada a topologia de hoje sistema financeiro, levantamos a hipótese de que a convergência generalizada continuará a produzir um único livro-razão histórico que as pessoas chamam “a rede Stellar”, assim como falamos da Internet. Os quóruns surgem das fatias da seguinte maneira. Cada nó especifica seu quórum é dividido em cada mensagem que envia. Seja S o conjunto de nós dos quais um conjunto de mensagens se originou. Um nó considera que o conjunto de mensagens atingiu o quorum limite quando cada membro de S tem uma fatia incluída em S. Por construção, tal conjunto S, se unânime, satisfaz o requisitos de acordo de cada um dos seus membros. Um colega defeituoso pode anunciar fatias criadas para mudar o que nós bem comportados consideram quóruns. Para fins de análise de protocolo, definimos um quórum no FBA como um valor não vazio conjunto S de nós abrangendo pelo menos uma fatia de quorum de cada membro não defeituoso. Esta abstração é sólida, como qualquer conjunto de mensagens que pretendem representar um quórum unânime realmente faz (mesmo que contenha mensagens de nós defeituosos), e é preciso quando S contém apenas nós bem comportados. Em nesta seção, também assumimos que as fatias dos nós não mudam. No entanto, nossos resultados são transferidos para o caso da fatia variável porque um sistema no qual as fatias mudam não é menos seguro do que um sistema de fatia fixa em que as fatias de um nó consistem em todos os fatias que ele usa no caso de fatias variáveis (ver Teorema 13 em [68]). Conforme explicado na Seção 4, a vivacidade depende de nós bem comportados eventualmente removendo nós não confiáveis de suas fatias. Como nós diferentes têm requisitos de acordo diferentes, a FBA impede uma definição global de segurança. Nós dizemos nós não defeituosos v1 e v2 estão interligados quando cada O quorum de v1 cruza todo quorum de v2 em pelo menos um nó não defeituoso. Um protocolo FBA pode garantir acordo apenas entre nós interligados; já que SCP faz isso, é culpa a tolerância à segurança é ótima. A hipótese da Internet, subjacente ao design de Stellar, afirma que as pessoas dos nós se importam sobre estarão interligados. Dizemos que um conjunto de nós I está intacto se I for um quorum uniformemente não defeituoso, tal que todos os dois membros de I estejam interligados, mesmo que todos os nós fora de I estejam defeituosos. Intuitivamente, então, eu deveria permanecer imune às ações de pessoas não intactas nós. SCP garante atividade sem bloqueio [93] e segurança para conjuntos intactos, embora os próprios nós não precisem saber (e pode não ser capaz de saber) quais conjuntos estão intactos. Além disso, a união de dois conjuntos intactos que se cruzam é um conjunto intacto. Portanto, conjuntos intactos definem uma partição do nós bem comportados, onde cada partição é segura e ativa (sob algumas condições), mas partições diferentes podem gerar decisões divergentes. 3.1.1 Considerações de segurança versus vivacidade no FBA Com exceções limitadas [64], a maioria dos protocolos de acordos bizantinos fechados estão sintonizados no ponto de equilíbrio em que segurança e vivacidade têm a mesma tolerância a falhas. Na FBA, isso significa configurações nas quais, independentemente de falhas, todos conjuntos entrelaçados também estão intactos. Dado que a FBA determina quóruns de forma descentralizada, é improvável que as escolhas individuais das fatias conduzam a este equilíbrio. Além disso, em pelo menos em Stellar, o equilíbrio não é desejável: as consequências de uma falha de segurança (ou seja, dinheiro digital gasto duas vezes) são muito piores do que aqueles de uma falha de vivacidade (ou seja, atrasos em pagamentos que, de qualquer forma, demoraram dias antes de Stellar). Pessoas portanto, deve e seleciona grandes fatias de quorum, de modo que é mais provável que seus nós permaneçam entrelaçados do que intactos. Inclinando ainda mais a balança, é mais fácil recuperar-se de falhas típicas de vivacidade em um sistema FBA do que em um sistema fechado tradicional. Em sistemas fechados, todas as mensagens devem ser interpretada em relação ao mesmo conjunto de quóruns. Portanto, adicionar e remover nós para se recuperar de falhas requer chegar a um consenso sobre um evento de reconfiguração, o que é difícil quando o consenso já não existe. Em contrapartida, com a FBA, qualquer nó pode ajustar unilateralmente suas fatias de quorum a qualquer momento. tempo. Em resposta a uma interrupção em um local sistemicamente importante organização, os administradores de nós podem ajustar suas fatias para contornar o problema, um pouco como coordenar respostas às catástrofes do BGP [63] (embora sem as restrições de roteamento em links de rede física).
Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá 3.1.2 O teorema da cascata SCP segue o modelo do modelo redondo básico [42]; nós progridem através de uma série de cédulas numeradas, cada tentando três tarefas: (1) identificar um valor “seguro” não contrariado por qualquer decisão em uma votação anterior (muitas vezes denominado preparar a votação), (2) concordar com o valor seguro e (3) detectar que o acordo foi bem sucedido. No entanto, a FBA está aberta a adesão atrapalha diversas técnicas comuns, tornando impossível “portar” protocolos fechados tradicionais para a FBA modelo simplesmente alterando a definição de quórum. Uma técnica empregada por muitos protocolos é a rotação através de nós líderes em modo round-robin após tempos limites. Em um sistema fechado, a seleção do líder round-robin garante que eventualmente um líder único e honesto acaba coordenando um acordo sobre um único valor. Infelizmente, round-robin não pode funcionar em um sistema FBA com associação desconhecida. Outra técnica comum que falha com o FBA é assumir que um quorum específico pode convencer todos os nós. Por exemplo, se todos reconhecerem quaisquer nós 2f + 1 como um quorum, então Assinaturas 2f + 1 são suficientes para provar o estado do protocolo para todos os nós. Da mesma forma, se um nó receber um quorum de mensagens idênticas por meio de transmissão confiável [24], o nó pode assumir que todos os nós não defeituosos também verão um quorum. Na FBA, por outro lado, um quorum não significa nada para nós fora do quorum. Finalmente, os sistemas não federados muitas vezes empregam raciocínio sobre segurança: se f + 1 nós estiverem com defeito, todos os nós de segurança garantias são perdidas. Portanto, se o nó v ouvir f + 1 nós, todos declarar algum fato F, v pode assumir que pelo menos um está contando ao verdade (e, portanto, que F é verdadeiro) sem perda de segurança. Tal o raciocínio falha na FBA porque a segurança é uma propriedade dos pares de nós, então um nó que perdeu segurança para alguns pares pode sempre perdem a segurança para mais nós ao presumir fatos ruins. A FBA pode, no entanto, raciocinar ao contrário sobre a vivacidade. Defina um conjunto de bloqueio v como um conjunto de nós que intercepta todos fatia de v. Se um conjunto de bloqueio v B for unanimemente defeituoso, B pode negar ao nó v um quorum e custar-lhe vida. Portanto, se B declara unanimemente o fato F, então v sabe que ou F é verdadeiro ou v não está intacto. No entanto, v ainda precisa ver uma visão completa quorum para saber que nós entrelaçados não contradirão F, o que leva a uma rodada final de comunicação em SCP e outros protocolos FBA [47] que não são necessários em análogos protocolos de adesão fechada. O resultado é que temos três níveis possíveis de confiança em fatos potenciais: indeterminado, seguro para assumir entre nós intactos (que iremos termos aceitos), e seguro para assumir entre interligados nós (que chamaremos de fatos confirmados). O nó v pode determinar com eficiência se um conjunto B está bloqueando, verificando se B intercepta todas as suas fatias. Curiosamente, se os nós sempre anunciam as declarações que eles aceita e um quórum completo aceita uma declaração, ele desencadeia um processo em cascata pelo qual as declarações se propagam por toda parte conjuntos intactos. Chamamos o fato chave subjacente a esta propagação o teorema da cascata, que afirma o seguinte: Se I é um conjunto intacto, Q é um quorum de qualquer membro de I, e S é qualquer superconjunto de Q, então S ⊇I ou existe um membro v ∈I tal que v < S e I ∩S é v-bloqueio. Intuitivamente, se isso não for o caso, o complemento de S conteria um quorum que cruza I, mas não Q, violando a interseção de quorum. Observe que se começarmos com S = Q e expandirmos repetidamente S para incluir todos os nós que ele bloqueia, obtemos um efeito cascata até que, eventualmente, S abrange tudo de I. 3.2 Descrição do protocolo SCP é um protocolo de consenso parcialmente síncrono [42] que consiste em uma série de tentativas para chegar a um consenso chamadas cédulas. As cédulas empregam tempos limite de duração crescente. Um protocolo de sincronização de votos garante que os nós permaneçam ligados mesma cédula por períodos crescentes de tempo até que as cédulas são efetivamente síncronos. A rescisão não é garantida até que as votações sejam síncronas, mas duas votações síncronas em que membros defeituosos de fatias de nós bem comportados não interferir são suficientes para que o SCP seja encerrado. Um protocolo de votação especifica as ações tomadas durante cada votação. Uma votação começa com uma fase de preparação, na qual os nós tentar determinar um valor a propor que não contradiga qualquer decisão anterior. Então, em uma fase de commit, os nós tentam para tomar uma decisão sobre o valor preparado. A votação emprega um subprotocolo de acordo denominado votação federada, i.n quais nós votam em declarações abstratas que pode eventualmente ser confirmado ou travar. Algumas declarações podem ser consideradas contraditórias e a segurança A garantia do voto federado é que não haja dois membros de um conjunto entrelaçado confirma afirmações contraditórias. A confirmação de uma declaração não é garantida, exceto por uma declaração intacta conjunto cujos membros votam todos da mesma maneira. No entanto, se um membro de um conjunto intacto confirma uma declaração, federado a votação garante que todos os membros do conjunto intacto eventualmente confirmem essa afirmação. Portanto, tomar medidas irreversíveis em resposta a declarações de confirmação preserva a vivacidade para nós intactos. Os nós propõem inicialmente valores obtidos a partir de uma nomeação protocolo que aumenta as chances de todos os membros de um grupo intacto conjunto que propõe o mesmo valor, e que eventualmente converge (embora sem nenhuma maneira de determinar que a convergência está completa). A nomeação combina votação federada com seleção de líderes. Como o round-robin é impossível na FBA, a nomeação usa um esquema probabilístico de seleção de líderes. O teorema da cascata desempenha um papel crucial tanto na votação sincronização e em evitar estados bloqueados dos quais a rescisão não é mais possível. 3.2.1 Votação Os nós SCP procedem através de uma série de cédulas numeradas, empregando votação federada para chegar a acordo sobre as declarações sobre as quais os valores são ou não decididos em quais votações. Se assincronia ou comportamento defeituoso impede a tomada de uma decisão na votação n, os nós expiram e tentam novamente na votação n + 1.
SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. A votação federada de recall pode não terminar. Portanto, alguns declarações sobre cédulas podem ficar presas permanentemente estado indeterminado onde os nós nunca podem determinar se eles ainda estão em andamento ou travados. Porque os nós não podem descartar a possibilidade de declarações indeterminadas mais tarde se provarem verdadeiras, eles nunca devem tentar a votação federada em novas declarações contradizendo os indeterminados. Em cada votação n, os nós usam votação federada em dois tipos de declaração: • prepare ⟨n,x⟩– afirma que nenhum valor diferente de x foi ou será decidido em qualquer votação ≤n. • commit ⟨n,x⟩– afirma que x foi decidido na votação n. É importante ressaltar que prepare ⟨n,x⟩contradicts commit ⟨n′,x ′⟩quando n ≥n′ e x , x ′. Um nó inicia a votação n tentando uma votação federada em um instrução prepare ⟨n,x⟩. Se alguma declaração de preparação anterior foi confirmado com sucesso através da votação federada, o o nó escolhe x do resultado confirmado da votação mais alta. Caso contrário, o nó define x como a saída do protocolo de nomeação descrito na próxima subseção. Se e somente se um nó confirmar com sucesso a preparação ⟨n,x⟩ na votação n, ele tenta a votação federada no commit ⟨n,x⟩. Se tiver sucesso, significa que o SCP decidiu, então o nó gera o valor da instrução de commit confirmada. Considere um conjunto entrelaçado S. Como no máximo um valor podem ser confirmados preparados pelos membros de S em uma determinada votação, dois valores diferentes não podem ser confirmados cometidos por membros de S em uma determinada votação. Além disso, se cometer ⟨n,x⟩ for confirmado, então prepare ⟨n,x⟩foi confirmado também; desde prepare ⟨n,x⟩ contradiz qualquer commit anterior por um valor diferente, pelas garantias do acordo de votação federada entendemos que nenhum valor diferente pode ser decidido em um momento anterior votação pelos membros de S. Por indução nos números das cédulas, nós portanto, certifique-se de que o SCP é seguro. Para vivacidade, considere um conjunto intacto I e um tempo suficiente votação síncrona f Se nós defeituosos aparecerem nas fatias de nós bem comportados não interferem em n, então por votação n + 1 todos os membros de I confirmaram o mesmo conjunto P de instruções de preparação. Se P = ∅ e a votação n fosse longa o suficiente, o protocolo de nomeação terá convergido para algum valor x. Caso contrário, seja x o valor do plano com a votação mais alta em P. De qualquer forma, tentarei uniformemente votando em preparar ⟨n + 1,x⟩na próxima votação. Portanto, se n + 1 também é síncrono, segue-se inevitavelmente uma decisão para x. 3.2.2 Nomeação A nomeação implica votação federada nas declarações: • nomear x – afirma que x é um candidato válido à decisão. Os nós podem votar para nomear vários valores – diferentes as declarações de nomeação não são contraditórias. Contudo, uma vez um nó confirma qualquer declaração de nomeação, ele para de votar para indicar novos valores. A votação federada ainda permite que um nó confirmar novas declarações de nomeação nas quais não votou, o que votar ou aceitar um do quórum aceitar um do quórum a é válido aceitar um de conjunto de bloqueio descomprometido votei em um aceitou um confirmou um votei ¬a Figura 1. Etapas da votação federada permite que membros de um conjunto intacto confirmem as opiniões uns dos outros valores indicados enquanto ainda retém novos votos. O resultado (evolutivo) da nomeação é uma combinação determinística de todos os valores em declarações de nomeação confirmadas. Se x representa um conjunto de transações, os nós podem assumir a união de conjuntos, o maior conjunto ou aquele com o maior hash, então desde que todos os nós façam o mesmo. Como os nós retêm novos votos depois de confirmar uma declaração de nomeação, o conjunto de declarações confirmadas podem conter apenas um número finito de valores. O facto de declarações confirmadas se espalharem de forma fiável através de conjuntos intactos significa que nós intactos eventualmente convergem para o mesmo conjunto de valores indicados e, portanto, resultado da nomeação, embora em um ponto desconhecido arbitrariamente no final do protocolo. Os nós empregam seleção de líderes federados para reduzir o número de valores diferentes em instruções nomeadas. Somente um líder que ainda não tenha votado a favor de uma declaração de nomeação pode introduzir um novo x. Outros nós esperam para ouvir líderes e apenas copiar os votos indicados (válidos) de seus líderes. Para acomodar o fracasso, o conjunto de líderes continua a crescer à medida que ocorrem tempos limite, embora na prática apenas alguns nós introduzam novos valores de x. 3.2.3 Votação federada A votação federada emprega um protocolo de três fases mostrado em Figura 1. Os nós tentam concordar com declarações abstratas primeiro votando, depois aceitando e, finalmente, confirmando as declarações. Um nó v pode votar em qualquer afirmação válida a que não contradiga seu outrovotos pendentes e declarações aceitas. Fá-lo através da transmissão de uma mensagem de voto assinada. v então aceita a se a for consistente com outras declarações aceitas e (caso 1)v for membro de um quórum no qual cada nó vota em a ou aceita a, ou (caso 2) mesmo se v não votou em a, um conjunto de bloqueio v aceita a. No caso 2, v pode já emitiram votos contradizendo a, que agora foi anulado. v pode esquecer os votos anulados e fingir que nunca os lançou porque se estiver intacto, ele sabe votos anulados não podem completar o quórum no caso 1. v transmite que aceita a e depois confirma a quando estiver em um quórum que aceita por unanimidade a. A Figura 2 mostra o efeito dos conjuntos de bloqueio v e o teorema da cascata durante votação federada. Dois nós entrelaçados não podem confirmar declarações contraditórias, pois os dois quóruns necessários teriam que compartilhar umPagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá 3 4 2 1 5 7
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.
Votar X
Vote Y (a) 3 4 2 1 5 7 6 Votar X Votar X Votar X Votar S Votar X Votar S Votar S (b) 3 4 2 1 5 7 6 Aceitar X Votar X Aceitar X Votar S Aceitar X Votar S Votar S (c) 3 4 2 1 5 7 6 Aceitar X Aceitar X Aceitar X Votar S Aceitar X Aceitar X Votar S (d) 3 4 2 1 5 7 6 Aceitar X Votar X Aceitar X Aceitar X Aceitar X Aceitar X Aceitar X (e) Figura 2. Efeito cascata na votação federada. Cada nó possui uma fatia de quorum indicada por setas para os membros da fatia. (a) As declarações contraditórias X e Y são introduzidas. (b) Os nós votam em declarações válidas. (c) O nó 1 aceita X após seu quorum {1, 2, 3, 4} vota por unanimidade em X. (d) Todos os nós 1, 2, 3 e 4 aceitam X; o conjunto {1} tem bloqueio 5, então o nó 5 aceita X, anulando seu voto anterior em Y. (e) O conjunto {5} é bloqueador de 6 e 7, então 6 e 7 aceitam X. nó não defeituoso que não poderia aceitar declarações contraditórias. A confirmação de uma declaração não é garantida: em caso de votação por partes, ambas as declarações poderão ser permanentemente preso à espera de quórum na fase de votação. No entanto, se um nó em um conjunto intacto I confirma uma afirmação, a cascata teorema e aceitar o caso 2 garantem que tudo I acabará confirme essa afirmação. 3.2.4 Sincronização de votação Se os nós não conseguirem confirmar uma instrução de commit para o votação atual, eles desistem após um tempo limite. O tempo limite fica mais tempo a cada votação para se ajustar a limites arbitrários no atraso da rede. No entanto, os tempos limite por si só não são suficientes para sincronizar cédulas de nós que não iniciaram ao mesmo tempo ou ficou dessincronizado por outros motivos. Para conseguir a sincronização, os nós iniciam o temporizador apenas quando fazem parte de um quorum que está todo na votação atual (ou posterior) n. Isto retarda os nós que começaram cedo e garante que não membro de um conjunto intacto fica muito à frente do grupo. Além disso, se um nó v perceber um bloqueio v definido posteriormente votação, ele pula imediatamente para a votação mais baixa, de modo que este não é mais o caso, independentemente de quaisquer temporizadores. A cascata o teorema garante então que todos os retardatários o alcancem. O resultado é que as cédulas são aproximadamente sincronizadas ao longo de um período intacto definido assim que o sistema se tornar síncrono. 3.2.5 Seleção de líder federado A seleção de líderes permite que cada nó escolha líderes de tal maneira que os nós geralmente escolhem apenas um ou um pequeno número de líderes. Para acomodar o fracasso do líder, a seleção do líder prossegue através das rodadas. Se os líderes da rodada atual parecem não estar cumprindo com suas responsabilidades, então, após um certos nós de período de tempo limite avançam para a próxima rodada para expandir o conjunto de líderes que eles seguem. Cada rodada emprega duas funções criptográficas exclusivas hash, H0 e H1, que geram números inteiros no intervalo [0,hmax). Por exemplo, Stellar usa Hi(m) = SHA256(i∥b∥r ∥m), onde b é a instância geral do SCP (número do bloco ou razão), r é o número da rodada de seleção do líder e hmax = 2256. Dentro uma rodada, definimos a prioridade do nó v como: prioridade(v) = H1(v) Um espantalho seria para cada nó escolher como líder o nodev com a prioridade mais alta (v). Essa abordagem funciona funciona bem com fatias de quorum quase idênticas, mas não funciona corretamente capturar a importância dos nós em configurações desequilibradas. Por exemplo, se a Europa e a China contribuírem cada uma com 3 nós para cada quórum, mas a China executa 1.000 nós e a Europa 4, então a China terá o nó de maior prioridade 99,6% da época. Introduzimos, portanto, uma noção de peso da fatia, onde peso(u,v) ∈[0, 1] é a fração das fatias de quorum do nó u contendo o nó v. Quando o nó u está selecionando um novo líder, ele considera apenas vizinhos, definidos da seguinte forma: vizinhos(você) = { v | H0(v) < hmax · peso(u,v) } Um nodeu então começa com um conjunto vazio de líderes, e em cada round adiciona a ele o nó v em vizinhos (u) com o maior prioridade (v). Se o conjunto de vizinhos estiver vazio em qualquer rodada, u adiciona o nóv com menor valor de H0(v)/peso(u,v).
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.
Verificação formal do SCP
Para eliminar erros de projeto, verificamos formalmente a segurança do SCP e propriedades de vivacidade (ver [65]). Especificamente, verificamos que os nós entrelaçados nunca discordam e que, nas condições discutidas abaixo, cada membro de um conjunto intacto eventualmente decide. Curiosamente, a verificação revelou que o as condições sob as quais o SCP garante a vivacidade são sutis, e mais forte do que se pensava inicialmente [68]: conforme discutido abaixo, nós maliciosos que manipulam o tempo sem de outra forma desviar-se do protocolo pode precisar ser despejado manualmente de fatias de quórum.
SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. Para garantir que as propriedades provaram ser válidas em todos os Configurações e execuções FBA, consideramos um arbitrário número de nós com configurações locais arbitrárias. Isto inclui cenários com conjuntos intactos disjuntos, bem como execuções potencialmente infinitamente longas. A desvantagem é que nós enfrentar o desafiador problema de verificar um parametrizado sistema de estados infinitos. Para manter a verificação tratável, modelamos SCP em lógica de primeira ordem (FOL) usando Ivy [69] e a metodologia de [82]. O processo de verificação consiste em fornecer manualmente conjecturas indutivas que são então automaticamente verificadas por Hera. O modelo FOL do SCP abstrai alguns aspectos do Sistemas FBA que são difíceis de manusear em FOL (por exemplo, o teorema da cascata é tomado como um axioma), então verificamos o solidez da abstração usando Isabelle/HOL [75]. Após expressar o problema de verificação em FOL, verificamos a segurança fornecendo um invariante indutivo. O indutivo invariante consiste em uma dúzia de conjecturas de uma linha para cerca de 150 linhas de especificação de protocolo. Em seguida, especificamos as propriedades de vivacidade de SCP na Lógica Temporal Linear de Ivy e usamos o vivacidade para redução de segurança de [80, 81] para reduzir a vivacidade problema de verificação ao problema de encontrar um indutivo invariante. Embora a segurança do SCP seja relativamente simples de provar, o argumento da vivacidade do SCP é muito mais complexo e consiste em cerca de 150 invariantes de linha única. Provar a vivacidade exigiu uma formalização precisa do premissas sob as quais a SCP garante a rescisão. Inicialmente pensamos que um conjunto intacto eu sempre encerraria se todos os membros removeram nós defeituosos de suas fatias [68]. No entanto, isto revelou-se insuficiente: um homem bem comportado (mas não intacto) nó em um quorum de um membro de posso, sob o influência de nós defeituosos, evite a terminação completando um quórum pouco antes do final da votação, causando assim membros de I escolham valores diferentes de x na próxima votação. Devemos, portanto, assumir adicionalmente que, informalmente, cada nó em um quorum de um membro de I eventualmente torna-se oportuno ou não envia mensagens por um período suficiente. Na prática, isso significa que os membros do I podem precisam ajustar suas fatias até que a condição seja mantida. Isto a questão não é inerente aos sistemas FBA: Losa et al. [47] presente um protocolo cuja vivacidade depende do estritamente mais fraco suposições de apenas eventual sincronia e eventual eleição de líder, sem a necessidade de remover nós defeituosos das fatias.
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.
Rede de pagamento
Esta seção descreve a rede de pagamento de Stellar, implementada como uma máquina de estado replicada [88] sobre SCP. 5.1 Modelo de razão O razão de Stellar é projetado em torno de uma abstração de conta (em contraste com a saída de transações não gastas mais centrada em moedas ou modelo UTXO de Bitcoin). O conteúdo do razão consiste em um conjunto de entradas contábeis de quatro tipos distintos: contas, linhas confiáveis, ofertas e dados da conta. As contas são os principais que possuem e emitem ativos. Cada conta é nomeada por uma chave pública. Por padrão, a chave privada correspondente pode assinar transações para a conta. No entanto, as contas podem ser reconfiguradas para adicionar outros assinantes e desautorizar a chave que dá nome à conta, com um Opção “multisig” para exigir vários assinantes. Cada conta também contém: um número de sequência (incluído em transações para evitar replay), algumas bandeiras e um equilíbrio em um modo “nativo” criptomoeda pré-minerada chamada XLM, destinada a mitigar alguns ataques de negação de serviço e facilitar a criação de mercado como uma moeda neutra. Trustlines rastreiam a propriedade dos ativos emitidos, que são nomeado por um par que consiste na conta emissora e uma conta curta código do ativo (por exemplo, “USD” ou “EUR”). Cada linha confiável especifica uma conta, um ativo, o saldo da conta nesse ativo, um limite acima do qual a balança não pode subir e algumas bandeiras. Uma conta deve consentir explicitamente em manter um ativo por criando uma linha confiável, evitando que spammers sobrecarreguem contas com ativos indesejados. As regulamentações Conheça seu Cliente (KYC) exigem que muitas instituições financeiras saibam de quem são os depósitos que possuem, por exemplo, verificando um documento de identidade com foto. Para cumprir, os emitentes podem definir um sinalizador auth_reqired opcional em suas contas, restringindo a propriedade dos ativos que emitem a contas autorizadas. Para conceder tal autorização, o emissor estabelece um sinalizar nas linhas de confiança dos clientes. As ofertas correspondem à disposição de uma conta em negociar a uma certa quantia de um determinado ativo por outro em um determinado preço na carteira de pedidos; eles são automaticamente combinados e preenchido quando os preços de compra/venda se cruzam. Por fim, os dados da conta consistem em triplos de conta, chave e valor, permitindo aos titulares de contas para publicar pequenos valores de metadados. Para evitar spam contábil, há um saldo mínimo de XLM, chamada de reserva. A reserva de uma conta aumenta com cada entrada do razão associada e diminui quando a entrada do razão desaparece (por exemplo, quando um pedido é atendido ou cancelado, ou quando um a linha confiável é excluída). Atualmente a reserva cresce 0,5 XLM (∼$0,03) por entrada no razão. Independentemente da reserva, é possível recuperar o valor total de uma conta excluindo isso com uma operação AccountMerge. Um cabeçalho de razão, mostrado na Figura 3, armazena atributos globais: um número de razão, parâmetros como o saldo de reserva por entrada do razão, um hash do cabeçalho do razão anterior (na verdade vários hashes formando uma skiplist), a saída SCP incluindo um hash de novas transações aplicadas neste razão, um hash de os resultados dessas transações (por exemplo, sucesso ou fracasso para cada) e um instantâneo hash de todas as entradas do razão. Como o instantâneo hash inclui todo o conteúdo do razão, validators não precisam reter histórico para validar transações. No entanto, para escalar para centenas de milhões de contas, não podemos rehash todas as tabelas de lançamento contábil em cada fechamento do livro razão. Além disso, não é prático transferir um livro razãoPagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá razão # = 4 H (hdr anterior) Saída SCP H∗(resultados) H∗(instantâneo) ... cabeçalho razão # = 5 H (hdr anterior) Saída SCP H∗(resultados) H∗(instantâneo) ... cabeçalho . . . Figura 3. Conteúdo do razão. H é SHA-256, enquanto H ∗representa aplicação hierárquica ou recursiva de H. Saída SCP também depende do cabeçalho anterior hash. Criar conta Criar e financiar nova entrada no razão da conta Mesclagem de contas Excluir entrada do razão da conta Definir opções Alterar sinalizadores e assinantes da conta Pagamento Pague uma quantidade específica de ativo ao destino. conta. CaminhoPagamento Semelhante ao Pagamento, mas pague em ativos diferentes (até limitar); especifique até 5 ativos intermediários Gerenciar oferta Criar/excluir/alterar entrada do razão de ofertas, -Oferta passiva com variante passiva para permitir spread zero Gerenciar dados Criar/excluir/alterar conta. entrada de dados Mudança de confiança Criar/excluir/alterar linha confiável Permitir confiança Definir ou limpar sinalizador autorizado na linha confiável Sequência de Bump Aumente a sequência. número na conta Figura 4. Principais operações contábeis desse tamanho toda vez que um nó foi desconectado a rede por muito tempo. O instantâneo hash é, portanto, projetado para otimizar hashing e reconciliação de estado. Especificamente, o instantâneo estratifica as entradas do razão por tempo da última modificação em um conjunto de contêineres de tamanho exponencial chamados baldes. A coleção de baldes é chamada de balde lista e tem alguma semelhança com árvores de mesclagem estruturadas em log (Árvores LSM) [77]. A lista de baldes não é lida durante o processamento da transação (ver Seção 5.4). Portanto, certo design aspectos das árvores LSM podem ser relaxados. Em particular, aleatório o acesso por chave não é necessário e os buckets só são lidos sequencialmente como parte da fusão de níveis. Hashing do balde list é feita hash cada intervalo à medida que ele é mesclado e calculando um novo hash cumulativo do intervalo hashes (um pequeno, índice fixo de referência hashes) em cada fechamento do razão. Reconciliar a lista de baldes após a desconexão requer download apenas baldes que diferem. 5.2 Modelo de transação Uma transação consiste em uma conta de origem, critérios de validade, um memorando e uma lista de uma ou mais operações. A Figura 4 lista as operações disponíveis. Cada operação possui uma conta de origem, que o padrão é o da transação geral. Uma transação deve ser assinado por chaves correspondentes a cada conta de origem em uma operação. Contas Multisig podem exigir assinatura superior peso para algumas operações (como SetOptions) e menor para outros (como AllowTrust). As transações são atômicas – se alguma operação falhar, nenhuma delas eles executam. Isso simplifica negócios multidirecionais. Suponha que um o emissor cria um ativo para representar escrituras de terra, e o usuário A quer trocar um pequeno terreno mais US$ 10.000 por um maior parcela de terreno de propriedade de B. Os dois usuários podem assinar uma única transação contendo três operações: dois terrenos pagamentos e pagamento de um dólar. O principal critério de validade de uma transação é o seu número de sequência, que deve ser um valor maior que o número da transação. entrada no razão da conta de origem. Executando uma transação válida (com sucesso ou não) incrementa o número de sequência, evitando a repetição. Os números de sequência iniciais contêm o razão número nos bits altos para evitar a repetição mesmo após a exclusão e recriar uma conta. O outro critério de validade é um limite opcional sobre quando uma transação pode ser executada. Voltando à terra e ao dólar swap acima, se A assinar a transação antes de B, A não poderá quer que B permaneça na transação por um ano antes de enviar isso, e assim poderia colocar um limite de tempo invalidando a transação depois de alguns dias. Contas Multisig também podem ser configuradas para dar peso de assinatura à revelação de uma pré-imagem hash, que, combinado com limites de tempo, permite a negociação atômica de crosschain [1]. A conta de origem de uma transação paga uma taxa trivial em XLM, 10−5 XLM, a menos que haja congestionamento. Sob congestionamento, o o custo das operações é definido por leilão holandês. Validadores são não compensado por taxas porque validators são análogos para Bitcoin nós completos, não mineradores. Em vez de destruir o XLM, as taxas são recicladas e distribuídas proporcionalmente pelo voto dos detentores de XLM existentes, que em retrospecto podem ou podem não valeu a pena a complexidade. 5.3 Valores de consenso Para cada razão, Stellar usa SCP para chegar a um acordo sobre uma estrutura de dados com três campos: um conjunto de transações hash (incluindo um hash do cabeçalho do razão anterior), um horário de fechamento, umd atualizações. Quando vários valores são confirmados como nomeados, Stellar leva o conjunto de transações com mais operações (quebrando empates por taxas totais, então conjunto de transações hash), a união de todos atualizações e o maior tempo de fechamento. Um tempo próximo é apenas válido se for entre o horário de fechamento do último razão e o presente, então os nós não nomeiam tempos inválidos. As atualizações ajustam parâmetros globais como saldo de reserva, taxa mínima de operação e versão do protocolo. Quando combinados durante a nomeação, taxas mais altas e números de versão de protocolo substituem os mais baixos. As atualizações afetam a governança por meio de um espaço de disputa de votação federada [34], nem igualitário nem centralizado. Cada validator é configurado como governamental ou não governamental (o padrão), de acordo com se o seu operador deseja participar na governação. Os validators governantes consideram três tipos de atualização: desejado, válido e inválido (qualquer coisa que validator não
SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. validator núcleo horizonte FS BD BD enviar cliente cliente outros validators Figura 5. Arquitetura Stellar validator saiba como implementar). As atualizações desejadas são configuradas para acionado em um momento específico, destinado a ser coordenado entre operadores. Os nós governantes sempre votam para nomear os atualizações, aceite, mas não vote para nomear atualizações válidas (ou seja, concordar com um quórum de bloqueio) e nunca votar ou aceitar atualizações inválidas. Eco de validators não governamentais qualquer voto que eles vejam para uma atualização válida, essencialmente delegando a decisão sobre quais upgrades são desejados para aqueles que optam para um papel de governança. 5.4 Implementação A Figura 5 mostra a arquitetura validator de Stellar. Um demônio chamado stellar-core (∼92k linhas de C++, sem contar bibliotecas de terceiros) implementa o protocolo SCP e a máquina de estado replicada. A produção de valores para SCP requer a redução de um grande número de entradas contábeis para pequenos valores criptográficos. hashes. Por outro lado, a validação e execução de transações requer a consulta do estado da conta e da correspondência de pedidos em o melhor preço. Para servir ambas as funções de forma eficiente, stellar-core mantém duas representações do razão: uma representação externa contendo a lista de baldes, armazenada como arquivos binários que pode ser atualizado de forma eficiente e rehashed incrementalmente, e uma representação interna em um banco de dados SQL (PostgreSQL para nós de produção). Stellar-core cria um arquivo de histórico somente gravação contendo cada conjunto de transações que foi confirmado e instantâneos de baldes. O arquivo permite que novos nós sejam inicializados ao ingressar na rede. Ele também fornece um registro do razão história - é preciso haver algum lugar onde se possa procurar um transação de dois anos atrás. Como o histórico é apenas anexado e acessado com pouca frequência, pode ser mantido em lugares baratos como Amazon Glacier ou qualquer serviço que permita armazenar e recuperar arquivos simples. Os hosts validadores normalmente não hospedam seus próprios arquivos, de modo a evitar qualquer impacto na validação desempenho do histórico de veiculação. Para manter o núcleo estelar simples, ele não se destina a ser usado diretamente pelas aplicações e expõe apenas uma interface muito estreita para o envio de novas transações. Para apoiar clientes, a maioria dos validators executam um daemon chamado horizonte (∼18k linhas de Go) que fornece uma interface HTTP para enviar e aprendizagem de transações. Horizon tem acesso somente leitura a banco de dados SQL do stellar-core, minimizando o risco de horizonte núcleo estelar desestabilizador. Recursos como localização de caminhos de pagamento são implementados inteiramente no horizonte e podem ser atualizados unilateralmente sem coordenação com outros validators. Vários daemons opcionais de camada superior são clientes do horizonte, completando o ecossistema. Um servidor bridge facilita integração de Stellar com sistemas existentes, por exemplo, publicação de notificações de todos os pagamentos recebidos por uma conta específica. Um servidor de conformidade fornece ganchos para instituições financeiras trocar e aprovar informações do remetente e do beneficiário sobre pagamentos, para cumprimento das listas de sanções. Finalmente, um servidor de federação implementa uma nomenclatura legível por humanos sistema de contas. 6 Experiência de implantação Stellar cresceu durante vários anos até se tornar um estado com um moderado número de operadores de nó completo razoavelmente confiáveis. No entanto, as configurações dos nós eram tais que a vivacidade (embora não segurança) dependia de nós, a Stellar Fundação de Desenvolvimento (FDS); se o SDF desaparecesse repentinamente, outros operadores de nó precisaria intervir e nos remover manualmente das fatias de quórum para a rede continuar. Embora nós e muitos outros desejemos reduzir a importância sistémica do FDS, este objectivo recebeu prioridade crescente após pesquisadores [58] quantificaram e divulgaram a centralização da rede sem diferenciar os riscos à segurança e vivacidade. Vários operadores reagiram com ajustes activos de configuração, aumentando principalmente o tamanho dos seus fatias de quórum num esforço para diluir a importância do SDF; ironicamente, isso apenas aumentou o risco de vida. Dois problemas agravaram a situação. Primeiro, um popular ferramenta de monitoramento Stellar de terceiros [5] foi sistematicamente superestimando o tempo de atividade de validator por não verificar realmente aquele núcleo estelar estava funcionando; isso leva as pessoas a incluir nós não confiáveis em suas fatias de quorum. Em segundo lugar, um bug no núcleo estelar significa uma vez que um validator mudou para o próximo livro-razão, não ajudou adequadamente os nós restantes a completar o anteriorlivro contábil em caso de perda de mensagens. Como resultado, o rede experimentou 67 minutos de inatividade e exigiu coordenação manual por administradores validator para reiniciar. Pior ainda, ao tentar reiniciar a rede, resultaram reconfigurações apressadas simultâneas em vários nós. em uma configuração incorreta coletiva que permitiu que alguns nós divergem, exigindo um desligamento manual desses nós e reapresentação das operações aceitas durante a divergência. Felizmente, esta divergência foi detectada e corrigida rapidamente e não continha transações conflitantes, mas o risco de a rede não aproveitar a interseção de quorum - divisão enquanto continua a aceitar conflitos potencialmente conflitantes transações, simplesmente devido a configuração incorreta - foi feita muito concreto por este incidente. A revisão dessas experiências levou a duas conclusões principais e ações corretivas correspondentes.Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Crítico, 100% 51% 51% Alto, 67% 51% Médio, 67% 51% Baixo, 67% 51% 51% ... ... ... 51% ... 51% Figura 6. Hierarquia de qualidade do validador. Nós da mais alta qualidade exigem o limite mais alto de 100%, enquanto as qualidades mais baixas são configuradas para o limite de 67%. Nós dentro de um único organização exige uma maioria simples de 51%. 6.1 Complexidade e fragilidade da configuração Stellar expressa fatias de quorum como conjuntos de quorum aninhados que consistem em n entradas e um limite k onde qualquer conjunto de k entradas constitui uma fatia do quórum. Cada uma das n entradas é então uma chave pública validator ou, recursivamente, outro conjunto de quorum. Embora flexíveis e compactos, percebemos o quórum aninhado conjuntos simultaneamente proporcionavam aos operadores de nós muita flexibilidade e pouca orientação: era fácil escrever de forma insegura (ou configurações até mesmo absurdas). Os critérios para agrupamento nós em conjuntos, para organizar subconjuntos em uma hierarquia, e Os critérios para a escolha dos limiares eram insuficientemente claros e contribuíram para falhas operacionais. Não estava claro se deveria tratar um “nível” na hierarquia de conjunto aninhado como um nível de confiança; ou uma organização, ou ambos; muitas configurações no campo misturou esses conceitos, além de especificar perigosos ou limites sem sentido. Portanto, adicionamos um mecanismo de configuração mais simples que separa dois aspectos dos conjuntos de quorum aninhados: agrupamento nós juntos por organização e rotulando cada organização com uma classificação de confiança simples (baixa, média, alta ou crítico). As organizações de nível superior ou superior são obrigadas a publicar arquivos históricos. O novo sistema sintetiza conjuntos de quorum aninhados nos quais cada organização é representada como um Limite de 51% definido e as organizações são agrupadas em conjuntos com limites de 67% ou 100% (dependendo da qualidade do grupo). Cada grupo é uma única entrada no próximo grupo (de qualidade superior), conforme ilustrado na Figura 6. Este modelo simplificado reduz o probabilidade de configuração incorreta, tanto em termos de estrutura dos conjuntos aninhados sintetizados e os limites escolhidos para cada conjunto. 6.2 Detecção proativa de configuração incorreta Em segundo lugar, percebemos que detectar a má configuração colectiva, esperando para observar os seus efeitos negativos, é demasiado tarde. Especialmente no que diz respeito a configurações incorretas que podem divergir – uma modo de falha mais sério do que a parada – a rede precisa ser capaz de detectar erros de configuração imediatamente para que os operadores possam revertê-los antes que qualquer divergência realmente aconteça. Para atender a essa necessidade, construímos um mecanismo no software validator que reúne continuamente o estado de configuração coletiva de todos os pares no fechamento transitivo do nó e detecta o potencial de divergência - ou seja, disjunção. quóruns – dentro dessa configuração coletiva. 6.2.1 Verificando a interseção do quórum Embora coletar fatias de quórum seja fácil, encontrar quóruns disjuntos entre eles é co-NP-difícil [62]. Contudo, adotamos um conjunto de heurísticas algorítmicas e regras de eliminação de casos proposto por Lachowski [62] que verifica instâncias típicas do problema várias ordens de magnitude mais rápido do que custo do pior caso. Na prática, a actual rede os fechamentos transitivos da fatia de quorum são da ordem de 20 a 30 nós e, com as otimizações de Lachowski, normalmente verifica em questão de segundos em uma única CPU. Caso surja a necessidade para melhorar o desempenho, podemos paralelizar a pesquisa. 6.2.2 Verificando configurações arriscadas Detectar que a rede admite quóruns disjuntos é um passo na direção certa, mas sinaliza o perigo desconfortavelmente tarde para uma questão tão crítica. Idealmente, queremos que os operadores dos nós recebam avisos quando a configuração coletiva da rede está apenas se aproximando de um estado de risco. Portanto, estendemos o verificador de interseção de quorum para detectar uma condição que chamamos de criticidade: quando a corrente configuração coletiva está a uma configuração incorreta de um estado que admite quóruns disjuntos. Para detectar criticidade, o verificador substitui repetidamente a configuração de cada organização por uma configuração incorreta simulada do pior caso e, em seguida, executa novamente o verificador de interseção de quorum interno no resultado. Se alguma configuração incorreta crítica existir a um passo de distância do estado atual, o software emite um aviso e relata que a organização representa um risco de configuração incorreta. Estas mudanças dão à comunidade de operadores duas camadas aviso e orientação para isolar contra as piores formas de má configuração coletiva.
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.
Avaliação

Para entender a adequação de Stellar como pagamento global e rede comercial, avaliamos o estado da rede pública e realizou experimentos controlados em um laboratório experimental privado rede. Nós nos concentramos nas seguintes questões: • Qual é a aparência da topologia da rede de produção? Quantas mensagens são transmitidas em média e como o SCP experimenta tempos limite? • O consenso e as latências de atualização do razão permanecem independentes do número de contas?SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. • Como as latências são afetadas pelo aumento de (a) transações por segundo (e, consequentemente, transações por razão) e (b) o número de nós validator? • Qual é o custo de execução de um nó em termos de CPU, memória e largura de banda da rede? As redes de pagamento têm taxas de transação baixas em comparação para outros tipos de sistema distribuído. Os principais blockchains, Bitcoin e Ethereum, confirme até 15 transações/segundo, menos de Stellar. Além disso, esses sistemas levam minutos para uma hora para confirmar uma transação com segurança, porque a prova de trabalho exige a espera pela mineração de vários blocos. O A rede SWIFT não blockchain teve uma média de apenas 420 transações por segundo em seu dia de pico [14]. Escolhemos, portanto, para comparar nossas medições com a meta de 5 segundos intervalo de contabilidade, um alvo mais agressivo. Nossos resultados mostram que as latências estão confortavelmente abaixo deste limite, mesmo com várias otimizações não implementadas ainda em andamento. 7.1 Âncoras Os ativos mais negociados por volume incluem moeda (por exemplo, 3 USD âncoras, 2 CNY), uma âncora Bitcoin, um título garantido por imóveis token [92] e uma moeda no aplicativo [8]. Âncoras diferentes têm políticas diferentes. Por exemplo, uma âncora em USD, Stronghold, define auth_reqired e exige um processo conheça seu cliente (KYC) para cada conta que possui seu ativos. Outro, AnchorUSD, vamos receber e negociar seus dólares americanos (tornando literalmente possível enviar US$ 0,50 para o México em 5 segundos com uma taxa de US$ 0,000001). No entanto, AnchorUSD exige KYC e taxas para comprar ou resgatar seus dólares americanos com transferências bancárias convencionais. Nas Filipinas, onde regulamentações bancárias são mais flexíveis para pagamentos recebidos, coins.ph suporta saques de PHP em qualquer caixa eletrônico [36]. Além da segurança token mencionada acima e da moeda no aplicativo, há uma variedade de tokens não monetários que variam de títulos comerciais [22] e créditos de carbono [85, 96] para mais ativos esotéricos, como um token que incentiva a colaboração reintegração de posse do carro [35]. 7.2 Rede pública No momento em que este livro foi escrito, havia 126 nós completos ativos, 66 dos quais participar do consenso assinando mensagens de voto. Figura 7 (gerado por [5]) visualiza a rede, com uma linha entre dois nós se um aparecer nas fatias de quorum do outro e um linha azul mais escura para mostrar dependência bidirecional. No center é um cluster de 17 “validators” de fato de primeiro nível administrado por SDF, SatoshiPay, LOBSTR, COINQVEST e Keybase. Há quatro meses, antes dos acontecimentos da Secção 6, houve havia 15 nós sistemicamente importantes: 3 de aparentemente organizações de nível um e vários singletons aleatórios. O o gráfico também parecia muito menos regular. Portanto, o novo mecanismo de configuração e/ou melhores decisões do operador parecem contribuir para uma topologia de rede mais saudável. Sem grandes recursos financeiros (e correspondentes Figura 7. Mapa de fatia de quórum obrigações), teria sido difícil recrutar 5 níveis um organizações desde o início, no entanto. Isso sugere quórum fatias desempenham um papel útil na inicialização da rede: qualquer um pode junte-se com o objetivo de se tornar um player importante porque não há guardiões para o acordo entre pares. Existem atualmente mais de 3,3 milhões de contas no livro razão. Acabou um período recente de 24 horas, Stellar teve uma média de 4,5 transações e 15,7 operações por segundo. Revendo livros contábeis recentes, a maioria as transações parecem ter uma única operação, enquanto a cada poucas livros, vemos transações contendo muitas operações que parecem vir de formadores de mercado que gerenciam ofertas. O os tempos médios para alcançar consenso e atualizar o livro foram 1061ms e 46ms, respectivamente. Os percentis 99 foram 2252 ms e 142 ms (o primeiro refletindo um tempo limite de 1 segundo na seleção do líder de nomeação). Observe que o desempenho do SCP é principalmente independente de transações por segundo, uma vez que SCP concorda com um hash de muitas transações arbitrárias. É mais provável que gargalos surjam da propagação de candidatos transações durante a nomeação, execução e validação transações e mesclagem de buckets. Ainda não precisamos para paralelizar o processamento de transações do Stellar-Core em vários núcleos de CPU ou unidades de disco. Também avaliamos o número de mensagens SCP transmitidas na rede de produção. No caso normal com um único líder eleito para indicar um valor, esperamos sete mensagens a serem transmitidas: duas mensagens para votar e aceitar um nomedeclaração nate, duas mensagens para aceitar e confirmar uma declaração de preparação, duas mensagens para aceitar e confirmar uma declaração de commit e, finalmente, uma mensagem externalizada (enviado depois de enviar um novo livro-razão para o disco para ajudar os retardatários alcançar). A implementação combina confirmar commit e externalizar mensagens como uma otimização, uma vez que é seguro externalizar um valor após ele ser confirmado. Em seguida, analisamos as métricas coletadas em uma produção Stellar validator. Acabou ao longo de 68 horas, foram emitidas 1,3 mensagens/segundo, em média de 6 a 7 mensagens por livro-razão. Notamos que o total
Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Percentil Número de tempos limite Nomeação Votação 75% 0 0 99% 1 0 Máx. 4 1 Figura 8. Tempos limite por razão superior a 68 horas contagem de mensagens transmitidas por validators é maior, pois em além das mensagens de votação federada, os nós também transmitem quaisquer transações sobre as quais tomem conhecimento. A Figura 8 mostra os tempos limite experimentados por uma produção validator durante um período de 68 horas. Os tempos limite de nomeação são uma medida da (in)eficácia da função eleitoral do líder, enquanto o tempo limite da votação depende muito da rede e possíveis atrasos nas mensagens. Os tempos limite são consistentes com o número de mensagens emitidas: seis mensagens no melhor cenário, e pelo menos sete mensagens se uma rodada de nomeação adicional for necessária. 7.3 Experimentos controlados Realizamos experimentos controlados em recipientes embalados em Instâncias c5d.9xlarge do Amazon EC2 com 72 GiB de RAM, 900 GB de SSD NVMe e 36 vCPUs. Cada instância estava em na mesma região EC2 e tinha largura de banda fixa de 10 Gbps. Usamos SQLite como loja. (Stellar também suporta PostgreSQL, mas isso tem tarefas assíncronas que injetam ruído nas medições.) Stellar fornece uma consulta de tempo de execução integrada, generateload, que permite gerar carga sintética em um alvo específico transação/segunda taxa. Embora Stellar suporte vários recursos de negociação, como carteira de pedidos e caminho entre ativos pagamentos, nos concentramos em pagamentos simples. A confirmação de transações consiste em várias etapas, por isso registrou as medições para cada um dos seguintes: • Nomeação: tempo desde a nomeação até a primeira preparação • Votação: tempo desde a primeira preparação até a confirmação de um votação confirmada • Atualização do razão: hora de aplicar o valor de consenso • Contagem de transações: transações confirmadas por razão Cada um de nossos experimentos foi definido por três parâmetros: o número de lançamentos de conta no razão, a quantidade de carga (na forma de pagamentos XLM) enviada por segundo, e o número de validators. Configuramos cada validator saber sobre todos os outros validator (o pior cenário para SCP), com fatias de quórum definidas para qualquer maioria simples de nós (de modo a maximizar o número de quóruns diferentes). Linha de base Nosso experimento de linha de base mediu Stellar com 100.000 contas, quatro validators e a geração de carga taxa de 100 transações/segundo. Observamos em média 507 transações por razão, com desvio padrão de 49 (9,7%). Observe que nenhuma transação foi descartada; o leve 105 106 107 0 500 1.000 1.500 2.000 Contas Latência [ms] Atualização do razão Votação Nomeação Figura 9. Latência à medida que o número de contas aumenta a variação é devida a limitações de programação do gerador de carga. Observamos que o número de transações por razão foi consistente com nossa taxa de geração de carga, dado o razão fechando a cada 5 segundos. Nomeação, votação e registro atualização mostrou latências médias de 82,53 ms, 95,96 ms e 174,08ms, respectivamente. Observamos que a latência de nomeação O percentil 99 está consistentemente abaixo de 61 ms, com ocasionais picos de aproximadamente 1 segundo, correspondendo à primeira etapa na função de tempo limite de seleção do líder. Dado o desempenho da linha de base, analisamos os efeitos de variar cada um dos parâmetros de configuração do teste. Contas Os dados da Figura 9 sugerem que Stellar escala bem como o número de contas aumenta. Geração de teste contas tornou-se um processo demorado, pois a criação de buckets e a fusão nos impediu de simplesmente preencher o banco de dados com contas diretamente via SQL. Por isso, conduzimos nosso experimentos para até 50 milhões de contas. Enquanto houver impacto mínimo no consenso e nas latências de atualização do razão, notamos que o aumento de contas cria uma sobrecarga de mesclando baldes, que ficam maiores. Taxa de transação A taxa de transação afeta a quantidade de multicast de tráfego entre validators, o número de transações incluídas em cada razão e o tamanho do nível superior baldes. Para entender os efeitos do aumento das transações load, realizamos um experimento com 100.000 contas e 4 validators. A Figura 10 mostra o crescimento lento na latência de consenso, enquanto a maior parte do tempo foi gasta atualizando o razão. Não é de surpreender que, à medida que o conjunto de transações aumenta de tamanho, leva mais tempo para confirmá-lo no banco de dados. Notamos também que a latência de atualização do razão depende fortemente da implementação, e é afetado pela escolha do banco de dados. Nós validadores Para ver como aumentar o número de níveis validatorsafeta o desempenho, realizamos experimentos com 100.000 contas, 100 transações/segundo e um número variável de validators de 4 a 43. Todos os validators apareceram em todas as fatias de quorum de validators; fatias de quórum menores seriam têm um impacto menor no desempenho.SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Carregar [transações/segundo] Latência [ms] Atualização do razão Votação Nomeação Figura 10. Latência à medida que a carga da transação aumenta 10 20 30 40 0 500 1.000 1.500 2.000 Validadores Latência [ms] Atualização do razão Votação Nomeação Figura 11. Latência conforme o número de nós aumenta Alterando o número de nós de validação na rede afeta o número de mensagens SCP trocadas, bem como o número de valores potenciais durante a nomeação. Figura 11 mostra o tempo de nomeação crescendo a uma taxa relativamente pequena. Embora os dados sugiram que a votação é o gargalo, acredito que muitos problemas de escala podem ser resolvidos melhorando Rede de sobreposição de Stellar para otimizar o tráfego de rede. Como esperado, a latência de atualização do razão permaneceu independente de o número de nós. Taxa de fechamento Por último, queríamos medir o desempenho ponta a ponta de Stellar medindo a frequência com que os livros contábeis são confirmados e se Stellar atinge sua meta de 5 segundos sem descartando qualquer transação. Observamos o razão médio próximo tempos de 5,03 s, 5,10 s e 5,15 s à medida que aumentamos a conta entradas, taxa de transação e número de nós, respectivamente. Os resultados sugerem que Stellar pode fechar livros contábeis de forma consistente sob alta carga. 7.4 Executando um validator Uma das características importantes de Stellar é o baixo custo de executando um validator, como as âncoras devem ser executadas (ou contratadas) validators para impor finalidade. O SDF executa três validators de produção, todos em instâncias c5.large da AWS, que possuem dois núcleos, 4 GiB de RAM e CPU Intel(R) Xeon(R) Platinum 8124M @ Processadores de 3,00 GHz. Inspecionando o uso de recursos em um dessas máquinas, observamos o processo Stellar usando cerca de 7% da CPU e 300 MiB de memória. Em termos de tráfego de rede, com 28 conexões a pares e tamanho de quorum de 34, as taxas de entrada e saída eram de 2,78 Mbit/s e 2,56 Mbit/s, respectivamente. Hardware necessário para executar tal processo é barato. No nosso caso, o custo é de US$ 0,054/hora ou cerca de US$ 40/mês. 7,5 Trabalho futuro Esses experimentos sugerem que Stellar pode facilmente escalar de 1 a 2 pedidos de magnitude além do uso atual da rede. Porque o as demandas de desempenho têm sido tão modestas até o momento, Stellar deixa espaço para muitas otimizações diretas usando técnicas bem conhecidas. Por exemplo, transações e SCP mensagens são transmitidas por validators usando uma inundação ingênua protocolo, mas idealmente deveria usar protocolo mais eficiente e estruturado multicast ponto a ponto [30]. Além disso, bancos de dados pesados o tempo de atualização do razão pode ser melhorado por meio de técnicas padrão de lote e pré-busca.
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
Conclusão
Os pagamentos internacionais são caros e demoram dias. Fundo a custódia passa por múltiplas instituições financeiras, incluindo bancos correspondentes e serviços de transferência de dinheiro. Como cada salto deve ser totalmente confiável, é difícil para novos novos participantes ganhem participação de mercado e concorram. Stellar mostra como enviar dinheiro para todo o mundo de forma barata em segundos. O A principal inovação é um novo protocolo de acordo bizantino de adesão aberta, SCP, que aproveita a estrutura peer-to-peer da rede financeira para alcançar um consenso global sob um nova hipótese da Internet. SCP permite que Stellar confirme atomicamente transações irreversíveis entre participantes arbitrários que não conhecem ou confiam um no outro. Isso, por sua vez, garante aos novos participantes o acesso aos mesmos mercados estabelecidos jogadores, torna seguro obter a melhor troca disponível taxas mesmo de formadores de mercado não confiáveis, e dramaticamente reduz a latência de pagamento. Agradecimentos Stellar não estaria onde está hoje sem o início liderança de Joyce Kim ou as tremendas contribuições de Scott Fleckenstein e Bartek Nowotarski na construção e mantendo o horizonte, o Stellar SDK e outras peças importantes do ecossistema Stellar. Agradecemos também a Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Leme, Eric Saunders, Torsten Stüber, Tomer Weller, os revisores anônimos e nossa pastora Justine Sherry por seus comentários úteis sobre rascunhos anteriores. Isenção de responsabilidade A contribuição do Professor Mazières para esta publicação foi como consultor remunerado e não fez parte de seu trabalho. Deveres ou responsabilidades da Universidade de Stanford.
Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá