Giao thức đồng thuận Stellar

Par David Mazières · 2015

Résumé

Les paiements internationaux sont lents et coûteux, en partie à cause du routage des paiements à plusieurs niveaux via des réseaux hétérogènes. systèmes bancaires. Stellar est un nouveau réseau de paiement mondial qui peut transférer directement de l'argent numérique n'importe où dans le monde en quelques secondes. L'innovation clé est une transaction sécurisée mécanisme entre intermédiaires non fiables, en utilisant un nouveau Protocole d'accord byzantin appelé SCP. Avec SCP, chacun l'établissement précise les autres établissements avec lesquels rester en accord; grâce à l’interconnectivité mondiale des système financier, l’ensemble du réseau s’accorde alors sur le nucléaire transactions impliquant des institutions arbitraires, sans risque de solvabilité ou de change de la part des émetteurs d’actifs intermédiaires ou des teneurs de marché. Nous présentons le modèle, le protocole et vérification formelle; décrire le réseau de paiement Stellar ; et enfin évaluer Stellar empiriquement à travers des benchmarks et notre expérience avec plusieurs années d'utilisation en production. Concepts du CSC • Sécurité et confidentialité →Distribué sécurité des systèmes ; • Organisation des systèmes informatiques → Architectures peer-to-peer ; • Systèmes d'information → Transfert électronique de fonds. Mots-clés blockchain, BFT, quorums, paiements Format de référence ACM : Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Paiements mondiaux rapides et sécurisés avec Stellar. Dans SOSP '19 : Symposium sur les principes des systèmes d'exploitation, du 27 au 30 octobre 2019, Huntsville, Ontario, Canada. ACM, New York, NY, États-Unis, 17 pages. https://doi.org/10.1145/3341301.3359636

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

Introduction

Les paiements internationaux sont notoirement lents et coûteux [32]. Considérez l’impossibilité d’envoyer 0,50 $ des États-Unis vers *Galois, Inc. †UCLA Autorisation de faire des copies numériques ou papier de tout ou partie de ce travail pour l'utilisation personnelle ou en classe est autorisée sans frais à condition que les copies ne soient pas réalisés ou distribués dans un but lucratif ou pour un avantage commercial et que les copies portent cet avis et la citation complète sur la première page. Droits d'auteur pour les composants de ce travail appartenant à d’autres qu’ACM doit être honoré. Abstraction avec le crédit est autorisé. Pour copier autrement, ou republier, pour publier sur des serveurs ou pour la redistribution à des listes nécessite une autorisation spécifique préalable et/ou des frais. Demande autorisations de [email protected]. SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada © 2019 Association pour les machines informatiques. ACM ISBN 978-1-4503-6873-5/19/10...15,00 $ https://doi.org/10.1145/3341301.3359636 Le Mexique, deux pays voisins. Les utilisateurs finaux paient près de 9 $ pour la moyenne de ce transfert [32], et un accord bilatéral négociés par les banques centrales des pays ne pouvaient que réduire le coût bancaire sous-jacent à 0,67 $ par article [2]. En plus des frais, la latence des paiements internationaux est généralement comptée en quelques jours, ce qui rend impossible l'obtention rapide d'argent à l'étranger en urgences. Dans les pays où le système bancaire ne fonctionne pas fonctionne ou ne sert pas tous les citoyens, ou lorsque les frais sont intolérables, les gens ont recours à l'envoi de paiements par bus [38], par bateau [19], et occasionnellement maintenant par Bitcoin [55], le tout encourir des risques, des latences ou des désagréments. Même s'il y aura toujours des coûts de mise en conformité, les éléments de preuve suggèrent qu'un montant important est perdu en raison du manque de concurrence [21], ce qui est exacerbé par une technologie inefficace. Où les gens peut innover, les prix et les latences diminuent. Par exemple, les envois de fonds depuis des comptes bancaires au deuxième trimestre 2019 coûtaient en moyenne 6,99%, alors que le chiffre pour l'argent mobile n'était que de 4,88% [13]. Un réseau de paiement ouvert et mondial qui attire l’innovation et la concurrence des entités non bancaires pourrait faire baisser coûts et latences à tous les niveaux, y compris la conformité [83]. Ce document présente Stellar, un paiement basé sur blockchain réseau spécialement conçu pour faciliter l’innovation et concurrence dans les paiements internationaux. Stellar est le premier système pour atteindre les trois objectifs suivants (dans le cadre d’un « hypothèse Internet nouvelle mais empiriquement valable » : 1. Adhésion ouverte – N’importe qui peut émettre des titres adossés à des devises token numériques pouvant être échangés entre utilisateurs. 2. Finalité imposée par l'émetteur – L'émetteur d'un token peut empêcher les transactions dans le token ne soient pas annulées ou annulées. 3. Atomicité entre émetteurs – Les utilisateurs peuvent échanger atomiquement et négociez des token de plusieurs émetteurs. Atteindre les deux premiers est facile. Toute entreprise peut proposer unilatéralement un produit tel que Paypal, Venmo, WeChat Pay, ou Alipay et assurez la finalité des paiements dans les délais monnaies virtuelles qu'ils ont créées. Malheureusement, les transactions atomiques entre ces devises sont impossibles. En fait, bien que Paypal ait acquis la société mère de Venmo en 2013, il est toujours impossible pour les utilisateurs finaux d'envoyer du Venmo dollars aux utilisateurs Paypal [78]. Ce n'est que récemment que les commerçants peuvent acceptez même les deux avec une seule intégration. Les objectifs 2 et 3 peuvent être atteints dans un système fermé. En particulier, un certain nombre de pays disposent de systèmes de paiement nationaux efficaces. réseaux, généralement supervisés par une autorité de régulation universellement fiable. Toutefois, l'adhésion est limitée à un groupe fermé ensemble de banques à charte et les réseaux se limitent au portée de l’autorité de régulation d’un pays.SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. Les objectifs 1 et 3 ont été atteints dans les blockchain extraits, notamment sous la forme d'ERC20 token sur Ethereum [3]. L'idée clé de ces blockchain est de créer une nouvelle crypto-monnaie avec laquelle récompenser les personnes qui s'installent. transactions difficiles à annuler. Malheureusement, cela signifie que les émetteurs token ne contrôlent pas le caractère définitif des transactions. Si le logiciel les erreurs provoquent une réorganisation de l'historique des transactions [26, 73], ou lorsque le butin des fraudeurs dépasse le coût de en réorganisant l'historique [74, 97], les émetteurs peuvent être responsables de tokens ils ont déjà échangé contre de l'argent réel. Le Stellar blockchain possède deux propriétés distinctives. Premièrement, il prend en charge nativement les marchés efficaces entre tokens provenant de différents émetteurs. Plus précisément, n'importe qui peut émettre un token, le blockchain fournit un carnet d'ordres intégré pour les échanges entre n'importe quelle paire de token, et les utilisateurs peuvent émettre des paiements de chemin qui négocient atomiquement sur plusieurs paires de devises tout en garantissant un prix limite de bout en bout. Deuxièmement, Stellar introduit un nouvel accord byzantin protocole, SCP (Stellar Consensus Protocol), à travers lequel Les émetteurs token désignent des serveurs validator spécifiques à appliquer finalité de la transaction. Tant que personne ne compromet les validator d’un émetteur (et les signatures numériques et les hashes cryptographiques restent sécurisés), l'émetteur sait exactement quelles transactions ont eu lieu et évite le risque des pertes résultant de la réorganisation de l'historique blockchain. L’idée clé de SCP est que la plupart des émetteurs d’actifs bénéficient des marchés liquides et veulent faciliter les transactions atomiques avec d'autres actifs. Par conséquent, les administrateurs validator configurent leurs serveurs pour se mettre d'accord avec d'autres validator sur les détails exacts historique de toutes les transactions sur tous les actifs. Un validator v1 peut être configuré pour être d'accord avec la v2, ou la v2 peut être configurée pour être d'accord avec la version v1, ou les deux peuvent être configurés pour s'accorder ; dans tous les cas, ni l'un ni l'autre ne s'engagera sur un historique des transactions jusqu'à ce que il sait que l’autre ne peut pas s’engager dans une histoire différente. Par transitivité, si v1 ne peut pas être en désaccord avec v2 et v2 ne peut pas être en désaccord avec v3 (ou vice versa), v1 ne peut pas être en désaccord avec v3, que v3 représente ou non des actifs dont v1 a même entendu parler de. Sous l’hypothèse que ces relations d’accord connecter transitivement l'ensemble du réseau, garantit SCP accord mondial, ce qui en fait un accord byzantin mondial protocole avec adhésion ouverte. Nous appelons cette nouvelle hypothèse de connectivité l’hypothèse d’Internet et notons qu’elle détient à la fois « Internet » (que tout le monde comprend comme signifie le plus grand réseau IP connecté de manière transitive) et les anciens paiements internationaux (qui sont effectués étape par étape non atomique, mais exploite un système global et connecté de manière transitive. réseau d’institutions financières). Stellar est utilisé en production depuis septembre 2015. Pour que la longueur blockchain reste gérable, le système exécute SCP à intervalles de 5 secondes – rapide selon les normes blockchain, mais beaucoup plus lente que les applications typiques de l’accord byzantin. Bien que l'utilisation principale ait été les paiements, Stellar a également s'est avéré attrayant pour les token non monétaires fongibles qui bénéficient provenant des marchés secondaires immédiats (voir la section 7.1). La section suivante traite des travaux connexes. La section 3 présente SCP. La section 4 décrit notre vérification formelle de SCP. La section 5 décrit la couche de paiement de Stellar. La section 6 concerne une partie de notre expérience de déploiement et des leçons apprises. La section 7 évalue le système. La section 8 conclut.

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.

Protocole de consensus Stellar

Le protocole de consensus (SCP) Stellar est un protocole basé sur le quorum. Protocole d'accord byzantin avec adhésion ouverte. Les quorums émergent des décisions combinées de configuration locale des nœuds individuels. Cependant, les nœuds ne reconnaissent que collèges auxquels ils appartiennent eux-mêmes, et seulement après apprendre les configurations locales de tous les autres membres du collège. L'un des avantages de cette approche est que SCP est intrinsèquement tolère des vues hétérogènes sur les nœuds existants. Hence, les nœuds peuvent rejoindre et quitter unilatéralement sans avoir besoin d'un protocole « visualiser le changement » pour coordonner l'adhésion. 3.1 Accord byzantin fédéré Le problème traditionnel de l’accord byzantin consiste en un système fermé de N nœuds, dont certains sont défaillants et peuvent behave arbitrarily. Les nœuds reçoivent des valeurs d'entrée et échangent messages pour décider d’une valeur de sortie parmi les entrées. Un protocole d'accord byzantin est sûr lorsqu'il n'y a pas deux nœuds bien élevés qui produisent des décisions différentes et l'unique la décision était une contribution valable (pour une définition d’un accord valideSOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. au préalable). Un protocole est opérationnel lorsqu'il garantit que chaque nœud honnête finit par produire une décision. Généralement, les protocoles supposent N = 3f + 1 pour un nombre entier f > 0, alors garantir la sécurité et une certaine forme de vivacité donc tant qu'au plus les nœuds f sont défectueux. À un moment donné de ces protocoles, les nœuds votent sur les valeurs proposées et une proposition recevoir 2f + 1 voix, appelé quorum de voix, devient la décision. Avec N = 3f + 1 nœuds, deux quorums quelconques de la taille 2f + 1 se chevauche dans au moins f + 1 nœuds ; même si f d'entre eux les nœuds qui se chevauchent sont défectueux, les deux quorums partagent au moins un nœud non défectueux, évitant ainsi les décisions contradictoires. Cependant, cette approche ne fonctionne que si tous les nœuds sont d'accord sur ce qui constitue un quorum, ce qui est impossible dans SCP où deux nœuds peuvent même ne pas connaître l’existence de l’autre. Avec SCP, chaque nœud v déclare unilatéralement des ensembles de nœuds, appelé ses tranches de quorum, telles que (a) v croit que si tous les membres d'une tranche sont d'accord sur l'état du système, alors ils ont raison, et (b) v croit qu'au moins une de ses tranches sera disponible pour fournir des informations en temps opportun sur état du système. Nous appelons le système résultant, constitué de nœuds et de leurs tranches, un accord byzantin fédéré (FBA). Comme nous le verrons ensuite, un système de quorum émerge à partir des tranches des nœuds. De manière informelle, les tranches d'un nœud FBA expriment avec qui le le nœud nécessite un accord. Par exemple, un nœud peut nécessiter un accord avec 4 organisations spécifiques, chacune exécutant 3 nœuds ; à s'adapter aux temps d'arrêt, il peut définir ses tranches pour qu'elles soient toutes définies composé de 2 nœuds de chaque organisation. Si cela « nécessite La relation « accord avec » relie transitivement deux nœuds quelconques, nous obtenons un accord mondial. Sinon, nous pouvons obtenir une divergence, mais seulement entre organisations, ce qui ne nécessite aucune accord avec l'autre. Compte tenu de la topologie actuelle système financier, nous émettons l’hypothèse qu’une convergence généralisée continuera à produire un registre unique que les gens appellent «le réseau Stellar», tout comme nous parlons d'Internet. Les quorums proviennent des tranches comme suit. Chaque nœud spécifie son quorum tranche dans chaque message qu'il envoie. Soit S le ensemble de nœuds à partir duquel un ensemble de messages provient. Un le nœud considère que l'ensemble des messages a atteint le quorum seuil lorsque chaque membre de S a une tranche incluse dans S. Par construction, un tel ensemble S, s’il est unanime, satisfait au exigences contractuelles de chacun de ses membres. Un homologue défectueux peut annoncer des tranches conçues pour changer ce qui les nœuds bien élevés considèrent les quorums. Par souci d'analyse protocolaire, nous définissons un quorum dans FBA comme étant un quorum non vide. ensemble S de nœuds englobant au moins une tranche de quorum de chaque membre non fautif. Cette abstraction est saine, comme tout ensemble de messages prétendant représenter un quorum unanime le fait réellement (même s'il contient des messages provenant de nœuds défectueux), et c'est précis lorsque S ne contient que des nœuds bien élevés. Dans dans cette section, nous supposons également que les tranches des nœuds ne changent pas. Néanmoins, nos résultats sont transférables au cas du changement de tranche car un système dans lequel les tranches changent n'est pas moins sûr qu'un un système à tranches fixes dans lequel les tranches d’un nœud sont constituées de tous les tranches qu'il utilise dans le cas des tranches changeantes (voir le théorème 13 dans [68]). Comme expliqué dans la section 4, la vivacité dépend de les nœuds bien élevés suppriment finalement les nœuds peu fiables de leurs tranches. Étant donné que les différents nœuds ont des exigences d'accord différentes, FBA exclut une définition globale de la sécurité. Nous disons les nœuds non défectueux v1 et v2 sont entrelacés à chaque fois le quorum de v1 croise chaque quorum de v2 dans au moins un nœud non défectueux. Un protocole FBA peut garantir un accord uniquement entre les nœuds entrelacés ; puisque SCP le fait, c'est de la faute la tolérance en matière de sécurité est optimale. L'hypothèse d'Internet, qui sous-tend la conception de Stellar, indique que les nœuds dont les gens se soucient à propos sera entrelacé. Nous disons qu'un ensemble de nœuds I est intact si I est un quorum uniformément non défectueux tel que tous les deux membres de I sont entrelacés même si chaque nœud en dehors de I est défectueux. Intuitivement, alors, je devrais rester imperméable aux actions des personnes non intactes nœuds. SCP garantit à la fois la vivacité non bloquante [93] et sécurité aux ensembles intacts, bien que les nœuds eux-mêmes n'aient pas besoin pour savoir (et peut-être ne pas pouvoir savoir) quels ensembles sont intacts. De plus, l’union de deux ensembles intacts qui se croisent est un ensemble intact. Par conséquent, les ensembles intacts définissent une partition du des nœuds bien élevés, où chaque partition est sûre et active (sous certaines conditions), mais différentes partitions peuvent afficher des décisions divergentes. 3.1.1 Considérations relatives à la sécurité et à la vivacité dans FBA À quelques exceptions près [64], la plupart des protocoles d'accords byzantins fermés sont adaptés au point d'équilibre auquel la sécurité et la vivacité ont la même tolérance aux pannes. Dans Expédié par Amazon, cela signifie des configurations dans lesquelles, quelles que soient les pannes, tous les ensembles entrelacés sont également intacts. Étant donné que Expédié par Amazon détermine quorums de manière décentralisée, il est peu probable que les choix individuels des tranches conduisent à cet équilibre. De plus, à au moins en Stellar, l'équilibre n'est pas souhaitable : les conséquences d'une défaillance de sécurité (à savoir de l'argent numérique dépensé en double) sont bien pires que ceux d'un échec de vivacité (à savoir des retards en paiements qui ont de toute façon pris des jours avant le Stellar). Les gens par conséquent, nous devrions sélectionner et sélectionnons de grandes tranches de quorum telles que leurs nœuds sont plus susceptibles de rester entrelacés qu’intacts. En faisant encore pencher la balance, il est plus facile de se remettre de échecs de vivacité typiques dans un système FBA que dans un système fermé traditionnel. Dans les systèmes fermés, tous les messages doivent être interprété par rapport au même ensemble de quorums. Par conséquent, l'ajout et la suppression de nœuds pour récupérer après une panne nécessitent parvenir à un consensus sur un événement de reconfiguration, ce qui est difficile une fois que le consensus n’est plus d’actualité. En revanche, avec FBA, n'importe quel nœud peut ajuster unilatéralement ses tranches de quorum à tout moment. le temps. En réponse à une panne dans un site d'importance systémique organisation, les administrateurs de nœuds peuvent ajuster leurs tranches en fonction contourner le problème, un peu comme coordonner les réponses aux catastrophes BGP [63] (mais sans les contraintes de routage sur des liens réseau physiques).

Paiements internationaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada 3.1.2 Le théorème des cascades SCP suit le modèle du modèle rond de base [42] ; les nœuds progressent à travers une série de bulletins de vote numérotés, chacun tenter trois tâches : (1) identifier une valeur « sûre » qui n'est contredite par aucune décision lors d'un scrutin précédent (souvent appelée préparer le scrutin), (2) s'entendre sur la valeur sûre et (3) détecter que l'accord a été conclu. Cependant, FBA est ouvert l'adhésion bloque plusieurs techniques courantes, ce qui rend impossible de « porter » les protocoles fermés traditionnels vers le FBA modèle en changeant simplement la définition du quorum. Une technique utilisée par de nombreux protocoles est la rotation via les nœuds leaders de manière circulaire après les délais d'attente. Dans un système fermé, la sélection des leaders à tour de rôle garantit qu'au final, un leader honnête et unique finit par coordonner un accord sur une valeur unique. Malheureusement, le tournoi à la ronde ne peut pas fonctionner dans un système FBA avec une adhésion inconnue. Une autre technique courante qui échoue avec FBA consiste à supposer qu'un quorum particulier peut convaincre tous les nœuds. Par exemple, si tout le monde reconnaît des nœuds 2f + 1 comme quorum, alors Les signatures 2f + 1 suffisent pour prouver l'état du protocole à tous les nœuds. De même, si un nœud reçoit un quorum de messages identiques grâce à une diffusion fiable [24], le nœud peut supposer que tous les nœuds non défectueux verront également un quorum. Dans FBA, en revanche, un le quorum ne signifie rien pour les nœuds en dehors du quorum. Enfin, les systèmes non fédérés emploient souvent des raisonnement sur la sécurité : si les nœuds f + 1 sont défectueux, toute la sécurité les garanties sont perdues. Par conséquent, si le nœud v entend tous les nœuds f + 1 énoncer un fait F, v peut supposer qu'au moins l'un d'eux dit au vérité (et donc que F est vrai) sans perte de sécurité. Tel le raisonnement échoue dans FBA car la sécurité est une propriété des paires de nœuds, donc un nœud qui a perdu sa sécurité au profit de certains pairs peut perdez toujours la sécurité sur plus de nœuds en supposant de mauvais faits. Expédié par Amazon peut cependant raisonner à rebours sur la vivacité. Définir un ensemble de blocage en V comme un ensemble de nœuds qui se croisent tous les tranche de v. Si un ensemble de blocage en v B est unanimement défectueux, B peut refuser au nœud v un quorum et lui coûter de la vivacité. Par conséquent, si B énonce à l’unanimité le fait F, alors v sait que soit F est vrai ou v n’est pas intact. Cependant, v a encore besoin de voir un aperçu complet quorum pour savoir que les nœuds entrelacés ne contrediront pas F, ce qui mène à un dernier cycle de communication dans SCP et d'autres protocoles FBA [47] qui ne sont pas requis dans des protocoles d’adhésion fermée. Le résultat est que nous avons trois niveaux de confiance possibles dans des faits potentiels : indéterminé, sûr à supposer parmi les nœuds intacts (que nous allons terme faits acceptés), et on peut le supposer en toute sécurité parmi les nœuds (que nous appellerons faits confirmés). Le nœud v peut déterminer efficacement si un ensemble B est vbloquant en vérifiant si B coupe toutes ses tranches. Il est intéressant de noter que si les nœuds annoncent toujours les déclarations qu'ils accepter et qu'un quorum complet accepte une déclaration, cela déclenche un processus en cascade par lequel les déclarations se propagent partout ensembles intacts. Nous appelons le fait clé qui sous-tend cette propagation le théorème de la cascade, qui énonce ce qui suit : Si I est un ensemble intact, Q est un quorum de n'importe quel membre de I, et S est n'importe quel surensemble de Q, alors soit S ⊇I soit il y a un membre v ∈I tel que v < S et I ∩S est v-bloquant. Intuitivement, était-ce ce n'est pas le cas, le complément de S contiendrait un quorum qui coupe I mais pas Q, violant l'intersection du quorum. Notez que si nous commençons par S = Q et développons S à plusieurs reprises pour inclure tous les nœuds qu'il bloque, on obtient un effet en cascade jusqu'à ce que, finalement, S englobe tout I. 3.2 Description du protocole SCP est un protocole de consensus partiellement synchrone [42] composé d'une série de tentatives pour parvenir à un consensus appelées bulletins de vote. Les bulletins de vote utilisent des délais d'attente de durée croissante. Un le protocole de synchronisation des bulletins de vote garantit que les nœuds restent activés le même scrutin pour des périodes croissantes jusqu'aux scrutins sont effectivement synchrones. La résiliation n'est pas garantie jusqu'à ce que les scrutins soient synchrones, mais deux scrutins synchrones dans lequel font les membres défectueux des tranches de nœuds bien élevés ne pas interférer sont suffisants pour que SCP se termine. Un protocole de vote précise les actions menées lors de chaque bulletin de vote. Un scrutin commence par une phase de préparation, au cours de laquelle les nœuds essayer de déterminer une valeur à proposer qui ne contredit pas toute décision antérieure. Ensuite, dans une phase de validation, les nœuds essaient pour prendre une décision sur la valeur préparée. Le scrutin utilise un sous-protocole d'accord appelé vote fédéré, jen quels nœuds votent sur des déclarations abstraites cela pourrait éventuellement être confirmé ou rester bloqué. Certaines déclarations peuvent être qualifiées de contradictoires et la sécurité La garantie du vote fédéré est qu'il n'y a pas deux membres d'un un ensemble entrelacé confirme des déclarations contradictoires. La confirmation d'une déclaration n'est pas garantie sauf pour une déclaration intacte ensemble dont les membres votent tous de la même manière. Cependant, si un un membre d'un ensemble intact confirme une déclaration, fédérée le vote garantit que tous les membres de l’ensemble intact finissent par confirmer cette déclaration. Par conséquent, prendre des mesures irréversibles en réponse aux déclarations confirmatives préserve la vivacité pour nœuds intacts. Les nœuds proposent initialement des valeurs obtenues à partir d'une nomination protocole qui augmente les chances de tous les membres d’un groupe intact ensemble proposant la même valeur, et qui finit par converger (bien qu'il n'y ait aucun moyen de déterminer que la convergence est complète). La nomination combine le vote fédéré et la sélection des dirigeants. Parce que le round-robin est impossible dans FBA, la nomination utilise un système probabiliste de sélection des dirigeants. Le théorème de la cascade joue un rôle crucial à la fois dans le scrutin synchronisation et en évitant les états bloqués à partir desquels la résiliation n’est plus possible. 3.2.1 Vote Les nœuds SCP procèdent à une série de scrutins numérotés, en utilisant le vote fédéré pour se mettre d'accord sur des déclarations sur lesquelles les valeurs sont ou ne sont pas décidées dans quels scrutins. Si asynchronie ou un comportement fautif empêche de parvenir à une décision au scrutin n, les nœuds expirent et réessayez au scrutin n + 1.

SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. Le vote fédéré de rappel pourrait ne pas prendre fin. Ainsi, certains les déclarations sur les bulletins de vote peuvent rester bloquées de façon permanente état indéterminé où les nœuds ne peuvent jamais déterminer s'ils sont toujours en cours ou bloqués. Parce que les nœuds ne peuvent pas exclure la possibilité que des déclarations indéterminées s'avèrent plus tard vraies, ils ne doivent jamais tenter de voter de manière fédérée sur de nouvelles déclarations contredisant les indéterminés. A chaque scrutin n, les nœuds utilisent le vote fédéré sur deux types de déclaration: • préparer ⟨n,x⟩– indique qu'aucune valeur autre que x a été ou sera un jour décidé lors d’un scrutin ≤n. • commit ⟨n,x⟩– indique que x est décidé lors du scrutin n. Surtout, notez que préparer ⟨n,x⟩contradit le commit ⟨n′,x ′⟩quand n ≥n′ et x , x ′. Un nœud démarre le scrutin n en tentant un vote fédéré sur un instruction préparer ⟨n,x⟩. Si une instruction de préparation précédente a été confirmé avec succès par un vote fédéré, le Le nœud choisit x dans le plan confirmé du scrutin le plus élevé. Sinon, le nœud définit x sur la sortie du protocole de nomination décrit dans la sous-section suivante. Si et seulement si un nœud confirme avec succès, préparez ⟨n,x⟩ lors du scrutin n, il tente un vote fédéré sur le commit ⟨n,x⟩. Si qui réussit, cela signifie que SCP a décidé, donc le nœud sort la valeur de l'instruction de validation confirmée. Considérons un ensemble entrelacé S. Puisqu'au plus une valeur peuvent être confirmées préparées par les membres de S lors d'un scrutin donné, deux valeurs différentes ne peuvent pas être confirmées par membres de S lors d’un scrutin donné. De plus, si commit ⟨n,x⟩ est confirmé, alors préparer ⟨n,x⟩a également été confirmé ; depuis préparer ⟨n,x⟩contredit tout engagement antérieur pour une valeur différente, par l'accord garantissant le vote fédéré nous obtenons qu'aucune valeur différente ne peut être décidée dans un précédent scrutin par les membres de S. Par induction sur les numéros de scrutin, on assurez-vous donc que SCP est en sécurité. Pour la vivacité, considérons un ensemble I intact et suffisamment long vote synchrone n. Si des nœuds défaillants apparaissent dans les tranches des nœuds bien élevés n'interfèrent pas dans n, alors par scrutin n + 1 tous les membres de I ont confirmé le même ensemble P d'instructions de préparation. Si P = ∅ et que le scrutin n était suffisamment long, le le protocole de nomination aura convergé vers une certaine valeur x. Sinon, soit x la valeur du plan avec le vote le plus élevé dans P. Quoi qu'il en soit, je tenterai uniformément de fédérer voter sur la préparation ⟨n + 1,x⟩au prochain scrutin. Par conséquent, si n + 1 est également synchrone, une décision pour x s'ensuit inévitablement. 3.2.2 Nomination La nomination implique un vote fédéré sur les déclarations : • Nommer x – déclare que x est un candidat à la décision valide. Les nœuds peuvent voter pour désigner plusieurs valeurs, différentes les déclarations de nomination ne sont pas contradictoires. Cependant, une fois un nœud confirme toute déclaration nominative, il arrête de voter pour nommer de nouvelles valeurs. Le vote fédéré permet toujours à un nœud de confirmer les nouvelles déclarations nominatives pour lesquelles il n'a pas voté, ce qui voter ou accepter un du quorum accepter un du quorum a est valide accepter un de ensemble de blocage non engagé a voté un accepté un a confirmé un a voté ¬a Figure 1. Étapes du vote fédéré permet aux membres d’un ensemble intact de se confirmer mutuellement valeurs proposées tout en retenant de nouveaux votes. Le résultat (évolutif) de la nomination est une combinaison déterministe de toutes les valeurs contenues dans les déclarations de nomination confirmées. Si x représente un ensemble de transactions, les nœuds peuvent prendre l'union d'ensembles, l'ensemble le plus grand ou celui avec le hash le plus élevé, donc tant que tous les nœuds font de même. Parce que les nœuds retiennent les nouvelles votes après avoir confirmé une déclaration de nomination, l'ensemble des les déclarations confirmées ne peuvent contenir qu’un nombre fini de valeurs. Le fait que des déclarations confirmées se soient répandues de manière fiable les ensembles intacts signifient que les nœuds intacts finissent par converger vers le même ensemble de valeurs nominées et donc résultat de la nomination, mais à un moment inconnu, arbitrairement tard dans le protocole. Les nœuds utilisent la sélection de leaders fédérés pour réduire le nombre de valeurs différentes dans les instructions nominatives. Seulement un leader qui n'a pas encore voté pour une déclaration de nomination peut introduire un nouveau x. D'autres nœuds attendent des nouvelles dirigeants et copiez simplement les votes de nomination (valides) de leurs dirigeants. Pour faire face à l'échec, l'ensemble des dirigeants ne cesse de croître à mesure que des délais d'attente se produisent, bien qu'en pratique, seuls quelques nœuds introduisent de nouvelles valeurs de x. 3.2.3 Vote fédéré Le vote fédéré utilise un protocole en trois phases illustré dans Figure 1. Les nœuds tentent de se mettre d'accord sur des déclarations abstraites en premier voter, puis accepter et enfin confirmer les déclarations. Un nœud v peut voter pour toute déclaration valide a qui ne correspond pas à contredire son autrevotes en suspens et déclarations acceptées. Pour ce faire, il diffuse un message de vote signé. v accepte alors a si a est cohérent avec d'autres déclarations acceptées et soit (cas 1) v est membre d'un quorum dans lequel chaque nœud vote pour a ou accepte a, ou (cas 2) même si v n'a pas voté pour un, un ensemble de blocage en V accepte un. Dans le cas 2, v peut ont déjà voté contre a, qui ont maintenant été rejetée. v est autorisé à oublier les votes annulés et faire comme s'il ne les avait jamais lancés car si V est intact, il le sait les votes annulés ne peuvent pas atteindre le quorum dans le cas 1. v diffuse qu'il accepte a, puis confirme a lorsqu'il est en un quorum qui accepte à l'unanimité a. La figure 2 montre le effet des ensembles v-bloquants et du théorème de la cascade pendant vote fédéré. Deux nœuds entrelacés ne peuvent pas confirmer des déclarations contradictoires, car les deux quorums requis devraient partager unPaiements internationaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada 3 4 2 1 5 7

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

Votez X

Votez Y (une) 3 4 2 1 5 7 6 Voter X Voter X Voter X Voter Oui Voter X Voter Oui Voter Oui (b) 3 4 2 1 5 7 6 Accepter X Voter X Accepter X Voter Oui Accepter X Voter Oui Voter Oui (c) 3 4 2 1 5 7 6 Accepter X Accepter X Accepter X Voter Oui Accepter X Accepter X Voter Oui (d) 3 4 2 1 5 7 6 Accepter X Voter X Accepter X Accepter X Accepter X Accepter X Accepter X (e) Figure 2. Effet cascade dans le vote fédéré. Chaque nœud possède une tranche de quorum indiquée par des flèches vers les membres de la tranche. (a) Des déclarations contradictoires X et Y sont introduites. (b) Les nœuds votent pour des déclarations valides. (c) Le nœud 1 accepte X après son quorum {1, 2, 3, 4} vote à l'unanimité pour X. (d) Les nœuds 1, 2, 3 et 4 acceptent tous X ; l'ensemble {1} est 5-bloquant, donc le nœud 5 accepte X, annulant son vote précédent pour Y. (e) L'ensemble {5} est bloquant 6 et 7, donc 6 et 7 acceptent tous deux X. nœud non défectueux qui ne pouvait pas accepter de déclarations contradictoires. La confirmation d'une déclaration n'est pas garantie : en En cas de vote partagé, les deux déclarations peuvent être définitivement coincé dans l'attente du quorum lors de la phase de vote. Cependant, si un nœud dans un ensemble intact I confirme une affirmation, la cascade théorème et accepter le cas 2 garantir que tout je finirai par confirmer cette affirmation. 3.2.4 Synchronisation des bulletins de vote Si les nœuds ne sont pas en mesure de confirmer une instruction de validation pour le scrutin en cours, ils abandonnent après un temps mort. Le délai d'attente devient plus longtemps à chaque scrutin afin de s'ajuster à des limites arbitraires sur le retard du réseau. Cependant, les délais d'attente ne suffisent pas à eux seuls à synchroniser les scrutins des nœuds qui n'ont pas démarré en même temps ou qui n'ont pas démarré en même temps. a été désynchronisé pour d'autres raisons. Pour réaliser la synchronisation, les nœuds démarrent le temporisateur uniquement lorsqu'ils font partie d'un quorum atteint lors du scrutin en cours (ou ultérieur) n. Ceci ralentit les nœuds qui ont démarré tôt et garantit qu'aucun un membre d'un ensemble intact reste trop en avance sur le groupe. De plus, si un nœud v remarque un v-blocage défini ultérieurement scrutin, il passe immédiatement au scrutin le plus bas de telle sorte que celui-ci ce n'est plus le cas, quelles que soient les minuteries. La cascade Le théorème garantit alors que tous les retardataires rattrapent leur retard. Le résultat est que les bulletins de vote sont à peu près synchronisés dans un pays intact défini une fois que le système devient synchrone. 3.2.5 Sélection des leaders fédérés La sélection des leaders permet à chaque nœud de choisir des leaders de manière façon dont les nœuds n'en choisissent généralement qu'un ou un petit nombre de dirigeants. Pour s'adapter à l'échec du leader, sélection du leader se déroule par tours. Si les leaders du tour en cours semblent ne pas s'acquitter de leurs responsabilités, puis après un certains nœuds de délai d'attente passent au tour suivant pour élargir l'ensemble des dirigeants qu'ils suivent. Chaque tour utilise deux fonctions cryptographiques uniques hash, H0 et H1, qui génèrent des entiers dans la plage [0,hmax). Par exemple, Stellar utilise Hi(m) = SHA256(i∥b∥r ∥m), où b est l'instance SCP globale (numéro de bloc ou de grand livre), r est le numéro du tour de sélection du leader, et hmax = 2256. Dans un tour, nous définissons la priorité du nœud v comme : priorité(v) = H1(v) Un homme de paille serait choisi pour chaque nœud comme leader le nœudv avec la priorité la plus élevée (v). Cette approche fonctionne bien avec des tranches de quorum presque identiques, mais pas correctement capturer l’importance des nœuds dans les configurations déséquilibrées. Par exemple, si l’Europe et la Chine contribuent chacune à hauteur de 3 nœuds à chaque quorum, mais la Chine gère 1 000 nœuds et l'Europe 4, alors la Chine aura le nœud le plus prioritaire 99,6 % de l'époque. Nous introduisons donc une notion de poids de tranche, où poids(u,v) ∈[0, 1] est la fraction des tranches de quorum du nœud u contenant le nœud v. Lorsque le nœud u sélectionne un nouveau leader, il ne considère que les voisins, définis comme suit : voisins (u) = { v | H0(v) < hmax · poids(u,v) } Un nodeu commence alors avec un ensemble vide de leaders, et à chaque round lui ajoute le nœud v des voisins(u) de plus haut priorité(v). Si l'ensemble des voisins est vide à n'importe quel tour, u ajoute à la place le nœudv avec la valeur la plus basse de H0(v)/weight(u,v).

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).

Vérification formelle du SCP

Pour éliminer les erreurs de conception, nous avons formellement vérifié la sécurité de SCP et propriétés de vivacité (voir [65]). Plus précisément, nous avons vérifié que les nœuds entrelacés ne sont jamais en désaccord et que, dans les conditions discutées ci-dessous, chaque membre d'un ensemble intact finit par décider. Il est intéressant de noter que la vérification a révélé que les conditions dans lesquelles SCP garantit la vivacité sont subtiles, et plus fort qu'on ne le pensait initialement [68] : comme indiqué ci-dessous, nœuds malveillants qui manipulent le timing sans autrement tout écart par rapport au protocole devra peut-être être expulsé manuellement from quorum slices.

SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et al. Pour garantir que les propriétés se sont avérées valables dans toutes les conditions possibles Configurations et exécutions FBA, nous considérons un arbitraire nombre de nœuds avec des configurations locales arbitraires. Ceci inclut des scénarios avec des ensembles intacts disjoints, ainsi que des exécutions potentiellement infinies. L'inconvénient est que nous faire face au problème difficile de la vérification d'un paramètre système à états infinis. Pour que la vérification reste réalisable, nous avons modélisé SCP en logique du premier ordre (FOL) en utilisant Ivy [69] et la méthodologie de [82]. Le processus de vérification consiste à fournir manuellement des conjectures inductives qui sont ensuite automatiquement vérifiées par Ivy. Le modèle FOL de SCP résume certains aspects de Les systèmes Expédié par Amazon difficiles à gérer en FOL (par exemple, le le théorème de cascade est pris comme un axiome), nous vérifions donc le solidité de l'abstraction à l'aide d'Isabelle/HOL [75]. Après avoir exprimé le problème de vérification en FOL, nous vérifions la sécurité en fournissant un invariant inductif. L'inductif invariant se compose d'une douzaine de conjectures sur une seule ligne pour environ 150 lignes de spécification de protocole. Nous spécifions ensuite les propriétés de vivacité de SCP dans la logique temporelle linéaire d'Ivy et utilisons la vivacité à une réduction de sécurité de [80, 81] pour réduire la vivacité problème de vérification au problème de trouver un inductif invariant. Bien que la sécurité de SCP soit relativement simple à prouver, l’argument de la vivacité de SCP est beaucoup plus complexe et se compose d’environ 150 invariants sur une seule ligne. Prouver la vivacité nécessitait une formalisation précise du hypothèses selon lesquelles SCP assure la résiliation. Nous pensions initialement qu'un ensemble intact serait toujours terminé si tous les membres ont supprimé les nœuds défectueux de leurs tranches [68]. Mais cela s'est avéré insuffisant : une personne bien élevée (mais pas intact) nœud dans un quorum d’un membre du Je peux, sous le influence de nœuds défectueux, empêcher la résiliation en complétant un quorum juste avant la fin d'un scrutin, provoquant ainsi les membres de I choisiront différentes valeurs de x lors du prochain scrutin. Nous devons donc en outre supposer que, de manière informelle, chaque nœud d'un quorum d'un membre de I éventuellement soit devient opportun ou n’envoie pas de messages du tout pendant une période suffisante. En pratique, cela signifie que les membres de I may doivent ajuster leurs tranches jusqu'à ce que la condition soit respectée. Ceci le problème n’est pas inhérent aux systèmes Expédié par Amazon : Losa et al. [47] présent un protocole dont la vivacité dépend du strictement plus faible hypothèses d'une éventuelle synchronisation et d'une éventuelle élection du leader, sans qu'il soit nécessaire de supprimer les nœuds défectueux des tranches.

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.

Réseau de paiement

Cette section décrit le réseau de paiement de Stellar, implémenté en tant que machine à états répliquée [88] au-dessus de SCP. 5.1 Modèle de grand livre Le grand livre de Stellar est conçu autour d'une abstraction de compte (en contrairement à la sortie de transaction non dépensée plus centrée sur les pièces ou modèle UTXO de Bitcoin). Le contenu du grand livre se compose d'un ensemble d'écritures comptables de quatre types distincts : comptes, lignes de confiance, offres et données de compte. Les comptes sont les principaux qui possèdent et émettent des actifs. Chacun le compte est nommé par une clé publique. Par défaut, la clé privée correspondante peut signer les transactions pour le compte. Cependant, les comptes peuvent être reconfigurés pour ajouter d'autres signataires et annuler l'autorisation de la clé qui nomme le compte, avec un Option « multisig » pour exiger plusieurs signataires. Chaque compte contient également : un numéro de séquence (inclus dans les transactions pour éviter les rediffusions), quelques flags, et un solde en mode « natif » crypto-monnaie pré-exploitée appelée XLM, destinée à atténuer certaines attaques par déni de service et faciliter la tenue de marché comme monnaie neutre. Les lignes de confiance suivent la propriété des actifs émis, qui sont nommé par une paire composée du compte émetteur et d'un short code d'actif (par exemple, « USD » ou « EUR »). Chaque ligne de confiance précise un compte, un actif, le solde du compte dans cet actif, un limite au-dessus de laquelle le solde ne peut pas monter, et quelques drapeaux. Un compte doit consentir explicitement à la détention d'un actif par créer une ligne de confiance, empêchant les spammeurs de s'en prendre à vous comptes avec des actifs indésirables. Les réglementations de connaissance du client (KYC) exigent que de nombreuses institutions financières sachent quels dépôts elles détiennent, par exemple en vérifiant une pièce d'identité avec photo. Pour se conformer, les émetteurs peuvent définir un indicateur auth_reqired facultatif sur leurs comptes, limitant la propriété des actifs qu'ils émettent aux comptes autorisés. Pour accorder une telle autorisation, l'émetteur fixe un signaler sur les lignes de confiance des clients. Les offres correspondent à la volonté d’un compte d’échanger à un certain montant d'un actif particulier pour un autre à un moment donné prix sur le carnet de commandes ; ils sont automatiquement mis en correspondance et rempli lorsque les prix d’achat/vente se croisent. Enfin, les données du compte sont constituées de triplets de compte, de clé et de valeur, permettant aux titulaires de compte pour publier de petites valeurs de métadonnées. Pour éviter le spam du grand livre, il existe un solde XLM minimum, appelé la réserve. La réserve d’un compte augmente à chaque fois écriture comptable associée et diminue lorsque l'écriture comptable disparaît (par exemple, lorsqu'une commande est exécutée ou annulée, ou lorsqu'un la ligne de confiance est supprimée). Actuellement, la réserve augmente de 0,5 XLM (∼0,03 $) par écriture au grand livre. Quelle que soit la réserve, c'est possible de récupérer la totalité de la valeur d'un compte en supprimant avec une opération AccountMerge. Un en-tête de grand livre, illustré à la figure 3, stocke les attributs globaux : un numéro de grand livre, des paramètres tels que le solde de réserve par écriture comptable, un hash de l'en-tête comptable précédent (en fait plusieurs hashes formant une liste de saut), la sortie SCP comprenant un hash de nouvelles transactions appliquées à ce grand livre, un hash de les résultats de ces transactions (par exemple, le succès ou l'échec de chacun) et un instantané hash de toutes les écritures du grand livre. Étant donné que l'instantané hash inclut tout le contenu du grand livre, Les validator n'ont pas besoin de conserver l'historique pour valider les transactions. Cependant, pour atteindre les centaines de millions de comptes, nous ne pouvons pas rehash toutes les tables d'écriture du grand livre sur chaque clôture du grand livre. De plus, il n'est pas pratique de transférer un grand livrePaiements internationaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada numéro de grand livre = 4 H (HDR précédent) Sortie SCP H∗(résultats) H∗(instantané) ... en-tête numéro de grand livre = 5 H (HDR précédent) Sortie SCP H∗(résultats) H∗(instantané) ... en-tête . . . Figure 3. Contenu du grand livre. H est SHA-256, tandis que H ∗ représente une application hiérarchique ou récursive de H. Sortie SCP dépend aussi de l'en-tête précédent hash. Créer un compte Créer et financer une nouvelle écriture de compte Fusion de comptes Supprimer l'écriture comptable du compte Définir les options Modifier les indicateurs de compte et les signataires Paiement Payez une quantité spécifique d'actif à destination. compte. CheminPaiement Comme le paiement, mais payez avec un actif différent (jusqu'à limiter); spécifier jusqu'à 5 actifs intermédiaires Gérer l'offre Créer/supprimer/modifier une entrée au grand livre d'offre, -Offre Passive avec variante passive pour permettre un spread nul Gérer les données Créer/supprimer/modifier un compte. saisie de données au grand livre ChangerConfiance Créer/supprimer/modifier une ligne de confiance Autoriser la confiance Définir ou effacer l'indicateur autorisé sur la ligne de confiance Séquence de bosses Augmenter séq. numéro de compte Figure 4. Principales opérations du grand livre de cette taille chaque fois qu'un nœud a été déconnecté de le réseau depuis trop longtemps. L'instantané hash est donc conçu pour optimiser à la fois le hashing et la réconciliation de l’État. Plus précisément, l'instantané stratifie les écritures du grand livre par heure de la dernière modification dans un ensemble de conteneurs de taille exponentielle appelés seaux. La collection de buckets est appelée le bucket liste, et présente une certaine similitude avec les arbres de fusion structurés en journaux (Arbres LSM) [77]. La bucket list n'est pas lue pendant le traitement de la transaction (voir Section 5.4). Par conséquent, certaines conceptions certains aspects des arbres LSM peuvent être assouplis. En particulier, aléatoire l'accès par clé n'est pas requis et les compartiments ne sont que lus séquentiellement dans le cadre de la fusion des niveaux. Hacher le seau La liste est effectuée en hashing chaque compartiment au fur et à mesure de sa fusion et en calculant un nouveau hash cumulatif du bucket hashes (un petit, indice fixe de référence hashes) à chaque clôture du grand livre. La réconciliation de la bucket list après la déconnexion nécessite un téléchargement seulement des seaux qui diffèrent. 5.2 Modèle de transaction Une transaction se compose d'un compte source, de critères de validité, d'un mémo et une liste d’une ou plusieurs opérations. La figure 4 répertorie les opérations disponibles. Chaque opération possède un compte source, qui par défaut, celui de la transaction globale. Une transaction doit être signé par des clés correspondant à chaque compte source dans une opération. Les comptes Multisig peuvent nécessiter une signature plus élevée poids pour certaines opérations (telles que SetOptions) et inférieur pour d'autres (comme AllowTrust). Les transactions sont atomiques : si une opération échoue, aucune des opérations les exécuter. Cela simplifie les transactions multidirectionnelles. Supposons qu'un l'émetteur crée un actif pour représenter les titres de propriété et l'utilisateur A veut échanger une petite parcelle de terrain plus 10 000 $ contre un parcelle de terrain plus grande appartenant à B. Les deux utilisateurs peuvent tous deux signer une seule transaction contenant trois opérations : deux terrains paiements et paiement d’un dollar. Le principal critère de validité d’une transaction est son numéro d’ordre, qui doit être supérieur de un à celui du numéro de séquence de la transaction. écriture comptable du compte source. Exécuter une transaction valide (avec succès ou non) incrémente le numéro de séquence, empêchant la relecture. Les numéros de séquence initiaux contiennent le grand livre numéro dans les bits hauts pour empêcher la relecture même après la suppression et recréer un compte. L'autre critère de validité est une limite facultative quant au moment où une transaction peut s’exécuter. Retour à la terre et au dollar swap ci-dessus, si A signe la transaction avant B, A ne peut pas veut que B reste assis sur la transaction pendant un an avant de la soumettre cela, et pourrait ainsi imposer un délai invalidant la transaction après quelques jours. Les comptes Multisig peuvent également être configurés donner un poids de signature à la révélation d'une pré-image hash, ce qui, combiné à des limites de temps, permet le trading atomique crosschain [1]. Le compte source d'une transaction paie des frais insignifiants en XLM, 10−5 XLM sauf en cas de congestion. En période de congestion, le le coût des opérations est fixé par les enchères néerlandaises. Les validateurs sont non compensé par des frais car les validator sont analogues aux nœuds complets Bitcoin, pas aux mineurs. Plutôt que de détruire XLM, les frais sont recyclés et répartis proportionnellement par vote du les détenteurs XLM existants, qui, rétrospectivement, pourraient ou pourraient cela ne valait pas la complexité. 5.3 Valeurs consensuelles Pour chaque grand livre, Stellar utilise SCP pour convenir d'une structure de données avec trois champs : un ensemble de transactions hash (incluant un hash de l'en-tête du référentiel précédent), une heure de clôture, uned mises à niveau. Lorsque plusieurs valeurs sont confirmées, Stellar prend l'ensemble de transactions avec le plus d'opérations (rupture des liens par frais totaux, puis ensemble de transactions hash), l'union de tous mises à niveau et temps de fermeture le plus élevé. Une heure de fermeture est seulement valable s'il est compris entre l'heure de clôture du dernier référentiel et le présents, afin que les nœuds ne nomment pas d'heures invalides. Les mises à niveau ajustent les paramètres globaux tels que le solde de réserve, les frais de fonctionnement minimum et la version du protocole. Quand combinés lors de la nomination, les frais plus élevés et les numéros de version du protocole remplacent les plus bas. Les mises à niveau affectent la gouvernance à travers un espace de lutte avec vote fédéré [34], ni l'un ni l'autre égalitaire ni centralisé. Chaque validator est configuré comme soit gouvernant, soit non gouvernant (par défaut), selon à savoir si son opérateur souhaite participer à la gouvernance. Les validator gouvernants envisagent trois types de mise à niveau : souhaité, valide et invalide (tout ce que le validator ne fait pas

SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. validator noyau horizon FS Base de données Base de données soumettre client client autres validator Figure 5. Architecture Stellar validator savoir mettre en œuvre). Les mises à niveau souhaitées sont configurées pour déclenchement à un moment précis, destiné à être coordonné entre opérateurs. Les nœuds dirigeants votent toujours pour nommer les candidats souhaités. mises à niveau, acceptez mais ne votez pas pour proposer des mises à niveau valides (c'est-à-dire, acceptez un quorum bloquant) et ne votez jamais pour ou acceptez les mises à niveau non valides. Écho de validators non gouvernementaux tout vote qu'ils voient pour une mise à niveau valide, déléguant essentiellement la décision sur les mises à niveau souhaitées pour ceux qui optent pour un rôle de gouvernance. 5.4 Mise en œuvre La figure 5 montre l'architecture validator de Stellar. Un démon appelé stellar-core (∼92 000 lignes de C++, sans compter les bibliothèques tierces) implémente le protocole SCP et la machine à états répliquée. La production de valeurs pour SCP nécessite de réduire un grand nombre d'écritures comptables à de petites écritures cryptographiques. hashes. En revanche, la validation et l'exécution des transactions nécessite de rechercher l'état du compte et la correspondance des commandes sur le meilleur prix. Pour remplir efficacement ces deux fonctions, Stellar-Core conserve deux représentations du grand livre : une représentation externe contenant la bucket list, stockée sous forme de fichiers binaires qui peut être mis à jour efficacement et réhashed progressivement, et une représentation interne dans une base de données SQL (PostgreSQL pour les nœuds de production). Stellar-core crée une archive d'historique en écriture seule contenant chaque ensemble de transactions confirmé et des instantanés de seaux. L'archive permet aux nouveaux nœuds de s'amorcer eux-mêmes en rejoignant le réseau. Il fournit également un enregistrement du grand livre histoire - il doit y avoir un endroit où l'on peut rechercher une transaction d’il y a deux ans. Puisque l'historique est uniquement ajouté et rarement consulté, il peut être conservé dans des endroits bon marché comme Amazon Glacier ou tout service permettant de stocker et récupérer des fichiers plats. Les hôtes du validateur n'hébergent généralement pas leurs propres archives afin d'éviter tout impact sur la validation performance de l’histoire de service. Pour garder le noyau stellaire simple, il n'est pas destiné à être utilisé directement par les applications et n'expose qu'une interface très étroite pour la soumission de nouvelles transactions. Pour soutenir clients, la plupart des validator exécutent un démon appelé horizon (∼18k lignes de Go) qui fournit une interface HTTP pour la soumission et l'apprentissage des transactions. horizon a un accès en lecture seule à base de données SQL de Stellar-Core, minimisant le risque d'horizon noyau stellaire déstabilisant. Des fonctionnalités telles que la recherche du chemin de paiement sont entièrement mises en œuvre à Horizon et peuvent être mises à niveau unilatéralement sans coordination avec les autres validator. Plusieurs démons facultatifs de couche supérieure sont des clients à horizon, complétant l’écosystème. Un serveur pont facilite intégration de Stellar avec les systèmes existants, par exemple, publication de notifications de tous les paiements reçus par un compte spécifique. Un le serveur de conformité fournit des points d'ancrage aux institutions financières pour échanger et approuver les informations sur l’expéditeur et le bénéficiaire sur les paiements, pour le respect des listes de sanctions. Enfin, un serveur de fédération implémente une dénomination lisible par l'homme système de comptabilité. 6 Expérience de déploiement Stellar s'est développé pendant plusieurs années pour devenir un État à nombre d’opérateurs de nœuds complets raisonnablement fiables. Cependant, les configurations des nœuds étaient telles que la vivacité (mais pas sécurité) dépendait de nous, la Stellar Fondation de Développement (SDF); Si SDF avait soudainement disparu, d'autres opérateurs de nœuds il aurait fallu intervenir et nous supprimer manuellement à partir des tranches de quorum pour que le réseau puisse continuer. Alors que nous et beaucoup d’autres souhaitons réduire l’importance systémique du SDF, cet objectif a reçu une priorité croissante après Les chercheurs [58] ont quantifié et rendu public la centralisation du réseau sans différencier les risques pour la sécurité et la sécurité. vivacité. Un certain nombre d'opérateurs ont réagi en ajustant activement la configuration, principalement en augmentant la taille de leur des tranches de quorum dans le but de diluer l’importance du SDF ; ironiquement, cela n'a fait qu'augmenter le risque pour la vitalité. Deux problèmes ont aggravé la situation. Tout d'abord, un populaire L'outil de surveillance tiers Stellar [5] a été systématiquement surestimer la disponibilité de validator en ne vérifiant pas réellement ce noyau stellaire fonctionnait ; cela amène les gens à inclure nœuds peu fiables dans leurs tranches de quorum. Deuxièmement, un bug dans stellar-core signifiait qu'une fois qu'un validator était passé au registre suivant, cela n'a pas suffisamment aidé les nœuds restants à terminer la précédenteun grand livre en cas de perte de messages. En conséquence, le Le réseau a connu 67 minutes d'indisponibilité et a nécessité coordination manuelle par les administrateurs validator pour redémarrer. Pire encore, lors de la tentative de redémarrage du réseau, des reconfigurations précipitées simultanées sur plusieurs nœuds ont entraîné des reconfigurations précipitées simultanées sur plusieurs nœuds. dans une mauvaise configuration collective qui a permis à certains nœuds de diverger, nécessitant un arrêt manuel de ces nœuds et resoumission des transactions acceptées lors de la divergence. Heureusement, cette divergence a été détectée et corrigée rapidement et ne contenait aucune transaction conflictuelle, mais le risque que le réseau ne parvienne pas à bénéficier de l'intersection du quorum : se diviser tout en continuant à accepter des situations potentiellement conflictuelles transactions, simplement en raison d'une mauvaise configuration, a été effectuée très concret par cet incident. L’examen de ces expériences a conduit à deux conclusions majeures et les actions correctives correspondantes.Paiements mondiaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Critique, 100% 51% 51% Élevé, 67 % 51% Moyen, 67 % 51% Faible, 67 % 51% 51% ... ... ... 51% ... 51% Figure 6. Hiérarchie de qualité du validateur. Nœuds de la plus haute qualité nécessitent le seuil le plus élevé de 100 %, tandis que les qualités inférieures sont configurées au seuil de 67 %. Nœuds au sein d'un même l’organisation requiert une majorité simple de 51 %. 6.1 Complexité et fragilité de la configuration Stellar exprime les tranches de quorum sous forme d'ensembles de quorum imbriqués composés de n entrées et d'un seuil k où tout ensemble de k entrées constitue une tranche de quorum. Chacune des n entrées est alors soit une clé publique validator ou, récursivement, un autre ensemble de quorum. Bien que flexibles et compacts, nous avons réalisé un quorum imbriqué ensembles offraient simultanément aux opérateurs de nœuds trop de flexibilité et trop peu de conseils : il était facile d'écrire de manière non sécurisée (ou voire absurdes). Les critères de regroupement nœuds en ensembles, pour organiser les sous-ensembles dans une hiérarchie, et les choix des seuils n’étaient pas tous suffisamment clairs et ont contribué à des échecs opérationnels. Il n'était pas clair s'il fallait traiter un « niveau » dans la hiérarchie imbriquée comme un niveau de confiance, ou une organisation, ou les deux ; de nombreuses configurations sur le terrain mélangé ces concepts, en plus de préciser les dangers ou des seuils dénués de sens. Nous avons donc ajouté un mécanisme de configuration plus simple qui sépare deux aspects des ensembles de quorum imbriqués : le regroupement nœuds regroupés par organisation et étiquetant chaque organisation avec une classification de confiance simple (faible, moyenne, élevée ou critique). Les organisations de niveau élevé et supérieur sont tenues de publier des archives historiques. Le nouveau système synthétise des ensembles de quorum imbriqués dans lesquels chaque organisation est représentée comme un Un seuil de 51 % est défini et les organisations sont regroupées en ensembles avec des seuils de 67% ou 100% (selon la qualité du groupe). Chaque groupe est une entrée unique dans le groupe suivant (de qualité supérieure), comme illustré à la figure 6. Ce modèle simplifié réduit le probabilité de mauvaise configuration, tant en termes de structure des ensembles imbriqués synthétisés et des seuils choisis pour chaque ensemble. 6.2 Détection proactive des erreurs de configuration Deuxièmement, nous avons réalisé qu’il était trop tard pour détecter une mauvaise configuration collective en attendant d’observer ses effets négatifs. Surtout en ce qui concerne les erreurs de configuration qui peuvent diverger - un mode de défaillance plus grave que l'arrêt : le réseau a besoin être capable de détecter immédiatement une mauvaise configuration afin que les opérateurs puissent y remédier avant qu'une divergence ne se produise réellement. Pour répondre à ce besoin, nous avons intégré un mécanisme dans le logiciel validator qui rassemble en permanence l'état de configuration collective de tous les pairs dans la fermeture transitive du nœud et détecte le potentiel de divergence, c'est-à-dire disjoint. quorums – au sein de cette configuration collective. 6.2.1 Vérification de l'intersection du quorum Bien que rassembler des tranches de quorum soit facile, trouver des quorums disjoints parmi elles est co-NP-difficile [62]. Cependant, nous avons adopté un ensemble d'heuristiques algorithmiques et de règles d'élimination de cas proposé par Lachowski [62] qui vérifie les instances typiques du problème plusieurs ordres de grandeur plus rapidement que le coût dans le pire des cas. En pratique, le réseau actuel les fermetures transitives des tranches de quorum sont de l’ordre de 20 à 30 nœuds et, avec les optimisations de Lachowski, vérifient généralement en quelques secondes sur un seul processeur. Si le besoin s'en fait sentir pour améliorer les performances, nous pouvons paralléliser la recherche. 6.2.2 Vérification des configurations à risque Détecter que le réseau admet des quorums disjoints est une étape dans la bonne direction, mais signale le danger trop tard pour une question aussi cruciale. Idéalement, nous souhaitons que les opérateurs de nœuds reçoivent des avertissements lorsque la configuration collective du réseau s’approche simplement d’un état à risque. Nous avons donc étendu le vérificateur d'intersection de quorum pour détecter une condition que nous appelons criticité : lorsque le courant la configuration collective est à une mauvaise configuration de un État qui admet des quorums disjoints. Pour détecter la criticité, le vérificateur remplace à plusieurs reprises la configuration de chaque organisation par une mauvaise configuration simulée dans le pire des cas, puis réexécute le vérificateur d’intersection de quorum interne sur le résultat. Si une telle mauvaise configuration critique existe à une étape à partir de l'état actuel, le logiciel émet un avertissement et signale que l'organisation présente un risque de mauvaise configuration. Ces changements donnent à la communauté des opérateurs deux niveaux de préavis et de conseils pour se prémunir contre les pires formes de mauvaise configuration collective.

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ể.

Évaluation

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

Comprendre l’adéquation de Stellar en tant que paiement global et réseau commercial, nous avons évalué l'état du réseau public et mené des expériences contrôlées sur un laboratoire expérimental privé réseau. Nous nous sommes concentrés sur les questions suivantes : • À quoi ressemble la topologie du réseau de production ? Combien de messages sont diffusés en moyenne, et comment SCP subit-il les délais d'attente ? • Les latences de consensus et de mise à jour du grand livre restent-elles indépendantes du nombre de comptes ?SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. • Comment les latences sont-elles affectées par l'augmentation (a) des transactions par seconde (et, par conséquent, des transactions par seconde) ? grand livre), et (b) le nombre de nœuds validator ? • Quel est le coût de fonctionnement d'un nœud en termes de CPU, mémoire et bande passante réseau ? Les réseaux de paiement ont des taux de transaction faibles par rapport à d’autres types de systèmes distribués. Les principaux blockchain, Bitcoin et Ethereum, confirment jusqu'à 15 transactions/seconde, inférieur à Stellar. De plus, ces systèmes prennent quelques minutes pour une heure pour confirmer une transaction en toute sécurité, car la preuve de travail nécessite d'attendre plusieurs blocs pour être extraits. Le Le réseau SWIFT non blockchain n'a enregistré en moyenne que 420 transactions par seconde lors de sa journée de pointe [14]. Nous avons donc choisi pour comparer nos mesures par rapport à l'objectif de 5 secondes intervalle du grand livre, un objectif plus agressif. Nos résultats montrent que les latences sont confortablement inférieures à cette limite, même avec plusieurs optimisations non implémentées sont toujours en cours. 7.1 Ancres Les actifs les plus négociés en volume incluent la devise (par exemple, 3 USD ancres, 2 CNY), une ancre Bitcoin, un titre adossé à l'immobilier token [92] et une devise intégrée à l'application [8]. Différentes ancres ont des politiques différentes. Par exemple, une ancre en USD, Stronghold, définit auth_reqired et nécessite un processus de connaissance du client (KYC) pour chaque compte qui détient son actifs. Un autre, AnchorUSD, permet à tout le monde de recevoir et d'échanger leur USD (ce qui permet littéralement d'envoyer 0,50 $ au Mexique en 5 secondes avec des frais de 0,000001 $). Cependant, AnchorUSD nécessite un KYC et des frais pour acheter ou échanger leurs USD avec des virements électroniques classiques. Aux Philippines, où les réglementations bancaires sont plus laxistes pour les paiements entrants, coins.ph prend en charge l'encaissement de PHP sur n'importe quel guichet automatique [36]. En plus des token de sécurité susmentionnés et de la devise de l'application, il existe une gamme de token non monétaires allant de obligations commerciales [22] et crédits carbone [85, 96] à plus des actifs ésotériques tels qu'un token collaboratif incitatif reprise de possession de voiture [35]. 7.2 Réseau public Au moment d'écrire ces lignes, il existe 126 nœuds complets actifs, dont 66 participer au consensus en signant les messages de vote. Figure 7 (généré par [5]) visualise le réseau, avec une ligne entre deux nœuds si l’un apparaît dans les tranches de quorum de l’autre et un ligne bleue plus foncée pour montrer la dépendance bidirectionnelle. Au Le centre est un groupe de 17 « validators » de facto gérés par SDF, SatoshiPay, LOBSTR, COINQVEST et Keybase. Il y a quatre mois, avant les événements de la Section 6, il y avait il y avait 15 nœuds d'importance systémique : 3 provenant apparemment organisations de premier niveau et plusieurs singletons aléatoires. Le le graphique semblait également beaucoup moins régulier. Par conséquent, le nouveau mécanisme de configuration et/ou de meilleures décisions des opérateurs semblent contribuer à une topologie de réseau plus saine. Sans d'excellentes ressources financières (et un actionnaire correspondant Figure 7. Carte des tranches de quorum obligations), il aurait été difficile de recruter 5 tier one organisations dès le départ. Cela suggère un quorum les tranches jouent un rôle utile dans l'amorçage du réseau : n'importe qui peut rejoindre avec l'objectif de devenir un acteur important car il n’y a pas de gardiens à l’accord par paires. Il y a actuellement plus de 3,3 millions de comptes dans le grand livre. Fini sur une période récente de 24 heures, Stellar a réalisé en moyenne 4,5 transactions et 15,7 opérations par seconde. En examinant les registres récents, la plupart les transactions semblent avoir une seule opération, alors que toutes les quelques grands livres, nous voyons des transactions contenant de nombreuses opérations qui semblent provenir des teneurs de marché gérant les offres. Le les délais moyens pour parvenir à un consensus et mettre à jour le grand livre étaient 1061 ms et 46 ms, respectivement. Les 99e percentiles étaient 2252 ms et 142 ms (le premier reflétant un délai d'attente d'une seconde dans la sélection des chefs de file des nominations). Notez que les performances de SCP sont principalement indépendant des transactions par seconde, puisque SCP s'entend sur un hash de transactions arbitrairement nombreuses. Les goulots d'étranglement sont plus susceptibles de provenir de la propagation des candidats transactions lors de la nomination, de l’exécution et de la validation transactions et fusion de compartiments. Nous n'avons pas encore eu besoin pour paralléliser le traitement des transactions de Stellar-Core sur plusieurs cœurs de processeur ou lecteurs de disque. Nous avons également évalué le nombre de messages SCP diffusés sur le réseau de production. Dans le cas normal avec un seul leader élu pour désigner une valeur, nous nous attendons à sept logiques messages à diffuser : deux messages pour voter et accepter un nomidéclaration nate, deux messages pour accepter et confirmer une instruction de préparation, deux messages pour accepter et confirmer une instruction de validation et enfin un message d'externalisation (envoyé après avoir validé un nouveau registre sur le disque pour aider les retardataires rattraper). L'implémentation combine confirmer le commit et externaliser les messages comme une optimisation, car c'est il est sûr d’externaliser une valeur après son engagement. Nous analysons ensuite les métriques recueillies sur une production Stellar validator. Fini en 68 heures, 1,3 messages/seconde ont été émis, en moyenne 6 à 7 messages par registre. Nous notons que le total

Paiements internationaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Centile Nombre de délais d'attente Nomination Vote 75% 0 0 99% 1 0 Max. 4 1 Figure 8. Délais d'attente par grand livre sur 68 heures le nombre de messages diffusés par validators est plus grand, car dans En plus des messages de vote fédérés, les nœuds diffusent également toutes les transactions dont ils ont connaissance. La figure 8 montre les délais d'attente rencontrés par une production validator sur une période de 68 heures. Les délais de nomination sont une mesure de l’(in)efficacité de la fonction d’élection des dirigeants, alors que les délais d’attente des votes dépendent fortement du réseau et les retards potentiels des messages. Les délais d'attente sont cohérents avec le nombre de messages émis : six messages dans le dans le meilleur des cas, et au moins sept messages si un tour de nomination supplémentaire est nécessaire. 7.3 Expériences contrôlées Nous avons mené des expériences contrôlées dans des conteneurs emballés sur Instances Amazon EC2 c5d.9xlarge avec 72 Gio de RAM, 900 Go de SSD NVMe et 36 vCPU. Chaque instance était dans la même région EC2 et avait une bande passante fixe de 10 Gbit/s. Nous avons utilisé SQLite comme magasin. (Stellar prend également en charge PostgreSQL, mais cela comporte des tâches asynchrones qui injectent du bruit dans les mesures.) Stellar fournit une requête d'exécution intégrée, generateload, qui permet de générer une charge synthétique sur une cible spécifique transaction/second taux. Bien que Stellar prenne en charge divers fonctionnalités de trading, telles que le carnet d'ordres et le parcours multi-actifs paiements, nous nous sommes concentrés sur les paiements simples. La confirmation des transactions comprend plusieurs étapes, nous enregistré les mesures pour chacun des éléments suivants : • Nomination : délai entre la nomination et la première préparation. • Vote : temps écoulé entre la première préparation et la confirmation d'un scrutin engagé • Mise à jour du grand livre : il est temps d'appliquer la valeur consensuelle • Nombre de transactions : transactions confirmées par grand livre Chacune de nos expériences a été définie par trois paramètres : le nombre d'écritures de compte dans le grand livre, le montant de charge (sous forme de paiements XLM) soumise par seconde, et le nombre de validator. Nous avons configuré chaque validator connaître tous les autres validator (le pire des cas pour SCP), avec des tranches de quorum fixées à une majorité simple de nœuds (afin de maximiser le nombre de quorums différents). Référence Notre expérience de base mesurait Stellar avec 100 000 comptes, quatre validator et la génération de charge taux de 100 transactions/seconde. Nous avons observé 507 transactions par grand livre en moyenne, avec un écart type de 49. (9,7%). Notez qu'aucune transaction n'a été abandonnée ; le léger 105 106 107 0 500 1 000 1 500 2 000 Comptes Latence [ms] Mise à jour du grand livre Vote Nomination Figure 9. Latence à mesure que le nombre de comptes augmente la variance est due aux limitations de planification du générateur de charge. Nous avons observé que le nombre de transactions par grand livre était cohérent avec notre taux de génération de charge, compte tenu du grand livre fermeture toutes les 5 secondes. Nomination, vote et grand livre la mise à jour a montré des latences moyennes de 82,53 ms, 95,96 ms et 174,08 ms, respectivement. Nous avons observé que la latence de nomination Le 99e centile est constamment inférieur à 61 ms, avec des des pics d'environ 1 seconde, correspondant à la première étape dans la fonction de timeout de sélection du leader. Compte tenu des performances de base, nous avons examiné les effets de faire varier chacun des paramètres de configuration du test. Comptes Les données de la figure 9 suggèrent que Stellar évolue ainsi que le nombre de comptes augmente. Génération de test les comptes sont devenus un processus long, à mesure que la création du compartiment et la fusion nous a empêché de simplement remplir la base de données avec des comptes directement via SQL. C'est pourquoi nous avons mené notre expériences pour un maximum de 50 000 000 de comptes. Alors qu'il y a impact minimal sur les latences de consensus et de mise à jour du grand livre, nous constatons que l'augmentation des comptes crée une surcharge de fusionner des buckets, qui deviennent plus grands. Taux de transactions Le taux de transaction a un impact sur le montant de multidiffusion du trafic entre validators, le nombre de transactions incluses dans chaque grand livre et la taille du niveau supérieur seaux. Comprendre les effets de l’augmentation des transactions charge, nous avons mené une expérience avec 100 000 comptes et 4 validator. La figure 10 montre une croissance lente de la latence du consensus, tandis que la majorité du temps était consacrée à la mise à jour du grand livre. Il n’est pas surprenant qu’à mesure que la taille de l’ensemble des transactions augmente, prend plus de temps pour le valider dans la base de données. Nous notons également que la latence de mise à jour du grand livre dépend fortement de la mise en œuvre, et est affecté par le choix de la base de données. Nœuds de validation Pour voir comment augmenter le nombre de validator tieronea un impact sur les performances, nous avons mené des expériences avec 100 000 comptes, 100 transactions/seconde et un nombre variable de validator de 4 à 43. Tous les validator sont apparus dans toutes les tranches de quorum de validator ; des tranches de quorum plus petites ont un moindre impact sur les performances.SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada Lokhava et coll. 100 150 200 250 300 350 0 500 1 000 1 500 2 000 Charger [transactions/seconde] Latence [ms] Mise à jour du grand livre Vote Nomination Figure 10. Latence à mesure que la charge de transaction augmente 10 20 30 40 0 500 1 000 1 500 2 000 Validateurs Latence [ms] Mise à jour du grand livre Vote Nomination Figure 11. Latence à mesure que le nombre de nœuds augmente Modification du nombre de nœuds de validation sur le réseau impacte le nombre de messages SCP échangés ainsi que le nombre de valeurs potentielles lors de la nomination. Figure 11 montre que le temps de nomination augmente à un rythme relativement faible. Même si les données suggèrent que le scrutin constitue le goulot d'étranglement, nous Je pense que de nombreux problèmes de mise à l'échelle peuvent être résolus en améliorant Réseau superposé de Stellar pour optimiser le trafic réseau. Comme attendu, la latence de mise à jour du grand livre est restée indépendante de le nombre de nœuds. Taux de clôture Enfin, nous voulions mesurer les performances de bout en bout de Stellar en mesurant la fréquence à laquelle les grands livres sont confirmés et si Stellar atteint son objectif de 5 secondes sans abandonnant toute transaction. Nous avons observé une clôture moyenne du grand livre des temps de 5,03 s, 5,10 s et 5,15 s à mesure que nous augmentions le compte entrées, taux de transaction et nombre de nœuds, respectivement. Les résultats suggèrent que Stellar peut clôturer systématiquement les grands livres sous forte charge. 7.4 Exécution d'un validator L'une des caractéristiques importantes de Stellar est le faible coût de exécuter un validator, car les ancres devraient exécuter (ou contracter avec) validators pour faire respecter le caractère définitif. SDF exécute 3 validator de production, tous sur des instances AWS c5.large, qui ont deux cœurs, 4 Go de RAM et processeur Intel(R) Xeon(R) Platinum 8124M @ Processeurs 3,00 GHz. Inspecter l'utilisation des ressources sur un de ces machines, nous avons observé le processus Stellar utilisant environ 7% du CPU et 300 Mo de mémoire. En termes de trafic réseau, avec 28 connexions aux pairs et une taille de quorum sur 34, les débits entrants et sortants étaient de 2,78 Mbit/s et 2,56 Mbit/s, respectivement. Matériel requis pour exécuter un tel le processus est peu coûteux. Dans notre cas, le coût est de 0,054$/heure soit environ 40$/mois. 7.5 Travaux futurs Ces expériences suggèrent que Stellar peut facilement faire évoluer 1 à 2 commandes d’ampleur au-delà de l’utilisation actuelle du réseau. Parce que le les exigences de performance ont été si modestes jusqu'à présent, Stellar laisse place à de nombreuses optimisations simples en utilisant techniques bien connues. Par exemple, les transactions et SCP les messages sont diffusés par validators à l'aide d'une inondation naïve protocole, mais devrait idéalement utiliser un protocole plus efficace et plus structuré. Multidiffusion peer-to-peer [30]. De plus, lourd en base de données Le temps de mise à jour du grand livre peut être amélioré grâce à des techniques standard de traitement par lots et de prélecture.

Sự đánh giá

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

Để 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.

Conclusion

Les paiements internationaux sont chers et prennent des jours. Fonds la garde passe par plusieurs institutions financières, notamment des banques correspondantes et des services de transfert d'argent. Parce que chaque saut doit être pleinement fiable, il est difficile pour les nouveaux entrants pour gagner des parts de marché et être compétitifs. Stellar affiche comment envoyer de l'argent partout dans le monde à moindre coût en quelques secondes. Le L'innovation clé est un nouveau protocole d'accord byzantin à adhésion ouverte, SCP, qui exploite la structure peer-to-peer du réseau financier pour parvenir à un consensus mondial dans le cadre nouvelle hypothèse sur Internet. SCP permet à Stellar de s'engager atomiquement transactions irréversibles entre participants arbitraires qui ne se connaissent pas et ne se font pas confiance. Cela garantit à son tour l’accès des nouveaux entrants aux mêmes marchés que ceux établis. joueurs, permet d'obtenir en toute sécurité le meilleur échange disponible taux même de la part de teneurs de marché peu fiables, et de façon spectaculaire réduit la latence de paiement. Remerciements Stellar ne serait pas là où il est aujourd'hui sans le début le leadership de Joyce Kim ou les formidables contributions de Scott Fleckenstein et Bartek Nowotarski dans la construction et maintenir Horizon, le SDK Stellar et d'autres éléments clés de l’écosystème Stellar. Nous remercions également Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, les évaluateurs anonymes et notre berger Justine Sherry pour ses commentaires utiles sur versions antérieures. Avis de non-responsabilité La contribution du professeur Mazières à cette publication était à titre de consultant rémunéré et ne faisait pas partie de son mandat. Devoirs ou responsabilités de l'Université de Stanford.

Paiements mondiaux rapides et sécurisés avec Stellar SOSP '19, du 27 au 30 octobre 2019, Huntsville, ON, Canada

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