Das Stellar-Konsensprotokoll
Tóm tắt
Thanh toán quốc tế chậm và tốn kém, một phần là do định tuyến thanh toán nhiều bước thông qua các mạng không đồng nhất. các hệ thống ngân hàng. Stellar là mạng thanh toán toàn cầu mới có thể chuyển trực tiếp tiền kỹ thuật số đến bất kỳ đâu trên thế giới thế giới trong vài giây. Sự đổi mới quan trọng là một giao dịch an toàn cơ chế thông qua các trung gian không đáng tin cậy, sử dụng một cơ chế mới Giao thức thỏa thuận Byzantine được gọi là SCP. Với SCP, mỗi tổ chức chỉ định các tổ chức khác sẽ ở lại đồng ý; thông qua sự kết nối toàn cầu của hệ thống tài chính, toàn bộ mạng lưới sau đó đồng ý về nguyên tử giao dịch trải rộng trên các tổ chức tùy ý, không có rủi ro về khả năng thanh toán hoặc tỷ giá hối đoái từ các tổ chức phát hành tài sản trung gian hoặc các nhà tạo lập thị trường. Chúng tôi trình bày mô hình, giao thức và xác minh chính thức; mô tả mạng thanh toán Stellar; và cuối cùng đánh giá Stellar theo kinh nghiệm thông qua điểm chuẩn và kinh nghiệm của chúng tôi với nhiều năm sử dụng sản xuất. Khái niệm CCS • Bảo mật và quyền riêng tư → Phân tán bảo mật hệ thống; • Tổ chức hệ thống máy tính → Kiến trúc ngang hàng; • Hệ thống thông tin → Chuyển tiền điện tử. Từ khóa blockchain, BFT, số đại biểu, thanh toán Định dạng tham chiếu ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Thanh toán toàn cầu nhanh chóng và an toàn với Stellar. trong SOSP '19: Hội nghị chuyên đề về Nguyên tắc hệ điều hành, ngày 27–30 tháng 10, 2019, Huntsville, ON, Canada. ACM, New York, NY, Mỹ, 17 trang. https://doi.org/10.1145/3341301.3359636
Zusammenfassung
Internationale Zahlungen sind langsam und teuer, was teilweise auf die Multi-Hop-Zahlungsweiterleitung über heterogene Systeme zurückzuführen ist Bankensysteme. Stellar ist ein neues globales Zahlungsnetzwerk das digitales Geld direkt überall in der Welt überweisen kann Welt in Sekunden. Die entscheidende Neuerung ist eine sichere Transaktion Mechanismus über nicht vertrauenswürdige Vermittler unter Verwendung eines neuen Byzantinisches Vereinbarungsprotokoll namens SCP. Mit SCP, jeweils Die Institution gibt andere Institutionen an, bei denen sie bleiben soll im Einvernehmen; durch die globale Vernetzung der Finanzsystem, das gesamte Netzwerk einigt sich dann auf Atomarität Transaktionen zwischen beliebigen Institutionen, ohne Solvenz- oder Wechselkursrisiko durch zwischengeschaltete Emittenten von Vermögenswerten oder Market Maker. Wir präsentieren SCPs Modell, Protokoll und formelle Überprüfung; Beschreiben Sie das Zahlungsnetzwerk Stellar; und schließlich Stellar empirisch durch Benchmarks bewerten und unsere Erfahrung aus mehrjährigem Produktionseinsatz. CCS-Konzepte • Sicherheit und Datenschutz → Verteilt Systemsicherheit; • Organisation von Computersystemen → Peer-to-Peer-Architekturen; • Informationssysteme → Elektronischer Geldtransfer. Schlüsselwörter blockchain, BFT, Quoren, Zahlungen ACM-Referenzformat: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Schnelle und sichere globale Zahlungen mit Stellar. Im SOSP ’19: Symposium zu Betriebssystemprinzipien, 27.–30. Oktober, 2019, Huntsville, ON, Kanada. ACM, New York, NY, USA, 17 Seiten. https://doi.org/10.1145/3341301.3359636
Giới thiệu
Thanh toán quốc tế nổi tiếng là chậm và tốn kém [32]. Hãy xem xét tính phi thực tế của việc gửi 0,5 đô la từ Hoa Kỳ tới *Galois, Inc. †UCLA Quyền tạo bản sao kỹ thuật số hoặc bản cứng của tất cả hoặc một phần tác phẩm này cho việc sử dụng cá nhân hoặc lớp học được cấp miễn phí với điều kiện là các bản sao không được thực hiện hoặc phân phối vì lợi nhuận hoặc lợi ích thương mại và các bản sao đó mang thông báo này và trích dẫn đầy đủ ở trang đầu tiên. Bản quyền cho các thành phần tác phẩm này thuộc sở hữu của người khác ngoài ACM phải được tôn vinh. Trừu tượng hóa với tín dụng được cho phép. Sao chép theo cách khác hoặc xuất bản lại để đăng trên máy chủ hoặc phân phối lại vào danh sách, cần có sự cho phép cụ thể trước và/hoặc phải trả phí. Yêu cầu quyền từ [email protected]. SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada © 2019 Hiệp hội Máy tính. ACM ISBN 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 Mexico, hai nước láng giềng. Người dùng cuối phải trả gần 9 USD đối với mức chuyển khoản trung bình như vậy [32] và thỏa thuận song phương được môi giới bởi ngân hàng trung ương của các nước chỉ có thể làm giảm chi phí ngân hàng cơ bản lên tới 0,67 USD cho mỗi mặt hàng [2]. Ngoài phí, độ trễ của thanh toán quốc tế thường được tính trong vài ngày, khiến cho việc chuyển tiền ra nước ngoài nhanh chóng trong trường hợp khẩn cấp. Ở những nước mà hệ thống ngân hàng không làm việc hoặc không phục vụ mọi công dân hoặc khi mức phí không thể chấp nhận được, mọi người chuyển sang gửi thanh toán bằng xe buýt [38], bằng thuyền [19] và thỉnh thoảng bây giờ là Bitcoin [55], tất cả đều như vậy phải chịu rủi ro, độ trễ hoặc sự bất tiện. Mặc dù sẽ luôn có chi phí tuân thủ nhưng bằng chứng cho thấy tổn thất một khoản đáng kể do thiếu cạnh tranh [21], càng trở nên trầm trọng hơn do công nghệ kém hiệu quả. Nơi mọi người có thể đổi mới, giá cả và độ trễ giảm xuống. Chẳng hạn, chuyển tiền từ tài khoản ngân hàng trong quý 2 năm 2019 có chi phí trung bình là 6,99%, trong khi con số về tiền di động chỉ là 4,88% [13]. Mạng thanh toán toàn cầu mở thu hút sự đổi mới và sự cạnh tranh từ các tổ chức phi ngân hàng có thể làm giảm chi phí và độ trễ ở tất cả các lớp, bao gồm cả việc tuân thủ [83]. Bài viết này trình bày Stellar, khoản thanh toán dựa trên blockchain mạng được thiết kế đặc biệt để tạo thuận lợi cho sự đổi mới và cạnh tranh trong thanh toán quốc tế. Stellar là lần đầu tiên thống để đáp ứng cả ba mục tiêu sau (theo một “Giả thuyết Internet” mới lạ nhưng có giá trị thực nghiệm: 1. Tư cách thành viên mở – Bất kỳ ai cũng có thể phát hành được hỗ trợ bằng tiền tệ token kỹ thuật số có thể được trao đổi giữa những người dùng. 2. Quyết định cuối cùng do nhà phát hành thực thi – Nhà phát hành của token có thể ngăn chặn các giao dịch trong token không bị đảo ngược hoặc hoàn tác. 3. Tính nguyên tử của nhà phát hành chéo – Người dùng có thể trao đổi nguyên tử và giao dịch token từ nhiều tổ chức phát hành. Đạt được hai điều đầu tiên thật dễ dàng. Bất kỳ công ty nào cũng có thể đơn phương cung cấp một sản phẩm như Paypal, Venmo, WeChat Thanh toán hoặc Alipay và đảm bảo tính cuối cùng của thanh toán trong tiền ảo mà họ đã tạo ra. Thật không may, giao dịch nguyên tử giữa các loại tiền tệ này là không thể. Trên thực tế, mặc dù Paypal đã mua lại công ty mẹ của Venmo vào năm 2013, người dùng cuối vẫn không thể gửi Venmo đô la cho người dùng Paypal [78]. Chỉ gần đây các thương nhân mới có thể thậm chí chấp nhận cả hai với một sự tích hợp duy nhất. Mục tiêu 2 và 3 có thể đạt được trong một hệ thống khép kín. Đặc biệt, một số nước đã có thanh toán nội địa hiệu quả mạng, thường được giám sát bởi một cơ quan quản lý đáng tin cậy trên toàn cầu. Tuy nhiên, tư cách thành viên được giới hạn ở mức đóng tập hợp các ngân hàng đặc quyền và mạng lưới được giới hạn ở tầm với của cơ quan quản lý của một quốc gia.SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. Mục tiêu 1 và 3 đã đạt được trong blockchain giây được khai thác, đáng chú ý nhất là ở dạng ERC20 tokens trên Ethereum [3]. Ý tưởng chính của những blockchain này là tạo ra một loại tiền điện tử mới để thưởng cho mọi người vì đã thanh toán giao dịch khó hoàn nguyên. Thật không may, điều này có nghĩa là nhà phát hành token không kiểm soát tính cuối cùng của giao dịch. Nếu phần mềm lỗi khiến lịch sử giao dịch bị sắp xếp lại [26, 73], hoặc khi chiến lợi phẩm của việc lừa gạt người khác vượt quá chi phí sắp xếp lại lịch sử [74, 97], nhà phát hành có thể phải chịu trách nhiệm về tokens họ đã đổi lấy tiền thật. Stellar blockchain có hai thuộc tính phân biệt. Đầu tiên, nó thực sự hỗ trợ thị trường hiệu quả trong khoảng token giây từ các tổ chức phát hành khác nhau. Cụ thể, bất kỳ ai cũng có thể phát hành token, blockchain cung cấp sổ đặt hàng tích hợp để giao dịch giữa bất kỳ cặp token nào và người dùng có thể phát hành thanh toán đường dẫn giao dịch nguyên tử trên một số cặp tiền tệ trong khi đảm bảo giá giới hạn từ đầu đến cuối. Thứ hai, Stellar giới thiệu thỏa thuận Byzantine mới giao thức, SCP (Stellar Giao thức đồng thuận), thông qua đó token nhà phát hành chỉ định máy chủ validator cụ thể để thực thi sự cuối cùng của giao dịch. Miễn là không ai xâm phạm validator của nhà phát hành (và các chữ ký số cơ bản và mật mã hash vẫn được bảo mật), nhà phát hành biết chính xác giao dịch nào đã xảy ra và tránh rủi ro về tổn thất từ blockchain việc sắp xếp lại lịch sử. Ý tưởng chính của SCP là hầu hết các nhà phát hành tài sản đều được hưởng lợi từ thị trường thanh khoản và muốn tạo điều kiện thuận lợi cho các giao dịch nguyên tử với các tài sản khác. Do đó, quản trị viên validator định cấu hình máy chủ của họ đồng ý chính xác với các validator khác lịch sử của tất cả các giao dịch trên tất cả các tài sản. validator v1 có thể được cấu hình để đồng ý với v2 hoặc v2 có thể được cấu hình để đồng ý với v1 hoặc cả hai có thể được cấu hình để đồng ý với nhau; trong mọi trường hợp, sẽ không cam kết về lịch sử giao dịch cho đến khi nó biết người kia không thể cam kết với một lịch sử khác. Theo tính bắc cầu, nếu v1 không thể không đồng ý với v2 và v2 không thể không đồng ý với v3 (hoặc ngược lại) thì v1 không thể không đồng ý với v3, v3 có đại diện cho tài sản v1 hay không thì đã nghe nói rồi của. Theo giả thuyết rằng các mối quan hệ thỏa thuận này kết nối liên tục toàn bộ mạng, SCP đảm bảo thỏa thuận toàn cầu, biến nó thành một thỏa thuận Byzantine toàn cầu giao thức với tư cách thành viên mở. Chúng tôi gọi giả định kết nối mới này là giả thuyết Internet và lưu ý rằng nó nắm giữ cả “Internet” (điều mà mọi người đều hiểu có nghĩa là mạng IP được kết nối bắc cầu lớn nhất) và thanh toán quốc tế truyền thống (được thực hiện theo từng bước phi nguyên tử, nhưng tận dụng một kết nối xuyên suốt, toàn cầu mạng lưới các tổ chức tài chính). Stellar đã được đưa vào sử dụng sản xuất từ tháng 9 năm 2015. Để duy trì độ dài blockchain có thể quản lý được, hệ thống sẽ chạy SCP trong khoảng thời gian 5 giây—nhanh theo tiêu chuẩn blockchain, nhưng chậm hơn nhiều so với các ứng dụng điển hình của thỏa thuận Byzantine. Mặc dù mục đích sử dụng chính là thanh toán, Stellar cũng có đã được chứng minh là hấp dẫn đối với những token có thể thay thế được bằng tiền và được hưởng lợi từ thị trường thứ cấp trực tiếp (xem Phần 7.1). Phần tiếp theo thảo luận về công việc liên quan. Phần 3 trình bày SCP. Phần 4 mô tả xác minh chính thức của chúng tôi về SCP. Phần 5 mô tả lớp thanh toán của Stellar. Mục 6 liên quan một số kinh nghiệm triển khai và bài học kinh nghiệm của chúng tôi. Phần 7 đánh giá hệ thống. Phần 8 kết thúc.
Einführung
Internationale Zahlungen sind bekanntermaßen langsam und kostspielig [32]. Bedenken Sie, dass es unpraktisch ist, 0,50 US-Dollar aus den USA nach zu senden *Galois, Inc. †UCLA Erlaubnis, digitale oder gedruckte Kopien des gesamten oder eines Teils dieser Arbeit anzufertigen Die persönliche oder unterrichtsbezogene Nutzung ist unentgeltlich gestattet, sofern dies bei Kopien nicht der Fall ist zu Gewinnzwecken oder kommerziellen Vorteilen hergestellt oder verbreitet werden und dass Kopien berechtigt sind Diese Mitteilung und das vollständige Zitat auf der ersten Seite. Urheberrechte für Komponenten Werke, die anderen als ACM gehören, müssen gewürdigt werden. Abstrahieren mit Kredit ist zulässig. Zum anderweitigen Kopieren oder erneuten Veröffentlichen, zum Posten auf Servern oder auf Für die Weiterverbreitung in Listen ist eine vorherige ausdrückliche Genehmigung und/oder eine Gebühr erforderlich. Anfrage Berechtigungen von [email protected]. SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada © 2019 Association for Computing Machinery. ACM ISBN 978-1-4503-6873-5/19/10...15,00 $ https://doi.org/10.1145/3341301.3359636 Mexiko, zwei Nachbarländer. Endverbraucher zahlen fast 9 US-Dollar für den Durchschnitt einer solchen Übertragung [32] und eine bilaterale Vereinbarung Die von den Zentralbanken der Länder vermittelten Gelder konnten nur reduziert werden Die zugrunde liegenden Bankkosten belaufen sich auf 0,67 USD pro Artikel [2]. Zusätzlich zu den Gebühren Bei internationalen Zahlungen wird grundsätzlich die Latenz berücksichtigt innerhalb weniger Tage, was es unmöglich macht, schnell Geld ins Ausland zu bekommen Notfälle. In Ländern, in denen das Bankensystem dies nicht tut funktioniert oder nicht allen Bürgern dient, oder wenn die Gebühren untragbar sind, greifen die Menschen auf die Überweisung von Zahlungen per Bus [38], by zurück Boot [19] und gelegentlich jetzt auch mit Bitcoin [55], allesamt Risiken, Verzögerungen oder Unannehmlichkeiten mit sich bringen. Obwohl es immer Compliance-Kosten geben wird, deuten die Beweise darauf hin, dass ein erheblicher Betrag durch mangelnden Wettbewerb verloren geht [21], was durch ineffiziente Technologie noch verschärft wird. Wo Menschen kann innovativ sein, Preise und Latenzen sinken. Beispielsweise kosteten Überweisungen von Bankkonten im zweiten Quartal 2019 durchschnittlich 6,99 %, während der Wert für mobiles Geld nur 4,88 % betrug [13]. Ein offenes, globales Zahlungsnetzwerk, das Innovationen anzieht und die Konkurrenz durch Nichtbanken könnte nachlassen Kosten und Latenzen auf allen Ebenen, einschließlich Compliance [83]. In diesem Dokument wird Stellar vorgestellt, eine blockchain-basierte Zahlung Netzwerk, das speziell darauf ausgelegt ist, Innovationen zu erleichtern und Wettbewerb im internationalen Zahlungsverkehr. Stellar ist der erste System, um alle drei der folgenden Ziele zu erreichen (unter a neuartige, aber empirisch gültige „Internet-Hypothese“): 1. Offene Mitgliedschaft – Jeder kann währungsgestützte Ausgaben tätigen digitale tokens, die zwischen Benutzern ausgetauscht werden können. 2. Vom Emittenten erzwungene Endgültigkeit – Der Emittent eines token kann dies verhindern Transaktionen im token können nicht storniert oder rückgängig gemacht werden. 3. Emittentenübergreifende Atomizität – Benutzer können atomar austauschen und handeln Sie tokens von mehreren Emittenten. Die ersten beiden zu erreichen ist einfach. Jedes Unternehmen kann einseitig ein Produkt wie Paypal, Venmo, WeChat anbieten Bezahlen Sie oder Alipay und stellen Sie die Endgültigkeit der Zahlungen sicher virtuelle Währungen, die sie geschaffen haben. Leider ist eine atomare Transaktion über diese Währungen hinweg nicht möglich. Tatsächlich, obwohl Paypal die Muttergesellschaft von Venmo übernommen hat Im Jahr 2013 ist es für Endbenutzer immer noch unmöglich, Venmo zu versenden Dollar an Paypal-Benutzer [78]. Erst seit kurzem können Händler Akzeptieren Sie sogar beides mit einer einzigen Integration. Die Ziele 2 und 3 können in einem geschlossenen System erreicht werden. Insbesondere verfügen einige Länder über einen effizienten Inlandszahlungsverkehr Netzwerke, die in der Regel von einer allgemein vertrauenswürdigen Regulierungsbehörde überwacht werden. Die Mitgliedschaft ist jedoch auf eine geschlossene Mitgliedschaft beschränkt Die Anzahl der zugelassenen Banken und die Netzwerke sind auf die beschränkt Reichweite der Regulierungsbehörde eines Landes.SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. Die Ziele 1 und 3 wurden in abgebauten blockchains erreicht, vor allem in Form von ERC20 tokens auf Ethereum [3]. Die Kernidee dieser blockchains besteht darin, eine neue Kryptowährung zu schaffen, mit der Menschen für ihre Abwicklung belohnt werden können Transaktionen sind schwer rückgängig zu machen. Leider bedeutet dies, dass die Emittenten von token die Endgültigkeit der Transaktion nicht kontrollieren. Wenn Software Fehler führen dazu, dass der Transaktionsverlauf neu organisiert wird [26, 73], oder wenn die Beute betrügerischer Menschen die Kosten übersteigt Durch die Neuordnung der Historie [74, 97] können Emittenten für tokens haftbar gemacht werden Sie wurden bereits gegen echtes Geld eingelöst. Der Stellar blockchain hat zwei charakteristische Eigenschaften. Erstens unterstützt es nativ effiziente Märkte zwischen tokens von verschiedenen Emittenten. Konkret kann jeder ein token ausstellen, Der blockchain bietet ein integriertes Orderbuch für den Handel zwischen einem beliebigen Paar von tokens, und Benutzer können Pfadzahlungen ausstellen die gleichzeitig atomar über mehrere Währungspaare hinweg handeln Gewährleistung eines End-to-End-Grenzpreises. Zweitens führt Stellar ein neues byzantinisches Abkommen ein Protokoll, SCP (Stellar Consensus Protocol), über das token-Aussteller benennen bestimmte validator-Server zur Durchsetzung Endgültigkeit der Transaktion. Solange niemand die validators eines Ausstellers (und die zugrunde liegenden digitalen Signaturen und kryptografische hashes bleiben sicher), der Emittent weiß genau, welche Transaktionen stattgefunden haben und vermeidet das Risiko der Verluste aus der Umstrukturierung der blockchain-Historie. Die Kernidee von SCP besteht darin, dass die meisten Emittenten von Vermögenswerten davon profitieren liquide Märkte und wollen atomare Transaktionen ermöglichen mit anderen Vermögenswerten. Daher konfigurieren validator Administratoren ihre Server, um sich mit anderen validators auf das Genaue zu einigen Historie aller Transaktionen mit allen Vermögenswerten. Ein validator v1 kann sein entweder so konfiguriert werden, dass sie v2 zustimmt, oder v2 kann so konfiguriert werden, dass sie zustimmt mit v1, oder beide können so konfiguriert werden, dass sie miteinander übereinstimmen; In allen Fällen wird sich keiner von beiden auf eine Transaktionshistorie festlegen, bis Es weiß, dass der andere sich nicht auf eine andere Geschichte festlegen kann. Wenn aufgrund der Transitivität v1 nicht mit v2 und v2 mit v3 nicht einverstanden sein kann (oder umgekehrt), kann v1 nicht mit v2 übereinstimmen v3, ob v3 Vermögenswerte darstellt oder nicht, hat v1 überhaupt gehört von. Unter der Annahme, dass diese Vereinbarungsbeziehungen Transitiv das gesamte Netzwerk verbinden, garantiert SCP globales Abkommen, was es zu einem globalen byzantinischen Abkommen macht Protokoll mit offener Mitgliedschaft. Wir nennen diese neue Verbundenheitsannahme die Internet-Hypothese und stellen fest, dass dies der Fall ist gilt sowohl für „das Internet“ (was jeder versteht). bedeuten das größte transitiv verbundene IP-Netzwerk) und alte internationale Zahlungen (die Hop-by-Hop sind). nicht-atomar, sondern nutzen eine transitiv verbundene, globale Netzwerk von Finanzinstituten). Stellar ist seit September 2015 im Produktionseinsatz. Um die Länge von blockchain überschaubar zu halten, läuft das System SCP in 5-Sekunden-Intervallen – für blockchain-Verhältnisse schnell, aber weitaus langsamer als typische Anwendungen byzantinischer Vereinbarungen. Obwohl der Hauptzweck Zahlungen waren, gilt dies auch für Stellar hat sich als attraktiv für nicht durch Geld fungible tokens erwiesen, die davon profitieren aus unmittelbaren Sekundärmärkten (siehe Abschnitt 7.1). Im nächsten Abschnitt werden verwandte Arbeiten besprochen. Abschnitt 3 präsentiert SCP. Abschnitt 4 beschreibt unsere formelle Überprüfung von SCP. Abschnitt 5 beschreibt die Zahlungsebene von Stellar. Abschnitt 6 betrifft einige unserer Einsatzerfahrungen und gewonnenen Erkenntnisse. Abschnitt 7 bewertet das System. Abschnitt 8 schließt ab.
Stellar giao thức đồng thuận
Giao thức đồng thuận Stellar (SCP) là giao thức dựa trên đại biểu Giao thức thỏa thuận Byzantine với tư cách thành viên mở. Số đại biểu xuất hiện từ các quyết định cấu hình cục bộ kết hợp của các nút riêng lẻ. Tuy nhiên, các nút chỉ nhận ra số đại biểu mà họ thuộc về, và chỉ sau khi tìm hiểu cấu hình cục bộ của tất cả các thành viên trong nhóm túc số khác. Một lợi ích của phương pháp này là SCP vốn đã chấp nhận các quan điểm không đồng nhất về những nút nào tồn tại. Do đó, các nút có thể tham gia và rời đi một cách đơn phương mà không cần Giao thức "xem thay đổi" để điều phối thành viên. 3.1 Thỏa thuận Byzantine liên bang Bài toán thỏa thuận Byzantine truyền thống bao gồm một hệ thống khép kín gồm N nút, một số trong đó bị lỗi và có thể hành xử tùy tiện. Các nút nhận giá trị đầu vào và trao đổi thông báo để quyết định giá trị đầu ra trong số các đầu vào. Giao thức thỏa thuận Byzantine là an toàn khi không có hai nút hoạt động tốt nào đưa ra các quyết định khác nhau và địa chỉ duy nhất quyết định là một đầu vào hợp lệ (đối với một số định nghĩa về thỏa thuận hợp lệSOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. trước đó). Một giao thức hoạt động khi nó đảm bảo rằng mọi nút trung thực cuối cùng đều đưa ra quyết định. Thông thường, các giao thức giả định N = 3f + 1 đối với một số nguyên f > 0 thì đảm bảo an toàn và một dạng sống động nào đó miễn là nhiều nhất f nút bị lỗi. Ở một giai đoạn nào đó trong số này giao thức, các nút bỏ phiếu cho các giá trị được đề xuất và một đề xuất nhận được 2f + 1 phiếu bầu, gọi là số phiếu đại biểu, trở thành quyết định. Với N = 3f + 1 nút, hai số đại biểu bất kỳ của kích thước 2f + 1 chồng lên nhau ở ít nhất các nút f + 1; ngay cả khi f trong số này các nút chồng chéo bị lỗi thì ít nhất hai đại biểu chia sẻ một nút không bị lỗi, ngăn chặn các quyết định trái ngược nhau. Tuy nhiên, cách tiếp cận này chỉ hoạt động nếu tất cả các nút đồng ý những gì tạo nên số đại biểu, điều này là không thể trong SCP khi hai nút thậm chí có thể không biết đến sự tồn tại của nhau. Với SCP, mỗi nút v đơn phương khai báo các tập hợp nút, được gọi là các lát đại biểu của nó, sao cho (a) v tin rằng nếu tất cả các thành viên của một lát đồng ý về trạng thái của hệ thống, sau đó họ đúng, và (b) v tin rằng ít nhất một trong các lát cắt của nó sẵn sàng cung cấp thông tin kịp thời về trạng thái của hệ thống. Chúng tôi gọi hệ thống kết quả, bao gồm của các nút và các lát cắt của chúng, một Thỏa thuận Byzantine Liên bang (FBA) hệ thống. Như chúng ta sẽ thấy tiếp theo, một hệ thống đại biểu xuất hiện từ các lát cắt của nút. Một cách không chính thức, các lát cắt của nút FBA thể hiện ai nút yêu cầu sự đồng ý. Ví dụ: một nút có thể yêu cầu thỏa thuận với 4 tổ chức cụ thể, mỗi tổ chức điều hành 3 nút; để để phù hợp với thời gian ngừng hoạt động, nó có thể đặt các lát cắt của nó thành tất cả các bộ bao gồm 2 nút từ mỗi tổ chức. Nếu điều này “yêu cầu thỏa thuận với” mối quan hệ liên kết bắc cầu với hai nút bất kỳ, chúng tôi có được thỏa thuận toàn cầu. Ngược lại, chúng ta có thể có được sự phân kỳ, mà chỉ giữa các tổ chức không yêu cầu thỏa thuận với người kia. Với cấu trúc liên kết ngày nay thống tài chính, chúng tôi đưa ra giả thuyết rằng sự hội tụ rộng rãi sẽ tiếp tục tạo ra một lịch sử sổ cái duy nhất mà mọi người gọi là “mạng Stellar,” giống như cách chúng ta nói về Internet. Số đại biểu phát sinh từ các lát cắt như sau. Mỗi nút chỉ định số đại biểu của nó bị cắt trong mỗi tin nhắn nó gửi. Gọi S là tập hợp các nút mà từ đó một tập hợp các thông điệp bắt nguồn. A nút coi tập hợp các tin nhắn đã đạt đến số đại biểu ngưỡng khi mọi thành viên của S đều có một lát nằm trong S. Bằng cách xây dựng, tập S như vậy, nếu nhất trí, thỏa mãn điều kiện yêu cầu thoả thuận của mỗi thành viên. Một thiết bị ngang hàng bị lỗi có thể quảng cáo các lát cắt được tạo ra để thay đổi những gì các nút hoạt động tốt sẽ xem xét số đại biểu. Vì mục đích phân tích giao thức, chúng tôi xác định số đại biểu trong FBA là không trống tập S gồm các nút bao gồm ít nhất một lát đại biểu của từng thành viên không có lỗi. Sự trừu tượng này là âm thanh, như bất kỳ tập hợp nào của các thông điệp có ý đại diện cho một số đại biểu nhất trí thực sự có (ngay cả khi nó chứa thông báo từ các nút bị lỗi), và nó chính xác khi S chỉ chứa các nút hoạt động tốt. trong phần này, chúng tôi cũng giả định rằng các lát cắt của nút không thay đổi. Tuy nhiên, kết quả của chúng tôi chuyển sang trường hợp lát cắt thay đổi bởi vì một hệ thống trong đó các lát thay đổi không kém an toàn hơn một hệ thống lát cắt cố định trong đó các lát cắt của nút bao gồm tất cả các các lát cắt mà nó từng sử dụng trong trường hợp các lát cắt thay đổi (xem Định lý 13 trong [68]). Như đã giải thích ở Phần 4, tính sống động phụ thuộc vào các nút hoạt động tốt cuối cùng sẽ loại bỏ các nút không đáng tin cậy từ lát cắt của họ. Bởi vì các nút khác nhau có các yêu cầu thỏa thuận khác nhau nên FBA loại trừ định nghĩa toàn cầu về an toàn. Chúng tôi nói các nút không bị lỗi v1 và v2 được đan xen khi mỗi nút số đại biểu của v1 cắt mọi số đại biểu của v2 tại ít nhất một nút không bị lỗi. Một giao thức FBA có thể đảm bảo sự đồng thuận chỉ giữa các nút đan xen; vì SCP làm như vậy nên lỗi của nó dung sai cho sự an toàn là tối ưu. Giả thuyết về Internet thiết kế cơ bản của Stellar, nêu rõ rằng các nút mà mọi người quan tâm về sẽ được đan xen. Chúng ta nói một tập hợp các nút I còn nguyên vẹn nếu I là một đại biểu không bị lỗi thống nhất sao cho mỗi hai thành viên của I đều gắn bó với nhau ngay cả khi mọi nút bên ngoài I đều bị lỗi. Một cách trực quan, thì tôi nên tránh xa những hành động không còn nguyên vẹn nút. SCP đảm bảo cả tính sống động không bị chặn [93] và an toàn cho các tập hợp nguyên vẹn, mặc dù bản thân các nút không cần để biết (và có thể không biết) bộ nào còn nguyên vẹn. Hơn nữa, hợp của hai tập hợp nguyên vẹn giao nhau là một bộ còn nguyên vẹn. Do đó, các bộ nguyên vẹn xác định một phân vùng của các nút hoạt động tốt, trong đó mỗi phân vùng đều an toàn và hoạt động (trong một số điều kiện), nhưng các phân vùng khác nhau có thể xuất ra những quyết định khác nhau. 3.1.1 Cân nhắc về an toàn và tính sống động trong FBA Với các ngoại lệ hạn chế [64], hầu hết các giao thức thỏa thuận Byzantine đóng đều được điều chỉnh đến điểm cân bằng tại đó sự an toàn và sự sống động có khả năng chịu lỗi như nhau. Trong FBA, điều đó có nghĩa là các cấu hình trong đó, bất kể lỗi, tất cả các bộ đan xen cũng còn nguyên vẹn. Cho rằng FBA xác định số đại biểu theo cách phi tập trung, khó có khả năng các lựa chọn lát cắt riêng lẻ sẽ dẫn đến trạng thái cân bằng này. Hơn nữa, tại ít nhất là trong Stellar, trạng thái cân bằng là không mong muốn: hậu quả về lỗi an toàn (cụ thể là tiền kỹ thuật số được chi tiêu hai lần) là tệ hơn nhiều so với những trường hợp hỏng hóc về khả năng hoạt động (cụ thể là sự chậm trễ trong các khoản thanh toán dù sao cũng phải mất vài ngày trước Stellar). mọi người do đó nên và nên chọn các lát đại biểu lớn sao cho các nút của chúng có nhiều khả năng vẫn gắn liền với nhau hơn là nguyên vẹn. Nghiêng hơn nữa, việc phục hồi sau đó sẽ dễ dàng hơn các lỗi hoạt động điển hình trong hệ thống FBA so với hệ thống đóng truyền thống. Trong các hệ thống đóng, tất cả các thông điệp phải được được giải thích đối với cùng một tập hợp các đại biểu. Do đó, việc thêm và xóa các nút để phục hồi sau lỗi yêu cầu đạt được sự đồng thuận về một sự kiện cấu hình lại, điều này rất khó khăn khi sự đồng thuận không còn tồn tại. Ngược lại, với FBA, bất kỳ nút nào cũng có thể đơn phương điều chỉnh các lát cắt đại biểu của nó bất kỳ lúc nào thời gian. Để ứng phó với sự cố mất điện tại một điểm quan trọng mang tính hệ thống tổ chức, quản trị viên nút có thể điều chỉnh các lát cắt của họ để giải quyết vấn đề, hơi giống như điều phối các phản ứng tới thảm họa BGP [63] (mặc dù không có ràng buộc về định tuyến qua các liên kết mạng vật lý).
Thanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada 3.1.2 Định lý tầng SCP tuân theo khuôn mẫu của mô hình tròn cơ bản [42]; các nút tiến triển thông qua một loạt các phiếu bầu được đánh số, mỗi nút cố gắng thực hiện ba nhiệm vụ: (1) xác định giá trị “an toàn” không mâu thuẫn với bất kỳ quyết định nào trong cuộc bỏ phiếu trước đó (thường được gọi là chuẩn bị phiếu), (2) thống nhất về giá trị an toàn, và (3) phát hiện thỏa thuận đã thành công. Tuy nhiên, FBA mở cửa tư cách thành viên cản trở một số kỹ thuật phổ biến, khiến nó không thể “chuyển” các giao thức đóng truyền thống sang FBA mô hình bằng cách thay đổi định nghĩa về số đại biểu. Một kỹ thuật được nhiều giao thức sử dụng là xoay vòng thông qua các nút dẫn đầu theo kiểu quay vòng sau khi hết thời gian chờ. Trong một hệ thống khép kín, việc lựa chọn người lãnh đạo theo vòng tròn đảm bảo rằng cuối cùng một nhà lãnh đạo trung thực duy nhất sẽ đạt được thỏa thuận điều phối về một giá trị duy nhất. Thật không may, vòng tròn không thể hoạt động trong hệ thống FBA với tư cách thành viên không xác định. Một kỹ thuật phổ biến khác không thành công với FBA là giả sử một số đại biểu cụ thể có thể thuyết phục được tất cả các nút. Ví dụ, nếu mọi người nhận ra bất kỳ nút 2f + 1 nào là số đại biểu thì Chữ ký 2f + 1 đủ để chứng minh trạng thái giao thức cho tất cả các nút. Tương tự, nếu một nút nhận được số lượng tin nhắn giống hệt nhau thông qua chương trình phát sóng đáng tin cậy [24], nút có thể cho rằng tất cả các nút không bị lỗi cũng sẽ thấy số đại biểu. Ngược lại, trong FBA, một đại biểu không có ý nghĩa gì đối với các nút bên ngoài đại biểu. Cuối cùng, các hệ thống không liên kết thường sử dụng “ngược” lý luận về an toàn: nếu nút f + 1 bị lỗi, tất cả đều an toàn bảo lãnh bị mất. Do đó, nếu nút v nghe thấy tất cả các nút f + 1 nêu một sự thật nào đó F, v có thể cho rằng ít nhất một người đang nói với sự thật (và do đó F đúng) mà không mất đi sự an toàn. Như vậy lý luận thất bại trong FBA vì an toàn là thuộc tính của các cặp của các nút, do đó, một nút đã mất đi sự an toàn đối với một số nút ngang hàng có thể luôn mất đi sự an toàn đối với nhiều nút hơn bằng cách giả định các sự kiện xấu. Tuy nhiên, FBA có thể lý giải ngược lại về tính sống động. Xác định tập v-blocking là tập hợp các nút giao nhau lát của v. Nếu tập chặn v B bị lỗi nhất trí, B có thể từ chối nút và số đại biểu và khiến nó mất đi sự sống động. Do đó, nếu B nhất trí nêu sự thật F, khi đó v biết rằng F là đúng hoặc v không còn nguyên vẹn. Tuy nhiên v vẫn cần xem đầy đủ đủ số đại biểu để biết rằng các nút đan xen sẽ không mâu thuẫn với F, dẫn đến vòng giao tiếp cuối cùng trong SCP và các giao thức FBA khác [47] không bắt buộc tương tự giao thức thành viên đóng. Kết quả là chúng ta có ba mức độ tin cậy có thể có đối với các sự kiện tiềm ẩn: không xác định, an toàn để giả định giữa các nút nguyên vẹn (chúng tôi sẽ thuật ngữ được chấp nhận thực tế), và an toàn để giả định giữa đan xen các nút (mà chúng tôi sẽ gọi là sự thật đã được xác nhận). Nút v có thể xác định một cách hiệu quả liệu một tập hợp B có bị vblocking hay không bằng cách kiểm tra xem B có giao nhau với tất cả các lát cắt của nó hay không. Điều thú vị là nếu các nút luôn thông báo các câu lệnh mà chúng chấp nhận và đủ số đại biểu chấp nhận một tuyên bố, nó sẽ khởi động một quá trình xếp tầng theo đó các tuyên bố được lan truyền xuyên suốt bộ còn nguyên vẹn. Chúng tôi gọi thực tế quan trọng đằng sau sự truyền bá này định lý tầng, trong đó thỏa mãn điều sau: Nếu tôi là một tập nguyên vẹn, Q là số đại biểu của bất kỳ phần tử nào của I, và S là bất kỳ tập siêu của Q thì S ⊇I hoặc có thành viên v ∈I sao cho v < S và I ∩S bị chặn v. Bằng trực giác, liệu đây có phải là không phải như vậy, phần bù của S sẽ chứa đại biểu cắt I nhưng không cắt Q, vi phạm giao điểm đại biểu. Lưu ý rằng nếu chúng ta bắt đầu với S = Q và liên tục mở rộng S thành bao gồm tất cả các nút mà nó chặn, chúng tôi có được hiệu ứng xếp tầng cho đến khi, cuối cùng, S bao gồm tất cả I. 3.2 Mô tả giao thức SCP là một giao thức đồng thuận đồng bộ một phần [42] bao gồm một loạt các nỗ lực nhằm đạt được sự đồng thuận được gọi là phiếu bầu. Phiếu bầu sử dụng thời gian chờ với thời lượng tăng dần. A giao thức đồng bộ hóa lá phiếu đảm bảo rằng các nút luôn hoạt động cùng một lá phiếu trong khoảng thời gian tăng dần cho đến khi các lá phiếu được đồng bộ một cách hiệu quả. Việc chấm dứt không được đảm bảo cho đến khi các lá phiếu được đồng bộ, nhưng có hai lá phiếu đồng bộ trong đó các thành viên bị lỗi của các lát cắt của nút hoạt động tốt không can thiệp là đủ để SCP chấm dứt. Một giao thức bỏ phiếu chỉ định các hành động được thực hiện trong mỗi lá phiếu. Một cuộc bỏ phiếu bắt đầu bằng giai đoạn chuẩn bị, trong đó các nút cố gắng xác định một giá trị để đề xuất không mâu thuẫn quyết định nào trước đó. Sau đó, trong giai đoạn cam kết, các nút sẽ thử để đưa ra quyết định về giá trị đã chuẩn bị. Việc bỏ phiếu sử dụng một giao thức con thỏa thuận được gọi là bỏ phiếu liên kết, tôin nút nào bỏ phiếu cho các câu lệnh trừu tượng điều đó cuối cùng có thể được xác nhận hoặc bị mắc kẹt. Một số tuyên bố có thể được coi là mâu thuẫn và sự an toàn đảm bảo cho việc bỏ phiếu liên bang là không có hai thành viên của một tập hợp đan xen xác nhận các tuyên bố trái ngược nhau. Việc xác nhận một tuyên bố không được đảm bảo ngoại trừ một bản còn nguyên vẹn tập hợp mà tất cả các thành viên đều bỏ phiếu theo cùng một cách. Tuy nhiên, nếu một thành viên của một tập hợp nguyên vẹn xác nhận một tuyên bố, được liên kết việc bỏ phiếu đảm bảo rằng tất cả các thành viên của tập hợp nguyên vẹn cuối cùng sẽ xác nhận tuyên bố đó. Do đó, thực hiện các bước không thể đảo ngược để đáp lại những tuyên bố xác nhận sẽ duy trì sự sống động cho các nút còn nguyên vẹn. Các nút ban đầu đề xuất các giá trị thu được từ một đề cử giao thức làm tăng cơ hội của tất cả các thành viên trong một mạng lưới nguyên vẹn tập đề xuất cùng một giá trị và cuối cùng hội tụ (mặc dù không có cách nào để xác định sự hội tụ đã hoàn tất). Đề cử kết hợp bỏ phiếu liên bang với lựa chọn người lãnh đạo. Vì FBA không thể thực hiện vòng tròn tính điểm nên việc đề cử sẽ được sử dụng một kế hoạch lựa chọn người lãnh đạo theo xác suất. Định lý xếp tầng đóng một vai trò quan trọng cả trong việc bỏ phiếu đồng bộ hóa và tránh các trạng thái bị chặn từ đó việc chấm dứt là không thể được nữa. 3.2.1 Bỏ phiếu Các nút SCP tiến hành thông qua một loạt các lá phiếu được đánh số, sử dụng biểu quyết liên đoàn để thống nhất các tuyên bố về cái nào giá trị được quyết định hay không trong lá phiếu nào. Nếu không đồng bộ hoặc hành vi sai sót ngăn cản việc đưa ra quyết định trong lá phiếu n, các nút hết thời gian chờ và thử lại trong lá phiếu n + 1.
SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. Hãy nhớ lại việc bỏ phiếu liên bang có thể không chấm dứt. Do đó, một số các tuyên bố về lá phiếu có thể bị kẹt vĩnh viễn trạng thái không xác định trong đó các nút không bao giờ có thể xác định liệu chúng có vẫn đang được tiến hành hoặc bị mắc kẹt. Bởi vì các nút không thể loại trừ khả năng những tuyên bố không xác định sau này được chứng minh là đúng, họ không bao giờ được cố gắng bỏ phiếu liên bang cho các tuyên bố mới mâu thuẫn với những cái không xác định. Trong mỗi lá phiếu n, các nút sử dụng biểu quyết liên kết trên hai loại của tuyên bố: • chuẩn bị ⟨n,x⟩– cho biết không có giá trị nào khác ngoài x đã hoặc sẽ được quyết định trong bất kỳ cuộc bỏ phiếu nào ≤n. • cam kết ⟨n,x⟩– nêu x được quyết định trong lá phiếu n. Điều quan trọng, lưu ý rằng chuẩn bị ⟨n,x⟩contradicts cam kết ⟨n′,x ′⟩khi n ≥n′ và x , x ′. Một nút bắt đầu bỏ phiếu n bằng cách thử bỏ phiếu liên bang trên một câu lệnh chuẩn bị ⟨n,x⟩. Nếu có tuyên bố chuẩn bị trước đó đã được xác nhận thành công thông qua bỏ phiếu liên đoàn, nút chọn x từ sự chuẩn bị đã được xác nhận của lá phiếu cao nhất. Mặt khác, nút đặt x thành đầu ra của thức đề cử được mô tả trong tiểu mục tiếp theo. Nếu và chỉ khi một nút xác nhận thành công, hãy chuẩn bị ⟨n,x⟩ trong lá phiếu n, nó cố gắng bỏ phiếu liên kết theo cam kết ⟨n,x⟩. Nếu thành công, điều đó có nghĩa là SCP đã quyết định, do đó nút xuất ra giá trị từ tuyên bố cam kết được xác nhận. Xét một tập S đan xen. Vì có nhiều nhất một giá trị có thể được xác nhận bởi các thành viên của S trong một lá phiếu nhất định, không được xác nhận hai giá trị khác nhau do thành viên của S trong một lá phiếu nhất định. Hơn nữa, nếu cam kết ⟨n,x⟩ được xác nhận, sau đó chuẩn bị ⟨n,x⟩cũng được xác nhận; kể từ khi chuẩn bị ⟨n,x⟩trái ngược với bất kỳ cam kết nào trước đó về một giá trị khác, bằng thỏa thuận đảm bảo về bỏ phiếu liên bang chúng tôi hiểu rằng không có giá trị khác nào có thể được quyết định sớm hơn phiếu bầu của các thành viên của S. Bằng cách quy nạp số phiếu bầu, chúng tôi do đó hãy chắc chắn rằng SCP vẫn an toàn. Để có sự sống động, hãy xem xét một tập I nguyên vẹn và đủ dài lá phiếu đồng bộ n. Nếu các nút bị lỗi xuất hiện trong các lát của các nút hoạt động tốt không can thiệp vào n, sau đó bằng cách bỏ phiếu n + 1 tất cả các thành viên của I đều đã xác nhận cùng một tập P của các câu lệnh chuẩn bị. Nếu P = ∅ và lá phiếu n đủ dài thì giao thức đề cử sẽ hội tụ về một số giá trị x. Mặt khác, đặt x là giá trị từ lượt chuẩn bị có phiếu bầu cao nhất ở P. Dù thế nào đi nữa, tôi sẽ thống nhất thử liên kết bỏ phiếu chuẩn bị ⟨n + 1,x⟩trong lần bỏ phiếu tiếp theo. Vì vậy, nếu n + 1 cũng đồng bộ nên quyết định về x tất yếu sẽ xảy ra sau đó. 3.2.2 Đề cử Đề cử đòi hỏi phải bỏ phiếu liên bang về các tuyên bố: • đề cử x – cho biết x là ứng cử viên quyết định hợp lệ. Các nút có thể bỏ phiếu để đề cử nhiều giá trị—khác nhau các tuyên bố đề cử không mâu thuẫn nhau. Tuy nhiên, một lần một nút xác nhận bất kỳ tuyên bố đề cử nào, nó sẽ dừng bỏ phiếu đề cử các giá trị mới. Bỏ phiếu liên kết vẫn cho phép một nút xác nhận các tuyên bố đề cử mới mà họ không bỏ phiếu, bỏ phiếu hoặc chấp nhận một từ đại biểu chấp nhận một từ đại biểu a là hợp lệ chấp nhận từ bộ chặn không cam kết đã bình chọn một chấp nhận một đã xác nhận một đã bình chọn -a Hình 1. Các giai đoạn bỏ phiếu liên bang cho phép các thành viên của một tập hợp nguyên vẹn xác nhận ý kiến của nhau các giá trị được đề cử trong khi vẫn giữ lại phiếu bầu mới. Kết quả (đang phát triển) của việc đề cử là sự kết hợp mang tính quyết định của tất cả các giá trị trong các tuyên bố đề cử đã được xác nhận. Nếu x đại diện cho một tập hợp các giao dịch, các nút có thể kết hợp trong số các bộ, bộ lớn nhất hoặc bộ có hash cao nhất, vì vậy miễn là tất cả các nút đều làm như vậy. Bởi vì các nút giữ lại cái mới phiếu bầu sau khi xác nhận một tuyên bố đề cử, tập hợp các các câu lệnh được xác nhận chỉ có thể chứa hữu hạn nhiều giá trị. Thực tế là các tuyên bố đã được xác nhận được lan truyền một cách đáng tin cậy thông qua tập hợp nguyên vẹn có nghĩa là các nút nguyên vẹn cuối cùng hội tụ trên cùng một tập hợp các giá trị được đề cử và do đó kết quả đề cử, mặc dù tại một điểm không xác định, tùy ý bị trễ trong giao thức. Các nút sử dụng lựa chọn lãnh đạo liên kết để giảm số lượng các giá trị khác nhau trong các câu lệnh đề cử. Chỉ một nhà lãnh đạo chưa bỏ phiếu cho tuyên bố đề cử có thể giới thiệu một x mới. Các nút khác đang chờ phản hồi từ lãnh đạo và chỉ sao chép phiếu đề cử (hợp lệ) của lãnh đạo họ. Để đối phó với thất bại, đội ngũ lãnh đạo không ngừng phát triển xảy ra thời gian chờ, mặc dù trong thực tế chỉ có một số nút đưa ra các giá trị mới của x. 3.2.3 Bỏ phiếu liên bang Bỏ phiếu liên bang sử dụng giao thức ba giai đoạn được hiển thị trong Hình 1. Các nút cố gắng thống nhất các câu lệnh trừu tượng trước tiên bỏ phiếu, sau đó chấp nhận và cuối cùng là xác nhận các tuyên bố. Nút v có thể bỏ phiếu cho bất kỳ câu lệnh a hợp lệ nào mà không mâu thuẫn với cái khác của nósố phiếu còn tồn đọng và các tuyên bố được chấp nhận. Nó làm như vậy bằng cách phát đi một tin nhắn biểu quyết đã ký. v sau đó chấp nhận a nếu a phù hợp với các phát biểu được chấp nhận khác và (trường hợp 1)v là thành viên của một đại biểu trong đó mỗi nút hoặc bỏ phiếu cho a hoặc chấp nhận a hoặc (trường hợp 2) ngay cả khi v không bỏ phiếu cho a, tập hợp chặn v chấp nhận a. Trường hợp 2, v có thể trước đây đã bỏ phiếu mâu thuẫn với a, hiện đã bỏ phiếu bị bác bỏ. v được phép quên đi những phiếu bầu bị bác bỏ và giả vờ như nó chưa bao giờ sử dụng chúng vì ifv còn nguyên vẹn, nó biết phiếu bị bác bỏ không thể hoàn thành số đại biểu thông qua trường hợp 1. v thông báo rằng nó chấp nhận a, sau đó xác nhận a khi nó ở trong số đại biểu nhất trí chấp nhận a. Hình 2 cho thấy ảnh hưởng của tập chặn v và định lý xếp tầng trong bỏ phiếu liên bang. Hai nút đan xen nhau không thể xác nhận các tuyên bố trái ngược nhau, vì hai số đại biểu bắt buộc sẽ phải chia sẻ mộtThanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada 3 4 2 1 5 7
Stellar Konsensprotokoll
Das Stellar-Konsensprotokoll (SCP) basiert auf einem Quorum Byzantinisches Vertragsprotokoll mit offener Mitgliedschaft. Quoren entstehen aus den kombinierten lokalen Konfigurationsentscheidungen einzelner Knoten. Knoten erkennen jedoch nur Kollegien, denen sie selbst angehören, und erst danach Lernen der lokalen Konfigurationen aller anderen Kollegiumsmitglieder. Ein Vorteil dieses Ansatzes besteht darin, dass SCP von Natur aus vorhanden ist toleriert heterogene Ansichten darüber, welche Knoten vorhanden sind. Daher, Knoten können einseitig beitreten und verlassen, ohne dass ein Knoten erforderlich ist „View Change“-Protokoll zur Koordinierung der Mitgliedschaft. 3.1 Föderiertes byzantinisches Abkommen Das traditionelle Problem der byzantinischen Vereinbarung besteht aus a geschlossenes System von N Knoten, von denen einige fehlerhaft sind und möglicherweise sich willkürlich verhalten. Knoten empfangen Eingabewerte und tauschen sie aus Nachrichten, um über einen Ausgabewert unter den Eingaben zu entscheiden. Ein byzantinisches Vereinbarungsprotokoll ist sicher, wenn keine zwei gut funktionierenden Knoten unterschiedliche Entscheidungen und die Einzigartigkeit ausgeben Entscheidung war eine gültige Eingabe (für eine Definition von gültig vereinbart).SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. (siehe vorher). Ein Protokoll ist dann live, wenn es dies garantiert Jeder ehrliche Knoten gibt schließlich eine Entscheidung aus. Normalerweise gehen Protokolle davon aus, dass N = 3f + 1 für eine ganze Zahl ist f > 0, dann garantieren Sicherheit und eine gewisse Lebendigkeit solange höchstens f Knoten fehlerhaft sind. Irgendwann in diesen Protokolle, Knoten stimmen über vorgeschlagene Werte und einen Vorschlag ab Der Erhalt von 2f + 1 Stimmen, ein sogenanntes Stimmenquorum, wird die Entscheidung. Mit N = 3f + 1 Knoten, zwei beliebige Quoren von Größe 2f + 1 Überlappung in mindestens f + 1 Knoten; auch wenn f davon Überlappende Knoten sind fehlerhaft, die beiden Quoren teilen sich zumindest ein fehlerfreier Knoten, wodurch widersprüchliche Entscheidungen verhindert werden. Allerdings funktioniert dieser Ansatz nur, wenn sich alle Knoten darauf einigen Was stellt ein Quorum dar, was in SCP wo unmöglich ist Zwei Knoten wissen möglicherweise nicht einmal von der Existenz des anderen. Mit SCP deklariert jeder Knoten v einseitig Knotenmengen, nennt seine Quorum-Slices, so dass (a) v das glaubt, wenn alle Die Mitglieder eines Slice sind sich also über den Zustand des Systems einig Sie haben Recht, und (b) v glaubt, dass mindestens eine seiner Scheiben wird zur Verfügung stehen, um rechtzeitig Informationen darüber bereitzustellen Zustand des Systems. Wir nennen das resultierende System bestehend von Knoten und ihren Slices, ein Föderiertes Byzantinisches Abkommen (FBA)-System. Wie wir als nächstes sehen werden, entsteht ein Quorumsystem aus Knotenscheiben. Informell geben die Slices eines FBA-Knotens an, mit wem der Knoten erfordert Zustimmung. Beispielsweise kann ein Knoten eine Vereinbarung mit vier spezifischen Organisationen erfordern, die jeweils drei Knoten betreiben. zu Um Ausfallzeiten zu berücksichtigen, kann es seine Slices so einstellen, dass sie alle Sätze sind bestehend aus 2 Knoten jeder Organisation. Wenn dies „erfordert „Übereinstimmung mit“-Beziehung verbindet transitiv zwei beliebige Knoten, Wir bekommen eine globale Einigung. Andernfalls kann es zu Divergenz kommen, aber nur zwischen Organisationen, die beides nicht erfordert Vereinbarung mit dem anderen. Angesichts der Topologie der heutigen Wir gehen davon aus, dass die umfassende Konvergenz im Finanzsystem weiterhin zu einer Singe-Ledger-Geschichte führen wird, die die Leute nennen „das Stellar-Netzwerk“, so wie wir auch vom Internet sprechen. Quoren entstehen wie folgt aus Slices. Jeder Knoten spezifiziert Sein Quorum schneidet jede Nachricht ab, die es sendet. Sei S das Gruppe von Knoten, von denen eine Gruppe von Nachrichten stammt. A Der Knoten geht davon aus, dass der Nachrichtensatz das Quorum erreicht hat Schwellenwert, wenn für jedes Mitglied von S ein Slice in S enthalten ist. Aufgrund der Konstruktion erfüllt eine solche Menge S, wenn sie einstimmig ist, die Zustimmungsanforderungen jedes seiner Mitglieder. Ein fehlerhafter Peer kann Slices anbieten, die so gestaltet sind, dass sie etwas ändern Gut erzogene Knoten berücksichtigen Quoren. Aus Gründen der Protokollanalyse definieren wir ein Quorum in FBA als nicht leer Menge S von Knoten, die mindestens ein Quorum-Slice umfassen jedes nicht fehlerhafte Mitglied. Diese Abstraktion ist wie jede Menge solide von Nachrichten, die angeblich ein einstimmiges Quorum darstellen tatsächlich (auch wenn es Nachrichten von fehlerhaften Knoten enthält), und es ist präzise, wenn S nur gut erzogene Knoten enthält. In In diesem Abschnitt gehen wir auch davon aus, dass sich die Slices der Knoten nicht ändern. Dennoch lassen sich unsere Ergebnisse auf den Fall der sich verändernden Schicht übertragen denn ein System, in dem sich Slices ändern, ist nicht weniger sicher als ein System mit festen Scheiben, bei dem die Scheiben eines Knotens aus allen bestehen Slices, die es jemals im Fall der sich verändernden Slices verwendet (siehe Theorem 13 in [68]). Wie in Abschnitt 4 erläutert, hängt die Lebendigkeit davon ab Gut erzogene Knoten entfernen schließlich unzuverlässige Knoten aus ihren Scheiben. Da verschiedene Knoten unterschiedliche Vereinbarungsanforderungen haben, schließt FBA eine globale Definition von Sicherheit aus. Wir sagen Die nicht fehlerhaften Knoten v1 und v2 sind jeweils miteinander verflochten Quorum von v1 schneidet jedes Quorum von v2 in mindestens einem nicht fehlerhafter Knoten. Ein FBA-Protokoll kann eine Einigung gewährleisten nur zwischen ineinander verschlungenen Knoten; Da SCP dies tut, ist es seine Schuld Die Sicherheitstoleranz ist optimal. Die Internet-Hypothese, Das zugrunde liegende Design von Stellar besagt, dass sich die Knoten um die Menschen kümmern ungefähr wird miteinander verflochten sein. Wir sagen, dass eine Menge von Knoten I intakt ist, wenn I ein einheitlich fehlerfreies Quorum ist, sodass alle zwei Mitglieder von I miteinander verflochten sind, selbst wenn jeder Knoten außerhalb von I fehlerhaft ist. Intuitiv, dann sollte ich für die Handlungen von Nichtintakten unempfindlich bleiben Knoten. SCP garantiert sowohl nicht blockierende Lebendigkeit [93] als auch Sicherheit für intakte Mengen, obwohl die Knoten selbst dies nicht benötigen zu wissen (und möglicherweise nicht wissen zu können), welche Sätze intakt sind. Darüber hinaus ist die Vereinigung zweier intakter Mengen, die sich schneiden ein intaktes Set. Daher definieren intakte Mengen eine Partition der gut erzogene Knoten, bei denen jede Partition sicher und aktiv ist (unter bestimmten Bedingungen), aber möglicherweise werden unterschiedliche Partitionen ausgegeben abweichende Entscheidungen. 3.1.1 Überlegungen zur Sicherheit vs. Lebendigkeit beim Versand durch Amazon Mit wenigen Ausnahmen [64] sind die meisten geschlossenen byzantinischen Vereinbarungsprotokolle auf den Gleichgewichtspunkt abgestimmt, an dem Sicherheit und Lebendigkeit haben die gleiche Fehlertoleranz. Bei Versand durch Amazon Das bedeutet Konfigurationen, bei denen unabhängig von Ausfällen alle Ineinander verschlungene Mengen sind ebenfalls intakt. Vorausgesetzt, FBA bestimmt Da die Quoren dezentral verteilt werden, ist es unwahrscheinlich, dass einzelne Wahlmöglichkeiten zu diesem Gleichgewicht führen. Darüber hinaus bei Zumindest in Stellar ist das Gleichgewicht nicht wünschenswert: die Konsequenzen eines Sicherheitsversagens (nämlich doppelt ausgegebenes digitales Geld) vorliegen weitaus schlimmer als die eines Liveness-Ausfalls (nämlich Verzögerungen). bei Zahlungen, die ohnehin Tage gedauert haben, bevor Stellar). Menschen Daher sollten und werden große Quorum-Slices ausgewählt, so dass Ihre Knoten bleiben eher miteinander verflochten als intakt. Je weiter die Waage kippt, desto einfacher ist es, sich davon zu erholen typischere Liveness-Fehler in einem FBA-System als in einem herkömmlichen geschlossenen System. In geschlossenen Systemen müssen alle Nachrichten vorhanden sein im Hinblick auf die gleiche Gruppe von Kollegien interpretiert werden. Daher, Das Hinzufügen und Entfernen von Knoten zur Wiederherstellung nach einem Ausfall ist erforderlich Einen Konsens über ein Neukonfigurationsereignis zu erzielen, was schwierig ist, wenn der Konsens nicht mehr besteht. Im Gegensatz dazu gilt bei FBA Jeder Knoten kann seine Quorum-Slices jederzeit einseitig anpassen Zeit. Als Reaktion auf einen Ausfall an einer systemrelevanten Stelle Organisation können Knotenadministratoren ihre Slices anpassen Umgehen des Problems, ähnlich wie beim Koordinieren von Antworten zu BGP-Katastrophen [63] (allerdings ohne die Einschränkungen von Routing über physische Netzwerkverbindungen).
Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada 3.1.2 Der Kaskadensatz SCP folgt der Vorlage des Grundrundenmodells [42]; Die Knoten durchlaufen jeweils eine Reihe nummerierter Stimmzettel Versuchen Sie drei Aufgaben: (1) Identifizieren Sie einen „sicheren“ Wert, der nicht durch eine Entscheidung in einem früheren Wahlgang im Widerspruch steht (oft als „sicherer“ Wert bezeichnet). Vorbereitung des Stimmzettels), (2) Einigung über den sicheren Wert und (3) Feststellung, dass die Einigung erfolgreich war. Versand durch Amazon ist jedoch geöffnet Die Mitgliedschaft behindert mehrere gängige Techniken und macht es möglich Es ist unmöglich, herkömmliche geschlossene Protokolle auf die FBA zu „portieren“. Modell durch einfaches Ändern der Definition des Quorums. Eine von vielen Protokollen verwendete Technik ist die Rotation nach Zeitüberschreitungen im Round-Robin-Verfahren durch die Leader-Knoten. In einem geschlossenen System wird die Leader-Auswahl im Round-Robin-Verfahren sichergestellt dass am Ende ein einzigartiger, ehrlicher Anführer eine Einigung über einen einzigen Wert erzielt. Leider Round-Robin kann nicht in einem FBA-System mit unbekannter Mitgliedschaft arbeiten. Eine weitere häufige Technik, die bei FBA fehlschlägt, besteht darin, anzunehmen, dass ein bestimmtes Quorum alle Knoten überzeugen kann. Zum Beispiel, Wenn jeder beliebige 2f + 1-Knoten als Quorum anerkennt, dann 2f + 1 Signaturen reichen aus, um allen Knoten den Protokollstatus nachzuweisen. Ähnlich verhält es sich, wenn ein Knoten ein Quorum identischer Nachrichten empfängt Durch die zuverlässige Übertragung [24] kann der Knoten davon ausgehen, dass alle nicht fehlerhaften Knoten ebenfalls ein Quorum sehen. Im Gegensatz dazu a Für Knoten außerhalb des Quorums bedeutet das Quorum nichts. Schließlich verwenden nicht-föderierte Systeme häufig „Rückwärts“-Methoden. Argumentation zur Sicherheit: Wenn f + 1 Knoten fehlerhaft sind, gilt für alle Sicherheit Garantien gehen verloren. Wenn also Knoten v alle f + 1 Knoten hört Geben Sie eine Tatsache an. F, v kann davon ausgehen, dass mindestens einer davon erzählt Wahrheit (und daher, dass F wahr ist) ohne Verlust der Sicherheit. So Die Argumentation schlägt bei FBA fehl, da Sicherheit eine Eigenschaft von Paaren ist von Knoten, so dass ein Knoten, der die Sicherheit einiger Peers verloren hat, dies kann Verlieren Sie immer die Sicherheit an mehr Knoten, indem Sie schlechte Fakten annehmen. FBA kann jedoch in Bezug auf die Lebendigkeit rückwärts denken. Definieren Sie einen V-Blocking-Satz als einen Satz von Knoten, die sich alle schneiden Scheibe von v. Wenn ein v-blockierender Satz B einstimmig fehlerhaft ist, B kann Node V ein Quorum verweigern und ihm die Lebendigkeit kosten. Daher, wenn B gibt einstimmig die Tatsache F an, dann weiß v, dass entweder F ist wahr oder v ist nicht intakt. Allerdings muss v noch vollständig angezeigt werden Quorum, um zu wissen, dass ineinander verschlungene Knoten F nicht widersprechen, was zu einer letzten Kommunikationsrunde in SCP führt und andere FBA-Protokolle [47], die analog nicht erforderlich sind geschlossene Mitgliedschaftsprotokolle. Das Ergebnis ist, dass wir es haben drei mögliche Ebenen des Vertrauens in potenzielle Fakten: unbestimmt, sicher unter intakten Knoten anzunehmen (was wir tun werden). Begriff akzeptierte Fakten) und sicher untereinander anzunehmen Knoten (die wir als bestätigte Fakten bezeichnen werden). Knoten v kann effizient bestimmen, ob eine Menge B blockiert, indem er prüft, ob B alle seine Slices schneidet. Interessanterweise kündigen Knoten immer ihre Anweisungen an Akzeptieren und ein vollständiges Quorum eine Aussage akzeptiert, löst dies einen Kaskadenprozess aus, durch den sich die Aussagen überall verbreiten intakte Sätze. Wir nennen die Schlüsseltatsache, die dieser Ausbreitung zugrunde liegt der Kaskadensatz, der Folgendes besagt: Wenn ich ein bin Intakte Menge, Q ist ein Quorum eines beliebigen Mitglieds von I und S ist ein beliebiges Obermenge von Q, dann ist entweder S ⊇I oder es gibt ein Mitglied v ∈I so dass v < S und I ∩S v-blockierend ist. Intuitiv war das so Ist dies nicht der Fall, würde das Komplement von S ein Quorum enthalten das schneidet I, aber nicht Q, und verstößt gegen die Quorum-Schnittmenge. Beachten Sie, dass wir mit S = Q beginnen und S wiederholt zu erweitern Wenn wir alle Knoten einbeziehen, die es blockiert, erhalten wir einen Kaskadeneffekt, bis schließlich umfasst S alles von I. 3.2 Protokollbeschreibung SCP ist ein teilweise synchrones Konsensprotokoll [42], das aus einer Reihe von Versuchen besteht, einen Konsens zu erreichen Stimmzettel. Bei Abstimmungen kommt es zu immer längeren Auszeiten. A Das Abstimmungssynchronisierungsprotokoll stellt sicher, dass die Knoten eingeschaltet bleiben den gleichen Stimmzettel für immer längere Zeiträume bis zu den Stimmzetteln sind effektiv synchron. Eine Kündigung ist nicht garantiert bis die Stimmzettel synchron sind, aber zwei synchrone Stimmzettel Dies ist bei fehlerhaften Mitgliedern von Slices gut erzogener Knoten der Fall Nichteingreifen reicht aus, damit SCP beendet wird. In einem Abstimmungsprotokoll werden die jeweils getroffenen Maßnahmen festgelegt Stimmzettel. Ein Stimmzettel beginnt mit einer Vorbereitungsphase, in der Knoten Versuchen Sie, einen Wert zu ermitteln, der nicht im Widerspruch steht eine frühere Entscheidung. Dann versuchen es die Knoten in einer Commit-Phase eine Entscheidung über den vorbereiteten Wert zu treffen. Bei der Stimmabgabe wird ein Vereinbarungs-Unterprotokoll namens „Federated Voting“ eingesetzt, dn welche Knoten über abstrakte Aussagen abstimmen das könnte sich irgendwann bestätigen oder stecken bleiben. Einige Aussagen könnten als widersprüchlich bezeichnet werden, und die Sicherheit Die Garantie der föderierten Abstimmung besteht darin, dass keine zwei Mitglieder einer Ineinander verschlungene Mengen bestätigen widersprüchliche Aussagen. Die Bestätigung einer Aussage kann nicht garantiert werden, es sei denn, sie ist intakt Gruppe, deren Mitglieder alle gleich abstimmen. Wenn jedoch a Mitglied einer intakten Menge bestätigt eine Aussage, föderiert Die Abstimmung garantiert, dass alle Mitglieder der intakten Menge diese Aussage letztendlich bestätigen. Daher werden irreversible Schritte unternommen als Antwort auf bestätigende Aussagen bewahrt die Lebendigkeit für intakte Knoten. Knoten schlagen zunächst Werte vor, die aus einer Nominierung stammen Protokoll, das die Chancen aller Mitglieder eines intakten Systems erhöht Satz, der denselben Wert vorschlägt, und der schließlich konvergiert (obwohl es keine Möglichkeit gibt, die Konvergenz als vollständig zu bestimmen). Die Nominierung kombiniert eine gemeinsame Abstimmung mit der Auswahl des Anführers. Da Round-Robin bei Versand durch Amazon nicht möglich ist, wird die Nominierung verwendet ein probabilistisches Führungsauswahlschema. Das Kaskadentheorem spielt bei der Stimmabgabe eine entscheidende Rolle Synchronisierung und bei der Vermeidung blockierter Zustände Eine Kündigung ist nicht mehr möglich. 3.2.1 Abstimmung SCP-Knoten führen eine Reihe nummerierter Abstimmungen durch und nutzen eine gemeinsame Abstimmung, um sich auf Aussagen darüber zu einigen Welche Werte in welchen Abstimmungen entschieden werden oder nicht. Wenn Asynchronität oder fehlerhaftes Verhalten eine Entscheidung in Abstimmung n verhindert, Zeitüberschreitung der Knoten und erneuter Versuch in Stimmzettel n + 1.
SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. Die Rückruf-Verbundabstimmung wird möglicherweise nicht beendet. Daher einige Aussagen zu Stimmzetteln können dauerhaft stecken bleiben unbestimmter Zustand, in dem Knoten niemals feststellen können, ob sie sind noch in Bearbeitung oder stecken fest. Weil Knoten nicht ausschließen können die Möglichkeit, dass sich unbestimmte Aussagen später als wahr erweisen, Sie dürfen niemals versuchen, gemeinsam über neue Stellungnahmen abzustimmen widersprüchliche unbestimmte. In jedem Wahlgang n nutzen die Knoten die föderierte Abstimmung für zwei Arten der Aussage: • Prepare ⟨n,x⟩– gibt an, dass es keinen anderen Wert als x gibt wurde oder wird jemals in einem Wahlgang ≤n entschieden. • commit ⟨n,x⟩– besagt, dass über x in Abstimmung n entschieden wird. Beachten Sie unbedingt, dass „prepare ⟨n,x⟩dem Commit widerspricht“. ⟨n′,x ′⟩wenn n ≥n′ und x , x ′. Ein Knoten beginnt mit Abstimmung n, indem er versucht, eine gemeinsame Abstimmung über a durchzuführen Anweisung vorbereiten ⟨n,x⟩. Falls vorhanden, vorbereiten Sie eine Anweisung wurde durch föderale Abstimmung erfolgreich bestätigt Der Knoten wählt x aus der bestätigten Liste des höchsten Stimmzettels. Andernfalls setzt der Knoten x auf die Ausgabe des Nominierungsprotokoll, das im nächsten Unterabschnitt beschrieben wird. Genau dann, wenn ein Knoten die Vorbereitung ⟨n,x⟩ erfolgreich bestätigt In Stimmzettel n versucht es eine föderierte Abstimmung über Commit ⟨n,x⟩. Wenn Wenn dies gelingt, bedeutet dies, dass der SCP eine Entscheidung getroffen hat und der Knoten etwas ausgibt der Wert aus der bestätigten Commit-Anweisung. Betrachten Sie eine ineinander verschlungene Menge S. Da höchstens ein Wert Kann von Mitgliedern von S in einem bestimmten Wahlgang bestätigt werden, es dürfen keine zwei unterschiedlichen Werte bestätigt werden Mitglieder von S in einem bestimmten Wahlgang. Darüber hinaus, wenn commit ⟨n,x⟩ bestätigt ist, dann Prepare ⟨n,x⟩wurde ebenfalls bestätigt; seitdem Prepare ⟨n,x⟩ widerspricht jedem früheren Commit für einen anderen Wert, da die Vereinbarung eine föderierte Abstimmung garantiert Wir erhalten, dass früher kein anderer Wert festgelegt werden darf Stimmzettel durch Mitglieder von S. Durch Einleitung der Stimmzettelnummern, wir Stellen Sie daher sicher, dass SCP sicher ist. Betrachten Sie für die Lebendigkeit einen intakten Satz I und einen ausreichend langen Satz synchroner Stimmzettel n. Wenn fehlerhafte Knoten in den Slices auftreten von gut erzogenen Knoten stören sich nicht an n, dann per Stimmzettel n + 1 alle Mitglieder von I haben die gleiche Menge P von Prepare-Anweisungen bestätigt. Wenn P = ∅und Stimmzettel n lang genug war, ist der Das Nominierungsprotokoll wird sich auf einen Wert x konvergiert haben. Andernfalls sei x der Wert aus dem Plan mit der höchsten Abstimmung in P. In jedem Fall werde ich es einheitlich mit dem Verbund versuchen Abstimmung über die Vorbereitung von ⟨n + 1,x⟩ im nächsten Wahlgang. Deshalb, wenn n + 1 ebenfalls synchron ist, folgt zwangsläufig eine Entscheidung für x. 3.2.2 Nominierung Die Nominierung erfordert eine gemeinsame Abstimmung über Stellungnahmen: • x nominieren – gibt an, dass x ein gültiger Entscheidungskandidat ist. Knoten können dafür stimmen, mehrere Werte zu nominieren – unterschiedliche Nominate-Aussagen sind nicht widersprüchlich. Allerdings einmal Bestätigt ein Knoten eine Nominierungsaussage, stimmt er nicht mehr dafür ab neue Werte benennen. Die föderierte Abstimmung ermöglicht es einem Knoten weiterhin Bestätigen Sie die Aussagen der neuen Nominierten, für die sie nicht gestimmt hat abstimmen oder annehmen a vom Kollegium akzeptiere a vom Kollegium a ist gültig akzeptiere ein von Sperrsatz unverbindlich stimmte a akzeptiert a bestätigt a stimmte mit ¬a Abbildung 1. Phasen der föderierten Abstimmung ermöglicht es Mitgliedern eines intakten Sets, sich gegenseitig zu bestätigen nominierten Werte, während gleichzeitig neue Stimmen zurückgehalten werden. Das (sich entwickelnde) Ergebnis der Nominierung ist eine deterministische Kombination aller Werte in bestätigten Nominierungsaussagen. Wenn x stellt eine Reihe von Transaktionen dar, Knoten können die Vereinigung annehmen von Mengen, die größte Menge oder die mit dem höchsten hash, also solange alle Knoten dasselbe tun. Weil Knoten Neues zurückhalten Stimmen nach Bestätigung einer Nominierungserklärung, der Satz von bestätigte Aussagen können nur endlich viele Werte enthalten. Die Tatsache, dass sich bestätigte Aussagen zuverlässig verbreiten Intakte Mengen bedeuten, dass intakte Knoten schließlich auf dem zusammenlaufen der gleiche Satz nominierter Werte und damit das gleiche Nominierungsergebnis, allerdings an einem unbekannten Punkt, willkürlich spät im Protokoll. Knoten verwenden eine föderierte Leiterauswahl, um die zu reduzieren Anzahl unterschiedlicher Werte in Nominate-Anweisungen. Nur Ein Anführer, der noch nicht für eine Nominierungserklärung gestimmt hat, kann ein neues x einführen. Andere Knoten warten darauf, von ihnen zu hören Führer und kopieren Sie einfach die (gültigen) Nominierungsstimmen ihrer Führer. Um Misserfolgen entgegenzuwirken, wächst die Gruppe der Führungskräfte immer weiter Es kommt zu Zeitüberschreitungen, obwohl in der Praxis nur wenige Knoten neue Werte von x einführen. 3.2.3 Föderierte Abstimmung Bei der föderierten Abstimmung wird ein dreiphasiges Protokoll verwendet, das in gezeigt wird Abbildung 1. Knoten versuchen zunächst, sich auf abstrakte Aussagen zu einigen Abstimmung, dann Annahme und schließlich Bestätigung von Aussagen. Ein Knoten v kann für jede gültige Anweisung a stimmen, die dies nicht tut dem anderen widersprechenausstehende Stimmen und angenommene Stellungnahmen. Dies geschieht durch die Ausstrahlung einer unterzeichneten Abstimmungsnachricht. v akzeptiert dann a, wenn a mit anderen akzeptierten Aussagen übereinstimmt und entweder (Fall 1)v Mitglied eines Quorums ist, in dem jeder Knoten stimmt entweder für a oder akzeptiert a, oder (Fall 2) auch wenn v habe nicht für a gestimmt, ein V-Blocking-Set akzeptiert a. Im Fall 2 kann v haben zuvor Stimmen abgegeben, die einem widersprechen, was jetzt der Fall ist überstimmt worden. v darf überstimmte Stimmen vergessen und tun Sie so, als hätte es sie nie gewirkt, weil ifv intakt ist, es weiß es Überstimmte Stimmen können kein Quorum durch Fall 1 vervollständigen. v sendet, dass es a akzeptiert, und bestätigt dann a, wenn es drin ist ein Quorum, das einstimmig annimmt. Abbildung 2 zeigt die Wirkung von V-Blocking-Sets und des Kaskadensatzes während föderierte Abstimmung. Zwei miteinander verflochtene Knoten können widersprüchliche Aussagen nicht bestätigen, da sich die beiden erforderlichen Quoren einen teilen müsstenSchnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada 3 4 2 1 5 7
Bình chọn X
Bầu Y (a) 3 4 2 1 5 7 6 Bình chọn X Bình chọn X Bình chọn X Bình chọn Y Bình chọn X Bình chọn Y Bình chọn Y (b) 3 4 2 1 5 7 6 Chấp nhận X Bình chọn X Chấp nhận X Bình chọn Y Chấp nhận X Bình chọn Y Bình chọn Y (c) 3 4 2 1 5 7 6 Chấp nhận X Chấp nhận X Chấp nhận X Bình chọn Y Chấp nhận X Chấp nhận X Bình chọn Y (d) 3 4 2 1 5 7 6 Chấp nhận X Bình chọn X Chấp nhận X Chấp nhận X Chấp nhận X Chấp nhận X Chấp nhận X (e) Hình 2. Hiệu ứng xếp tầng trong bỏ phiếu liên bang. Mỗi nút có một lát đại biểu được biểu thị bằng các mũi tên tới các thành viên của lát. (a) Các phát biểu mâu thuẫn X và Y được đưa ra. (b) Các nút bỏ phiếu cho các phát biểu hợp lệ. (c) Nút 1 chấp nhận X sau đại biểu của nó {1, 2, 3, 4} nhất trí bỏ phiếu cho X. (d) Các nút 1, 2, 3 và 4 đều chấp nhận X; tập {1} là 5-blocking, vì vậy nút 5 chấp nhận X, ghi đè phiếu bầu trước đó của nó cho Y. (e) Tập {5} là 6- và 7-chặn, vì vậy cả 6 và 7 đều chấp nhận X. nút không bị lỗi không thể chấp nhận các câu lệnh mâu thuẫn. Việc xác nhận một tuyên bố không được đảm bảo: trong trường hợp biểu quyết chia rẽ, cả hai tuyên bố có thể có hiệu lực vĩnh viễn bị mắc kẹt khi chờ số đại biểu trong giai đoạn bỏ phiếu. Tuy nhiên, nếu một nút trong một tập nguyên vẹn Tôi xác nhận một câu lệnh, tầng định lý và chấp nhận trường hợp 2 đảm bảo rằng tất cả I cuối cùng sẽ xác nhận tuyên bố đó. 3.2.4 Đồng bộ hóa phiếu bầu Nếu các nút không thể xác nhận một tuyên bố cam kết cho lá phiếu hiện tại, họ sẽ bỏ cuộc sau khi hết thời gian chờ. Thời gian chờ được dài hơn với mỗi lá phiếu để điều chỉnh theo giới hạn tùy ý về độ trễ mạng. Tuy nhiên, chỉ thời gian chờ là không đủ để đồng bộ hóa phiếu bầu của các nút không bắt đầu cùng lúc hoặc đã không đồng bộ hóa vì các lý do khác. Để đạt được sự đồng bộ hóa, các nút chỉ khởi động bộ đếm thời gian khi chúng là một phần của số đại biểu có ở lá phiếu hiện tại (hoặc sau này) n. Cái này làm chậm các nút bắt đầu sớm và đảm bảo rằng không có thành viên của một nhóm nguyên vẹn luôn dẫn đầu nhóm quá xa. Hơn nữa, nếu một nút v nhận thấy một tập hợp chặn v sau đó. lá phiếu, nó ngay lập tức chuyển sang lá phiếu thấp nhất sao cho không còn như vậy nữa, bất kể bất kỳ bộ tính giờ nào. thác nước định lý sau đó đảm bảo rằng tất cả những người đi sau đều bắt kịp. kết quả là các lá phiếu gần như được đồng bộ hóa xuyên suốt một cách nguyên vẹn được thiết lập khi hệ thống trở nên đồng bộ. 3.2.5 Lựa chọn lãnh đạo liên bang Lựa chọn người lãnh đạo cho phép mỗi nút chọn những người lãnh đạo theo cách như vậy theo cách mà các nút thường chỉ chọn một hoặc một số nhỏ của các nhà lãnh đạo. Để khắc phục sự thất bại của người lãnh đạo, việc lựa chọn người lãnh đạo tiến hành qua các vòng. Nếu người dẫn đầu vòng hiện tại dường như không hoàn thành trách nhiệm của mình thì sau một thời gian các nút trong khoảng thời gian chờ nhất định sẽ chuyển sang vòng tiếp theo để mở rộng nhóm lãnh đạo mà họ theo đuổi. Mỗi vòng sử dụng hai hàm mật mã hash duy nhất, H0 và H1, xuất ra các số nguyên trong phạm vi [0,hmax). Ví dụ: Stellar sử dụng Hi(m) = SHA256(i∥b∥r ∥m), trong đó b là phiên bản SCP tổng thể (số khối hoặc sổ cái), r là số vòng lựa chọn người lãnh đạo và hmax = 2256. Trong một vòng, chúng tôi xác định mức độ ưu tiên của nút v là: mức độ ưu tiên(v) = H1(v) Mỗi nút sẽ chọn một người làm ống hút làm người lãnh đạo nút có mức độ ưu tiên cao nhất (v). Cách tiếp cận này hoạt động tốt với các lát đại biểu gần như giống hệt nhau, nhưng không đúng cách nắm bắt được tầm quan trọng của các nút trong cấu hình không cân bằng. Ví dụ: nếu Châu Âu và Trung Quốc mỗi nước đóng góp 3 các nút theo mọi đại biểu, nhưng Trung Quốc chạy 1.000 nút và Châu Âu 4, thì Trung Quốc sẽ có nút ưu tiên cao nhất 99,6% của thời đại. Do đó chúng tôi giới thiệu một khái niệm về trọng lượng lát cắt, trong đó trọng lượng(u,v) ∈[0, 1] là một phần của các lát đại biểu của nút u chứa nút v. Khi nút u đang chọn người lãnh đạo mới, nó chỉ xem xét hàng xóm, được xác định như sau: hàng xóm(u) = { v | H0(v) < hmax · trọng lượng(u,v) } Sau đó, một nodeu bắt đầu với một tập hợp các nhà lãnh đạo trống và tại mỗi vòng thêm vào đó nút v trong hàng xóm (u) có giá trị cao nhất ưu tiên(v). Nếu tập hàng xóm trống trong bất kỳ vòng nào, thay vào đó, u sẽ thêm nút có giá trị thấp nhất làH0(v)/weight(u,v).
Abstimmung X
Stimme Y (a) 3 4 2 1 5 7 6 Abstimmung X Abstimmung X Abstimmung X Abstimmung Y Abstimmung X Abstimmung Y Abstimmung Y (b) 3 4 2 1 5 7 6 Akzeptiere X Abstimmung X Akzeptiere X Abstimmung Y Akzeptiere X Abstimmung Y Abstimmung Y (c) 3 4 2 1 5 7 6 Akzeptiere X Akzeptiere X Akzeptiere X Abstimmung Y Akzeptiere X Akzeptiere X Abstimmung Y (d) 3 4 2 1 5 7 6 Akzeptiere X Abstimmung X Akzeptiere X Akzeptiere X Akzeptiere X Akzeptiere X Akzeptiere X (e) Abbildung 2. Kaskadeneffekt bei der föderierten Abstimmung. Jeder Knoten verfügt über einen Quorum-Slice, der den Mitgliedern des Slice durch Pfeile angezeigt wird. (a) Widersprüchliche Aussagen X und Y werden eingeführt. (b) Knoten stimmen für gültige Aussagen. (c) Knoten 1 akzeptiert X nach Erreichen seines Quorums {1, 2, 3, 4} stimmt einstimmig für X. (d) Knoten 1, 2, 3 und 4 akzeptieren alle X; Satz {1} ist 5-blockierend, also akzeptiert Knoten 5 X und überstimmt seine vorherige Stimme für Y. (e) Satz {5} ist 6- und 7-blockierend, also akzeptieren 6 und 7 beide X. nicht fehlerhafter Knoten, der widersprüchliche Aussagen nicht akzeptieren konnte. Eine Bestätigung einer Aussage ist nicht gewährleistet: in Im Falle einer getrennten Abstimmung können beide Aussagen dauerhaft sein Ich muss in der Abstimmungsphase auf ein Quorum warten. Wenn jedoch ein Knoten in einer intakten Menge I bestätigt eine Aussage, die Kaskade Satz und akzeptiere Fall 2 stellen sicher, dass ich irgendwann alles tun werde bestätige diese Aussage. 3.2.4 Abstimmungssynchronisierung Wenn Knoten nicht in der Lage sind, eine Commit-Anweisung für zu bestätigen Aktueller Wahlgang, sie geben nach einer Auszeit auf. Die Zeitüberschreitung wird angezeigt mit jedem Wahlgang länger, um sich an willkürliche Grenzen anzupassen auf Netzwerkverzögerung. Timeouts allein reichen jedoch nicht aus, um Stimmzettel von Knoten zu synchronisieren, die nicht gleichzeitig gestartet sind oder wurde aus anderen Gründen desynchronisiert. Um eine Synchronisierung zu erreichen, starten Knoten den Timer erst, wenn sie Teil eines Knotens sind Quorum, das bei der aktuellen (oder einer späteren) Abstimmung gilt. Dies verlangsamt Knoten, die früh gestartet sind, und stellt sicher, dass keine Mitglied einer intakten Gruppe bleibt zu weit vor der Gruppe. Darüber hinaus, wenn ein Knoten v zu einem späteren Zeitpunkt jemals einen v-blockierenden Satz bemerkt Stimmzettel, es springt sofort zum niedrigsten Stimmzettel, so dass dieser Dies ist unabhängig von etwaigen Timern nicht mehr der Fall. Die Kaskade Der Satz stellt dann sicher, dass alle Nachzügler aufholen. Das Ergebnis ist, dass die Stimmzettel während eines ganzen Zeitraums ungefähr synchronisiert sind gesetzt, sobald das System synchron wird. 3.2.5 Auswahl des föderierten Anführers Durch die Auswahl von Anführern kann jeder Knoten Anführer in einem solchen Netzwerk auswählen So wählen Knoten im Allgemeinen nur eine oder eine kleine Anzahl aus von Führungskräften. Um dem Versagen des Leiters Rechnung zu tragen, erfolgt die Auswahl des Leiters geht durch Runden. Wenn Anführer der aktuellen Runde scheinen ihrer Verantwortung nicht nachzukommen, dann nach a Bestimmte Timeout-Knoten gehen in die nächste Runde über Erweitern Sie die Gruppe der Führungskräfte, denen sie folgen. Jede Runde verwendet zwei einzigartige kryptografische hash-Funktionen, H0 und H1, die Ganzzahlen im Bereich [0,hmax) ausgeben. Zum Beispiel verwendet Stellar Hi(m) = SHA256(i∥b∥r ∥m), wobei b ist die gesamte SCP-Instanz (Block- oder Ledger-Nummer), r ist die Anzahl der Leader-Auswahlrunden und hmax = 2256. Innerhalb In einer Runde definieren wir die Priorität von Knoten v als: Priorität(v) = H1(v) Jeder Knoten würde einen Strohmann als Anführer wählen der Knoten mit der höchsten Priorität (v). Dieser Ansatz funktioniert gut mit nahezu identischen Quorum-Slices, funktioniert aber nicht richtig Erfassen Sie die Bedeutung von Knoten in unausgeglichenen Konfigurationen. Wenn beispielsweise Europa und China jeweils 3 beitragen Knoten zu jedem Quorum, aber China betreibt 1.000 Knoten und Europa 4, dann wird China den Knoten mit der höchsten Priorität haben 99,6 % der Zeit. Wir führen daher einen Begriff des Scheibengewichts ein, wo Weight(u,v) ∈[0, 1] ist der Bruchteil der Quorum-Slices des Knotens u enthält den Knoten v. Wenn der Knoten u einen neuen Anführer auswählt, wird er berücksichtigt nur Nachbarn, die wie folgt definiert sind: Nachbarn(u) = { v | H0(v) < hmax · Gewicht(u,v) } Ein Knoten beginnt dann mit einem leeren Satz von Anführern und zwar bei jedem Runde fügt den Knoten v in Nachbarn (u) mit dem höchsten hinzu Priorität(v). Wenn die Menge der Nachbarn in einer Runde leer ist, fügt u stattdessen den Knoten v mit dem niedrigsten Wert von H0(v)/Gewicht(u,v) hinzu.
Xác minh chính thức của SCP
Để loại bỏ các lỗi thiết kế, chúng tôi đã chính thức xác minh tính an toàn của SCP và các thuộc tính sống động (xem [65]). Cụ thể, chúng tôi đã xác minh các nút đan xen đó không bao giờ bất đồng ý kiến và rằng, trong các điều kiện được thảo luận dưới đây, mọi thành viên của một tập hợp nguyên vẹn cuối cùng sẽ quyết định. Điều thú vị là việc xác minh cho thấy rằng những điều kiện mà SCP đảm bảo sự sống rất tinh tế, và mạnh mẽ hơn suy nghĩ ban đầu [68]: như được thảo luận bên dưới, các nút độc hại thao túng thời gian mà không có cách nào khác đi chệch khỏi giao thức có thể cần phải được gỡ bỏ bằng tay từ các lát đại biểu.
SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. Để đảm bảo rằng các tài sản đã được chứng minh có giá trị nhất có thể cấu hình và thực thi FBA, chúng tôi xem xét tùy ý số nút có cấu hình cục bộ tùy ý. Cái này bao gồm các kịch bản với các bộ nguyên vẹn rời rạc, cũng như các lần thực thi có thể kéo dài vô tận. Nhược điểm là chúng ta phải đối mặt với vấn đề đầy thách thức trong việc xác minh một tham số hệ thống trạng thái vô hạn. Để duy trì việc xác minh dễ dàng, chúng tôi đã lập mô hình SCP theo logic bậc nhất (FOL) bằng cách sử dụng Ivy [69] và phương pháp của [82]. Quá trình xác minh bao gồm việc cung cấp các phỏng đoán quy nạp theo cách thủ công, sau đó được kiểm tra tự động bởi Cây thường xuân. Mô hình FOL của SCP tóm tắt một số khía cạnh của Các hệ thống FBA khó xử lý trong FOL (ví dụ: định lý tầng được coi là một tiên đề), vì vậy chúng tôi xác minh tính đúng đắn của sự trừu tượng hóa bằng cách sử dụng Isabelle/HOL [75]. Sau khi trình bày vấn đề xác minh trong FOL, chúng tôi xác minh tính an toàn bằng cách cung cấp một bất biến quy nạp. quy nạp bất biến bao gồm hàng tá phỏng đoán một dòng cho khoảng 150 dòng đặc tả giao thức. Sau đó, chúng tôi chỉ định các thuộc tính sống của SCP trong Logic Thời gian Tuyến tính của Ivy và sử dụng giảm độ sống để an toàn [80, 81] để giảm độ sống bài toán xác minh cho bài toán tìm biểu thức quy nạp bất biến. Mặc dù sự an toàn của SCP tương đối dễ thực hiện chứng minh, lập luận về sự sống của SCP phức tạp hơn nhiều và bao gồm khoảng 150 bất biến một dòng. Việc chứng minh tính sống động đòi hỏi một sự hình thức hóa chính xác của giả định theo đó SCP đảm bảo chấm dứt. Ban đầu chúng tôi nghĩ rằng một bộ nguyên vẹn sẽ luôn chấm dứt nếu tất cả các thành viên đã loại bỏ các nút bị lỗi khỏi lát cắt của họ [68]. Tuy nhiên, điều này hóa ra vẫn chưa đủ: một người cư xử tốt (nhưng không còn nguyên vẹn) nút trong số đại biểu thành viên của I can, theo ảnh hưởng của các nút bị lỗi, ngăn chặn việc chấm dứt bằng cách hoàn thành đủ số đại biểu ngay trước khi kết thúc cuộc bỏ phiếu, do đó gây ra thành viên của I chọn các giá trị khác nhau của x trong lần bỏ phiếu tiếp theo. Do đó, chúng ta phải giả định thêm rằng, một cách không chính thức, cuối cùng mỗi nút trong số đại biểu của một thành viên của tôi trở nên kịp thời hoặc không gửi tin nhắn nào trong một khoảng thời gian vừa đủ. Trong thực tế, điều này có nghĩa là các thành viên của tôi có thể cần điều chỉnh các lát cắt của chúng cho đến khi điều kiện được giữ nguyên. Cái này vấn đề không phải là cố hữu của hệ thống FBA: Losa et al. [47] có mặt một giao thức mà sự tồn tại của nó phụ thuộc vào điểm yếu hơn giả định về sự đồng bộ hóa cuối cùng và sự lựa chọn lãnh đạo cuối cùng mà không cần phải loại bỏ các nút bị lỗi khỏi các lát cắt.
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.
Mạng thanh toán
Phần này mô tả mạng thanh toán của Stellar, được triển khai dưới dạng máy trạng thái được sao chép [88] trên SCP. 5.1 Mô hình sổ cái Sổ cái của Stellar được thiết kế dựa trên sự trừu tượng hóa tài khoản (trong tương phản với sản lượng giao dịch chưa chi tiêu tập trung vào tiền xu hơn hoặc mẫu UTXO của Bitcoin). Nội dung sổ cái bao gồm một tập hợp các mục sổ cái gồm bốn loại riêng biệt: tài khoản, đường tin cậy, ưu đãi và dữ liệu tài khoản. Tài khoản là người chủ sở hữu và phát hành tài sản. Mỗi tài khoản được đặt tên theo khóa công khai. Theo mặc định, khóa riêng tương ứng có thể ký giao dịch cho tài khoản. Tuy nhiên, các tài khoản có thể được cấu hình lại để thêm những người ký khác và hủy cấp phép khóa đặt tên cho tài khoản, bằng một Tùy chọn “multisig” để yêu cầu nhiều người ký. Mỗi tài khoản cũng chứa: số thứ tự (có trong giao dịch để tránh phát lại), một số cờ và số dư trong "bản địa" tiền điện tử được khai thác trước có tên là XLM, nhằm giảm thiểu một số cuộc tấn công từ chối dịch vụ và tạo điều kiện thuận lợi cho việc tạo lập thị trường như một loại tiền tệ trung lập. Trustlines theo dõi quyền sở hữu các tài sản đã phát hành, được đặt tên bởi một cặp bao gồm tài khoản phát hành và một tài khoản ngắn hạn mã tài sản (ví dụ: “USD” hoặc “EUR”). Mỗi đường dây tin cậy chỉ định một tài khoản, một tài sản, số dư của tài khoản trong tài sản đó, một vượt quá giới hạn mà số dư không thể tăng lên và một số cờ. Một tài khoản phải đồng ý rõ ràng để nắm giữ một tài sản bằng cách tạo ra một đường dây tin cậy, ngăn chặn những kẻ gửi thư rác tài khoản có tài sản không mong muốn. Quy định về nhận biết khách hàng (KYC) yêu cầu nhiều tổ chức tài chính phải biết họ đang nắm giữ tiền gửi của ai, ví dụ bằng cách kiểm tra ID ảnh. Để tuân thủ, tổ chức phát hành có thể thiết lập cờ auth_reqired tùy chọn trên tài khoản của họ, hạn chế quyền sở hữu tài sản mà họ cấp cho các tài khoản được ủy quyền. Để cấp phép như vậy, người phát hành thiết lập một ủy quyền gắn cờ trên đường tin cậy của khách hàng. Ưu đãi tương ứng với sự sẵn sàng giao dịch của tài khoản một số lượng nhất định của một tài sản cụ thể cho một tài sản khác tại một thời điểm nhất định giá trên sổ lệnh; chúng được tự động khớp và được lấp đầy khi giá mua/bán giao nhau. Cuối cùng, dữ liệu tài khoản bao gồm bộ ba tài khoản, khóa, giá trị, cho phép chủ tài khoản để xuất bản các giá trị siêu dữ liệu nhỏ. Để ngăn chặn thư rác sổ cái, cần có số dư XLM tối thiểu, gọi là dự trữ. Dự trữ của tài khoản tăng lên theo từng mục sổ cái liên quan và giảm khi mục sổ cái biến mất (ví dụ: khi một đơn hàng được thực hiện hoặc bị hủy, hoặc khi một đường dây tin cậy sẽ bị xóa). Hiện tại dự trữ tăng thêm 0,5 XLM (∼$0,03) cho mỗi mục sổ cái. Bất kể dự trữ là gì, nó là có thể lấy lại toàn bộ giá trị của tài khoản bằng cách xóa nó bằng thao tác AccountMerge. Tiêu đề sổ cái, được hiển thị trong Hình 3, lưu trữ các thuộc tính chung: số sổ cái, các thông số như số dư dự trữ trên mỗi mục sổ cái, hash của tiêu đề sổ cái trước đó (thực tế là một số hashes tạo thành danh sách bỏ qua), đầu ra SCP bao gồm hash giao dịch mới được áp dụng vào sổ cái này, hash trong số kết quả của các giao dịch đó (ví dụ: thành công hay thất bại đối với từng mục) và ảnh chụp nhanh hash của tất cả các mục trong sổ cái. Bởi vì ảnh chụp nhanh hash bao gồm tất cả nội dung sổ cái, validator không cần giữ lại lịch sử để xác thực giao dịch. Tuy nhiên, để mở rộng quy mô lên tới hàng trăm triệu dự kiến tài khoản, chúng tôi không thể rehash tất cả các bảng nhập sổ cái trên mỗi sổ cái đóng lại. Hơn nữa, việc chuyển sổ cáiThanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada sổ cái # = 4 H(HDR trước) Đầu ra SCP H∗(kết quả) H∗(ảnh chụp nhanh) ... tiêu đề sổ cái # = 5 H(HDR trước) Đầu ra SCP H∗(kết quả) H∗(ảnh chụp nhanh) ... tiêu đề . . . Hình 3. Nội dung sổ cái. H là SHA-256, trong khi H ∗ thể hiện ứng dụng phân cấp hoặc đệ quy của đầu ra H. SCP cũng phụ thuộc vào tiêu đề trước hash. Tạo tài khoản Tạo và nạp tiền vào sổ cái tài khoản mới Hợp nhất tài khoản Xóa mục nhập sổ cái tài khoản Đặt tùy chọn Thay đổi cờ tài khoản và người ký Thanh toán Trả số lượng tài sản cụ thể cho đích. tài khoản. Đường dẫnThanh toán Giống như Thanh toán, nhưng thanh toán bằng nội dung khác (tối đa hạn chế); chỉ định tối đa 5 tài sản trung gian Quản lý ưu đãi Tạo/xóa/thay đổi mục nhập sổ cái ưu đãi, -Ưu đãi thụ động với biến thể thụ động để cho phép lan truyền bằng không Quản lý dữ liệu Tạo/xóa/thay đổi tài khoản. nhập sổ cái dữ liệu Thay đổi tin cậy Tạo/xóa/thay đổi đường dây tin cậy AllowTrust Đặt hoặc xóa cờ được ủy quyền trên đường dây tin cậy Trình tự va chạm Tăng thứ tự số trên tài khoản Hình 4. Hoạt động sổ cái chính có kích thước đó mỗi khi một nút bị ngắt kết nối khỏi mạng quá lâu. Do đó, ảnh chụp nhanh hash là được thiết kế để tối ưu hóa cả hashing và điều chỉnh trạng thái. Cụ thể, ảnh chụp nhanh phân loại các mục sổ cái theo thời gian sửa đổi cuối cùng trong một tập hợp các thùng chứa có kích thước theo cấp số nhân gọi là xô. Bộ sưu tập các thùng được gọi là thùng danh sách và có một số điểm tương đồng với cây hợp nhất có cấu trúc nhật ký (LSM-cây) [77]. Danh sách nhóm không được đọc trong quá trình xử lý giao dịch (xem Phần 5.4). Do đó, thiết kế nhất định các khía cạnh của cây LSM có thể được nới lỏng. Đặc biệt, ngẫu nhiên không cần truy cập bằng khóa và các nhóm chỉ được đọc tuần tự như một phần của các cấp độ hợp nhất. Băm xô danh sách được thực hiện bằng cách hashing từng nhóm khi nó được hợp nhất và tính toán hash tích lũy mới của nhóm hashes (nhỏ, chỉ số tham chiếu cố định hashes) khi đóng mỗi sổ cái. Điều chỉnh danh sách nhóm sau khi ngắt kết nối yêu cầu tải xuống chỉ có các thùng khác nhau. 5.2 Mô hình giao dịch Một giao dịch bao gồm một tài khoản nguồn, tiêu chí hợp lệ, một bản ghi nhớ và danh sách một hoặc nhiều thao tác. Hình 4 liệt kê các hoạt động có sẵn. Mỗi hoạt động có một tài khoản nguồn, tài khoản này mặc định cho giao dịch tổng thể. Một giao dịch phải được ký bằng các khóa tương ứng với mọi tài khoản nguồn trong một cuộc phẫu thuật. Tài khoản Multisig có thể yêu cầu chữ ký cao hơn trọng lượng cho một số thao tác (chẳng hạn như SetOptions) và thấp hơn cho những người khác (chẳng hạn như AllowTrust). Giao dịch là nguyên tử—nếu bất kỳ thao tác nào thất bại, không có thao tác nào họ thực thi. Điều này đơn giản hóa các giao dịch đa chiều. Giả sử một nhà phát hành tạo ra một tài sản để đại diện cho chứng thư đất đai và người dùng A muốn đổi một thửa đất nhỏ cộng thêm 10.000 USD lấy một thửa đất lớn hơn thuộc sở hữu của B. Hai người sử dụng đều có thể ký một giao dịch duy nhất bao gồm ba hoạt động: hai đất thanh toán và thanh toán một đô la. Tiêu chí hiệu lực chính của giao dịch là số thứ tự của nó, số này phải lớn hơn số thứ tự của giao dịch. mục nhập sổ cái tài khoản nguồn. Thực hiện một giao dịch hợp lệ (thành công hay không) tăng số thứ tự, ngăn chặn việc phát lại. Số thứ tự ban đầu chứa sổ cái số ở bit cao để tránh phát lại ngay cả sau khi xóa và tạo lại tài khoản. Tiêu chí hợp lệ khác là giới hạn tùy chọn khi một giao dịch có thể thực hiện. Trở về đất và đô la hoán đổi trên, nếu A ký giao dịch trước B thì A không được muốn B tham gia giao dịch trong một năm trước khi nộp đơn nó và do đó có thể đặt ra giới hạn thời gian làm mất hiệu lực giao dịch sau một vài ngày. Tài khoản Multisig cũng có thể được cấu hình để tạo sức thuyết phục cho việc tiết lộ hình ảnh trước hash, kết hợp với giới hạn thời gian, cho phép giao dịch chuỗi chéo nguyên tử [1]. Tài khoản nguồn của giao dịch trả một khoản phí nhỏ bằng XLM, 10−5 XLM trừ khi có tắc nghẽn. Dưới tình trạng tắc nghẽn, chi phí hoạt động được thiết lập bởi đấu giá Hà Lan. Trình xác nhận là không được trả phí vì validator tương tự tới Bitcoin nút đầy đủ, không phải công cụ khai thác. Thay vì phá hủy XLM, phí được tái chế và phân bổ theo tỷ lệ bằng phiếu bầu của những người nắm giữ XLM hiện có, mà nhìn lại có thể hoặc có thể không có giá trị phức tạp. 5.3 Giá trị đồng thuận Đối với mỗi sổ cái, Stellar sử dụng SCP để thống nhất về cấu trúc dữ liệu với ba trường: bộ giao dịch hash (bao gồm hash của tiêu đề sổ cái trước đó), thời gian đóng,d nâng cấp. Khi nhiều giá trị được xác nhận đề cử, Stellar sẽ thực hiện tập hợp giao dịch có nhiều hoạt động nhất (phá vỡ mối quan hệ theo tổng phí, sau đó là tập giao dịch hash), liên minh của tất cả nâng cấp và thời gian đóng cao nhất. Một thời gian gần gũi chỉ là hợp lệ nếu nó nằm trong khoảng thời gian đóng của sổ cái cuối cùng và hiện tại, do đó các nút không chỉ định thời gian không hợp lệ. Các bản nâng cấp điều chỉnh các tham số chung như số dư dự trữ, phí hoạt động tối thiểu và phiên bản giao thức. Khi nào được kết hợp trong quá trình đề cử, mức phí cao hơn và số phiên bản giao thức sẽ thay thế mức phí thấp hơn. Nâng cấp hiệu quả quản trị thông qua không gian tranh chấp biểu quyết liên bang [34], cũng không bình đẳng và không tập trung. Mỗi validator được định cấu hình là quản lý hoặc không quản lý (mặc định), theo liệu người điều hành nó có muốn tham gia quản trị hay không. validator quản trị xem xét ba loại nâng cấp: mong muốn, hợp lệ và không hợp lệ (bất cứ điều gì validator không
SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. validator cốt lõi chân trời FS cơ sở dữ liệu cơ sở dữ liệu nộp khách hàng khách hàng validator khác Hình 5. Kiến trúc Stellar validator biết cách thực hiện). Các nâng cấp mong muốn được cấu hình để kích hoạt tại một thời điểm cụ thể, nhằm mục đích phối hợp giữa các nhà khai thác. Các nút quản trị luôn bỏ phiếu để đề cử mong muốn nâng cấp, chấp nhận nhưng không bỏ phiếu để đề cử nâng cấp hợp lệ (tức là tuân theo số đại biểu chặn) và không bao giờ bỏ phiếu cho hoặc chấp nhận nâng cấp không hợp lệ. Tiếng vang validators không quản lý bất kỳ phiếu bầu nào họ thấy cho một bản nâng cấp hợp lệ, về cơ bản là ủy quyền quyết định về những nâng cấp mong muốn đối với những người lựa chọn cho vai trò quản trị. 5,4 Thực hiện Hình 5 hiển thị kiến trúc validator của Stellar. Một con quỷ được gọi là Stellar-core (∼92k dòng C++, không tính thư viện của bên thứ ba) triển khai giao thức SCP và máy trạng thái được sao chép. Việc tạo ra các giá trị cho SCP yêu cầu giảm số lượng lớn các mục sổ cái thành các mật mã nhỏ hashes. Ngược lại, việc xác nhận và thực hiện giao dịch yêu cầu tra cứu trạng thái tài khoản và khớp lệnh tại giá tốt nhất. Để phục vụ cả hai chức năng một cách hiệu quả, Stellar-core giữ hai cách trình bày của sổ cái: một cách trình bày bên ngoài chứa danh sách nhóm, được lưu trữ dưới dạng tệp nhị phân có thể được cập nhật một cách hiệu quả và được rehashed tăng dần, và một biểu diễn nội bộ trong cơ sở dữ liệu SQL (PostgreSQL cho các nút sản xuất). Stellar-core tạo kho lưu trữ lịch sử chỉ ghi có chứa mỗi bộ giao dịch đã được xác nhận và ảnh chụp nhanh của xô. Kho lưu trữ cho phép các nút mới tự khởi động khi tham gia mạng. Nó cũng cung cấp một bản ghi sổ cái lịch sử—cần có một nơi nào đó để người ta có thể tra cứu giao dịch từ hai năm trước. Vì lịch sử chỉ được thêm vào và được truy cập không thường xuyên, nó có thể được giữ ở những nơi rẻ tiền chẳng hạn như Amazon Glacier hoặc bất kỳ dịch vụ nào cho phép một người lưu trữ và truy xuất các tập tin phẳng. Máy chủ xác thực thường không lưu trữ tài liệu lưu trữ của riêng họ để tránh bất kỳ tác động nào đến việc xác thực hiệu suất từ lịch sử phục vụ. Để giữ cho lõi sao đơn giản, nó không được thiết kế để sử dụng trực tiếp bởi các ứng dụng và chỉ hiển thị một giao diện rất hẹp để gửi các giao dịch mới. Để hỗ trợ khách hàng, hầu hết validator đều chạy một daemon có tên là Horizon (∼18k dòng Go) cung cấp giao diện HTTP để gửi và tìm hiểu các giao dịch. Horizon có quyền truy cập chỉ đọc vào cơ sở dữ liệu SQL của Stellar-core, giảm thiểu rủi ro về chân trời làm mất ổn định lõi sao. Các tính năng như tìm đường dẫn thanh toán được triển khai hoàn toàn trong thời gian ngắn và có thể được nâng cấp đơn phương mà không phối hợp với validator khác. Một số daemon lớp cao hơn tùy chọn là ứng dụng khách ở đường chân trời, hoàn thiện hệ sinh thái. Một máy chủ cầu nối tạo điều kiện thuận lợi tích hợp Stellar với các hệ thống hiện có, ví dụ: đăng thông báo về tất cả các khoản thanh toán mà một tài khoản cụ thể nhận được. A máy chủ tuân thủ cung cấp các kết nối cho các tổ chức tài chính để trao đổi và phê duyệt thông tin người gửi và người thụ hưởng về thanh toán, để tuân thủ danh sách trừng phạt. Cuối cùng, một máy chủ liên kết thực hiện cách đặt tên mà con người có thể đọc được hệ thống cho các tài khoản. 6 Kinh nghiệm triển khai Stellar đã phát triển trong vài năm thành một tiểu bang có mức độ phát triển vừa phải số lượng nhà khai thác nút đầy đủ có độ tin cậy hợp lý. Tuy nhiên, cấu hình của các nút sao cho có tính sống động (mặc dù không an toàn) phụ thuộc vào chúng tôi, Quỹ Phát triển Stellar (SDF); SDF đột nhiên biến mất, các nhà khai thác nút khác sẽ cần phải can thiệp và loại bỏ chúng tôi theo cách thủ công từ các lát đại biểu để mạng tiếp tục. Trong khi chúng tôi và nhiều người khác muốn giảm tầm quan trọng mang tính hệ thống của SDF, mục tiêu này ngày càng được ưu tiên hơn sau các nhà nghiên cứu [58] đã định lượng và công khai tính tập trung của mạng mà không phân biệt các rủi ro đối với sự an toàn và sự sống động. Một số nhà khai thác đã phản ứng bằng các điều chỉnh cấu hình tích cực, chủ yếu là tăng kích thước cắt giảm số đại biểu trong nỗ lực làm giảm tầm quan trọng của SDF; Trớ trêu thay, điều này chỉ làm tăng nguy cơ ảnh hưởng đến sự sống. Hai vấn đề làm trầm trọng thêm tình hình. Đầu tiên, một phổ biến công cụ giám sát Stellar của bên thứ ba [5] được thực hiện một cách có hệ thống đánh giá quá cao validator thời gian hoạt động do không thực sự xác minh lõi sao đó đang chạy; điều này khiến mọi người bao gồm các nút không đáng tin cậy trong các lát đại biểu của chúng. Thứ hai, một lỗi trong lõi sao có nghĩa là khi validator được chuyển sang sổ cái tiếp theo, nó không giúp ích đầy đủ cho các nút còn lại hoàn thành giai đoạn trướcsổ cái trong trường hợp mất tin nhắn. Kết quả là, mạng đã trải qua 67 phút ngừng hoạt động và được yêu cầu quản trị viên validator phối hợp thủ công để khởi động lại. Tệ hơn nữa, trong khi cố gắng khởi động lại mạng, việc cấu hình lại vội vàng đồng thời trên nhiều nút đã dẫn đến kết quả là trong một cấu hình sai tập thể cho phép một số nút phân kỳ, yêu cầu tắt thủ công các nút đó và gửi lại các giao dịch được chấp nhận trong thời gian phân kỳ. May mắn thay, sự khác biệt này đã được phát hiện và khắc phục nhanh chóng và không chứa các giao dịch xung đột, nhưng nguy cơ mạng không đạt được giao điểm đại biểu— chia rẽ trong khi vẫn tiếp tục chấp nhận những xung đột tiềm ẩn giao dịch, đơn giản là do cấu hình sai—đã được thực hiện rất cụ thể về sự việc này. Việc xem xét lại những kinh nghiệm này dẫn đến hai kết luận chính và các hành động khắc phục tương ứng.Thanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Quan trọng, 100% 51% 51% Cao, 67% 51% Trung bình, 67% 51% Thấp, 67% 51% 51% ... ... ... 51% ... 51% Hình 6. Phân cấp chất lượng của trình xác thực. Các nút chất lượng cao nhất yêu cầu ngưỡng cao nhất là 100%, trong khi chất lượng thấp hơn được định cấu hình ở ngưỡng 67%. Các nút trong một tổ chức yêu cầu đa số đơn giản là 51%. 6.1 Cấu hình phức tạp và dễ vỡ Stellar biểu thị các lát cắt đại biểu dưới dạng tập hợp đại biểu lồng nhau bao gồm n mục nhập và ngưỡng k trong đó bất kỳ tập hợp k mục nào tạo thành một lát đại biểu. Mỗi mục trong số n mục sau đó là một khóa công khai validator hoặc theo cách đệ quy, một tập đại biểu khác. Mặc dù linh hoạt và nhỏ gọn, chúng tôi đã nhận ra số đại biểu lồng nhau đặt đồng thời các toán tử nút có quá nhiều tính linh hoạt và quá ít hướng dẫn: rất dễ viết không an toàn (hoặc thậm chí là cấu hình vô nghĩa). Tiêu chí phân nhóm các nút thành các tập hợp, để tổ chức các tập hợp con thành một hệ thống phân cấp và để lựa chọn các ngưỡng đều không đủ rõ ràng và góp phần gây ra những thất bại trong hoạt động. Không rõ liệu có nên coi một “cấp độ” trong hệ thống phân cấp lồng nhau là một mức độ tin cậy, hoặc một tổ chức, hoặc cả hai; nhiều cấu hình trong lĩnh vực này trộn lẫn các khái niệm này, ngoài việc xác định mức độ nguy hiểm hoặc ngưỡng vô nghĩa. Do đó chúng tôi đã thêm một cơ chế cấu hình đơn giản hơn phân tách hai khía cạnh của các nhóm đại biểu lồng nhau: nhóm các nút lại với nhau theo tổ chức và gắn nhãn cho mỗi tổ chức bằng một phân loại tin cậy đơn giản (thấp, trung bình, cao hoặc quan trọng). Các tổ chức ở cấp cao trở lên được yêu cầu phải xuất bản kho lưu trữ lịch sử. Hệ thống mới tổng hợp các tập hợp đại biểu lồng nhau trong đó mỗi tổ chức được biểu diễn dưới dạng Đã đặt ngưỡng 51% và các tổ chức được nhóm thành các nhóm với ngưỡng 67% hoặc 100% (tùy chất lượng nhóm). Mỗi nhóm là một mục duy nhất trong nhóm tiếp theo (chất lượng cao hơn), như minh họa trong Hình 6. Mô hình đơn giản hóa này làm giảm khả năng cấu hình sai, cả về mặt cấu trúc của các tập hợp lồng nhau được tổng hợp và các ngưỡng được chọn cho mỗi bộ. 6.2 Chủ động phát hiện cấu hình sai Thứ hai, chúng tôi nhận ra rằng việc phát hiện hành vi cấu hình sai tập thể bằng cách chờ quan sát tác động tiêu cực của nó là quá muộn. Đặc biệt đối với các cấu hình sai có thể khác nhau—a chế độ lỗi nghiêm trọng hơn là tạm dừng—mạng cần có thể phát hiện cấu hình sai ngay lập tức để người vận hành có thể hoàn nguyên cấu hình đó trước khi bất kỳ sự khác biệt nào thực sự xảy ra. Để giải quyết nhu cầu này, chúng tôi đã xây dựng một cơ chế trong phần mềm validator để liên tục thu thập trạng thái cấu hình chung của tất cả các nút ngang hàng trong quá trình đóng chuyển tiếp của nút và phát hiện khả năng phân kỳ—tức là rời rạc nhóm túc số—trong cấu hình tập thể đó. 6.2.1 Kiểm tra giao lộ đại biểu Mặc dù việc thu thập các nhóm đại biểu là điều dễ dàng nhưng việc tìm ra các nhóm túc số rời rạc trong số đó là việc khó [62]. Tuy nhiên, chúng tôi đã thông qua một tập hợp các phương pháp chẩn đoán thuật toán và quy tắc loại bỏ trường hợp được đề xuất bởi Lachowski [62] để kiểm tra các trường hợp điển hình của vấn đề nhanh hơn nhiều bậc so với chi phí trong trường hợp xấu nhất. Thực tế mà nói, mạng hiện tại các lần đóng chuyển tiếp lát cắt đại biểu theo thứ tự 20–30 các nút và, với sự tối ưu hóa của Lachowski, thường kiểm tra chỉ trong vài giây trên một CPU. Nếu có nhu cầu phát sinh để nâng cao hiệu suất, chúng tôi có thể thực hiện tìm kiếm song song. 6.2.2 Kiểm tra cấu hình rủi ro Phát hiện mạng thừa nhận các đại biểu rời rạc là một bước đi đúng hướng nhưng báo nguy hiểm muộn một cách khó chịu đối với một vấn đề quan trọng như vậy. Lý tưởng nhất là chúng tôi muốn các nhà khai thác nút nhận được cảnh báo khi cấu hình chung của mạng chỉ đang tiến đến một trạng thái rủi ro. Do đó, chúng tôi đã mở rộng trình kiểm tra giao điểm đại biểu để phát hiện một điều kiện mà chúng tôi gọi là tới hạn: khi dòng điện cấu hình tập thể chỉ là một cấu hình sai một tiểu bang thừa nhận số đại biểu rời rạc. Để phát hiện mức độ nghiêm trọng, trình kiểm tra liên tục thay thế cấu hình của mỗi tổ chức bằng cấu hình sai mô phỏng trong trường hợp xấu nhất, sau đó chạy lại trình kiểm tra giao điểm đại biểu bên trong trên kết quả. Nếu có bất kỳ cấu hình sai nghiêm trọng nào như vậy tồn tại thì chỉ còn một bước nữa là từ trạng thái hiện tại, phần mềm sẽ đưa ra cảnh báo và báo cáo tổ chức gây ra rủi ro cấu hình sai. Những thay đổi này cung cấp cho cộng đồng các nhà khai thác hai lớp thông báo và hướng dẫn cách ly chống lại các hình thức tồi tệ nhất của việc cấu hình sai tập thể.
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.
Sự đánh giá

Để hiểu sự phù hợp của Stellar với tư cách là phương thức thanh toán toàn cầu và mạng lưới giao dịch, chúng tôi đã đánh giá trạng thái của mạng công cộng và chạy các thí nghiệm có kiểm soát trên một phòng thí nghiệm riêng mạng. Chúng tôi tập trung vào các câu hỏi sau: • Cấu trúc liên kết mạng sản xuất trông như thế nào? Trung bình có bao nhiêu tin nhắn được phát đi và SCP trải qua thời gian chờ như thế nào? • Độ trễ đồng thuận và cập nhật sổ cái có còn độc lập với số lượng tài khoản không?SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. • Độ trễ bị ảnh hưởng như thế nào khi tăng (a) giao dịch trên giây (và do đó, giao dịch trên mỗi giây) sổ cái) và (b) số nút validator? • Chi phí chạy một nút tính theo CPU là bao nhiêu, bộ nhớ và băng thông mạng? Mạng thanh toán có tỷ lệ giao dịch thấp so với với các loại hệ thống phân tán khác. blockchain hàng đầu, Bitcoin và Ethereum, xác nhận tối đa 15 giao dịch/giây, nhỏ hơn Stellar. Hơn nữa, các hệ thống này mất vài phút để một giờ để xác nhận giao dịch một cách an toàn, vì bằng chứng công việc yêu cầu phải chờ một số khối được khai thác. các mạng không phảiblockchain SWIFT chỉ đạt trung bình 420 giao dịch mỗi giây vào ngày cao điểm [14]. Do đó chúng tôi đã chọn để so sánh số đo của chúng tôi với mục tiêu 5 giây khoảng thời gian sổ cái, một mục tiêu tích cực hơn. Kết quả của chúng tôi cho thấy độ trễ ở dưới mức giới hạn này một cách thoải mái ngay cả với một số tối ưu hóa chưa được thực hiện vẫn đang được thực hiện. 7.1 Neo Các tài sản được giao dịch nhiều nhất theo khối lượng bao gồm tiền tệ (ví dụ: 3 USD neo, 2 CNY), neo Bitcoin, chứng khoán được hỗ trợ bởi bất động sản token [92] và tiền tệ trong ứng dụng [8]. Các neo khác nhau có chính sách khác nhau. Ví dụ: một mỏ neo USD, Stronghold, đặt auth_reqired và yêu cầu quy trình xác định khách hàng (KYC) cho mọi tài khoản nắm giữ tài sản. Một cái khác, AnchorUSD, để mọi người nhận và giao dịch USD của họ (làm cho việc gửi 0,50 USD đến Mexico theo đúng nghĩa đen là có thể trong 5 giây với mức phí 0,000001 USD). Tuy nhiên, AnchorUSD không yêu cầu KYC và phí để mua hoặc đổi USD của họ với chuyển khoản thông thường. Ở Philippines, nơi các quy định của ngân hàng lỏng lẻo hơn đối với các khoản thanh toán đến, coins.ph hỗ trợ rút tiền PHP tại bất kỳ máy ATM nào [36]. Ngoài bảo mật token và đơn vị tiền tệ trong ứng dụng nói trên, còn có nhiều loại token phi tiền tệ khác nhau, từ trái phiếu thương mại [22] và tín chỉ carbon [85, 96] trở lên nội dung bí truyền chẳng hạn như token khuyến khích cộng tác thu hồi xe [35]. 7.2 Mạng công cộng Tính đến thời điểm viết bài này, có 126 nút đầy đủ đang hoạt động, 66 trong số đó tham gia thống nhất bằng cách ký vào tin nhắn biểu quyết. Hình 7 (được tạo bởi [5]) trực quan hóa mạng, với một đường giữa hai nút nếu một nút xuất hiện trong các lát đại biểu của nút kia và một đường màu xanh đậm hơn để hiển thị sự phụ thuộc hai chiều. Tại trung tâm là một cụm gồm 17 “cấp một validators” trên thực tế được điều hành bởi SDF, SatoshiPay, LOBSTR, COINQVEST và Keybase. Bốn tháng trước, trước sự kiện ở Phần 6, có có 15 nút quan trọng về mặt hệ thống: 3 từ dường như các tổ chức cấp một và một số đơn vị ngẫu nhiên. các biểu đồ cũng trông kém đều đặn hơn nhiều. Do đó, cơ chế cấu hình mới và/hoặc các quyết định vận hành tốt hơn dường như để góp phần tạo nên cấu trúc liên kết mạng lành mạnh hơn. không có nguồn tài chính lớn (và cổ đông tương ứng Hình 7. Bản đồ lát cắt đại biểu nghĩa vụ), sẽ rất khó để tuyển dụng 5 cấp một Tuy nhiên, các tổ chức ngay từ đầu. Điều này cho thấy số đại biểu các lát cắt đóng một vai trò hữu ích trong quá trình khởi động mạng: bất kỳ ai cũng có thể tham gia với mục tiêu trở thành một người chơi quan trọng bởi vì không có người gác cổng để thỏa thuận theo cặp. Hiện có hơn 3,3 triệu tài khoản trong sổ cái. Kết thúc trong khoảng thời gian 24 giờ gần đây, Stellar trung bình có 4,5 giao dịch và 15,7 hoạt động mỗi giây. Xem lại sổ cái gần đây, hầu hết các giao dịch dường như chỉ có một thao tác duy nhất, trong khi cứ một vài giao dịch sổ cái chúng ta thấy các giao dịch chứa nhiều hoạt động dường như đến từ việc các nhà tạo lập thị trường quản lý các chào hàng. các thời gian cần thiết để đạt được sự đồng thuận và cập nhật sổ cái là lần lượt là 1061 ms và 46 ms. Phân vị thứ 99 là 2252 ms và 142 ms (trước đây phản ánh thời gian chờ 1 giây trong việc lựa chọn lãnh đạo đề cử). Lưu ý hiệu suất của SCP là hầu như độc lập với các giao dịch mỗi giây, vì SCP đồng ý với hash nhiều giao dịch tùy ý. Nút thắt có nhiều khả năng phát sinh từ việc tuyên truyền ứng cử viên giao dịch trong quá trình đề cử, thực hiện và xác nhận giao dịch và nhóm hợp nhất. Chúng tôi vẫn chưa cần để song song quá trình xử lý giao dịch của Stellar-Core trên nhiều lõi CPU hoặc ổ đĩa. Chúng tôi cũng đã đánh giá số lượng tin nhắn SCP được phát đi trên mạng sản xuất. Trong trường hợp bình thường với một lãnh đạo được bầu để đề cử một giá trị, chúng tôi mong đợi bảy hợp lý tin nhắn được phát sóng: hai tin nhắn để bỏ phiếu và chấp nhận một nomituyên bố nate, hai tin nhắn để chấp nhận và xác nhận một tuyên bố chuẩn bị, hai tin nhắn để chấp nhận và xác nhận một tuyên bố cam kết và cuối cùng là một thông báo bên ngoài (được gửi sau khi ghi một sổ cái mới vào đĩa để giúp những người đi lạc bắt kịp). Việc thực hiện kết hợp xác nhận cam kết và hiển thị các thông điệp như một sự tối ưu hóa, vì nó an toàn để đưa ra ngoài một giá trị sau khi nó được cam kết. Sau đó, chúng tôi phân tích các số liệu được thu thập trong quá trình sản xuất Stellar validator. Kết thúc trong 68 giờ, 1,3 tin nhắn/giây được phát ra, trung bình có 6-7 tin nhắn trên mỗi sổ cái. Chúng tôi lưu ý rằng tổng
Thanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Phần trăm Số lần hết giờ Đề cử Bỏ phiếu 75% 0 0 99% 1 0 Tối đa 4 1 Hình 8. Thời gian chờ trên mỗi sổ cái hơn 68 giờ số lượng tin nhắn được phát bởi validators lớn hơn vì trong Ngoài các tin nhắn biểu quyết liên kết, các nút còn phát sóng bất kỳ giao dịch nào họ tìm hiểu. Hình 8 cho thấy thời gian chờ của quá trình sản xuất validator trong khoảng thời gian 68 giờ. Thời gian chờ đề cử là thước đo tính hiệu quả (trong) của chức năng bầu cử người lãnh đạo, trong khi thời gian chờ bỏ phiếu phụ thuộc nhiều vào mạng và sự chậm trễ của tin nhắn có thể xảy ra. Thời gian chờ nhất quán với số lượng tin nhắn được phát ra: sáu tin nhắn trong trường hợp tốt nhất và ít nhất bảy tin nhắn nếu cần một vòng đề cử bổ sung. 7.3 Thí nghiệm có kiểm soát Chúng tôi đã tiến hành các thí nghiệm có kiểm soát trong các thùng chứa được đóng gói trên Phiên bản Amazon EC2 c5d.9xlarge có RAM 72 GiB, 900 GB SSD NVMe và 36 vCPU. Mỗi trường hợp nằm trong cùng vùng EC2 và có băng thông cố định 10 Gbps. Chúng tôi đã sử dụng SQLite làm cửa hàng. (Stellar cũng hỗ trợ PostgreSQL, nhưng nó có các tác vụ không đồng bộ gây nhiễu vào các phép đo.) Stellar cung cấp truy vấn thời gian chạy tích hợp, tạo tải, cho phép tạo tải tổng hợp tại một mục tiêu cụ thể giao dịch/tỷ lệ thứ hai. Mặc dù Stellar hỗ trợ nhiều các tính năng giao dịch, chẳng hạn như sổ đặt hàng và đường dẫn tài sản chéo thanh toán, chúng tôi tập trung vào thanh toán đơn giản. Việc xác nhận giao dịch bao gồm nhiều bước, vì vậy chúng tôi ghi lại các phép đo cho mỗi trường hợp sau: • Đề cử: thời gian từ khi đề cử đến khi chuẩn bị lần đầu • Bỏ phiếu: thời gian từ khi chuẩn bị lần đầu đến khi xác nhận phiếu cam kết • Cập nhật sổ cái: thời gian áp dụng giá trị đồng thuận • Số lượng giao dịch: số giao dịch được xác nhận trên mỗi sổ cái Mỗi thử nghiệm của chúng tôi được xác định bởi ba tham số: số lượng tài khoản trong sổ cái, số tiền tải (dưới dạng thanh toán XLM) được gửi mỗi giây, và số lượng validator giây. Chúng tôi đã định cấu hình mọi validator biết về mọi validator khác (trường hợp xấu nhất cho SCP), với các lát đại biểu được đặt thành bất kỳ phần lớn đơn giản nào các nút (để tối đa hóa số lượng đại biểu khác nhau). Đường cơ sở Thử nghiệm cơ bản của chúng tôi đã đo Stellar bằng 100.000 tài khoản, bốn validator và tạo tải tốc độ 100 giao dịch/giây. Chúng tôi quan sát thấy trung bình 507 giao dịch trên mỗi sổ cái, với độ lệch chuẩn là 49. (9,7%). Lưu ý rằng không có giao dịch nào bị hủy; sự nhẹ nhàng 105 106 107 0 500 1.000 1.500 2.000 Tài khoản Độ trễ [ms] Cập nhật sổ cái Bỏ phiếu Đề cử Hình 9. Độ trễ khi số lượng tài khoản tăng lên phương sai là do các hạn chế về lịch trình của bộ tạo tải. Chúng tôi quan sát thấy rằng số lượng giao dịch trên mỗi sổ cái phù hợp với tốc độ tạo tải của chúng tôi, dựa trên sổ cái đóng mỗi 5 giây. Đề cử, bỏ phiếu và sổ cái bản cập nhật cho thấy độ trễ trung bình là 82,53 ms, 95,96 ms và tương ứng là 174,08 ms. Chúng tôi quan sát thấy độ trễ đề cử Phân vị thứ 99 luôn dưới 61 mili giây, thỉnh thoảng tăng đột biến khoảng 1 giây, tương ứng với bước đầu tiên trong chức năng hết thời gian của việc lựa chọn người lãnh đạo. Dựa trên hiệu suất cơ bản, chúng tôi đã xem xét tác động thay đổi từng thông số thiết lập thử nghiệm. Tài khoản Dữ liệu trong Hình 9 gợi ý rằng thang đo Stellar cũng như số lượng tài khoản tăng lên. Tạo thử nghiệm tài khoản đã trở thành một quá trình kéo dài vì việc tạo nhóm và việc hợp nhất đã ngăn cản chúng tôi điền vào cơ sở dữ liệu với các tài khoản trực tiếp qua SQL. Vì vậy, chúng tôi đã tiến hành thử nghiệm cho tối đa 50.000.000 tài khoản. Trong khi có tác động tối thiểu đến sự đồng thuận và độ trễ cập nhật sổ cái, chúng tôi lưu ý rằng việc tăng tài khoản sẽ tạo ra chi phí chung các thùng hợp nhất sẽ lớn hơn. Tỷ giá giao dịch Tỷ giá giao dịch ảnh hưởng đến số lượng lưu lượng truy cập đa hướng giữa validator, số lượng giao dịch có trong mỗi sổ cái và kích thước của cấp cao nhất xô. Để hiểu tác động của việc tăng giao dịch tải, chúng tôi đã chạy thử nghiệm với 100.000 tài khoản và 4 validators. Hình 10 cho thấy độ trễ đồng thuận tăng chậm, trong khi phần lớn thời gian được dành để cập nhật sổ cái. Không có gì ngạc nhiên khi tập giao dịch tăng kích thước, nó mất nhiều thời gian hơn để đưa nó vào cơ sở dữ liệu. Chúng tôi cũng lưu ý rằng độ trễ cập nhật sổ cái phụ thuộc rất nhiều vào việc thực hiện, và bị ảnh hưởng bởi việc lựa chọn cơ sở dữ liệu. Các nút xác thực Để xem số cấp bậc validators tăng như thế nàotác động đến hiệu suất, chúng tôi đã chạy thử nghiệm với 100.000 tài khoản, 100 giao dịch/giây và số lượng validator khác nhau từ 4 đến 43. Tất cả validator đều xuất hiện trong tất cả các phần đại biểu của validator; lát đại biểu nhỏ hơn sẽ có tác động ít hơn đến hiệu suất.SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada Lokhava và cộng sự. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Tải [giao dịch/giây] Độ trễ [ms] Cập nhật sổ cái Bỏ phiếu Đề cử Hình 10. Độ trễ khi tải giao dịch tăng lên 10 20 30 40 0 500 1.000 1.500 2.000 Trình xác nhận Độ trễ [ms] Cập nhật sổ cái Bỏ phiếu Đề cử Hình 11. Độ trễ khi số lượng nút tăng lên Thay đổi số lượng nút xác thực trên mạng ảnh hưởng đến số lượng tin nhắn SCP được trao đổi cũng như số lượng giá trị tiềm năng trong quá trình đề cử. Hình 11 cho thấy thời gian đề cử tăng với tốc độ tương đối nhỏ. Mặc dù dữ liệu cho thấy việc bỏ phiếu là điểm nghẽn, chúng tôi tin rằng nhiều vấn đề về quy mô có thể được giải quyết bằng cách cải thiện Mạng lớp phủ của Stellar để tối ưu hóa lưu lượng truy cập mạng. Như dự kiến, độ trễ cập nhật sổ cái vẫn độc lập với số lượng nút. Tỷ lệ đóng Cuối cùng, chúng tôi muốn đo lường hiệu suất từ đầu đến cuối của Stellar bằng cách đo tần suất các sổ cái được xác nhận và liệu Stellar có đáp ứng được mục tiêu 5 giây của nó mà không bỏ bất kỳ giao dịch nào. Chúng tôi quan sát thấy sổ cái trung bình đóng lần 5,03 giây, 5,10 giây và 5,15 giây khi chúng tôi tăng tài khoản các mục nhập, tỷ lệ giao dịch và số lượng nút tương ứng. Kết quả cho thấy Stellar có thể đóng sổ cái một cách nhất quán dưới tải cao. 7.4 Đang chạy validator Một trong những tính năng quan trọng của Stellar là chi phí thấp đang chạy validator, vì các neo sẽ chạy (hoặc ký hợp đồng với) validators để thực thi quyết định cuối cùng. SDF chạy 3 validator sản xuất, tất cả đều trên phiên bản AWS c5.large có hai lõi, RAM 4 GiB và CPU Intel(R) Xeon(R) Platinum 8124M @ Bộ xử lý 3.00GHz. Kiểm tra việc sử dụng tài nguyên trên một trong số các máy này, chúng tôi đã quan sát quy trình Stellar bằng cách sử dụng khoảng 7% CPU và 300 MiB bộ nhớ. Về lưu lượng mạng, với 28 kết nối tới các thiết bị ngang hàng và quy mô đại biểu trong số 34, tốc độ đến và đi là 2,78 Mbit/s và tương ứng là 2,56 Mbit/s. Phần cứng cần thiết để chạy như vậy quá trình là không tốn kém. Trong trường hợp của chúng tôi, chi phí là 0,054 USD/giờ hoặc khoảng $40/tháng. 7,5 Công việc tương lai Những thử nghiệm này cho thấy Stellar có thể dễ dàng mở rộng quy mô từ 1–2 đơn hàng có tầm quan trọng vượt xa mức sử dụng mạng ngày nay. Bởi vì nhu cầu về hiệu suất cho đến nay vẫn rất khiêm tốn, Stellar nhường chỗ cho nhiều cách tối ưu hóa đơn giản bằng cách sử dụng những kỹ thuật nổi tiếng. Ví dụ: giao dịch và SCP tin nhắn được phát bởi validator bằng cách sử dụng tính năng tràn ngập đơn giản giao thức, nhưng lý tưởng nhất là nên sử dụng hiệu quả hơn, có cấu trúc hơn phát đa hướng ngang hàng [30]. Ngoài ra, cơ sở dữ liệu nặng Thời gian cập nhật sổ cái có thể được cải thiện thông qua các kỹ thuật phân nhóm và tìm nạp trước tiêu chuẩn.
Auswertung

Um die Eignung von Stellar als globales Zahlungsmittel zu verstehen und Handelsnetzwerk haben wir den Zustand des öffentlichen Netzwerks bewertet und führte kontrollierte Experimente auf einem privaten Experiment durch Netzwerk. Dabei haben wir uns auf folgende Fragen konzentriert: • Wie sieht die Topologie des Produktionsnetzwerks aus? Wie viele Nachrichten werden durchschnittlich gesendet und Wie kommt es bei SCP zu Zeitüberschreitungen? • Bleiben Konsens- und Ledger-Update-Latenzen unabhängig von der Anzahl der Konten?SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. • Wie werden Latenzen durch die Erhöhung (a) der Transaktionen pro Sekunde (und folglich der Transaktionen pro Sekunde) beeinflusst? Ledger) und (b) die Anzahl der validator Knoten? • Wie hoch sind die Kosten für den Betrieb eines Knotens in Bezug auf die CPU? Speicher und Netzwerkbandbreite? Zahlungsnetzwerke weisen im Vergleich niedrige Transaktionsraten auf zu anderen Arten von verteilten Systemen. Die führenden blockchains, Bitcoin und Ethereum, bestätigen bis zu 15 Transaktionen/Sekunde, weniger als Stellar. Darüber hinaus dauert die Installation dieser Systeme nur wenige Minuten eine Stunde, um eine Transaktion sicher zu bestätigen, da für den Proof-of-Work darauf gewartet werden muss, dass mehrere Blöcke abgebaut werden. Die Nicht-blockchain Das SWIFT-Netzwerk verzeichnete an seinem Spitzentag [14] durchschnittlich nur 420 Transaktionen pro Sekunde. Deshalb haben wir uns entschieden um unsere Messungen mit dem 5-Sekunden-Ziel zu vergleichen Ledger-Intervall, ein aggressiveres Ziel. Unsere Ergebnisse zeigen dass die Latenzen auch mit deutlich unter dieser Grenze liegen Mehrere nicht implementierte Optimierungen sind noch in der Pipeline. 7.1 Anker Zu den volumenmäßig am häufigsten gehandelten Vermögenswerten gehören Währungen (z. B. 3 USD). Anker, 2 CNY), ein Anker Bitcoin, ein immobilienbesichertes Wertpapier token [92] und eine In-App-Währung [8]. Verschiedene Anker haben unterschiedliche Richtlinien. Zum Beispiel ein USD-Anker, Stronghold legt auth_reqired fest und erfordert einen Know-Your-Customer-Prozess (KYC) für jedes Konto, das seinen Kunden besitzt Vermögenswerte. Ein anderes, AnchorUSD, lässt jeden empfangen und handeln ihren USD (was es buchstäblich möglich macht, 0,50 $ nach Mexiko zu senden). in 5 Sekunden mit einer Gebühr von 0,000001 $). Allerdings AnchorUSD Für den Kauf oder die Einlösung ihrer USD sind KYC und Gebühren erforderlich mit herkömmlichen Überweisungen. Auf den Philippinen, wo Laut Coins.ph sind die Bankvorschriften für eingehende Zahlungen laxer unterstützt die Auszahlung von PHP an jedem Geldautomaten [36]. Zusätzlich zu der oben genannten Sicherheit token und der In-App-Währung gibt es eine Reihe von Nicht-Währungs-tokens von Handelsanleihen [22] und Emissionsgutschriften [85, 96] bis mehr esoterische Vermögenswerte wie eine token, die Anreize für die Zusammenarbeit bietet Autorücknahme [35]. 7.2 Öffentliches Netzwerk Zum jetzigen Zeitpunkt gibt es 126 aktive Vollknoten, davon 66 Nehmen Sie am Konsens teil, indem Sie Abstimmungsbotschaften unterzeichnen. Abbildung 7 (generiert von [5]) visualisiert das Netzwerk mit einer Linie dazwischen zwei Knoten, wenn einer in den Quorum-Slices des anderen erscheint und a Eine dunkelblaue Linie zeigt die bidirektionale Abhängigkeit. Am Center ist ein Cluster von 17 De-facto-„Tier-One-validators“, die von betrieben werden SDF, SatoshiPay, LOBSTR, COINQVEST und Keybase. Vor vier Monaten, vor den Ereignissen von Abschnitt 6, dort Es gab 15 systemisch wichtige Knoten: 3 von scheinbar Tier-1-Organisationen und mehrere zufällige Singletons. Die Die Grafik sah auch viel weniger regelmäßig aus. Daher scheinen der neue Konfigurationsmechanismus und/oder bessere Bedienerentscheidungen zu sein um zu einer gesünderen Netzwerktopologie beizutragen. Ohne große finanzielle Mittel (und entsprechender Anteilseigner). Abbildung 7. Quorum-Slice-Map Verpflichtungen) wäre es schwierig gewesen, fünf Tier-1-Mitarbeiter zu rekrutieren Organisationen jedoch von Anfang an. Dies deutet auf ein Quorum hin Slices spielen beim Netzwerk-Bootstraping eine nützliche Rolle: Das kann jeder Treten Sie mit dem Ziel bei, ein wichtiger Spieler zu werden, denn Es gibt keine Gatekeeper für die paarweise Vereinbarung. Derzeit befinden sich über 3,3 Millionen Konten im Hauptbuch. Vorbei In den letzten 24 Stunden hat Stellar durchschnittlich 4,5 Transaktionen durchgeführt und 15,7 Operationen pro Sekunde. Meistens die Überprüfung aktueller Bücher Transaktionen scheinen einen einzigen Vorgang zu haben, während alle paar In Hauptbüchern sehen wir Transaktionen, die viele Vorgänge enthalten scheinen von Market Makern zu stammen, die Angebote verwalten. Die Die durchschnittlichen Zeiten, um einen Konsens zu erzielen und das Hauptbuch zu aktualisieren, waren 1061 ms bzw. 46 ms. Die 99. Perzentile waren 2252 ms und 142 ms (ersteres entspricht einer Zeitüberschreitung von 1 Sekunde). bei der Auswahl des Nominierungsleiters). Beachten Sie, dass die Leistung von SCP beträgt weitgehend unabhängig von Transaktionen pro Sekunde, da SCP stimmt einem hash beliebig vieler Transaktionen zu. Es ist wahrscheinlicher, dass Engpässe durch die Verbreitung von Kandidaten entstehen Transaktionen während der Nominierung, Ausführung und Validierung Transaktionen und das Zusammenführen von Buckets. Wir haben es noch nicht gebraucht um die Transaktionsverarbeitung von Stellar-Core über mehrere CPU-Kerne oder Festplatten zu parallelisieren. Wir haben auch die Anzahl der gesendeten SCP-Nachrichten ausgewertet im Produktionsnetzwerk. Im Normalfall mit einer Single Führer gewählt, um einen Wert zu nominieren, erwarten wir sieben logische Zu sendende Nachrichten: zwei Nachrichten zum Abstimmen und Annehmen ein Nominate-Anweisung, zwei Nachrichten zum Akzeptieren und Bestätigen eine Vorbereitungserklärung, zwei Nachrichten zum Akzeptieren und Bestätigen eine Commit-Anweisung und schließlich eine Externalize-Nachricht (wird gesendet, nachdem ein neues Hauptbuch auf die Festplatte übertragen wurde, um Nachzüglern zu helfen aufholen). Die Implementierung kombiniert Commit bestätigen und externalisieren Sie Nachrichten als Optimierung, da dies der Fall ist Es ist sicher, einen Wert zu externalisieren, nachdem er festgeschrieben wurde. Anschließend analysieren wir die für eine Produktion erfassten Metriken Stellar validator. Vorbei Im Laufe von 68 Stunden wurden 1,3 Nachrichten/Sekunde ausgesendet, Durchschnittlich 6-7 Nachrichten pro Hauptbuch. Wir stellen fest, dass die Summe
Schnelle und sichere globale Zahlungen mit Stellar SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Perzentil Anzahl der Timeouts Nominierung Abstimmung 75 % 0 0 99 % 1 0 Max 4 1 Abbildung 8. Timeouts pro Ledger über 68 Stunden Die Anzahl der von validators gesendeten Nachrichten ist größer, seit in Zusätzlich zu den föderierten Abstimmungsnachrichten senden die Knoten auch Nachrichten alle Transaktionen, von denen sie erfahren. Abbildung 8 zeigt die Zeitüberschreitungen bei einer Produktion validator über einen Zeitraum von 68 Stunden. Nominierungs-Timeouts sind ein Maß für die (Un-)Wirksamkeit der Funktion zur Wahl des Vorsitzenden, während Abstimmungszeitüberschreitungen stark vom Netzwerk abhängen und mögliche Nachrichtenverzögerungen. Die Timeouts sind konsistent mit der Anzahl der ausgegebenen Nachrichten: sechs Nachrichten im Best-Case-Szenario und mindestens sieben Nachrichten, falls eine weitere Nominierungsrunde erforderlich ist. 7.3 Kontrollierte Experimente Wir führten kontrollierte Experimente in aufgepackten Behältern durch Amazon EC2 c5d.9xlarge-Instances mit 72 GiB RAM, 900 GB NVMe SSD und 36 vCPUs. Jede Instanz war in derselben EC2-Region und hatte eine feste Bandbreite von 10 Gbit/s. Wir haben SQLite als Speicher verwendet. (Stellar unterstützt auch PostgreSQL, aber das hat asynchrone Aufgaben, die Rauschen in die Messungen einbringen.) Stellar bietet eine integrierte Laufzeitabfrage, genericload, Dies ermöglicht die Erzeugung einer synthetischen Last an einem bestimmten Ziel Transaktion/Zweitkurs. Obwohl Stellar verschiedene unterstützt Handelsfunktionen wie Orderbuch und Cross-Asset-Pfad Im Bereich Zahlungen haben wir uns auf einfache Zahlungen konzentriert. Die Bestätigung von Transaktionen besteht aus mehreren Schritten zeichnete die Messungen für jedes der folgenden Elemente auf: • Nominierung: Zeit von der Nominierung bis zur ersten Vorbereitung • Abstimmung: Zeit von der ersten Vorbereitung bis zur Bestätigung a Stimmzettel begangen • Ledger-Aktualisierung: Zeit, den Konsenswert anzuwenden • Transaktionsanzahl: bestätigte Transaktionen pro Hauptbuch Jedes unserer Experimente wurde durch drei Parameter definiert: die Anzahl der Kontoeinträge im Hauptbuch, der Betrag von Last (in Form von XLM-Zahlungen), die pro Sekunde übermittelt wird, und die Anzahl der validators. Wir haben jeden validator konfiguriert über jeden anderen validator Bescheid wissen (ein Worst-Case-Szenario). für SCP), wobei die Quorum-Slices auf eine beliebige einfache Mehrheit eingestellt sind Knoten (um die Anzahl verschiedener Quoren zu maximieren). Grundlinie Unser Basisexperiment hat Stellar mit gemessen 100.000 Konten, vier validators und die Lastgenerierung Rate von 100 Transaktionen/Sekunde. Wir haben durchschnittlich 507 Transaktionen pro Hauptbuch beobachtet, mit einer Standardabweichung von 49 (9,7 %). Beachten Sie, dass keine Transaktionen gelöscht wurden; das Geringste 105 106 107 0 500 1.000 1.500 2.000 Konten Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 9. Latenz bei zunehmender Anzahl von Konten Die Abweichung ist auf Planungseinschränkungen des Lastgenerators zurückzuführen. Wir haben beobachtet, dass die Anzahl der Transaktionen pro Ledger entsprach unserer Lastgenerierungsrate, gegeben im Hauptbuch Schließt alle 5 Sekunden. Nominierung, Abstimmung und Protokoll Das Update zeigte mittlere Latenzen von 82,53 ms, 95,96 ms und 174,08 ms. Wir haben diese Nominierungslatenz beobachtet Das 99. Perzentil liegt gelegentlich unter 61 ms Spitzen von etwa 1 Sekunde, entsprechend dem ersten Schritt in der Timeout-Funktion der Leader-Auswahl. Angesichts der Ausgangsleistung haben wir uns die Auswirkungen angesehen Möglichkeit, die einzelnen Parameter des Testaufbaus zu variieren. Konten Die Daten in Abbildung 9 deuten darauf hin, dass Stellar skaliert Außerdem steigt die Anzahl der Konten. Testgenerierung Konten wurden zu einem langwierigen Prozess, da die Bucket-Erstellung und Durch die Zusammenführung konnten wir die Datenbank nicht einfach füllen mit Konten direkt über SQL. Deshalb haben wir unsere durchgeführt Experimente für bis zu 50.000.000 Konten. Während es gibt minimale Auswirkung auf Konsens- und Ledger-Update-Latenzen, Wir stellen fest, dass die Erhöhung der Konten einen Overhead von verursacht Zusammenführen von Eimern, die größer werden. Transaktionsrate Die Transaktionsrate beeinflusst die Menge Traffic-Multicast zwischen validators, die Anzahl der in jedem Ledger enthaltenen Transaktionen und die Größe der obersten Ebene Eimer. Die Auswirkungen zunehmender Transaktionen verstehen Beim Laden haben wir ein Experiment mit 100.000 Konten und 4 validators durchgeführt. Abbildung 10 zeigt das langsame Wachstum der Konsenslatenz. während die meiste Zeit für die Aktualisierung des Hauptbuchs aufgewendet wurde. Es überrascht nicht, dass es mit zunehmender Größe des Transaktionssatzes zunimmt Es dauert länger, es in die Datenbank zu übernehmen. Das nehmen wir auch zur Kenntnis Die Latenz der Ledger-Aktualisierung ist stark von der Implementierung abhängig. und wird durch die Wahl der Datenbank beeinflusst. Validatorknoten Um zu sehen, wie sich die Anzahl der Tierone validators erhöhtAuswirkungen auf die Leistung haben, haben wir Experimente durchgeführt mit 100.000 Konten, 100 Transaktionen/Sekunde und einer variierenden Anzahl von validators von 4 bis 43. Alle validators wurden angezeigt in allen Quorum-Slices von validators; kleinere Quorum-Slices würden es tun einen geringeren Einfluss auf die Leistung haben.SOSP ’19, 27.–30. Oktober 2019, Huntsville, ON, Kanada Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Laden [Transaktionen/Sekunde] Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 10. Latenz bei steigender Transaktionslast 10 20 30 40 0 500 1.000 1.500 2.000 Validatoren Latenz [ms] Aktualisierung des Hauptbuchs Abstimmung Nominierung Abbildung 11. Latenz mit zunehmender Knotenanzahl Ändern der Anzahl validierender Knoten im Netzwerk wirkt sich auch auf die Anzahl der ausgetauschten SCP-Nachrichten aus die Anzahl der potenziellen Werte während der Nominierung. Abbildung 11 zeigt, dass die Nominierungszeit relativ langsam zunimmt. Während die Daten darauf hindeuten, dass die Stimmabgabe der Engpass ist, haben wir sind davon überzeugt, dass viele Skalierungsprobleme durch Verbesserungen gelöst werden können Das Overlay-Netzwerk von Stellar zur Optimierung des Netzwerkverkehrs. Als erwartet, blieb die Latenz der Ledger-Aktualisierung unabhängig davon die Anzahl der Knoten. Schlusskurs Schließlich wollten wir die End-to-End-Leistung von Stellar messen, indem wir messen, wie oft Hauptbücher bestätigt werden und ob Stellar sein 5-Sekunden-Ziel ohne Bestätigung erreicht alle Transaktionen fallen lassen. Wir haben einen durchschnittlichen Hauptbuchabschluss beobachtet Zeiten von 5,03 s, 5,10 s und 5,15 s, als wir das Konto erhöhten Einträge, Transaktionsrate bzw. Anzahl der Knoten. Die Ergebnisse legen nahe, dass Stellar Hauptbücher konsistent schließen kann unter hoher Belastung. 7.4 Ausführen eines validator Eines der wichtigen Merkmale von Stellar sind die geringen Kosten Ausführen eines validator, da Anker ausgeführt (oder mit ihnen kontrahiert) werden sollen validators, um die Endgültigkeit zu erzwingen. SDF führt drei Produktions-validators aus, alle auf c5.large AWS-Instanzen, die über zwei Kerne verfügen. 4 GiB RAM und Intel(R) Xeon(R) Platinum 8124M CPU @ 3,00-GHz-Prozessoren. Überprüfen der Ressourcennutzung auf einem Bei diesen Maschinen haben wir den Prozess Stellar beobachtet etwa 7 % der CPU und 300 MiB Speicher. Bezogen auf den Netzwerkverkehr mit 28 Verbindungen zu Peers und einer Quorumgröße Von 34 betrugen die eingehenden und ausgehenden Raten 2,78 Mbit/s und 2,56 Mbit/s. Hardware, die zum Ausführen eines solchen erforderlich ist Der Prozess ist kostengünstig. In unserem Fall betragen die Kosten 0,054 $/Stunde oder etwa 40 $/Monat. 7.5 Zukünftige Arbeit Diese Experimente legen nahe, dass Stellar problemlos 1–2 Ordnungen skalieren kann in einer Größenordnung, die über die heutige Netzwerknutzung hinausgeht. Denn die Die Leistungsanforderungen waren bisher so bescheiden, Stellar lässt Raum für viele einfache Optimierungen bekannte Techniken. Zum Beispiel Transaktionen und SCP Nachrichten werden von validators mithilfe einer naiven Flutung gesendet Protokoll, sollte aber idealerweise effizienter und strukturierter sein Peer-to-Peer-Multicast [30]. Zudem datenbanklastig Die Aktualisierungszeit des Hauptbuchs kann durch Standard-Batching- und Prefetching-Techniken verbessert werden.
Phần kết luận
Thanh toán quốc tế rất tốn kém và mất nhiều ngày. Quỹ quyền giám hộ đi qua nhiều tổ chức tài chính bao gồm các ngân hàng đại lý và dịch vụ chuyển tiền. Bởi vì mỗi bước nhảy phải được tin cậy hoàn toàn nên rất khó cho các bước nhảy mới. những người tham gia để giành thị phần và cạnh tranh. Stellar trình chiếu cách gửi tiền khắp thế giới với chi phí rẻ chỉ trong vài giây. các cải tiến quan trọng là giao thức thỏa thuận Byzantine dành cho thành viên mở mới, SCP, thúc đẩy cấu trúc ngang hàng của mạng lưới tài chính để đạt được sự đồng thuận toàn cầu theo một giả thuyết Internet mới lạ. SCP cho phép Stellar cam kết nguyên tử giao dịch không thể đảo ngược giữa những người tham gia tùy ý không biết hoặc tin tưởng lẫn nhau. Điều đó đảm bảo cho những người mới tham gia tiếp cận được các thị trường giống như đã được thiết lập người chơi, đảm bảo an toàn để có được trao đổi tốt nhất hiện có ngay cả từ những nhà tạo lập thị trường không đáng tin cậy, và đáng kể giảm độ trễ thanh toán. Lời cảm ơn Stellar sẽ không có được ngày hôm nay nếu không sớm sự lãnh đạo của Joyce Kim hay những đóng góp to lớn của Scott Fleckenstein và Bartek Nowotarski trong việc xây dựng và duy trì chân trời, Stellar SDK và các phần quan trọng khác của hệ sinh thái Stellar. Chúng tôi cũng cảm ơn Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, những người đánh giá ẩn danh, và người chăn cừu Justine Sherry của chúng tôi vì những nhận xét hữu ích của họ về những bản thảo trước đó. Tuyên bố từ chối trách nhiệm Đóng góp của Giáo sư Mazières cho ấn phẩm này là một nhà tư vấn được trả lương chứ không phải là một phần trong công việc của ông. Nhiệm vụ hoặc trách nhiệm của Đại học Stanford.
Thanh toán toàn cầu nhanh chóng và an toàn với Stellar SOSP '19, ngày 27–30 tháng 10 năm 2019, Huntsville, ON, Canada
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