Protokol Konsensus Stellar

Von David Mazières · 2015

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

Abstrak

Pembayaran internasional lambat dan mahal, sebagian karena jalur pembayaran multi-hop yang heterogen sistem perbankan. Stellar adalah jaringan pembayaran global baru yang dapat langsung mentransfer uang digital ke mana pun di dunia dunia dalam hitungan detik. Inovasi kuncinya adalah transaksi yang aman mekanisme di perantara yang tidak tepercaya, menggunakan yang baru Protokol perjanjian Bizantium disebut SCP. Dengan SCP, masing-masing institusi menentukan institusi lain yang akan tetap tinggal setuju; melalui keterhubungan global sistem keuangan, seluruh jaringan kemudian menyetujui atom transaksi yang mencakup institusi sewenang-wenang, tanpa solvabilitas atau risiko nilai tukar dari penerbit aset perantara atau pembuat pasar. Kami menyajikan model, protokol, dan verifikasi formal; jelaskan jaringan pembayaran Stellar; dan terakhir mengevaluasi Stellar secara empiris melalui tolok ukur dan pengalaman kami dengan beberapa tahun penggunaan produksi. Konsep CCS • Keamanan dan privasi → Terdistribusi keamanan sistem; • Organisasi sistem komputer → Arsitektur peer-to-peer; • Sistem informasi → Transfer dana elektronik. Kata kunci blockchain, BFT, kuorum, pembayaran Format Referensi ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pembayaran global yang cepat dan aman dengan Stellar. Di SOSP '19: Simposium Prinsip Sistem Operasi, 27-30 Oktober, 2019, Huntsville, ON, Kanada. ACM, New York, NY, AS, 17 halaman. 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.

Perkenalan

Pembayaran internasional terkenal lambat dan mahal [32]. Pertimbangkan ketidakpraktisan pengiriman $0,50 dari AS ke * Galois, Inc. †UCLA Izin untuk membuat salinan digital atau cetak dari seluruh atau sebagian karya ini penggunaan pribadi atau ruang kelas diberikan tanpa biaya asalkan salinannya tidak dibuat atau didistribusikan untuk keuntungan atau keuntungan komersial dan salinannya mempunyai hakikat pemberitahuan ini dan kutipan lengkap di halaman pertama. Hak cipta untuk komponen karya ini dimiliki oleh orang lain selain ACM harus dihormati. Mengabstraksi dengan kredit diperbolehkan. Untuk menyalin sebaliknya, atau menerbitkan ulang, untuk memposting di server atau ke mendistribusikan ulang ke daftar, memerlukan izin khusus sebelumnya dan/atau biaya. Permintaan izin dari [email protected]. SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada © 2019 Asosiasi Mesin Komputasi. ACM ISBN 978-1-4503-6873-5/19/10...$15.00 https://doi.org/10.1145/3341301.3359636 Meksiko, dua negara tetangga. Pengguna akhir membayar hampir $9 untuk rata-rata transfer tersebut [32], dan perjanjian bilateral yang ditengahi oleh bank sentral negara-negara tersebut hanya dapat mengurangi biaya bank yang mendasarinya menjadi $0,67 per item [2]. Selain biaya, latensi pembayaran internasional umumnya dihitung dalam hitungan hari, sehingga tidak mungkin mendapatkan uang ke luar negeri dengan cepat keadaan darurat. Di negara-negara yang sistem perbankannya tidak memilikinya bekerja atau tidak melayani semua warga negara, atau ketika biaya tidak dapat ditoleransi, masyarakat terpaksa mengirimkan pembayaran dengan bus [38], dengan perahu [19], dan kadang-kadang sekarang Bitcoin [55], semuanya menimbulkan risiko, latensi, atau ketidaknyamanan. Meskipun akan selalu ada biaya kepatuhan, bukti menunjukkan bahwa sejumlah besar kerugian disebabkan oleh kurangnya persaingan [21], yang diperburuk oleh teknologi yang tidak efisien. Dimana orang dapat berinovasi, harga dan latensi turun. Misalnya, biaya pengiriman uang dari rekening bank pada Q2 2019 rata-rata sebesar 6,99%, sedangkan uang seluler hanya 4,88% [13]. Jaringan pembayaran global terbuka yang menarik inovasi dan persaingan dari entitas non-bank dapat menurun biaya dan latensi di semua lapisan, termasuk kepatuhan [83]. Makalah ini menyajikan Stellar, pembayaran berbasis blockchain jaringan yang dirancang khusus untuk memfasilitasi inovasi dan persaingan dalam pembayaran internasional. Stellar adalah yang pertama sistem untuk memenuhi ketiga tujuan berikut (di bawah a “Hipotesis Internet” yang baru namun valid secara empiris): 1. Keanggotaan terbuka – Siapapun dapat menerbitkan mata uang yang didukung tokens digital yang dapat dipertukarkan antar pengguna. 2. Finalitas yang diberlakukan oleh penerbit – Penerbit token dapat mencegah transaksi di token agar tidak dibalik atau dibatalkan. 3. Atomisitas lintas penerbit – Pengguna dapat bertukar secara atom dan perdagangkan token dari beberapa penerbit. Mencapai dua yang pertama itu mudah. Perusahaan mana pun dapat secara sepihak menawarkan produk seperti Paypal, Venmo, WeChat Bayar, atau Alipay dan pastikan finalitas pembayaran di mata uang virtual yang mereka buat. Sayangnya, bertransaksi secara atomik antar mata uang ini tidak mungkin dilakukan. Faktanya, meskipun Paypal telah mengakuisisi perusahaan induk Venmo pada tahun 2013, pengguna akhir masih tidak dapat mengirim Venmo dolar ke pengguna Paypal [78]. Baru belakangan ini pedagang bisa bahkan menerima keduanya dengan satu integrasi. Tujuan 2 dan 3 dapat dicapai dalam sistem tertutup. Secara khusus, sejumlah negara memiliki pembayaran domestik yang efisien jaringan, biasanya diawasi oleh otoritas pengatur yang dipercaya secara universal. Namun keanggotaannya terbatas dan tertutup kumpulan bank yang disewa dan jaringannya terbatas pada jangkauan otoritas pengatur suatu negara.SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Sasaran 1 dan 3 telah tercapai dalam blockchains, terutama dalam bentuk ERC20 tokens pada Ethereum [3]. Ide utama dari blockchain ini adalah untuk menciptakan mata uang kripto baru yang dapat digunakan untuk memberikan penghargaan kepada orang-orang yang telah menyelesaikan pekerjaan mereka. transaksi sulit untuk dikembalikan. Sayangnya, ini berarti penerbit token tidak mengontrol penyelesaian transaksi. Jika perangkat lunak kesalahan menyebabkan riwayat transaksi diatur ulang [26, 73], atau ketika keuntungan yang diperoleh orang yang menipu melebihi biayanya mengatur ulang sejarah [74, 97], penerbit mungkin bertanggung jawab atas tokens mereka telah menebusnya dengan uang dunia nyata. Stellar blockchain memiliki dua sifat yang membedakan. Pertama, ini secara asli mendukung pasar yang efisien antara tokens dari emiten yang berbeda. Secara khusus, siapa pun dapat menerbitkan token, blockchain menyediakan buku pesanan bawaan untuk perdagangan antara pasangan token mana pun, dan pengguna dapat mengeluarkan pembayaran jalur yang secara atom memperdagangkan beberapa pasangan mata uang sementara menjamin harga batas ujung ke ujung. Kedua, Stellar memperkenalkan perjanjian Bizantium baru protokol, SCP (Stellar Protokol Konsensus), yang melaluinya token penerbit menunjuk server validator tertentu untuk diterapkan finalitas transaksi. Selama tidak ada seorang pun yang mengkompromikan validator penerbit (dan tanda tangan digital yang mendasarinya serta kriptografi hashes tetap aman), penerbit tahu persis transaksi mana yang telah terjadi dan menghindari risiko kerugian dari blockchain sejarah reorganisasi. Ide utama SCP adalah agar sebagian besar penerbit aset mendapatkan keuntungan darinya pasar likuid dan ingin memfasilitasi transaksi atom dengan aset lainnya. Oleh karena itu, validator administrator mengonfigurasi server mereka setuju dengan validator lainnya sejarah semua transaksi pada semua aset. validator v1 bisa dikonfigurasi untuk menyetujui v2, atau v2 dapat dikonfigurasi untuk menyetujui dengan v1, atau keduanya dapat dikonfigurasi agar sesuai satu sama lain; dalam semua kasus, tidak ada yang akan berkomitmen pada riwayat transaksi sampai ia tahu pihak lain tidak dapat berkomitmen pada sejarah yang berbeda. Secara transitivitas, jika v1 tidak bisa tidak setuju dengan v2 dan v2 tidak bisa tidak setuju dengan v3 (atau sebaliknya), v1 tidak bisa tidak setuju dengan v3, apakah v3 mewakili aset v1 atau tidak dari. Berdasarkan hipotesis bahwa hubungan perjanjian ini menghubungkan seluruh jaringan secara transitif, jaminan SCP perjanjian global, menjadikannya perjanjian Bizantium global protokol dengan keanggotaan terbuka. Kami menyebut asumsi keterhubungan baru ini sebagai hipotesis Internet, dan mencatatnya sebagai hipotesis memegang kedua "Internet" (yang semua orang memahaminya berarti jaringan IP terbesar yang terhubung secara transitif) dan pembayaran internasional lama (yang bersifat hop-by-hop non-atom, namun memanfaatkan koneksi global yang bersifat transitif jaringan lembaga keuangan). Stellar telah digunakan produksi sejak September 2015. Agar panjang blockchain dapat dikelola, sistem berjalan SCP dengan interval 5 detik—cepat dengan standar blockchain, tapi jauh lebih lambat dibandingkan penerapan perjanjian Bizantium pada umumnya. Meskipun penggunaan utamanya adalah pembayaran, Stellar juga demikian terbukti menarik bagi token non-uang yang menguntungkan dari pasar sekunder terdekat (lihat Bagian 7.1). Bagian selanjutnya membahas pekerjaan terkait. Bagian 3 menyajikan SCP. Bagian 4 menjelaskan verifikasi formal kami terhadap SCP. Bagian 5 menjelaskan lapisan pembayaran Stellar. Bagian 6 berhubungan beberapa pengalaman penerapan dan pembelajaran kami. Bagian 7 mengevaluasi sistem. Bagian 8 menyimpulkan.

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 protokol konsensus

Protokol konsensus Stellar (SCP) berbasis kuorum Protokol perjanjian Bizantium dengan keanggotaan terbuka. Kuorum muncul dari keputusan konfigurasi lokal gabungan dari masing-masing node. Namun, node hanya mengenali kuorum di mana mereka menjadi anggotanya, dan hanya setelahnya mempelajari konfigurasi lokal dari semua anggota kuorum lainnya. Salah satu manfaat dari pendekatan ini adalah SCP secara inheren mentolerir pandangan heterogen tentang node yang ada. Oleh karena itu, node dapat bergabung dan keluar secara sepihak tanpa memerlukan a Protokol “lihat perubahan” untuk mengoordinasikan keanggotaan. 3.1 Perjanjian Federasi Bizantium Masalah perjanjian tradisional Bizantium terdiri dari a sistem tertutup dari N node, beberapa di antaranya rusak dan mungkin berperilaku sewenang-wenang. Node menerima nilai masukan dan pertukaran pesan untuk memutuskan nilai output di antara input. Protokol perjanjian Bizantium aman ketika tidak ada dua node yang berperilaku baik menghasilkan keputusan yang berbeda dan unik keputusan merupakan masukan yang valid (untuk beberapa definisi valid yang disepakatiSOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. sebelumnya). Sebuah protokol aktif jika menjamin hal itu setiap node yang jujur pada akhirnya menghasilkan keputusan. Biasanya, protokol mengasumsikan N = 3f + 1 untuk beberapa bilangan bulat f > 0, maka menjamin keamanan dan beberapa bentuk keaktifan selama paling banyak f node rusak. Pada tahap tertentu dalam hal ini protokol, node memberikan suara pada nilai yang diusulkan dan proposal menerima 2f + 1 suara, yang disebut kuorum suara, menjadi keputusannya. Dengan N = 3f + 1 node, dua kuorum mana pun ukuran 2f + 1 tumpang tindih setidaknya di f + 1 node; bahkan jika f dari ini node yang tumpang tindih salah, setidaknya kedua kuorum berbagi satu node yang tidak salah, mencegah keputusan yang kontradiktif. Namun, pendekatan ini hanya berhasil jika semua node menyetujuinya apa yang dimaksud dengan kuorum, yang tidak mungkin dilakukan di SCP di mana dua node bahkan mungkin tidak mengetahui keberadaan satu sama lain. Dengan SCP, setiap node v secara sepihak mendeklarasikan kumpulan node, disebut irisan kuorumnya, sehingga (a) v percaya bahwa jika semua anggota irisan setuju tentang keadaan sistem, lalu mereka benar, dan (b) v percaya bahwa setidaknya salah satu bagiannya akan tersedia untuk memberikan informasi yang tepat waktu tentang keadaan sistem. Kami menyebut sistem yang dihasilkan, terdiri node dan irisannya, Perjanjian Federasi Bizantium (FBA) sistem. Seperti yang akan kita lihat selanjutnya, sistem kuorum muncul dari irisan node. Secara informal, potongan node FBA mengungkapkan dengan siapa simpul memerlukan persetujuan. Misalnya, sebuah node mungkin memerlukan persetujuan dengan 4 organisasi tertentu, masing-masing menjalankan 3 node; untuk mengakomodasi downtime, ia mungkin mengatur irisannya menjadi semua set terdiri dari 2 node dari masing-masing organisasi. Jika ini “membutuhkan perjanjian dengan” relasi secara transitif menghubungkan dua node mana pun, kita mendapatkan kesepakatan global. Kalau tidak, kita bisa mendapatkan perbedaan, tetapi hanya antar organisasi yang keduanya tidak memerlukannya kesepakatan dengan yang lain. Mengingat topologi saat ini sistem keuangan, kami berhipotesis bahwa konvergensi yang meluas akan terus menghasilkan sejarah buku besar yang disebut orang “jaringan Stellar,” sama seperti kita berbicara tentang Internet. Kuorum muncul dari irisan sebagai berikut. Setiap node menentukan irisan kuorumnya di setiap pesan yang dikirimkannya. Biarkan S menjadi kumpulan node asal kumpulan pesan. SEBUAH node menganggap kumpulan pesan telah mencapai kuorum ambang batas ketika setiap anggota S memiliki irisan yang termasuk dalam S. Secara konstruksi, himpunan S, jika bulat, memenuhi persyaratan kesepakatan masing-masing anggotanya. Rekan yang salah mungkin mengiklankan potongan yang dibuat untuk mengubah apa node yang berperilaku baik mempertimbangkan kuorum. Demi analisis protokol, kami mendefinisikan kuorum di FBA sebagai tidak kosong kumpulan S node yang mencakup setidaknya satu irisan kuorum setiap anggota yang tidak salah. Abstraksi ini masuk akal, seperti kumpulan lainnya pesan yang dimaksudkan untuk mewakili kuorum dengan suara bulat sebenarnya demikian (walaupun berisi pesan dari node yang salah), dan tepatnya jika S hanya berisi node yang berperilaku baik. Di Pada bagian ini, kami juga berasumsi bahwa irisan node tidak berubah. Namun demikian, hasil kami ditransfer ke kasus yang berubah-ubah karena sistem di mana perubahan irisan tidak kalah amannya sistem irisan tetap di mana irisan simpul terdiri dari semua irisan yang pernah digunakan dalam kasus perubahan irisan (lihat Teorema 13 di [68]). Seperti yang dijelaskan di Bagian 4, keaktifan bergantung pada node yang berperilaku baik pada akhirnya menghapus node yang tidak dapat diandalkan dari irisan mereka. Karena node yang berbeda memiliki persyaratan perjanjian yang berbeda, FBA menghalangi definisi keselamatan secara global. Kami bilang node yang tidak rusak v1 dan v2 saling terkait ketika masing-masing kuorum v1 memotong setiap kuorum v2 di setidaknya satu simpul yang tidak rusak. Protokol FBA dapat memastikan kesepakatan hanya antara node yang saling terkait; karena SCP melakukannya, itu salahnya toleransi terhadap keselamatan optimal. Hipotesis Internet, yang mendasari desain Stellar, menyatakan bahwa node tersebut dipedulikan orang tentang akan terjalin. Kita mengatakan himpunan node I utuh jika I merupakan kuorum yang tidak salah secara seragam sehingga setiap dua anggota I saling terkait meskipun setiap node di luar I salah. Secara intuitif, maka, aku harus tetap kebal terhadap tindakan yang tidak utuh node. SCP menjamin keaktifan non-pemblokiran [93] dan keamanan ke set utuh, meskipun node itu sendiri tidak memerlukannya untuk mengetahui (dan mungkin tidak dapat mengetahui) himpunan mana yang utuh. Selanjutnya gabungan dua himpunan utuh yang berpotongan adalah satu set utuh. Oleh karena itu, himpunan utuh mendefinisikan partisi dari node berperilaku baik, di mana setiap partisi aman dan aktif (dalam kondisi tertentu), tetapi partisi yang berbeda mungkin menghasilkan output keputusan yang berbeda. 3.1.1 Pertimbangan Keamanan vs. Keaktifan di FBA Dengan pengecualian terbatas [64], sebagian besar protokol perjanjian Bizantium tertutup disesuaikan dengan titik keseimbangan di mana keamanan dan keaktifan memiliki toleransi kesalahan yang sama. Di FBA, itu berarti konfigurasi di mana, terlepas dari kegagalannya, semuanya set yang saling terkait juga utuh. Mengingat FBA yang menentukan kuorum dengan cara yang terdesentralisasi, kecil kemungkinannya bahwa pilihan masing-masing kelompok akan menghasilkan keseimbangan ini. Apalagi di setidaknya di Stellar, keseimbangan tidak diinginkan: konsekuensinya kegagalan keamanan (yaitu uang digital yang dibelanjakan ganda). jauh lebih buruk dibandingkan dengan kegagalan keaktifan (yaitu penundaan dalam pembayaran yang memakan waktu beberapa hari sebelum Stellar). Orang-orang oleh karena itu sebaiknya dan lakukan pemilihan kuorum yang besar sedemikian rupa simpul-simpulnya cenderung tetap saling terkait dibandingkan utuh. Lebih jauh lagi, lebih mudah untuk pulih kegagalan keaktifan yang khas dalam sistem FBA dibandingkan sistem tertutup tradisional. Dalam sistem tertutup, semua pesan harus ada ditafsirkan sehubungan dengan kumpulan kuorum yang sama. Oleh karena itu, menambah dan menghapus node untuk pulih dari kegagalan diperlukan mencapai konsensus mengenai peristiwa konfigurasi ulang, yang sulit dilakukan ketika konsensus tidak lagi berlaku. Sebaliknya, dengan FBA, node mana pun dapat menyesuaikan irisan kuorumnya secara sepihak waktu. Menanggapi pemadaman pada sistem yang penting organisasi, administrator node dapat menyesuaikan irisannya mengatasi masalah, seperti mengoordinasikan tanggapan terhadap bencana BGP [63] (meskipun tanpa kendala perutean melalui tautan jaringan fisik).

Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada 3.1.2 Teorema kaskade SCP mengikuti templat model putaran dasar [42]; node maju melalui serangkaian surat suara bernomor, masing-masing mencoba tiga tugas: (1) mengidentifikasi nilai “aman” yang tidak bertentangan dengan keputusan apa pun dalam pemungutan suara sebelumnya (sering disebut menyiapkan surat suara), (2) menyepakati nilai aman, dan (3) mendeteksi bahwa kesepakatan berhasil. Namun, FBA terbuka keanggotaan menghalangi beberapa teknik umum, sehingga berhasil tidak mungkin untuk "memindahkan" protokol tertutup tradisional ke FBA model hanya dengan mengubah definisi kuorum. Salah satu teknik yang digunakan oleh banyak protokol adalah rotasi melalui node pemimpin dengan cara round-robin setelah batas waktu habis. Dalam sistem tertutup, pemilihan pemimpin dilakukan secara round-robin yang pada akhirnya seorang pemimpin yang jujur dan unik akhirnya mengoordinasikan kesepakatan mengenai satu nilai. Sayangnya, sistem round-robin tidak dapat bekerja di sistem FBA dengan keanggotaan yang tidak diketahui. Teknik umum lainnya yang gagal dengan FBA adalah mengasumsikan kuorum tertentu dapat meyakinkan semua node. Misalnya, jika semua orang mengakui node 2f + 1 mana pun sebagai kuorum, maka Tanda tangan 2f + 1 cukup untuk membuktikan status protokol ke semua node. Demikian pula, jika sebuah node menerima kuorum pesan yang identik melalui siaran yang andal [24], node dapat berasumsi bahwa semua node yang tidak salah juga akan memenuhi kuorum. Di FBA, sebaliknya, a kuorum tidak berarti apa-apa bagi node di luar kuorum. Terakhir, sistem non-federasi sering kali menggunakan sistem “terbelakang” alasan tentang keamanan: jika f + 1 node rusak, semua aman jaminan hilang. Oleh karena itu, jika node v mendengar f + 1 node semuanya nyatakan beberapa fakta F, v dapat berasumsi setidaknya ada satu fakta yang memberitahukan kebenaran (dan karenanya F benar) tanpa kehilangan keamanan. Seperti itu penalaran gagal di FBA karena keselamatan adalah milik pasangan node, sehingga node yang kehilangan keamanannya terhadap beberapa peer dapat melakukannya selalu kehilangan keamanan ke lebih banyak node dengan mengasumsikan fakta buruk. Namun, FBA dapat berpikir mundur tentang keaktifan. Definisikan himpunan pemblokiran v sebagai himpunan node yang berpotongan setiap potongan v. Jika himpunan pemblokiran v B benar-benar rusak, B dapat menolak simpul v kuorum dan membuatnya kehilangan keaktifan. Oleh karena itu, jika B dengan suara bulat menyatakan fakta F, maka v mengetahui bahwa salah satu F adalah benar atau v tidak utuh. Namun, v masih perlu melihat selengkapnya kuorum untuk mengetahui bahwa node yang saling terkait tidak akan bertentangan dengan F, yang mengarah ke putaran terakhir komunikasi di SCP dan protokol FBA lainnya [47] yang tidak diperlukan secara analog protokol keanggotaan tertutup. Hasilnya adalah yang kita miliki tiga kemungkinan tingkat keyakinan terhadap fakta-fakta potensial: tidak dapat ditentukan, aman untuk diasumsikan di antara simpul-simpul yang utuh (yang akan kita lakukan istilah fakta yang diterima), dan aman untuk diasumsikan di antara saling terkait node (yang kita sebut fakta yang dikonfirmasi). Node v dapat secara efisien menentukan apakah suatu himpunan B melakukan vblocking dengan memeriksa apakah B memotong semua irisannya. Menariknya, jika node selalu mengumumkan pernyataan mereka menerima dan kuorum penuh menerima suatu pernyataan, hal ini memicu proses berjenjang dimana pernyataan disebarkan ke seluruh set utuh. Kami menyebut fakta kunci yang mendasari penyebaran ini teorema cascade, yang menyatakan sebagai berikut: Jika saya adalah an himpunan utuh, Q adalah kuorum anggota I, dan S adalah kuorum mana pun superset dari Q, maka S ⊇I atau ada anggota v ∈I sehingga v < S dan I ∩S merupakan pemblokiran v. Secara intuitif, apakah ini tidak demikian, komplemen dari S akan memenuhi kuorum yang memotong I tetapi tidak Q, melanggar kuorum persimpangan. Perhatikan bahwa jika kita memulai dengan S = Q dan berulang kali memperluas S menjadi menyertakan semua node yang diblokirnya, kami memperoleh efek berjenjang hingga, akhirnya, S mencakup seluruh I. 3.2 Deskripsi protokol SCP adalah protokol konsensus yang sebagian tersinkronisasi [42] yang terdiri dari serangkaian upaya untuk mencapai konsensus yang disebut surat suara. Surat suara menerapkan batas waktu yang durasinya semakin lama. SEBUAH protokol sinkronisasi surat suara memastikan bahwa node tetap aktif surat suara yang sama untuk jangka waktu yang bertambah hingga pemungutan suara secara efektif sinkron. Penghentian tidak dijamin sampai surat suara sinkron, tetapi dua surat suara sinkron yang dilakukan oleh anggota yang salah dari irisan node yang berperilaku baik tidak ikut campur saja sudah cukup untuk menghentikan SCP. Protokol pemungutan suara menentukan tindakan yang diambil pada masing-masing tindakan pemungutan suara. Pemungutan suara dimulai dengan fase persiapan, di mana node cobalah untuk menentukan nilai yang akan diusulkan yang tidak bertentangan keputusan apa pun sebelumnya. Kemudian, dalam fase penerapan, node mencoba untuk membuat keputusan tentang nilai yang disiapkan. Pemungutan suara menggunakan sub-protokol perjanjian yang disebut pemungutan suara gabungan, in node mana yang memberikan suara pada pernyataan abstrak yang pada akhirnya mungkin terkonfirmasi atau terhenti. Beberapa pernyataan mungkin dianggap bertentangan, dan aman jaminan pemungutan suara gabungan adalah tidak ada dua anggota dari suatu himpunan yang saling terkait menegaskan pernyataan-pernyataan yang kontradiktif. Konfirmasi suatu pernyataan tidak dijamin kecuali utuh himpunan yang semua anggotanya memberikan suara yang sama. Namun, jika a anggota himpunan utuh mengkonfirmasi suatu pernyataan, terfederasi pemungutan suara menjamin bahwa semua anggota kelompok utuh pada akhirnya mengkonfirmasi pernyataan itu. Oleh karena itu, mengambil langkah-langkah yang tidak dapat diubah sebagai tanggapan terhadap pernyataan yang mengkonfirmasikan mempertahankan keaktifan node utuh. Node awalnya mengusulkan nilai yang diperoleh dari nominasi protokol yang meningkatkan peluang semua anggota utuh himpunan mengusulkan nilai yang sama, dan akhirnya konvergen (meskipun tidak ada cara untuk menentukan konvergensi selesai). Nominasi menggabungkan pemungutan suara gabungan dengan pemilihan pemimpin. Karena round-robin tidak mungkin dilakukan di FBA, nominasi digunakan skema pemilihan pemimpin yang probabilistik. Teorema kaskade memainkan peran penting dalam pemungutan suara sinkronisasi dan menghindari negara-negara yang diblokir dari mana penghentian tidak mungkin lagi dilakukan. 3.2.1 Pemungutan suara Node SCP melanjutkan melalui serangkaian pemungutan suara bernomor, menggunakan pemungutan suara gabungan untuk menyetujui pernyataan tentang hal tersebut nilai-nilai ditentukan atau tidak ditentukan dalam surat suara yang mana. Jika asinkron atau perilaku salah menghalangi tercapainya keputusan dalam pemungutan suara n, waktu node habis dan coba lagi dalam pemungutan suara n + 1.

SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Ingat, pemungutan suara gabungan mungkin tidak akan berakhir. Oleh karena itu, beberapa pernyataan tentang surat suara bisa macet secara permanen keadaan tak tentu di mana node tidak pernah dapat menentukan apakah mereka masih dalam proses atau macet. Karena node tidak bisa dikesampingkan kemungkinan pernyataan yang tidak pasti kemudian terbukti benar, mereka tidak boleh melakukan pemungutan suara gabungan untuk pernyataan baru bertentangan dengan yang tidak pasti. Di setiap n pemungutan suara, node menggunakan pemungutan suara gabungan pada dua jenis pernyataan: • siapkan ⟨n,x⟩– menyatakan tidak ada nilai selain x telah atau akan pernah diputuskan dalam pemungutan suara apa pun ≤n. • melakukan ⟨n,x⟩– menyatakan x ditentukan dalam pemungutan suara n. Yang penting, perhatikan bahwa persiapkan ⟨n,x⟩kontradiksi dilakukan ⟨n′,x ′⟩ketika n ≥n′ dan x , x ′. Sebuah node memulai pemungutan suara n dengan mencoba pemungutan suara gabungan pada a persiapan pernyataan ⟨n,x⟩. Jika ada pernyataan persiapan sebelumnya berhasil dikonfirmasi melalui pemungutan suara gabungan, itu node memilih x dari persiapan yang dikonfirmasi dari pemungutan suara tertinggi. Jika tidak, node akan menetapkan x ke output dari protokol nominasi dijelaskan dalam sub-bagian berikutnya. Jika dan hanya jika sebuah node berhasil mengonfirmasi persiapan ⟨n,x⟩ dalam pemungutan suara n, ia mencoba melakukan pemungutan suara gabungan pada komit ⟨n,x⟩. Jika jika berhasil, berarti SCP telah memutuskan, sehingga node mengeluarkan output nilai dari pernyataan komit yang dikonfirmasi. Pertimbangkan himpunan S yang saling terkait. Karena paling banyak satu nilai dapat dipastikan disiapkan oleh anggota S dalam pemungutan suara tertentu, tidak ada dua nilai berbeda yang dapat dikonfirmasi dilakukan olehnya anggota S dalam pemungutan suara tertentu. Apalagi jika melakukan ⟨n,x⟩ sudah dikonfirmasi, lalu siapkan ⟨n,x⟩telah dikonfirmasi juga; sejak itu siapkan ⟨n,x⟩kontradiksi dengan komitmen sebelumnya untuk nilai yang berbeda, dengan jaminan perjanjian pemungutan suara gabungan kami mendapatkan bahwa tidak ada nilai berbeda yang dapat diputuskan sebelumnya pemungutan suara oleh anggota S. Dengan memasukkan nomor suara, kami oleh karena itu pastikan SCP aman. Untuk keaktifan, pertimbangkan himpunan I yang utuh dan cukup panjang pemungutan suara sinkron n. Jika node yang rusak muncul di irisan node yang berperilaku baik tidak ikut campur dalam n, lalu melalui pemungutan suara n + 1 semua anggota I telah mengkonfirmasi set P pernyataan persiapan yang sama. Jika P = ∅dan surat suara n cukup panjang, maka protokol nominasi akan berkumpul pada beberapa nilai x. Jika tidak, misalkan x adalah nilai dari persiapan dengan pemungutan suara tertinggi di P. Apa pun yang terjadi, saya akan mencoba melakukan federasi secara seragam memberikan suara pada persiapan ⟨n + 1,x⟩pada pemungutan suara berikutnya. Oleh karena itu, jika n + 1 juga sinkron, keputusan untuk x pasti akan mengikuti. 3.2.2 Nominasi Nominasi memerlukan pemungutan suara gabungan atas pernyataan: • mencalonkan x – menyatakan x adalah calon pengambil keputusan yang sah. Node dapat memilih untuk mencalonkan beberapa nilai—berbeda pernyataan yang dicalonkan tidak bertentangan. Namun, sekali sebuah node mengkonfirmasi pernyataan pencalonan apa pun, maka node tersebut berhenti memberikan suaranya mencalonkan nilai-nilai baru. Pemungutan suara gabungan masih memungkinkan sebuah node untuk melakukan hal tersebut mengkonfirmasi pernyataan pencalonan baru yang tidak dipilihnya, yang mana memilih-atau-menerima a dari kuorum menerima a dari kuorum a sah menerima dari set pemblokiran tidak berkomitmen memilih a diterima a dikonfirmasi a memilih ¬a Gambar 1. Tahapan pemungutan suara gabungan memungkinkan anggota dari suatu himpunan utuh untuk mengonfirmasi satu sama lain nilai-nilai yang dicalonkan sambil tetap menahan suara baru. Hasil nominasi yang (berkembang) adalah kombinasi deterministik dari semua nilai dalam pernyataan nominasi yang dikonfirmasi. Jika x mewakili satu set transaksi, node dapat mengambil gabungan himpunan, himpunan terbesar, atau himpunan dengan hash tertinggi, jadi selama semua node melakukan hal yang sama. Karena node menahan yang baru suara setelah mengkonfirmasi satu pernyataan nominasi, set pernyataan yang dikonfirmasi hanya dapat berisi banyak nilai. Fakta bahwa pernyataan yang dikonfirmasi dapat dipercaya menyebar himpunan utuh berarti simpul-simpul utuh pada akhirnya bertemu di kumpulan nilai nominasi yang sama dan karenanya hasil nominasi, meskipun pada titik yang tidak diketahui secara sewenang-wenang terlambat dalam protokol. Node menggunakan pemilihan pemimpin gabungan untuk mengurangi sejumlah nilai berbeda dalam pernyataan nominasi. Hanya saja seorang pemimpin yang belum memberikan suara untuk pernyataan pencalonan dapat menggunakan tanda x baru. Node lain menunggu kabar para pemimpin dan cukup menyalin suara pencalonan pemimpin mereka (yang sah). Untuk mengakomodasi kegagalan, kelompok pemimpin terus bertambah batas waktu terjadi, meskipun dalam praktiknya hanya beberapa node yang memperkenalkan nilai x baru. 3.2.3 Pemungutan suara gabungan Pemungutan suara gabungan menggunakan protokol tiga fase yang ditunjukkan pada Gambar 1. Node mencoba menyepakati pernyataan abstrak terlebih dahulu pemungutan suara, kemudian menerima, dan akhirnya mengkonfirmasi pernyataan. Sebuah node v dapat memilih pernyataan valid a yang tidak valid bertentangan dengan yang lainsuara beredar dan pernyataan yang diterima. Hal ini dilakukan dengan menyiarkan pesan pemungutan suara yang ditandatangani. v kemudian menerima a jika a konsisten dengan pernyataan lain yang diterima dan salah satu dari (kasus 1)v adalah anggota kuorum di mana setiap node memilih a atau menerima a, atau (kasus 2) meskipun v tidak memilih a, set pemblokiran v menerima a. Dalam kasus 2, v mungkin sebelumnya telah memberikan suara yang bertentangan dengan a, yang sekarang telah telah ditolak. v diperbolehkan untuk melupakan suara yang ditolak dan berpura-pura tidak pernah membuangnya karena jika masih utuh, ia tahu suara yang dibatalkan tidak dapat memenuhi kuorum melalui kasus 1. v menyiarkan bahwa ia menerima a, lalu mengonfirmasi a jika sudah masuk kuorum yang dengan suara bulat menerima a. Gambar 2 menunjukkan efek himpunan pemblokiran v dan teorema kaskade selama pemungutan suara gabungan. Dua simpul yang saling terkait tidak dapat mengkonfirmasi pernyataan yang bertentangan, karena dua kuorum yang disyaratkan harus berbagi aPembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada 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.

Pilih X

Pilih Y (a) 3 4 2 1 5 7 6 Pilih X Pilih X Pilih X Pilih Y Pilih X Pilih Y Pilih Y (b) 3 4 2 1 5 7 6 Terima X Pilih X Terima X Pilih Y Terima X Pilih Y Pilih Y (c) 3 4 2 1 5 7 6 Terima X Terima X Terima X Pilih Y Terima X Terima X Pilih Y (d) 3 4 2 1 5 7 6 Terima X Pilih X Terima X Terima X Terima X Terima X Terima X (e) Gambar 2. Efek kaskade dalam pemungutan suara gabungan. Setiap node memiliki satu irisan kuorum yang ditunjukkan oleh panah ke anggota irisan tersebut. (a) Pernyataan yang bertentangan X dan Y diperkenalkan. (b) Node memilih pernyataan yang valid. (c) Node 1 menerima X setelah kuorumnya {1, 2, 3, 4} dengan suara bulat memilih X. (d) Node 1, 2, 3, dan 4 semuanya menerima X; set {1} adalah 5 pemblokiran, jadi node 5 menerima X, mengesampingkan suara sebelumnya untuk Y. (e) Himpunan {5} adalah pemblokiran 6 dan 7, jadi 6 dan 7 keduanya menerima X. node yang tidak salah yang tidak dapat menerima pernyataan yang kontradiktif. Konfirmasi suatu pernyataan tidak dijamin: in jika terjadi suara terbelah, kedua pernyataan tersebut dapat bersifat permanen terjebak menunggu kuorum dalam tahap pemungutan suara. Namun jika sebuah simpul dalam himpunan utuh Saya mengonfirmasi pernyataan, kaskade teorema dan menerima kasus 2 memastikan bahwa semua I pada akhirnya akan terjadi mengkonfirmasi pernyataan itu. 3.2.4 Sinkronisasi surat suara Jika node tidak dapat mengkonfirmasi pernyataan komit untuk pemungutan suara saat ini, mereka menyerah setelah batas waktu habis. Batas waktunya habis lebih lama pada setiap surat suara untuk menyesuaikan dengan batasan yang sewenang-wenang pada penundaan jaringan. Namun, waktu tunggu saja tidak cukup untuk menyinkronkan surat suara dari node yang tidak dimulai pada waktu yang sama atau menjadi tidak sinkron karena alasan lain. Untuk mencapai sinkronisasi, node memulai timer hanya ketika mereka menjadi bagian dari a kuorum yang semuanya ada pada pemungutan suara saat ini (atau nanti) n. Ini memperlambat node yang dimulai lebih awal dan memastikan bahwa tidak anggota himpunan utuh berada terlalu jauh di depan grup. Terlebih lagi, jika sebuah node v menyadari adanya pemblokiran v di kemudian hari surat suara, ia langsung melompat ke surat suara terendah seperti ini tidak lagi terjadi, terlepas dari pengatur waktunya. Kaskade teorema kemudian memastikan bahwa semua orang yang tersesat dapat mengejar ketinggalan. Hasilnya adalah bahwa surat suara secara kasar disinkronkan secara utuh diatur setelah sistem menjadi sinkron. 3.2.5 Pemilihan pemimpin gabungan Pemilihan pemimpin memungkinkan setiap node untuk memilih pemimpin sedemikian rupa cara node umumnya hanya memilih satu atau sejumlah kecil pemimpin. Untuk mengakomodasi kegagalan pemimpin, pemilihan pemimpin berlangsung melalui putaran. Jika pemimpin putaran saat ini tampak tidak memenuhi tanggung jawabnya, kemudian setelah a node dengan periode batas waktu tertentu melanjutkan ke putaran berikutnya memperluas kelompok pemimpin yang mereka ikuti. Setiap putaran menggunakan dua fungsi kriptografi unik hash, H0 dan H1, yang menghasilkan bilangan bulat dalam rentang [0,hmax). Misalnya, Stellar menggunakan Hi(m) = SHA256(i∥b∥r ∥m), di mana b adalah keseluruhan instance SCP (nomor blok atau buku besar), r adalah nomor putaran pemilihan pemimpin, dan hmax = 2256. Dalam putaran, kami mendefinisikan prioritas node v sebagai: prioritas(v) = H1(v) Satu strawman akan dipilih oleh setiap node sebagai pemimpin nodev dengan prioritas tertinggi (v). Pendekatan ini berhasil baik dengan potongan kuorum yang hampir sama, tetapi tidak tepat menangkap pentingnya node dalam konfigurasi yang tidak seimbang. Misalnya, jika Eropa dan Tiongkok masing-masing berkontribusi 3 node ke setiap kuorum, tetapi Tiongkok menjalankan 1.000 node dan Eropa 4, maka Tiongkok akan memiliki node dengan prioritas tertinggi 99,6% waktu itu. Oleh karena itu kami memperkenalkan pengertian berat irisan, dimana bobot(u,v) ∈[0, 1] adalah pecahan dari irisan kuorum simpul u berisi simpul v. Ketika simpul u memilih pemimpin baru, simpul itu hanya mempertimbangkan tetangga, yang didefinisikan sebagai berikut: tetangga(u) = { v | H0(v) < hmaks · berat(u,v) } Sebuah nodeu kemudian dimulai dengan sekumpulan pemimpin yang kosong, dan pada masing-masing pemimpin round menambahkan node v di tetangga (u) dengan yang tertinggi prioritas(v). Jika himpunan tetangga kosong di setiap putaran, u malah menambahkan nodev dengan nilai terendah H0(v)/berat(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.

Verifikasi formal SCP

Untuk menghilangkan kesalahan desain, kami secara resmi memverifikasi keamanan SCP dan sifat keaktifan (lihat [65]). Secara khusus, kami memverifikasi bahwa titik-titik yang berjalin tidak pernah berselisih dan, dalam kondisi yang dibahas di bawah, setiap anggota himpunan utuh pada akhirnya memutuskan. Menariknya, verifikasi mengungkapkan bahwa kondisi di mana SCP menjamin keaktifan sangat halus, dan lebih kuat dari perkiraan awal [68]: seperti dibahas di bawah, node jahat yang memanipulasi waktu tanpa melakukan sebaliknya menyimpang dari protokol mungkin perlu diusir secara manual dari irisan kuorum.

SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Untuk memastikan bahwa properti terbukti tahan di semua kemungkinan Konfigurasi dan eksekusi FBA, kami anggap sewenang-wenang jumlah node dengan konfigurasi lokal sewenang-wenang. Ini mencakup skenario dengan rangkaian utuh yang terputus-putus, serta kemungkinan eksekusi yang sangat lama. Kekurangannya adalah kita menghadapi masalah yang menantang dalam memverifikasi parameterisasi sistem keadaan tak terbatas. Agar verifikasi tetap dapat dilakukan, kami memodelkan SCP dalam logika orde pertama (FOL) menggunakan Ivy [69] dan metodologi [82]. Proses verifikasi terdiri dari penyediaan dugaan induktif secara manual yang kemudian diperiksa secara otomatis ivy. Model FOL dari SCP mengabstraksi beberapa aspek Sistem FBA yang sulit ditangani di FOL (mis., teorema cascade diambil sebagai aksioma), jadi kami memverifikasi kesehatan abstraksi menggunakan Isabelle/HOL [75]. Setelah mengungkapkan masalah verifikasi di FOL, kami memverifikasi keamanan dengan menyediakan invarian induktif. Yang induktif invarian terdiri dari selusin dugaan satu baris untuk kira-kira 150 baris spesifikasi protokol. Kami kemudian menentukan properti keaktifan SCP dalam Logika Temporal Linier Ivy dan menggunakan keaktifan terhadap pengurangan keamanan [80, 81] untuk mengurangi keaktifan masalah verifikasi ke masalah menemukan induktif invarian. Meskipun keamanan SCP relatif mudah Buktikan, argumen keaktifan SCP jauh lebih rumit dan rumit terdiri dari sekitar 150 invarian garis tunggal. Membuktikan keaktifan memerlukan formalisasi yang tepat asumsi di mana SCP memastikan penghentian. Kami awalnya mengira set utuh akan selalu saya hentikan jika semuanya anggota menghapus node yang salah dari irisan mereka [68]. Namun, hal ini ternyata belum cukup: seorang yang berperilaku baik (tetapi tidak utuh) simpul dalam kuorum anggota I bisa, berdasarkan pengaruh node yang salah, cegah penghentian dengan menyelesaikan kuorum tepat sebelum berakhirnya pemungutan suara, sehingga menyebabkan anggota I untuk memilih nilai x yang berbeda pada pemungutan suara berikutnya. Oleh karena itu, kita juga harus berasumsi bahwa, secara informal, setiap node dalam kuorum anggota I pada akhirnya juga menjadi tepat waktu atau tidak mengirim pesan sama sekali untuk jangka waktu yang cukup. Dalam praktiknya, ini berarti anggota I boleh perlu menyesuaikan irisannya hingga kondisinya bertahan. Ini masalah ini tidak melekat pada sistem FBA: Losa dkk. [47] hadir sebuah protokol yang keberlangsungannya bergantung pada pihak yang lebih lemah asumsi hanya sinkronisasi dan pemilihan pemimpin pada akhirnya, tanpa perlu menghapus node yang salah dari irisan.

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.

Jaringan pembayaran

Bagian ini menjelaskan jaringan pembayaran Stellar, diimplementasikan sebagai mesin negara yang direplikasi [88] di atas SCP. 5.1 Model buku besar Buku besar Stellar dirancang berdasarkan abstraksi akun (dalam kontras dengan keluaran transaksi tak terpakai yang lebih berpusat pada koin atau UTXO model Bitcoin). Isi buku besar terdiri dari a kumpulan entri buku besar dari empat jenis berbeda: akun, garis kepercayaan, penawaran, dan data akun. Akun adalah prinsipal yang memiliki dan menerbitkan aset. Masing-masing akun diberi nama dengan kunci publik. Secara default, kunci pribadi yang sesuai dapat menandatangani transaksi untuk akun tersebut. Namun, akun dapat dikonfigurasi ulang untuk menambahkan penanda tangan lain dan membatalkan otorisasi kunci yang memberi nama akun tersebut, dengan a Opsi "multisig" yang memerlukan banyak penandatangan. Setiap akun juga berisi: nomor urut (termasuk dalam transaksi untuk mencegah pemutaran ulang), beberapa tanda, dan keseimbangan dalam “asli” cryptocurrency yang telah ditambang sebelumnya disebut XLM, dimaksudkan untuk melakukan mitigasi beberapa serangan penolakan layanan dan memfasilitasi pembuatan pasar sebagai mata uang netral. Trustlines melacak kepemilikan aset yang diterbitkan, yaitu diberi nama oleh pasangan yang terdiri dari akun penerbit dan short kode aset (misalnya, “USD” atau “EUR”). Setiap garis kepercayaan menentukan akun, aset, saldo akun dalam aset itu, a batas di mana saldo tidak dapat naik, dan beberapa bendera. Sebuah akun harus secara eksplisit menyetujui untuk memegang aset menciptakan garis kepercayaan, mencegah pelaku spam membebani akun dengan aset yang tidak diinginkan. Peraturan kenali pelanggan Anda (KYC) mengharuskan banyak lembaga keuangan mengetahui simpanan siapa yang mereka simpan, misalnya dengan memeriksa foto ID. Untuk mematuhinya, emiten dapat mengatur tanda auth_reqired opsional pada akun mereka, yang membatasi kepemilikan aset yang mereka keluarkan ke akun resmi. Untuk memberikan otorisasi tersebut, penerbit menetapkan otorisasi menandai garis kepercayaan pelanggan. Penawaran sesuai dengan kesediaan akun untuk berdagang ke sejumlah tertentu suatu aset tertentu untuk aset lain pada waktu tertentu harga di buku pesanan; mereka secara otomatis dicocokkan dan terisi ketika harga beli/jual bersilangan. Terakhir, data akun terdiri dari akun, kunci, nilai tiga kali lipat, yang memungkinkan pemegang akun untuk mempublikasikan nilai metadata kecil. Untuk mencegah spam ledger, ada minimal saldo XLM, disebut cadangan. Cadangan akun meningkat setiap kali entri buku besar terkait dan berkurang ketika entri buku besar menghilang (misalnya, ketika pesanan dipenuhi atau dibatalkan, atau ketika a garis kepercayaan dihapus). Saat ini cadangan tumbuh sebesar 0,5 XLM (∼$0,03) per entri buku besar. Terlepas dari cadangannya, itu benar mungkin untuk mendapatkan kembali seluruh nilai akun dengan menghapus dengan operasi AccountMerge. Header buku besar, yang ditunjukkan pada Gambar 3, menyimpan atribut global: nomor buku besar, parameter seperti saldo cadangan per entri buku besar, hash dari header buku besar sebelumnya (sebenarnya beberapa hashes membentuk daftar yang dilewati), keluaran SCP termasuk hash transaksi baru yang diterapkan di buku besar ini, hash dari hasil transaksi tersebut (misalnya, keberhasilan atau kegagalan untuk masing-masing), dan cuplikan hash dari semua entri buku besar. Karena snapshot hash mencakup semua isi buku besar, validators tidak perlu menyimpan riwayat untuk memvalidasi transaksi. Namun, untuk mencapai ratusan juta diantisipasi akun, kami tidak dapat hash semua tabel entri buku besar pada setiap tabel buku besar ditutup. Selain itu, tidak praktis untuk mentransfer buku besarPembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada buku besar # = 4 H(sebelumnya hdr) keluaran SCP H∗(hasil) H∗(potret) ... tajuk buku besar # = 5 H(sebelumnya hdr) keluaran SCP H∗(hasil) H∗(potret) ... tajuk . . . Gambar 3. Isi buku besar. H adalah SHA-256, sedangkan H ∗ mewakili penerapan hierarki atau rekursif dari keluaran H. SCP juga tergantung header sebelumnya hash. Buat Akun Membuat dan mendanai entri buku besar akun baru Penggabungan Akun Hapus entri buku besar akun Set Opsi Ubah tanda dan penandatangan akun Pembayaran Bayar sejumlah aset tertentu ke tujuan. menurut. Pembayaran Jalur Suka Pembayaran, tetapi bayar dalam aset berbeda (naik untuk membatasi); tentukan hingga 5 aset perantara Kelola Penawaran Membuat/menghapus/mengubah entri buku besar penawaran, -Penawaran Pasif dengan varian pasif untuk memungkinkan penyebaran nol KelolaData Buat/hapus/ubah akun. entri buku besar data Ubah Kepercayaan Buat/hapus/ubah garis kepercayaan Izinkan Kepercayaan Setel atau hapus tanda resmi pada trustline Urutan Benjolan Tingkatkan urutan. nomor di akun Gambar 4. Operasi buku besar utama sebesar itu setiap kali sebuah node terputus jaringan terlalu lama. Oleh karena itu, snapshot hash adalah dirancang untuk mengoptimalkan hashing dan rekonsiliasi negara. Secara khusus, snapshot mengelompokkan entri buku besar berdasarkan waktu modifikasi terakhir dalam satu set wadah berukuran eksponensial disebut ember. Kumpulan ember disebut ember list, dan memiliki kemiripan dengan pohon gabungan berstruktur log (Pohon LSM) [77]. Daftar keinginan tidak dibaca selama pemrosesan transaksi (lihat Bagian 5.4). Oleh karena itu, desain tertentu aspek pohon LSM bisa dilonggarkan. Khususnya, acak akses dengan kunci tidak diperlukan, dan keranjang hanya dibaca secara berurutan sebagai bagian dari penggabungan level. Hashing ember list dilakukan dengan hashing setiap keranjang saat digabungkan dan menghitung hash kumulatif baru dari keranjang hashes (kecil, indeks referensi tetap hashes) pada setiap penutupan buku besar. Rekonsiliasi daftar keinginan setelah pemutusan sambungan memerlukan pengunduhan hanya ember yang berbeda. 5.2 Model transaksi Suatu transaksi terdiri dari akun sumber, kriteria validitas, a memo, dan daftar satu atau lebih operasi. Gambar 4 mencantumkan operasi yang tersedia. Setiap operasi memiliki akun sumber, yang mana default terhadap keseluruhan transaksi. Sebuah transaksi harus ditandatangani dengan kunci yang sesuai dengan setiap akun sumber di sebuah operasi. Akun multisig memerlukan penandatanganan yang lebih tinggi bobot untuk beberapa operasi (seperti SetOptions) dan lebih rendah untuk yang lain (seperti AllowTrust). Transaksi bersifat atomik—jika ada operasi yang gagal, tidak ada satu pun yang gagal mereka mengeksekusi. Ini menyederhanakan kesepakatan multi-arah. Misalkan sebuah penerbit membuat aset untuk mewakili akta tanah, dan pengguna A ingin menukar sebidang tanah kecil ditambah $10.000 dengan a sebidang tanah yang lebih besar milik B. Kedua pengguna dapat sama-sama menandatangani satu transaksi yang berisi tiga operasi: dua tanah pembayaran dan pembayaran satu dolar. Kriteria validitas utama suatu transaksi adalah nomor urutnya, yang harus lebih besar satu daripada nomor urut transaksi entri buku besar akun sumber. Menjalankan transaksi yang valid (berhasil atau tidak) menambah nomor urut, mencegah pemutaran ulang. Nomor urut awal berisi buku besar nomor dalam bit tinggi untuk mencegah pemutaran ulang bahkan setelah penghapusan dan membuat ulang akun. Kriteria validitas lainnya adalah batasan opsional kapan suatu transaksi dapat dijalankan. Kembali ke tanah dan dolar swap di atas, jika A menandatangani transaksi sebelum B, A tidak boleh ingin B melakukan transaksi selama setahun sebelum mengajukan itu, sehingga dapat menetapkan batas waktu yang membatalkan transaksi setelah beberapa hari. Akun multisig juga dapat dikonfigurasi untuk memberi bobot penandatanganan pada pengungkapan gambar awal hash, yang, dikombinasikan dengan batas waktu, memungkinkan perdagangan lintas rantai atom [1]. Akun sumber transaksi membayar sedikit biaya di XLM, 10−5 XLM kecuali terjadi kemacetan. Di bawah kemacetan, itu biaya operasi ditentukan oleh lelang Belanda. Validator adalah tidak dikompensasi dengan biaya karena validator serupa ke Bitcoin node penuh, bukan penambang. Daripada menghancurkan XLM, biaya didaur ulang dan didistribusikan secara proporsional melalui pemungutan suara pemegang XLM yang ada, yang jika dipikir-pikir mungkin atau mungkin tidak sebanding dengan kerumitannya. 5.3 Nilai-nilai konsensus Untuk setiap buku besar, Stellar menggunakan SCP untuk menyetujui struktur data dengan tiga bidang: kumpulan transaksi hash (termasuk hash dari header buku besar sebelumnya), waktu tutup, and peningkatan. Ketika beberapa nilai dikonfirmasi dinominasikan, Stellar mengambil kumpulan transaksi dengan operasi terbanyak (memutus ikatan berdasarkan total biaya, maka transaksi ditetapkan hash), gabungan semuanya peningkatan, dan waktu penutupan tertinggi. Waktu dekat saja valid jika berada di antara waktu penutupan buku besar terakhir dan hadir, sehingga node tidak mencalonkan waktu yang tidak valid. Peningkatan menyesuaikan parameter global seperti saldo cadangan, biaya operasi minimum, dan versi protokol. Kapan digabungkan selama pencalonan, biaya yang lebih tinggi dan nomor versi protokol menggantikan biaya yang lebih rendah. Peningkatan ini berdampak pada tata kelola melalui ruang pertarungan pemungutan suara gabungan [34], tidak juga egaliter dan tidak terpusat. Setiap validator dikonfigurasi sebagai baik yang mengatur atau tidak mengatur (default), menurut apakah operatornya ingin berpartisipasi dalam tata kelola. Mengatur validators mempertimbangkan tiga jenis peningkatan: diinginkan, valid, dan tidak valid (apa pun yang validator tidak

SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. validator inti cakrawala FS DB DB menyerahkan klien klien validator lainnya Gambar 5. Arsitektur Stellar validator tahu bagaimana menerapkannya). Peningkatan yang diinginkan dikonfigurasikan ke pemicu pada waktu tertentu, dimaksudkan untuk dikoordinasikan antar operator. Node yang mengatur selalu memilih untuk mencalonkan yang diinginkan peningkatan, terima tetapi jangan memilih untuk mencalonkan peningkatan yang valid (yaitu, ikut serta dalam kuorum pemblokiran), dan jangan pernah memilih atau menerima peningkatan yang tidak valid. Gema validator yang tidak mengatur setiap suara yang mereka lihat untuk peningkatan yang valid, pada dasarnya mendelegasikan keputusan tentang peningkatan apa yang diinginkan bagi mereka yang memilih untuk peran tata kelola. 5.4 Implementasi Gambar 5 menunjukkan arsitektur validator Stellar. Sebuah dasmon disebut stellar-core (∼92k baris C++, tidak termasuk perpustakaan pihak ketiga) mengimplementasikan protokol SCP dan mesin negara yang direplikasi. Menghasilkan nilai untuk SCP memerlukan pengurangan sejumlah besar entri buku besar menjadi kriptografi kecil hashes. Sebaliknya, validasi dan eksekusi transaksi memerlukan pencarian status akun dan pencocokan pesanan di harga terbaik. Untuk menjalankan kedua fungsi secara efisien, inti yang luar biasa menyimpan dua representasi buku besar: representasi eksternal yang berisi daftar keinginan, disimpan sebagai file biner yang dapat diperbarui secara efisien dan diperbarui secara bertahap, dan representasi internal dalam database SQL (PostgreSQL untuk node produksi). Stellar-core membuat arsip riwayat hanya tulis yang berisi setiap kumpulan transaksi yang dikonfirmasi dan cuplikannya ember. Arsip ini memungkinkan node baru melakukan bootstrap sendiri saat bergabung dengan jaringan. Ini juga menyediakan catatan buku besar sejarah—perlu ada suatu tempat yang dapat dicari transaksi dari dua tahun lalu. Karena riwayat hanya bersifat tambahan dan jarang diakses, dapat disimpan di tempat yang murah seperti Amazon Glacier atau layanan apa pun yang mengizinkan seseorang untuk menyimpan dan mengambil file datar. Host validator biasanya tidak menghosting arsip mereka sendiri untuk menghindari dampak apa pun pada validasi kinerja dari melayani sejarah. Untuk menjaga agar inti bintang tetap sederhana, ini tidak dimaksudkan untuk digunakan langsung melalui aplikasi dan hanya memperlihatkan antarmuka yang sangat sempit untuk pengajuan transaksi baru. Untuk mendukung klien, sebagian besar validator menjalankan daemon bernama horizon (∼18k baris Go) yang menyediakan antarmuka HTTP untuk pengiriman dan pembelajaran transaksi. horizon memiliki akses hanya baca database SQL stellar-core, meminimalkan risiko horizon mendestabilisasi inti bintang. Fitur-fitur seperti pencarian jalur pembayaran diterapkan sepenuhnya dan dapat ditingkatkan secara sepihak tanpa berkoordinasi dengan validators lainnya. Beberapa daemon opsional pada lapisan yang lebih tinggi adalah klien yang harus dicakup, melengkapi ekosistem. Server jembatan memfasilitasi integrasi Stellar dengan sistem yang ada, misalnya memposting pemberitahuan semua pembayaran yang diterima oleh akun tertentu. SEBUAH server kepatuhan memberikan kaitan bagi lembaga keuangan untuk melakukannya menukar dan menyetujui informasi pengirim dan penerima tentang pembayaran, untuk mematuhi daftar sanksi. Akhirnya, server federasi mengimplementasikan penamaan yang dapat dibaca manusia sistem untuk akun. 6 Pengalaman penerapan Stellar tumbuh selama beberapa tahun menjadi keadaan yang moderat sejumlah operator node penuh yang cukup andal. Namun, Konfigurasi node sedemikian rupa sehingga hidup (meskipun tidak keselamatan) bergantung pada kami, Stellar Development Foundation (SDF); seandainya SDF tiba-tiba menghilang, operator node lainnya perlu campur tangan dan menghapus kami secara manual dari potongan kuorum agar jaringan dapat melanjutkan. Meskipun kami dan banyak pihak lain ingin mengurangi kepentingan sistemik SDF, tujuan ini semakin mendapat prioritas setelahnya peneliti [58] mengukur dan mempublikasikan sentralisasi jaringan tanpa membedakan risiko terhadap keselamatan dan keaktifan. Sejumlah operator bereaksi dengan penyesuaian konfigurasi aktif, terutama meningkatkan ukurannya kuorum dalam upaya melemahkan pentingnya SDF; ironisnya hal ini hanya meningkatkan risiko terhadap nyawa. Ada dua masalah yang memperburuk situasi. Pertama, yang populer alat pemantauan Stellar pihak ketiga [5] dilakukan secara sistematis melebih-lebihkan waktu aktif validator dengan tidak benar-benar memverifikasi inti bintang itu sedang berjalan; hal ini menyebabkan orang-orang ikut serta node yang tidak dapat diandalkan dalam irisan kuorumnya. Kedua, ada bug di dalamnya stellar-core berarti setelah validator dipindahkan ke buku besar berikutnya, itu tidak cukup membantu node yang tersisa menyelesaikan yang sebelumnyabuku besar kami jika terjadi pesan yang hilang. Akibatnya, jaringan mengalami downtime selama 67 menit dan diperlukan koordinasi manual oleh validator administrator untuk memulai kembali. Lebih buruk lagi, ketika mencoba memulai ulang jaringan, terjadi konfigurasi ulang yang terburu-buru secara bersamaan pada beberapa node dalam kesalahan konfigurasi kolektif yang memungkinkan beberapa node melakukannya menyimpang, membutuhkan penutupan manual dari node tersebut dan penyerahan kembali transaksi yang diterima selama divergensi. Untungnya, perbedaan ini dapat ditangkap dan diperbaiki cepat dan tidak mengandung transaksi yang bertentangan, tetapi risiko jaringan gagal mencapai kuorum persimpangan— perpecahan sambil terus menerima potensi konflik transaksi, hanya karena kesalahan konfigurasi—terjadi sangat konkrit dengan kejadian ini. Meninjau pengalaman-pengalaman ini menghasilkan dua kesimpulan utama dan tindakan perbaikan yang sesuai.Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Kritis, 100% 51% 51% Tinggi, 67% 51% Sedang, 67% 51% Rendah, 67% 51% 51% ... ... ... 51% ... 51% Gambar 6. Hierarki kualitas validator. Node dengan kualitas terbaik memerlukan ambang batas tertinggi 100%, sedangkan kualitas yang lebih rendah dikonfigurasikan ke ambang batas 67%. Node dalam satu organisasi memerlukan mayoritas sederhana 51%. 6.1 Kompleksitas dan kerapuhan konfigurasi Stellar menyatakan irisan kuorum sebagai kumpulan kuorum bersarang yang terdiri dari n entri dan ambang batas k di mana setiap kumpulan k entri merupakan bagian kuorum. Masing-masing dari n entri adalah salah satunya kunci publik validator atau, secara rekursif, kumpulan kuorum lainnya. Meskipun fleksibel dan kompak, kami mewujudkan kuorum bertingkat set secara bersamaan memberi operator node terlalu banyak fleksibilitas dan terlalu sedikit panduan: mudah untuk menulis tidak aman (atau bahkan tidak masuk akal). Kriteria pengelompokan node menjadi set, untuk mengatur subset ke dalam hierarki, dan pemilihan ambang batas tidak cukup jelas dan berkontribusi terhadap kegagalan operasional. Tidak jelas apakah akan melakukannya memperlakukan "level" dalam hierarki kumpulan bersarang sebagai tingkat kepercayaan, atau suatu organisasi, atau keduanya; banyak konfigurasi di lapangan mencampuradukkan konsep-konsep ini, selain menentukan berbahaya atau ambang batas yang tidak berarti. Oleh karena itu kami menambahkan mekanisme konfigurasi yang lebih sederhana yang memisahkan dua aspek kumpulan kuorum bertingkat: pengelompokan node bersama-sama berdasarkan organisasi, dan memberi label pada setiap organisasi dengan klasifikasi kepercayaan sederhana (rendah, sedang, tinggi, atau kritis). Organisasi yang berada pada level tinggi dan di atasnya diharuskan untuk melakukan hal tersebut mempublikasikan arsip sejarah. Sistem baru ini mensintesis kumpulan kuorum bersarang di mana setiap organisasi direpresentasikan sebagai a Ambang batas 51% ditetapkan, dan organisasi dikelompokkan ke dalam beberapa set dengan ambang batas 67% atau 100% (tergantung kualitas kelompok). Setiap grup adalah satu entri di grup berikutnya (berkualitas lebih tinggi), seperti yang diilustrasikan pada Gambar 6. Model yang disederhanakan ini mengurangi kemungkinan kesalahan konfigurasi, baik dari segi struktur dari himpunan bersarang yang disintesis dan ambang batas yang dipilih setiap set. 6.2 Deteksi kesalahan konfigurasi secara proaktif Kedua, kami menyadari bahwa mendeteksi kesalahan konfigurasi kolektif dengan menunggu untuk mengamati dampak negatifnya sudah terlambat. Terutama sehubungan dengan kesalahan konfigurasi yang dapat menyimpang—a mode kegagalan yang lebih serius daripada penghentian—yang dibutuhkan jaringan agar dapat segera mendeteksi kesalahan konfigurasi sehingga operator dapat mengembalikannya sebelum terjadi divergensi. Untuk mengatasi kebutuhan ini, kami membangun mekanisme ke dalam perangkat lunak validator yang secara terus-menerus mengumpulkan status konfigurasi kolektif dari semua rekan dalam penutupan transitif node dan mendeteksi potensi divergensi—yaitu, disjoint kuorum—dalam konfigurasi kolektif itu. 6.2.1 Memeriksa persimpangan kuorum Meskipun mengumpulkan bagian kuorum itu mudah, menemukan kuorum yang terpisah di antara mereka adalah hal yang sulit [62]. Namun, kami mengadopsinya seperangkat heuristik algoritmik dan aturan eliminasi kasus diusulkan oleh Lachowski [62] yang memeriksa contoh umum dari masalah beberapa kali lipat lebih cepat dari biaya kasus terburuk. Secara praktis, jaringan saat ini penutupan transitif irisan kuorum berada di urutan 20–30 node dan, dengan optimasi Lachowski, biasanya memeriksa dalam hitungan detik pada satu CPU. Jika diperlukan untuk meningkatkan kinerja, kami dapat memparalelkan pencarian. 6.2.2 Memeriksa konfigurasi berisiko Mendeteksi bahwa jaringan mengakui kuorum yang terpisah adalah sebuah langkah ke arah yang benar, namun terlambat menandai bahaya untuk masalah kritis seperti itu. Idealnya, kami ingin operator node menerima peringatan saat konfigurasi kolektif jaringan hanya mendekati keadaan berisiko. Oleh karena itu, kami memperluas pemeriksaan kuorum persimpangan untuk mendeteksi suatu kondisi kita sebut kekritisan: ketika arus konfigurasi kolektif hanya berjarak satu kesalahan konfigurasi negara bagian yang mengakui kuorum yang terpisah. Untuk mendeteksi kekritisan, pemeriksa berulang kali mengganti konfigurasi masing-masing organisasi dengan simulasi kesalahan konfigurasi kasus terburuk menjalankan kembali pemeriksa persimpangan kuorum dalam pada hasilnya. Jika ada kesalahan konfigurasi kritis yang terjadi, tinggal selangkah lagi dari keadaan saat ini, perangkat lunak mengeluarkan peringatan dan melaporkan organisasi yang mempunyai risiko kesalahan konfigurasi. Perubahan ini memberikan komunitas operator dua lapisan pemberitahuan dan panduan untuk melindungi dari bentuk-bentuk terburuk kesalahan konfigurasi kolektif.

Auswertung

Stellar network quorum slice map showing validator nodes and their bidirectional dependencies

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.

Evaluasi

Stellar network quorum slice map showing validator nodes and their bidirectional dependencies

Untuk memahami kesesuaian Stellar sebagai pembayaran global dan jaringan perdagangan, kami mengevaluasi keadaan jaringan publik dan menjalankan eksperimen terkontrol pada eksperimen pribadi jaringan. Kami fokus pada pertanyaan-pertanyaan berikut: • Seperti apa topologi jaringan produksinya? Berapa rata-rata pesan yang disiarkan, dan bagaimana SCP mengalami timeout? • Apakah latensi pembaruan konsensus dan buku besar tetap independen terhadap jumlah akun?SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. • Bagaimana latensi dipengaruhi oleh peningkatan (a) transaksi per detik (dan, akibatnya, transaksi per buku besar), dan (b) jumlah validator node? • Berapa biaya menjalankan sebuah node dalam kaitannya dengan CPU, memori, dan bandwidth jaringan? Jaringan pembayaran memiliki tingkat transaksi yang rendah dibandingkan ke jenis sistem terdistribusi lainnya. blockchains terkemuka, Bitcoin dan Ethereum, konfirmasi hingga 15 transaksi/detik, kurang dari Stellar. Selain itu, sistem ini memerlukan waktu beberapa menit untuk melakukannya satu jam untuk mengonfirmasi transaksi dengan aman, karena bukti kerja memerlukan menunggu beberapa blok untuk ditambang. Itu jaringan SWIFT non-blockchain rata-rata hanya melakukan 420 transaksi per detik pada hari puncaknya [14]. Oleh karena itu kami memilih untuk membandingkan pengukuran kami dengan target 5 detik interval buku besar, target yang lebih agresif. Hasil kami menunjukkan bahwa latensi masih berada di bawah batas ini beberapa pengoptimalan yang belum diterapkan masih dalam proses. 7.1 Jangkar Aset yang paling banyak diperdagangkan berdasarkan volume mencakup mata uang (misalnya, 3 USD jangkar, 2 CNY), jangkar Bitcoin, keamanan yang didukung real estat token [92], dan mata uang dalam aplikasi [8]. Jangkar yang berbeda memiliki kebijakan yang berbeda. Misalnya, satu jangkar USD, Stronghold, menetapkan auth_reqired dan memerlukan proses kenali pelanggan Anda (KYC) untuk setiap akun yang memilikinya aset. Lainnya, AnchorUSD, memungkinkan siapa pun menerima dan berdagang USD mereka (sehingga memungkinkan untuk mengirim $0,50 ke Meksiko dalam 5 detik dengan biaya $0,000001). Namun, JangkarUSD memang memerlukan KYC dan biaya untuk membeli atau menebus USD mereka dengan transfer kawat konvensional. Di Filipina, di mana peraturan bank lebih longgar untuk pembayaran masuk,coin.ph mendukung pencairan PHP di mesin ATM mana pun [36]. Selain token keamanan yang disebutkan di atas dan mata uang dalam aplikasi, terdapat berbagai token non-mata uang mulai dari obligasi komersial [22] dan kredit karbon [85, 96] dan lebih banyak lagi aset esoteris seperti token yang memberikan insentif kolaboratif penarikan kembali mobil [35]. 7.2 Jaringan publik Saat tulisan ini dibuat, terdapat 126 full node yang aktif, 66 di antaranya berpartisipasi dalam konsensus dengan menandatangani pesan suara. Gambar 7 (dihasilkan oleh [5]) memvisualisasikan jaringan, dengan garis di antaranya dua node jika salah satu muncul di bagian kuorum yang lain dan a garis biru gelap untuk menunjukkan ketergantungan dua arah. Di center adalah sekelompok 17 “tingkat satu validators” de facto yang dijalankan oleh SDF, SatoshiPay, LOBSTR, COINQVEST, dan Keybase. Empat bulan lalu, sebelum peristiwa Bagian 6, disana ada 15 node yang penting secara sistemik: 3 dari yang tampaknya organisasi tingkat satu dan beberapa lajang acak. Itu grafik juga terlihat kurang teratur. Oleh karena itu, nampaknya mekanisme konfigurasi baru dan/atau keputusan operator yang lebih baik untuk berkontribusi pada topologi jaringan yang lebih sehat. Tanpa sumber daya keuangan yang besar (dan pemegang saham terkait Gambar 7. Peta irisan kuorum kewajiban), akan sulit untuk merekrut 5 tingkat satu organisasi sejak awal. Hal ini menunjukkan kuorum irisan memainkan peran yang berguna dalam bootstraping jaringan: siapa pun bisa bergabung dengan tujuan menjadi pemain penting karena tidak ada penjaga gerbang untuk kesepakatan berpasangan. Saat ini ada lebih dari 3,3 juta akun di buku besar. Selesai periode 24 jam terakhir, Stellar rata-rata 4,5 transaksi dan 15,7 operasi per detik. Meninjau buku besar terbaru, sebagian besar transaksi tampaknya memiliki satu operasi, sementara setiap beberapa operasi di buku besar kita melihat transaksi yang berisi banyak operasi itu tampaknya berasal dari pembuat pasar yang mengelola penawaran. Itu waktu yang berarti untuk mencapai konsensus dan memperbarui buku besar 1061 ms dan 46 ms, masing-masing. Persentil ke-99 adalah 2252 mdtk dan 142 mdtk (yang pertama mencerminkan batas waktu 1 detik dalam pemilihan pemimpin nominasi). Catatan kinerja SCP adalah sebagian besar tidak bergantung pada transaksi per detik, sejak SCP menyetujui hash dari banyak transaksi yang sewenang-wenang. Kemacetan lebih besar kemungkinannya timbul dari pencalonan calon transaksi selama nominasi, pelaksanaan dan validasi transaksi, dan menggabungkan keranjang. Kami belum membutuhkannya untuk memparalelkan pemrosesan transaksi stellar-core pada beberapa inti CPU atau drive disk. Kami juga mengevaluasi jumlah pesan SCP yang disiarkan pada jaringan produksi. Dalam kasus normal dengan satu pemimpin terpilih untuk mencalonkan suatu nilai, kami mengharapkan tujuh logis pesan yang akan disiarkan: dua pesan untuk dipilih dan diterima seorang nomipernyataan nate, dua pesan untuk diterima dan dikonfirmasi pernyataan persiapan, dua pesan untuk diterima dan dikonfirmasi pernyataan komit, dan terakhir, pesan eksternalisasi (dikirim setelah melakukan buku besar baru ke disk untuk membantu orang yang tersesat mengejar ketinggalan). Implementasinya menggabungkan konfirmasi komit dan mengeksternalisasikan pesan sebagai optimasi, sebagaimana adanya aman untuk mengeksternalisasi suatu nilai setelah dikomit. Kami kemudian menganalisis metrik yang dikumpulkan pada Stellar validator produksi. Selesai selama 68 jam, 1,3 pesan/detik dikirimkan, rata-rata 6-7 pesan per buku besar. Kami mencatat bahwa totalnya

Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Persentil Jumlah Batas Waktu Nominasi Pemungutan suara 75% 0 0 99% 1 0 Maks 4 1 Gambar 8. Batas waktu per buku besar selama 68 jam jumlah pesan yang disiarkan oleh validators lebih besar, sejak di selain pesan pemungutan suara gabungan, node juga menyiarkan transaksi apa pun yang mereka pelajari. Gambar 8 menunjukkan batas waktu yang dialami oleh suatu produksi validator selama jangka waktu 68 jam. Batas waktu nominasi adalah ukuran (tidak)efektifnya fungsi pemilihan pemimpin, sementara waktu tunggu pemungutan suara sangat bergantung pada jaringan dan potensi penundaan pesan. Batas waktunya konsisten dengan jumlah pesan yang dipancarkan: enam pesan di skenario kasus terbaik, dan setidaknya tujuh pesan jika putaran nominasi tambahan diperlukan. 7.3 Eksperimen terkontrol Kami menjalankan eksperimen terkontrol dalam wadah yang dikemas Instans Amazon EC2 c5d.9xlarge dengan RAM 72 GiB, NVMe SSD 900 GB, dan 36 vCPU. Setiap contoh ada di wilayah EC2 yang sama dan memiliki bandwidth tetap 10 Gbps. Kami menggunakan SQLite sebagai toko. (Stellar juga mendukung PostgreSQL, tapi itu memiliki tugas asinkron yang memasukkan kebisingan ke dalam pengukuran.) Stellar menyediakan kueri runtime bawaan, generateload, yang memungkinkan menghasilkan beban sintetis pada target tertentu transaksi/kurs kedua. Meskipun Stellar mendukung beragam fitur perdagangan, seperti buku pesanan dan jalur lintas aset pembayaran, kami fokus pada pembayaran sederhana. Mengonfirmasi transaksi terdiri dari beberapa langkah, jadi kami mencatat pengukuran untuk setiap hal berikut: • Nominasi: waktu dari nominasi hingga persiapan pertama • Pemungutan suara: waktu dari persiapan pertama hingga pengukuhan a pemungutan suara dilakukan • Pembaruan buku besar: saatnya menerapkan nilai konsensus • Jumlah transaksi: transaksi terkonfirmasi per buku besar Setiap eksperimen kami ditentukan oleh tiga parameter: jumlah entri akun dalam buku besar, jumlah beban (berupa pembayaran XLM) yang dikirimkan per detik, dan jumlah validators. Kami mengonfigurasi setiap validator untuk mengetahui tentang setiap validator lainnya (skenario terburuk untuk SCP), dengan potongan kuorum ditetapkan ke mayoritas sederhana node (untuk memaksimalkan jumlah kuorum yang berbeda). Dasar Eksperimen dasar kami mengukur Stellar dengan 100.000 akun, empat validator, dan pembuatan beban kecepatan 100 transaksi/detik. Kami mengamati rata-rata 507 transaksi per buku besar, dengan deviasi standar 49 (9,7%). Perhatikan bahwa tidak ada transaksi yang dibatalkan; sedikit 105 106 107 0 500 1.000 1.500 2.000 Akun Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 9. Latensi seiring bertambahnya jumlah akun varians disebabkan oleh keterbatasan penjadwalan generator beban. Kami mengamati bahwa jumlah transaksi per buku besar konsisten dengan tingkat pembangkitan beban kami, berdasarkan buku besar menutup setiap 5 detik. Nominasi, pemungutan suara, dan buku besar pembaruan menunjukkan latensi rata-rata 82,53 ms, 95,96 ms, dan 174,08 ms, masing-masing. Kami mengamati latensi nominasi tersebut Persentil ke-99 secara konsisten berada di bawah 61 md, dan kadang-kadang lonjakan sekitar 1 detik, sesuai dengan langkah pertama dalam fungsi batas waktu pemilihan pemimpin. Mengingat kinerja dasar, kami melihat dampaknya memvariasikan setiap parameter pengaturan pengujian. Akun Data pada Gambar 9 menunjukkan bahwa skala Stellar serta jumlah akun bertambah. Generasi tes akun menjadi proses yang panjang, seiring pembuatan keranjang dan penggabungan mencegah kami untuk sekadar mengisi database dengan akun langsung melalui SQL. Oleh karena itu, kami melakukan eksperimen hingga 50.000.000 akun. Selagi ada dampak minimal pada konsensus dan latensi pembaruan buku besar, kami mencatat bahwa peningkatan akun menciptakan overhead sebesar menggabungkan ember, yang menjadi lebih besar. Tingkat transaksi Tingkat transaksi mempengaruhi jumlah lalu lintas multicast di antara validators, jumlah transaksi yang termasuk dalam setiap buku besar, dan ukuran tingkat teratas ember. Untuk memahami dampak peningkatan transaksi memuat, kami menjalankan eksperimen dengan 100.000 akun dan 4 validators. Gambar 10 menunjukkan pertumbuhan latensi konsensus yang lambat, sementara sebagian besar waktu dihabiskan untuk memperbarui buku besar. Tidak mengherankan, seiring bertambahnya ukuran kumpulan transaksi membutuhkan waktu lebih lama untuk mengkomitnya ke database. Kami juga mencatat itu latensi pembaruan buku besar sangat bergantung pada implementasi, dan dipengaruhi oleh pilihan database. Node validator Untuk melihat seberapa meningkat jumlah tierone validatorsmemengaruhi kinerja, kami menjalankan eksperimen dengan 100.000 akun, 100 transaksi/detik, dan jumlah validator yang bervariasi dari 4 hingga 43. Semua validator muncul di seluruh kuorum validators; irisan kuorum yang lebih kecil akan melakukannya memiliki dampak yang lebih kecil terhadap kinerja.SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Muat [transaksi/detik] Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 10. Latensi seiring meningkatnya beban transaksi 10 20 30 40 0 500 1.000 1.500 2.000 Validator Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 11. Latensi seiring bertambahnya jumlah node Mengubah jumlah node validasi di jaringan berdampak pada jumlah pesan SCP yang dipertukarkan juga jumlah nilai potensial selama nominasi. Gambar 11 menunjukkan waktu nominasi meningkat pada tingkat yang relatif kecil. Meskipun data menunjukkan bahwa pemungutan suara adalah hambatannya, kami percaya bahwa banyak masalah penskalaan dapat diatasi dengan melakukan perbaikan Jaringan overlay Stellar untuk mengoptimalkan lalu lintas jaringan. Sebagai diharapkan, latensi pembaruan buku besar tetap independen jumlah node. Tingkat penutupan Terakhir, kami ingin mengukur kinerja end-to-end Stellar dengan mengukur seberapa sering buku besar dikonfirmasi dan apakah Stellar memenuhi target 5 detik tanpa membatalkan transaksi apa pun. Kami mengamati rata-rata buku besar ditutup waktu 5,03 detik, 5,10 detik, dan 5,15 detik seiring peningkatan akun entri, tingkat transaksi, dan jumlah node, masing-masing. Hasilnya menunjukkan bahwa Stellar dapat menutup buku besar secara konsisten di bawah beban tinggi. 7.4 Menjalankan validator Salah satu fitur penting Stellar adalah biayanya yang rendah menjalankan validator, karena jangkar harus dijalankan (atau dikontrak) validators untuk menegakkan finalitas. SDF menjalankan 3 validators produksi, semuanya pada instans AWS c5.large, yang memiliki dua inti, RAM 4 GiB dan CPU Intel(R) Xeon(R) Platinum 8124M @ Prosesor 3,00GHz. Memeriksa penggunaan sumber daya di satu tempat dari mesin ini, kami mengamati proses Stellar menggunakan sekitar 7% CPU dan 300 MiB memori. Dalam hal lalu lintas jaringan, dengan 28 koneksi ke rekan dan ukuran kuorum dari 34, kecepatan masuk dan keluar adalah 2,78 Mbit/s dan 2,56 Mbit/dtk, masing-masing. Perangkat keras diperlukan untuk menjalankan a prosesnya tidak mahal. Dalam kasus kami, biayanya adalah $0,054/jam atau sekitar $40/bulan. 7.5 Pekerjaan masa depan Eksperimen ini menunjukkan bahwa Stellar dapat dengan mudah menskalakan 1–2 pesanan besarnya melebihi penggunaan jaringan saat ini. Karena tuntutan kinerja sangat sederhana hingga saat ini, Stellar menyisakan ruang untuk banyak penggunaan pengoptimalan langsung teknik terkenal. Misalnya transaksi dan SCP pesan disiarkan oleh validators menggunakan banjir naif protokol, namun idealnya menggunakan protokol yang lebih efisien dan terstruktur multicast peer-to-peer [30]. Selain itu, banyak database waktu pembaruan buku besar dapat ditingkatkan melalui teknik batching dan prefetching standar.

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

Kesimpulan

Pembayaran internasional mahal dan memakan waktu berhari-hari. Dana hak asuh melewati beberapa lembaga keuangan termasuk bank koresponden dan layanan pengiriman uang. Karena setiap hop harus dipercaya sepenuhnya, sulit untuk yang baru pendatang untuk mendapatkan pangsa pasar dan bersaing. Stellar pertunjukan cara mengirim uang ke seluruh dunia dengan murah dalam hitungan detik. Itu inovasi utamanya adalah protokol perjanjian Bizantium keanggotaan terbuka baru, SCP, yang memanfaatkan struktur peer-to-peer jaringan keuangan untuk mencapai konsensus global berdasarkan a hipotesis Internet baru. SCP membiarkan Stellar berkomitmen secara atom transaksi yang tidak dapat diubah antar peserta sewenang-wenang yang tidak tahu atau percaya satu sama lain. Hal ini pada gilirannya menjamin akses pendatang baru ke pasar yang sama seperti yang sudah ada pemain, membuatnya aman untuk mendapatkan pertukaran terbaik yang tersedia bahkan dari pembuat pasar yang tidak tepercaya, dan secara dramatis mengurangi latensi pembayaran. Ucapan Terima Kasih Stellar tidak akan menjadi seperti sekarang ini tanpa adanya awal kepemimpinan Joyce Kim atau kontribusi luar biasa dari Scott Fleckenstein dan Bartek Nowotarski di gedung dan mempertahankan horizon, Stellar SDK, dan bagian penting lainnya ekosistem Stellar. Kami juga berterima kasih kepada Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, pengulas anonim, dan gembala kami Justine Sherry atas komentarnya yang bermanfaat draft sebelumnya. Penafian Kontribusi Profesor Mazières pada publikasi ini adalah sebagai konsultan berbayar, dan bukan merupakan bagian dari kontribusinya Tugas atau tanggung jawab Universitas Stanford.

Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada