Le protocole de consensus Stellar
Abstrak
Pembayaran internasional lambat dan mahal, sebagian karena jalur pembayaran multi-hop yang heterogen sistem perbankan. Stellar adalah jaringan pembayaran global baru yang dapat langsung mentransfer uang digital ke mana pun di dunia dunia dalam hitungan detik. Inovasi kuncinya adalah transaksi yang aman mekanisme di perantara yang tidak tepercaya, menggunakan yang baru Protokol perjanjian Bizantium disebut SCP. Dengan SCP, masing-masing institusi menentukan institusi lain yang akan tetap tinggal setuju; melalui keterhubungan global sistem keuangan, seluruh jaringan kemudian menyetujui atom transaksi yang mencakup institusi sewenang-wenang, tanpa solvabilitas atau risiko nilai tukar dari penerbit aset perantara atau pembuat pasar. Kami menyajikan model, protokol, dan verifikasi formal; jelaskan jaringan pembayaran Stellar; dan terakhir mengevaluasi Stellar secara empiris melalui tolok ukur dan pengalaman kami dengan beberapa tahun penggunaan produksi. Konsep CCS • Keamanan dan privasi → Terdistribusi keamanan sistem; • Organisasi sistem komputer → Arsitektur peer-to-peer; • Sistem informasi → Transfer dana elektronik. Kata kunci blockchain, BFT, kuorum, pembayaran Format Referensi ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pembayaran global yang cepat dan aman dengan Stellar. Di SOSP '19: Simposium Prinsip Sistem Operasi, 27-30 Oktober, 2019, Huntsville, ON, Kanada. ACM, New York, NY, AS, 17 halaman. https://doi.org/10.1145/3341301.3359636
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
Perkenalan
Pembayaran internasional terkenal lambat dan mahal [32]. Pertimbangkan ketidakpraktisan pengiriman $0,50 dari AS ke * Galois, Inc. †UCLA Izin untuk membuat salinan digital atau cetak dari seluruh atau sebagian karya ini penggunaan pribadi atau ruang kelas diberikan tanpa biaya asalkan salinannya tidak dibuat atau didistribusikan untuk keuntungan atau keuntungan komersial dan salinannya mempunyai hakikat pemberitahuan ini dan kutipan lengkap di halaman pertama. Hak cipta untuk komponen karya ini dimiliki oleh orang lain selain ACM harus dihormati. Mengabstraksi dengan kredit diperbolehkan. Untuk menyalin sebaliknya, atau menerbitkan ulang, untuk memposting di server atau ke mendistribusikan ulang ke daftar, memerlukan izin khusus sebelumnya dan/atau biaya. Permintaan izin dari [email protected]. SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada © 2019 Asosiasi Mesin Komputasi. ACM ISBN 978-1-4503-6873-5/19/10...$15.00 https://doi.org/10.1145/3341301.3359636 Meksiko, dua negara tetangga. Pengguna akhir membayar hampir $9 untuk rata-rata transfer tersebut [32], dan perjanjian bilateral yang ditengahi oleh bank sentral negara-negara tersebut hanya dapat mengurangi biaya bank yang mendasarinya menjadi $0,67 per item [2]. Selain biaya, latensi pembayaran internasional umumnya dihitung dalam hitungan hari, sehingga tidak mungkin mendapatkan uang ke luar negeri dengan cepat keadaan darurat. Di negara-negara yang sistem perbankannya tidak memilikinya bekerja atau tidak melayani semua warga negara, atau ketika biaya tidak dapat ditoleransi, masyarakat terpaksa mengirimkan pembayaran dengan bus [38], dengan perahu [19], dan kadang-kadang sekarang Bitcoin [55], semuanya menimbulkan risiko, latensi, atau ketidaknyamanan. Meskipun akan selalu ada biaya kepatuhan, bukti menunjukkan bahwa sejumlah besar kerugian disebabkan oleh kurangnya persaingan [21], yang diperburuk oleh teknologi yang tidak efisien. Dimana orang dapat berinovasi, harga dan latensi turun. Misalnya, biaya pengiriman uang dari rekening bank pada Q2 2019 rata-rata sebesar 6,99%, sedangkan uang seluler hanya 4,88% [13]. Jaringan pembayaran global terbuka yang menarik inovasi dan persaingan dari entitas non-bank dapat menurun biaya dan latensi di semua lapisan, termasuk kepatuhan [83]. Makalah ini menyajikan Stellar, pembayaran berbasis blockchain jaringan yang dirancang khusus untuk memfasilitasi inovasi dan persaingan dalam pembayaran internasional. Stellar adalah yang pertama sistem untuk memenuhi ketiga tujuan berikut (di bawah a “Hipotesis Internet” yang baru namun valid secara empiris): 1. Keanggotaan terbuka – Siapapun dapat menerbitkan mata uang yang didukung tokens digital yang dapat dipertukarkan antar pengguna. 2. Finalitas yang diberlakukan oleh penerbit – Penerbit token dapat mencegah transaksi di token agar tidak dibalik atau dibatalkan. 3. Atomisitas lintas penerbit – Pengguna dapat bertukar secara atom dan perdagangkan token dari beberapa penerbit. Mencapai dua yang pertama itu mudah. Perusahaan mana pun dapat secara sepihak menawarkan produk seperti Paypal, Venmo, WeChat Bayar, atau Alipay dan pastikan finalitas pembayaran di mata uang virtual yang mereka buat. Sayangnya, bertransaksi secara atomik antar mata uang ini tidak mungkin dilakukan. Faktanya, meskipun Paypal telah mengakuisisi perusahaan induk Venmo pada tahun 2013, pengguna akhir masih tidak dapat mengirim Venmo dolar ke pengguna Paypal [78]. Baru belakangan ini pedagang bisa bahkan menerima keduanya dengan satu integrasi. Tujuan 2 dan 3 dapat dicapai dalam sistem tertutup. Secara khusus, sejumlah negara memiliki pembayaran domestik yang efisien jaringan, biasanya diawasi oleh otoritas pengatur yang dipercaya secara universal. Namun keanggotaannya terbatas dan tertutup kumpulan bank yang disewa dan jaringannya terbatas pada jangkauan otoritas pengatur suatu negara.SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Sasaran 1 dan 3 telah tercapai dalam blockchains, terutama dalam bentuk ERC20 tokens pada Ethereum [3]. Ide utama dari blockchain ini adalah untuk menciptakan mata uang kripto baru yang dapat digunakan untuk memberikan penghargaan kepada orang-orang yang telah menyelesaikan pekerjaan mereka. transaksi sulit untuk dikembalikan. Sayangnya, ini berarti penerbit token tidak mengontrol penyelesaian transaksi. Jika perangkat lunak kesalahan menyebabkan riwayat transaksi diatur ulang [26, 73], atau ketika keuntungan yang diperoleh orang yang menipu melebihi biayanya mengatur ulang sejarah [74, 97], penerbit mungkin bertanggung jawab atas tokens mereka telah menebusnya dengan uang dunia nyata. Stellar blockchain memiliki dua sifat yang membedakan. Pertama, ini secara asli mendukung pasar yang efisien antara tokens dari emiten yang berbeda. Secara khusus, siapa pun dapat menerbitkan token, blockchain menyediakan buku pesanan bawaan untuk perdagangan antara pasangan token mana pun, dan pengguna dapat mengeluarkan pembayaran jalur yang secara atom memperdagangkan beberapa pasangan mata uang sementara menjamin harga batas ujung ke ujung. Kedua, Stellar memperkenalkan perjanjian Bizantium baru protokol, SCP (Stellar Protokol Konsensus), yang melaluinya token penerbit menunjuk server validator tertentu untuk diterapkan finalitas transaksi. Selama tidak ada seorang pun yang mengkompromikan validator penerbit (dan tanda tangan digital yang mendasarinya serta kriptografi hashes tetap aman), penerbit tahu persis transaksi mana yang telah terjadi dan menghindari risiko kerugian dari blockchain sejarah reorganisasi. Ide utama SCP adalah agar sebagian besar penerbit aset mendapatkan keuntungan darinya pasar likuid dan ingin memfasilitasi transaksi atom dengan aset lainnya. Oleh karena itu, validator administrator mengonfigurasi server mereka setuju dengan validator lainnya sejarah semua transaksi pada semua aset. validator v1 bisa dikonfigurasi untuk menyetujui v2, atau v2 dapat dikonfigurasi untuk menyetujui dengan v1, atau keduanya dapat dikonfigurasi agar sesuai satu sama lain; dalam semua kasus, tidak ada yang akan berkomitmen pada riwayat transaksi sampai ia tahu pihak lain tidak dapat berkomitmen pada sejarah yang berbeda. Secara transitivitas, jika v1 tidak bisa tidak setuju dengan v2 dan v2 tidak bisa tidak setuju dengan v3 (atau sebaliknya), v1 tidak bisa tidak setuju dengan v3, apakah v3 mewakili aset v1 atau tidak dari. Berdasarkan hipotesis bahwa hubungan perjanjian ini menghubungkan seluruh jaringan secara transitif, jaminan SCP perjanjian global, menjadikannya perjanjian Bizantium global protokol dengan keanggotaan terbuka. Kami menyebut asumsi keterhubungan baru ini sebagai hipotesis Internet, dan mencatatnya sebagai hipotesis memegang kedua "Internet" (yang semua orang memahaminya berarti jaringan IP terbesar yang terhubung secara transitif) dan pembayaran internasional lama (yang bersifat hop-by-hop non-atom, namun memanfaatkan koneksi global yang bersifat transitif jaringan lembaga keuangan). Stellar telah digunakan produksi sejak September 2015. Agar panjang blockchain dapat dikelola, sistem berjalan SCP dengan interval 5 detik—cepat dengan standar blockchain, tapi jauh lebih lambat dibandingkan penerapan perjanjian Bizantium pada umumnya. Meskipun penggunaan utamanya adalah pembayaran, Stellar juga demikian terbukti menarik bagi token non-uang yang menguntungkan dari pasar sekunder terdekat (lihat Bagian 7.1). Bagian selanjutnya membahas pekerjaan terkait. Bagian 3 menyajikan SCP. Bagian 4 menjelaskan verifikasi formal kami terhadap SCP. Bagian 5 menjelaskan lapisan pembayaran Stellar. Bagian 6 berhubungan beberapa pengalaman penerapan dan pembelajaran kami. Bagian 7 mengevaluasi sistem. Bagian 8 menyimpulkan.
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.
Stellar protokol konsensus
Protokol konsensus Stellar (SCP) berbasis kuorum Protokol perjanjian Bizantium dengan keanggotaan terbuka. Kuorum muncul dari keputusan konfigurasi lokal gabungan dari masing-masing node. Namun, node hanya mengenali kuorum di mana mereka menjadi anggotanya, dan hanya setelahnya mempelajari konfigurasi lokal dari semua anggota kuorum lainnya. Salah satu manfaat dari pendekatan ini adalah SCP secara inheren mentolerir pandangan heterogen tentang node yang ada. Oleh karena itu, node dapat bergabung dan keluar secara sepihak tanpa memerlukan a Protokol “lihat perubahan” untuk mengoordinasikan keanggotaan. 3.1 Perjanjian Federasi Bizantium Masalah perjanjian tradisional Bizantium terdiri dari a sistem tertutup dari N node, beberapa di antaranya rusak dan mungkin berperilaku sewenang-wenang. Node menerima nilai masukan dan pertukaran pesan untuk memutuskan nilai output di antara input. Protokol perjanjian Bizantium aman ketika tidak ada dua node yang berperilaku baik menghasilkan keputusan yang berbeda dan unik keputusan merupakan masukan yang valid (untuk beberapa definisi valid yang disepakatiSOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. sebelumnya). Sebuah protokol aktif jika menjamin hal itu setiap node yang jujur pada akhirnya menghasilkan keputusan. Biasanya, protokol mengasumsikan N = 3f + 1 untuk beberapa bilangan bulat f > 0, maka menjamin keamanan dan beberapa bentuk keaktifan selama paling banyak f node rusak. Pada tahap tertentu dalam hal ini protokol, node memberikan suara pada nilai yang diusulkan dan proposal menerima 2f + 1 suara, yang disebut kuorum suara, menjadi keputusannya. Dengan N = 3f + 1 node, dua kuorum mana pun ukuran 2f + 1 tumpang tindih setidaknya di f + 1 node; bahkan jika f dari ini node yang tumpang tindih salah, setidaknya kedua kuorum berbagi satu node yang tidak salah, mencegah keputusan yang kontradiktif. Namun, pendekatan ini hanya berhasil jika semua node menyetujuinya apa yang dimaksud dengan kuorum, yang tidak mungkin dilakukan di SCP di mana dua node bahkan mungkin tidak mengetahui keberadaan satu sama lain. Dengan SCP, setiap node v secara sepihak mendeklarasikan kumpulan node, disebut irisan kuorumnya, sehingga (a) v percaya bahwa jika semua anggota irisan setuju tentang keadaan sistem, lalu mereka benar, dan (b) v percaya bahwa setidaknya salah satu bagiannya akan tersedia untuk memberikan informasi yang tepat waktu tentang keadaan sistem. Kami menyebut sistem yang dihasilkan, terdiri node dan irisannya, Perjanjian Federasi Bizantium (FBA) sistem. Seperti yang akan kita lihat selanjutnya, sistem kuorum muncul dari irisan node. Secara informal, potongan node FBA mengungkapkan dengan siapa simpul memerlukan persetujuan. Misalnya, sebuah node mungkin memerlukan persetujuan dengan 4 organisasi tertentu, masing-masing menjalankan 3 node; untuk mengakomodasi downtime, ia mungkin mengatur irisannya menjadi semua set terdiri dari 2 node dari masing-masing organisasi. Jika ini “membutuhkan perjanjian dengan” relasi secara transitif menghubungkan dua node mana pun, kita mendapatkan kesepakatan global. Kalau tidak, kita bisa mendapatkan perbedaan, tetapi hanya antar organisasi yang keduanya tidak memerlukannya kesepakatan dengan yang lain. Mengingat topologi saat ini sistem keuangan, kami berhipotesis bahwa konvergensi yang meluas akan terus menghasilkan sejarah buku besar yang disebut orang “jaringan Stellar,” sama seperti kita berbicara tentang Internet. Kuorum muncul dari irisan sebagai berikut. Setiap node menentukan irisan kuorumnya di setiap pesan yang dikirimkannya. Biarkan S menjadi kumpulan node asal kumpulan pesan. SEBUAH node menganggap kumpulan pesan telah mencapai kuorum ambang batas ketika setiap anggota S memiliki irisan yang termasuk dalam S. Secara konstruksi, himpunan S, jika bulat, memenuhi persyaratan kesepakatan masing-masing anggotanya. Rekan yang salah mungkin mengiklankan potongan yang dibuat untuk mengubah apa node yang berperilaku baik mempertimbangkan kuorum. Demi analisis protokol, kami mendefinisikan kuorum di FBA sebagai tidak kosong kumpulan S node yang mencakup setidaknya satu irisan kuorum setiap anggota yang tidak salah. Abstraksi ini masuk akal, seperti kumpulan lainnya pesan yang dimaksudkan untuk mewakili kuorum dengan suara bulat sebenarnya demikian (walaupun berisi pesan dari node yang salah), dan tepatnya jika S hanya berisi node yang berperilaku baik. Di Pada bagian ini, kami juga berasumsi bahwa irisan node tidak berubah. Namun demikian, hasil kami ditransfer ke kasus yang berubah-ubah karena sistem di mana perubahan irisan tidak kalah amannya sistem irisan tetap di mana irisan simpul terdiri dari semua irisan yang pernah digunakan dalam kasus perubahan irisan (lihat Teorema 13 di [68]). Seperti yang dijelaskan di Bagian 4, keaktifan bergantung pada node yang berperilaku baik pada akhirnya menghapus node yang tidak dapat diandalkan dari irisan mereka. Karena node yang berbeda memiliki persyaratan perjanjian yang berbeda, FBA menghalangi definisi keselamatan secara global. Kami bilang node yang tidak rusak v1 dan v2 saling terkait ketika masing-masing kuorum v1 memotong setiap kuorum v2 di setidaknya satu simpul yang tidak rusak. Protokol FBA dapat memastikan kesepakatan hanya antara node yang saling terkait; karena SCP melakukannya, itu salahnya toleransi terhadap keselamatan optimal. Hipotesis Internet, yang mendasari desain Stellar, menyatakan bahwa node tersebut dipedulikan orang tentang akan terjalin. Kita mengatakan himpunan node I utuh jika I merupakan kuorum yang tidak salah secara seragam sehingga setiap dua anggota I saling terkait meskipun setiap node di luar I salah. Secara intuitif, maka, aku harus tetap kebal terhadap tindakan yang tidak utuh node. SCP menjamin keaktifan non-pemblokiran [93] dan keamanan ke set utuh, meskipun node itu sendiri tidak memerlukannya untuk mengetahui (dan mungkin tidak dapat mengetahui) himpunan mana yang utuh. Selanjutnya gabungan dua himpunan utuh yang berpotongan adalah satu set utuh. Oleh karena itu, himpunan utuh mendefinisikan partisi dari node berperilaku baik, di mana setiap partisi aman dan aktif (dalam kondisi tertentu), tetapi partisi yang berbeda mungkin menghasilkan output keputusan yang berbeda. 3.1.1 Pertimbangan Keamanan vs. Keaktifan di FBA Dengan pengecualian terbatas [64], sebagian besar protokol perjanjian Bizantium tertutup disesuaikan dengan titik keseimbangan di mana keamanan dan keaktifan memiliki toleransi kesalahan yang sama. Di FBA, itu berarti konfigurasi di mana, terlepas dari kegagalannya, semuanya set yang saling terkait juga utuh. Mengingat FBA yang menentukan kuorum dengan cara yang terdesentralisasi, kecil kemungkinannya bahwa pilihan masing-masing kelompok akan menghasilkan keseimbangan ini. Apalagi di setidaknya di Stellar, keseimbangan tidak diinginkan: konsekuensinya kegagalan keamanan (yaitu uang digital yang dibelanjakan ganda). jauh lebih buruk dibandingkan dengan kegagalan keaktifan (yaitu penundaan dalam pembayaran yang memakan waktu beberapa hari sebelum Stellar). Orang-orang oleh karena itu sebaiknya dan lakukan pemilihan kuorum yang besar sedemikian rupa simpul-simpulnya cenderung tetap saling terkait dibandingkan utuh. Lebih jauh lagi, lebih mudah untuk pulih kegagalan keaktifan yang khas dalam sistem FBA dibandingkan sistem tertutup tradisional. Dalam sistem tertutup, semua pesan harus ada ditafsirkan sehubungan dengan kumpulan kuorum yang sama. Oleh karena itu, menambah dan menghapus node untuk pulih dari kegagalan diperlukan mencapai konsensus mengenai peristiwa konfigurasi ulang, yang sulit dilakukan ketika konsensus tidak lagi berlaku. Sebaliknya, dengan FBA, node mana pun dapat menyesuaikan irisan kuorumnya secara sepihak waktu. Menanggapi pemadaman pada sistem yang penting organisasi, administrator node dapat menyesuaikan irisannya mengatasi masalah, seperti mengoordinasikan tanggapan terhadap bencana BGP [63] (meskipun tanpa kendala perutean melalui tautan jaringan fisik).
Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada 3.1.2 Teorema kaskade SCP mengikuti templat model putaran dasar [42]; node maju melalui serangkaian surat suara bernomor, masing-masing mencoba tiga tugas: (1) mengidentifikasi nilai “aman” yang tidak bertentangan dengan keputusan apa pun dalam pemungutan suara sebelumnya (sering disebut menyiapkan surat suara), (2) menyepakati nilai aman, dan (3) mendeteksi bahwa kesepakatan berhasil. Namun, FBA terbuka keanggotaan menghalangi beberapa teknik umum, sehingga berhasil tidak mungkin untuk "memindahkan" protokol tertutup tradisional ke FBA model hanya dengan mengubah definisi kuorum. Salah satu teknik yang digunakan oleh banyak protokol adalah rotasi melalui node pemimpin dengan cara round-robin setelah batas waktu habis. Dalam sistem tertutup, pemilihan pemimpin dilakukan secara round-robin yang pada akhirnya seorang pemimpin yang jujur dan unik akhirnya mengoordinasikan kesepakatan mengenai satu nilai. Sayangnya, sistem round-robin tidak dapat bekerja di sistem FBA dengan keanggotaan yang tidak diketahui. Teknik umum lainnya yang gagal dengan FBA adalah mengasumsikan kuorum tertentu dapat meyakinkan semua node. Misalnya, jika semua orang mengakui node 2f + 1 mana pun sebagai kuorum, maka Tanda tangan 2f + 1 cukup untuk membuktikan status protokol ke semua node. Demikian pula, jika sebuah node menerima kuorum pesan yang identik melalui siaran yang andal [24], node dapat berasumsi bahwa semua node yang tidak salah juga akan memenuhi kuorum. Di FBA, sebaliknya, a kuorum tidak berarti apa-apa bagi node di luar kuorum. Terakhir, sistem non-federasi sering kali menggunakan sistem “terbelakang” alasan tentang keamanan: jika f + 1 node rusak, semua aman jaminan hilang. Oleh karena itu, jika node v mendengar f + 1 node semuanya nyatakan beberapa fakta F, v dapat berasumsi setidaknya ada satu fakta yang memberitahukan kebenaran (dan karenanya F benar) tanpa kehilangan keamanan. Seperti itu penalaran gagal di FBA karena keselamatan adalah milik pasangan node, sehingga node yang kehilangan keamanannya terhadap beberapa peer dapat melakukannya selalu kehilangan keamanan ke lebih banyak node dengan mengasumsikan fakta buruk. Namun, FBA dapat berpikir mundur tentang keaktifan. Definisikan himpunan pemblokiran v sebagai himpunan node yang berpotongan setiap potongan v. Jika himpunan pemblokiran v B benar-benar rusak, B dapat menolak simpul v kuorum dan membuatnya kehilangan keaktifan. Oleh karena itu, jika B dengan suara bulat menyatakan fakta F, maka v mengetahui bahwa salah satu F adalah benar atau v tidak utuh. Namun, v masih perlu melihat selengkapnya kuorum untuk mengetahui bahwa node yang saling terkait tidak akan bertentangan dengan F, yang mengarah ke putaran terakhir komunikasi di SCP dan protokol FBA lainnya [47] yang tidak diperlukan secara analog protokol keanggotaan tertutup. Hasilnya adalah yang kita miliki tiga kemungkinan tingkat keyakinan terhadap fakta-fakta potensial: tidak dapat ditentukan, aman untuk diasumsikan di antara simpul-simpul yang utuh (yang akan kita lakukan istilah fakta yang diterima), dan aman untuk diasumsikan di antara saling terkait node (yang kita sebut fakta yang dikonfirmasi). Node v dapat secara efisien menentukan apakah suatu himpunan B melakukan vblocking dengan memeriksa apakah B memotong semua irisannya. Menariknya, jika node selalu mengumumkan pernyataan mereka menerima dan kuorum penuh menerima suatu pernyataan, hal ini memicu proses berjenjang dimana pernyataan disebarkan ke seluruh set utuh. Kami menyebut fakta kunci yang mendasari penyebaran ini teorema cascade, yang menyatakan sebagai berikut: Jika saya adalah an himpunan utuh, Q adalah kuorum anggota I, dan S adalah kuorum mana pun superset dari Q, maka S ⊇I atau ada anggota v ∈I sehingga v < S dan I ∩S merupakan pemblokiran v. Secara intuitif, apakah ini tidak demikian, komplemen dari S akan memenuhi kuorum yang memotong I tetapi tidak Q, melanggar kuorum persimpangan. Perhatikan bahwa jika kita memulai dengan S = Q dan berulang kali memperluas S menjadi menyertakan semua node yang diblokirnya, kami memperoleh efek berjenjang hingga, akhirnya, S mencakup seluruh I. 3.2 Deskripsi protokol SCP adalah protokol konsensus yang sebagian tersinkronisasi [42] yang terdiri dari serangkaian upaya untuk mencapai konsensus yang disebut surat suara. Surat suara menerapkan batas waktu yang durasinya semakin lama. SEBUAH protokol sinkronisasi surat suara memastikan bahwa node tetap aktif surat suara yang sama untuk jangka waktu yang bertambah hingga pemungutan suara secara efektif sinkron. Penghentian tidak dijamin sampai surat suara sinkron, tetapi dua surat suara sinkron yang dilakukan oleh anggota yang salah dari irisan node yang berperilaku baik tidak ikut campur saja sudah cukup untuk menghentikan SCP. Protokol pemungutan suara menentukan tindakan yang diambil pada masing-masing tindakan pemungutan suara. Pemungutan suara dimulai dengan fase persiapan, di mana node cobalah untuk menentukan nilai yang akan diusulkan yang tidak bertentangan keputusan apa pun sebelumnya. Kemudian, dalam fase penerapan, node mencoba untuk membuat keputusan tentang nilai yang disiapkan. Pemungutan suara menggunakan sub-protokol perjanjian yang disebut pemungutan suara gabungan, in node mana yang memberikan suara pada pernyataan abstrak yang pada akhirnya mungkin terkonfirmasi atau terhenti. Beberapa pernyataan mungkin dianggap bertentangan, dan aman jaminan pemungutan suara gabungan adalah tidak ada dua anggota dari suatu himpunan yang saling terkait menegaskan pernyataan-pernyataan yang kontradiktif. Konfirmasi suatu pernyataan tidak dijamin kecuali utuh himpunan yang semua anggotanya memberikan suara yang sama. Namun, jika a anggota himpunan utuh mengkonfirmasi suatu pernyataan, terfederasi pemungutan suara menjamin bahwa semua anggota kelompok utuh pada akhirnya mengkonfirmasi pernyataan itu. Oleh karena itu, mengambil langkah-langkah yang tidak dapat diubah sebagai tanggapan terhadap pernyataan yang mengkonfirmasikan mempertahankan keaktifan node utuh. Node awalnya mengusulkan nilai yang diperoleh dari nominasi protokol yang meningkatkan peluang semua anggota utuh himpunan mengusulkan nilai yang sama, dan akhirnya konvergen (meskipun tidak ada cara untuk menentukan konvergensi selesai). Nominasi menggabungkan pemungutan suara gabungan dengan pemilihan pemimpin. Karena round-robin tidak mungkin dilakukan di FBA, nominasi digunakan skema pemilihan pemimpin yang probabilistik. Teorema kaskade memainkan peran penting dalam pemungutan suara sinkronisasi dan menghindari negara-negara yang diblokir dari mana penghentian tidak mungkin lagi dilakukan. 3.2.1 Pemungutan suara Node SCP melanjutkan melalui serangkaian pemungutan suara bernomor, menggunakan pemungutan suara gabungan untuk menyetujui pernyataan tentang hal tersebut nilai-nilai ditentukan atau tidak ditentukan dalam surat suara yang mana. Jika asinkron atau perilaku salah menghalangi tercapainya keputusan dalam pemungutan suara n, waktu node habis dan coba lagi dalam pemungutan suara n + 1.
SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Ingat, pemungutan suara gabungan mungkin tidak akan berakhir. Oleh karena itu, beberapa pernyataan tentang surat suara bisa macet secara permanen keadaan tak tentu di mana node tidak pernah dapat menentukan apakah mereka masih dalam proses atau macet. Karena node tidak bisa dikesampingkan kemungkinan pernyataan yang tidak pasti kemudian terbukti benar, mereka tidak boleh melakukan pemungutan suara gabungan untuk pernyataan baru bertentangan dengan yang tidak pasti. Di setiap n pemungutan suara, node menggunakan pemungutan suara gabungan pada dua jenis pernyataan: • siapkan ⟨n,x⟩– menyatakan tidak ada nilai selain x telah atau akan pernah diputuskan dalam pemungutan suara apa pun ≤n. • melakukan ⟨n,x⟩– menyatakan x ditentukan dalam pemungutan suara n. Yang penting, perhatikan bahwa persiapkan ⟨n,x⟩kontradiksi dilakukan ⟨n′,x ′⟩ketika n ≥n′ dan x , x ′. Sebuah node memulai pemungutan suara n dengan mencoba pemungutan suara gabungan pada a persiapan pernyataan ⟨n,x⟩. Jika ada pernyataan persiapan sebelumnya berhasil dikonfirmasi melalui pemungutan suara gabungan, itu node memilih x dari persiapan yang dikonfirmasi dari pemungutan suara tertinggi. Jika tidak, node akan menetapkan x ke output dari protokol nominasi dijelaskan dalam sub-bagian berikutnya. Jika dan hanya jika sebuah node berhasil mengonfirmasi persiapan ⟨n,x⟩ dalam pemungutan suara n, ia mencoba melakukan pemungutan suara gabungan pada komit ⟨n,x⟩. Jika jika berhasil, berarti SCP telah memutuskan, sehingga node mengeluarkan output nilai dari pernyataan komit yang dikonfirmasi. Pertimbangkan himpunan S yang saling terkait. Karena paling banyak satu nilai dapat dipastikan disiapkan oleh anggota S dalam pemungutan suara tertentu, tidak ada dua nilai berbeda yang dapat dikonfirmasi dilakukan olehnya anggota S dalam pemungutan suara tertentu. Apalagi jika melakukan ⟨n,x⟩ sudah dikonfirmasi, lalu siapkan ⟨n,x⟩telah dikonfirmasi juga; sejak itu siapkan ⟨n,x⟩kontradiksi dengan komitmen sebelumnya untuk nilai yang berbeda, dengan jaminan perjanjian pemungutan suara gabungan kami mendapatkan bahwa tidak ada nilai berbeda yang dapat diputuskan sebelumnya pemungutan suara oleh anggota S. Dengan memasukkan nomor suara, kami oleh karena itu pastikan SCP aman. Untuk keaktifan, pertimbangkan himpunan I yang utuh dan cukup panjang pemungutan suara sinkron n. Jika node yang rusak muncul di irisan node yang berperilaku baik tidak ikut campur dalam n, lalu melalui pemungutan suara n + 1 semua anggota I telah mengkonfirmasi set P pernyataan persiapan yang sama. Jika P = ∅dan surat suara n cukup panjang, maka protokol nominasi akan berkumpul pada beberapa nilai x. Jika tidak, misalkan x adalah nilai dari persiapan dengan pemungutan suara tertinggi di P. Apa pun yang terjadi, saya akan mencoba melakukan federasi secara seragam memberikan suara pada persiapan ⟨n + 1,x⟩pada pemungutan suara berikutnya. Oleh karena itu, jika n + 1 juga sinkron, keputusan untuk x pasti akan mengikuti. 3.2.2 Nominasi Nominasi memerlukan pemungutan suara gabungan atas pernyataan: • mencalonkan x – menyatakan x adalah calon pengambil keputusan yang sah. Node dapat memilih untuk mencalonkan beberapa nilai—berbeda pernyataan yang dicalonkan tidak bertentangan. Namun, sekali sebuah node mengkonfirmasi pernyataan pencalonan apa pun, maka node tersebut berhenti memberikan suaranya mencalonkan nilai-nilai baru. Pemungutan suara gabungan masih memungkinkan sebuah node untuk melakukan hal tersebut mengkonfirmasi pernyataan pencalonan baru yang tidak dipilihnya, yang mana memilih-atau-menerima a dari kuorum menerima a dari kuorum a sah menerima dari set pemblokiran tidak berkomitmen memilih a diterima a dikonfirmasi a memilih ¬a Gambar 1. Tahapan pemungutan suara gabungan memungkinkan anggota dari suatu himpunan utuh untuk mengonfirmasi satu sama lain nilai-nilai yang dicalonkan sambil tetap menahan suara baru. Hasil nominasi yang (berkembang) adalah kombinasi deterministik dari semua nilai dalam pernyataan nominasi yang dikonfirmasi. Jika x mewakili satu set transaksi, node dapat mengambil gabungan himpunan, himpunan terbesar, atau himpunan dengan hash tertinggi, jadi selama semua node melakukan hal yang sama. Karena node menahan yang baru suara setelah mengkonfirmasi satu pernyataan nominasi, set pernyataan yang dikonfirmasi hanya dapat berisi banyak nilai. Fakta bahwa pernyataan yang dikonfirmasi dapat dipercaya menyebar himpunan utuh berarti simpul-simpul utuh pada akhirnya bertemu di kumpulan nilai nominasi yang sama dan karenanya hasil nominasi, meskipun pada titik yang tidak diketahui secara sewenang-wenang terlambat dalam protokol. Node menggunakan pemilihan pemimpin gabungan untuk mengurangi sejumlah nilai berbeda dalam pernyataan nominasi. Hanya saja seorang pemimpin yang belum memberikan suara untuk pernyataan pencalonan dapat menggunakan tanda x baru. Node lain menunggu kabar para pemimpin dan cukup menyalin suara pencalonan pemimpin mereka (yang sah). Untuk mengakomodasi kegagalan, kelompok pemimpin terus bertambah batas waktu terjadi, meskipun dalam praktiknya hanya beberapa node yang memperkenalkan nilai x baru. 3.2.3 Pemungutan suara gabungan Pemungutan suara gabungan menggunakan protokol tiga fase yang ditunjukkan pada Gambar 1. Node mencoba menyepakati pernyataan abstrak terlebih dahulu pemungutan suara, kemudian menerima, dan akhirnya mengkonfirmasi pernyataan. Sebuah node v dapat memilih pernyataan valid a yang tidak valid bertentangan dengan yang lainsuara beredar dan pernyataan yang diterima. Hal ini dilakukan dengan menyiarkan pesan pemungutan suara yang ditandatangani. v kemudian menerima a jika a konsisten dengan pernyataan lain yang diterima dan salah satu dari (kasus 1)v adalah anggota kuorum di mana setiap node memilih a atau menerima a, atau (kasus 2) meskipun v tidak memilih a, set pemblokiran v menerima a. Dalam kasus 2, v mungkin sebelumnya telah memberikan suara yang bertentangan dengan a, yang sekarang telah telah ditolak. v diperbolehkan untuk melupakan suara yang ditolak dan berpura-pura tidak pernah membuangnya karena jika masih utuh, ia tahu suara yang dibatalkan tidak dapat memenuhi kuorum melalui kasus 1. v menyiarkan bahwa ia menerima a, lalu mengonfirmasi a jika sudah masuk kuorum yang dengan suara bulat menerima a. Gambar 2 menunjukkan efek himpunan pemblokiran v dan teorema kaskade selama pemungutan suara gabungan. Dua simpul yang saling terkait tidak dapat mengkonfirmasi pernyataan yang bertentangan, karena dua kuorum yang disyaratkan harus berbagi aPembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada 3 4 2 1 5 7
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
Pilih X
Pilih Y (a) 3 4 2 1 5 7 6 Pilih X Pilih X Pilih X Pilih Y Pilih X Pilih Y Pilih Y (b) 3 4 2 1 5 7 6 Terima X Pilih X Terima X Pilih Y Terima X Pilih Y Pilih Y (c) 3 4 2 1 5 7 6 Terima X Terima X Terima X Pilih Y Terima X Terima X Pilih Y (d) 3 4 2 1 5 7 6 Terima X Pilih X Terima X Terima X Terima X Terima X Terima X (e) Gambar 2. Efek kaskade dalam pemungutan suara gabungan. Setiap node memiliki satu irisan kuorum yang ditunjukkan oleh panah ke anggota irisan tersebut. (a) Pernyataan yang bertentangan X dan Y diperkenalkan. (b) Node memilih pernyataan yang valid. (c) Node 1 menerima X setelah kuorumnya {1, 2, 3, 4} dengan suara bulat memilih X. (d) Node 1, 2, 3, dan 4 semuanya menerima X; set {1} adalah 5 pemblokiran, jadi node 5 menerima X, mengesampingkan suara sebelumnya untuk Y. (e) Himpunan {5} adalah pemblokiran 6 dan 7, jadi 6 dan 7 keduanya menerima X. node yang tidak salah yang tidak dapat menerima pernyataan yang kontradiktif. Konfirmasi suatu pernyataan tidak dijamin: in jika terjadi suara terbelah, kedua pernyataan tersebut dapat bersifat permanen terjebak menunggu kuorum dalam tahap pemungutan suara. Namun jika sebuah simpul dalam himpunan utuh Saya mengonfirmasi pernyataan, kaskade teorema dan menerima kasus 2 memastikan bahwa semua I pada akhirnya akan terjadi mengkonfirmasi pernyataan itu. 3.2.4 Sinkronisasi surat suara Jika node tidak dapat mengkonfirmasi pernyataan komit untuk pemungutan suara saat ini, mereka menyerah setelah batas waktu habis. Batas waktunya habis lebih lama pada setiap surat suara untuk menyesuaikan dengan batasan yang sewenang-wenang pada penundaan jaringan. Namun, waktu tunggu saja tidak cukup untuk menyinkronkan surat suara dari node yang tidak dimulai pada waktu yang sama atau menjadi tidak sinkron karena alasan lain. Untuk mencapai sinkronisasi, node memulai timer hanya ketika mereka menjadi bagian dari a kuorum yang semuanya ada pada pemungutan suara saat ini (atau nanti) n. Ini memperlambat node yang dimulai lebih awal dan memastikan bahwa tidak anggota himpunan utuh berada terlalu jauh di depan grup. Terlebih lagi, jika sebuah node v menyadari adanya pemblokiran v di kemudian hari surat suara, ia langsung melompat ke surat suara terendah seperti ini tidak lagi terjadi, terlepas dari pengatur waktunya. Kaskade teorema kemudian memastikan bahwa semua orang yang tersesat dapat mengejar ketinggalan. Hasilnya adalah bahwa surat suara secara kasar disinkronkan secara utuh diatur setelah sistem menjadi sinkron. 3.2.5 Pemilihan pemimpin gabungan Pemilihan pemimpin memungkinkan setiap node untuk memilih pemimpin sedemikian rupa cara node umumnya hanya memilih satu atau sejumlah kecil pemimpin. Untuk mengakomodasi kegagalan pemimpin, pemilihan pemimpin berlangsung melalui putaran. Jika pemimpin putaran saat ini tampak tidak memenuhi tanggung jawabnya, kemudian setelah a node dengan periode batas waktu tertentu melanjutkan ke putaran berikutnya memperluas kelompok pemimpin yang mereka ikuti. Setiap putaran menggunakan dua fungsi kriptografi unik hash, H0 dan H1, yang menghasilkan bilangan bulat dalam rentang [0,hmax). Misalnya, Stellar menggunakan Hi(m) = SHA256(i∥b∥r ∥m), di mana b adalah keseluruhan instance SCP (nomor blok atau buku besar), r adalah nomor putaran pemilihan pemimpin, dan hmax = 2256. Dalam putaran, kami mendefinisikan prioritas node v sebagai: prioritas(v) = H1(v) Satu strawman akan dipilih oleh setiap node sebagai pemimpin nodev dengan prioritas tertinggi (v). Pendekatan ini berhasil baik dengan potongan kuorum yang hampir sama, tetapi tidak tepat menangkap pentingnya node dalam konfigurasi yang tidak seimbang. Misalnya, jika Eropa dan Tiongkok masing-masing berkontribusi 3 node ke setiap kuorum, tetapi Tiongkok menjalankan 1.000 node dan Eropa 4, maka Tiongkok akan memiliki node dengan prioritas tertinggi 99,6% waktu itu. Oleh karena itu kami memperkenalkan pengertian berat irisan, dimana bobot(u,v) ∈[0, 1] adalah pecahan dari irisan kuorum simpul u berisi simpul v. Ketika simpul u memilih pemimpin baru, simpul itu hanya mempertimbangkan tetangga, yang didefinisikan sebagai berikut: tetangga(u) = { v | H0(v) < hmaks · berat(u,v) } Sebuah nodeu kemudian dimulai dengan sekumpulan pemimpin yang kosong, dan pada masing-masing pemimpin round menambahkan node v di tetangga (u) dengan yang tertinggi prioritas(v). Jika himpunan tetangga kosong di setiap putaran, u malah menambahkan nodev dengan nilai terendah H0(v)/berat(u,v).
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).
Verifikasi formal SCP
Untuk menghilangkan kesalahan desain, kami secara resmi memverifikasi keamanan SCP dan sifat keaktifan (lihat [65]). Secara khusus, kami memverifikasi bahwa titik-titik yang berjalin tidak pernah berselisih dan, dalam kondisi yang dibahas di bawah, setiap anggota himpunan utuh pada akhirnya memutuskan. Menariknya, verifikasi mengungkapkan bahwa kondisi di mana SCP menjamin keaktifan sangat halus, dan lebih kuat dari perkiraan awal [68]: seperti dibahas di bawah, node jahat yang memanipulasi waktu tanpa melakukan sebaliknya menyimpang dari protokol mungkin perlu diusir secara manual dari irisan kuorum.
SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. Untuk memastikan bahwa properti terbukti tahan di semua kemungkinan Konfigurasi dan eksekusi FBA, kami anggap sewenang-wenang jumlah node dengan konfigurasi lokal sewenang-wenang. Ini mencakup skenario dengan rangkaian utuh yang terputus-putus, serta kemungkinan eksekusi yang sangat lama. Kekurangannya adalah kita menghadapi masalah yang menantang dalam memverifikasi parameterisasi sistem keadaan tak terbatas. Agar verifikasi tetap dapat dilakukan, kami memodelkan SCP dalam logika orde pertama (FOL) menggunakan Ivy [69] dan metodologi [82]. Proses verifikasi terdiri dari penyediaan dugaan induktif secara manual yang kemudian diperiksa secara otomatis ivy. Model FOL dari SCP mengabstraksi beberapa aspek Sistem FBA yang sulit ditangani di FOL (mis., teorema cascade diambil sebagai aksioma), jadi kami memverifikasi kesehatan abstraksi menggunakan Isabelle/HOL [75]. Setelah mengungkapkan masalah verifikasi di FOL, kami memverifikasi keamanan dengan menyediakan invarian induktif. Yang induktif invarian terdiri dari selusin dugaan satu baris untuk kira-kira 150 baris spesifikasi protokol. Kami kemudian menentukan properti keaktifan SCP dalam Logika Temporal Linier Ivy dan menggunakan keaktifan terhadap pengurangan keamanan [80, 81] untuk mengurangi keaktifan masalah verifikasi ke masalah menemukan induktif invarian. Meskipun keamanan SCP relatif mudah Buktikan, argumen keaktifan SCP jauh lebih rumit dan rumit terdiri dari sekitar 150 invarian garis tunggal. Membuktikan keaktifan memerlukan formalisasi yang tepat asumsi di mana SCP memastikan penghentian. Kami awalnya mengira set utuh akan selalu saya hentikan jika semuanya anggota menghapus node yang salah dari irisan mereka [68]. Namun, hal ini ternyata belum cukup: seorang yang berperilaku baik (tetapi tidak utuh) simpul dalam kuorum anggota I bisa, berdasarkan pengaruh node yang salah, cegah penghentian dengan menyelesaikan kuorum tepat sebelum berakhirnya pemungutan suara, sehingga menyebabkan anggota I untuk memilih nilai x yang berbeda pada pemungutan suara berikutnya. Oleh karena itu, kita juga harus berasumsi bahwa, secara informal, setiap node dalam kuorum anggota I pada akhirnya juga menjadi tepat waktu atau tidak mengirim pesan sama sekali untuk jangka waktu yang cukup. Dalam praktiknya, ini berarti anggota I boleh perlu menyesuaikan irisannya hingga kondisinya bertahan. Ini masalah ini tidak melekat pada sistem FBA: Losa dkk. [47] hadir sebuah protokol yang keberlangsungannya bergantung pada pihak yang lebih lemah asumsi hanya sinkronisasi dan pemilihan pemimpin pada akhirnya, tanpa perlu menghapus node yang salah dari irisan.
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.
Jaringan pembayaran
Bagian ini menjelaskan jaringan pembayaran Stellar, diimplementasikan sebagai mesin negara yang direplikasi [88] di atas SCP. 5.1 Model buku besar Buku besar Stellar dirancang berdasarkan abstraksi akun (dalam kontras dengan keluaran transaksi tak terpakai yang lebih berpusat pada koin atau UTXO model Bitcoin). Isi buku besar terdiri dari a kumpulan entri buku besar dari empat jenis berbeda: akun, garis kepercayaan, penawaran, dan data akun. Akun adalah prinsipal yang memiliki dan menerbitkan aset. Masing-masing akun diberi nama dengan kunci publik. Secara default, kunci pribadi yang sesuai dapat menandatangani transaksi untuk akun tersebut. Namun, akun dapat dikonfigurasi ulang untuk menambahkan penanda tangan lain dan membatalkan otorisasi kunci yang memberi nama akun tersebut, dengan a Opsi "multisig" yang memerlukan banyak penandatangan. Setiap akun juga berisi: nomor urut (termasuk dalam transaksi untuk mencegah pemutaran ulang), beberapa tanda, dan keseimbangan dalam “asli” cryptocurrency yang telah ditambang sebelumnya disebut XLM, dimaksudkan untuk melakukan mitigasi beberapa serangan penolakan layanan dan memfasilitasi pembuatan pasar sebagai mata uang netral. Trustlines melacak kepemilikan aset yang diterbitkan, yaitu diberi nama oleh pasangan yang terdiri dari akun penerbit dan short kode aset (misalnya, “USD” atau “EUR”). Setiap garis kepercayaan menentukan akun, aset, saldo akun dalam aset itu, a batas di mana saldo tidak dapat naik, dan beberapa bendera. Sebuah akun harus secara eksplisit menyetujui untuk memegang aset menciptakan garis kepercayaan, mencegah pelaku spam membebani akun dengan aset yang tidak diinginkan. Peraturan kenali pelanggan Anda (KYC) mengharuskan banyak lembaga keuangan mengetahui simpanan siapa yang mereka simpan, misalnya dengan memeriksa foto ID. Untuk mematuhinya, emiten dapat mengatur tanda auth_reqired opsional pada akun mereka, yang membatasi kepemilikan aset yang mereka keluarkan ke akun resmi. Untuk memberikan otorisasi tersebut, penerbit menetapkan otorisasi menandai garis kepercayaan pelanggan. Penawaran sesuai dengan kesediaan akun untuk berdagang ke sejumlah tertentu suatu aset tertentu untuk aset lain pada waktu tertentu harga di buku pesanan; mereka secara otomatis dicocokkan dan terisi ketika harga beli/jual bersilangan. Terakhir, data akun terdiri dari akun, kunci, nilai tiga kali lipat, yang memungkinkan pemegang akun untuk mempublikasikan nilai metadata kecil. Untuk mencegah spam ledger, ada minimal saldo XLM, disebut cadangan. Cadangan akun meningkat setiap kali entri buku besar terkait dan berkurang ketika entri buku besar menghilang (misalnya, ketika pesanan dipenuhi atau dibatalkan, atau ketika a garis kepercayaan dihapus). Saat ini cadangan tumbuh sebesar 0,5 XLM (∼$0,03) per entri buku besar. Terlepas dari cadangannya, itu benar mungkin untuk mendapatkan kembali seluruh nilai akun dengan menghapus dengan operasi AccountMerge. Header buku besar, yang ditunjukkan pada Gambar 3, menyimpan atribut global: nomor buku besar, parameter seperti saldo cadangan per entri buku besar, hash dari header buku besar sebelumnya (sebenarnya beberapa hashes membentuk daftar yang dilewati), keluaran SCP termasuk hash transaksi baru yang diterapkan di buku besar ini, hash dari hasil transaksi tersebut (misalnya, keberhasilan atau kegagalan untuk masing-masing), dan cuplikan hash dari semua entri buku besar. Karena snapshot hash mencakup semua isi buku besar, validators tidak perlu menyimpan riwayat untuk memvalidasi transaksi. Namun, untuk mencapai ratusan juta diantisipasi akun, kami tidak dapat hash semua tabel entri buku besar pada setiap tabel buku besar ditutup. Selain itu, tidak praktis untuk mentransfer buku besarPembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada buku besar # = 4 H(sebelumnya hdr) keluaran SCP H∗(hasil) H∗(potret) ... tajuk buku besar # = 5 H(sebelumnya hdr) keluaran SCP H∗(hasil) H∗(potret) ... tajuk . . . Gambar 3. Isi buku besar. H adalah SHA-256, sedangkan H ∗ mewakili penerapan hierarki atau rekursif dari keluaran H. SCP juga tergantung header sebelumnya hash. Buat Akun Membuat dan mendanai entri buku besar akun baru Penggabungan Akun Hapus entri buku besar akun Set Opsi Ubah tanda dan penandatangan akun Pembayaran Bayar sejumlah aset tertentu ke tujuan. menurut. Pembayaran Jalur Suka Pembayaran, tetapi bayar dalam aset berbeda (naik untuk membatasi); tentukan hingga 5 aset perantara Kelola Penawaran Membuat/menghapus/mengubah entri buku besar penawaran, -Penawaran Pasif dengan varian pasif untuk memungkinkan penyebaran nol KelolaData Buat/hapus/ubah akun. entri buku besar data Ubah Kepercayaan Buat/hapus/ubah garis kepercayaan Izinkan Kepercayaan Setel atau hapus tanda resmi pada trustline Urutan Benjolan Tingkatkan urutan. nomor di akun Gambar 4. Operasi buku besar utama sebesar itu setiap kali sebuah node terputus jaringan terlalu lama. Oleh karena itu, snapshot hash adalah dirancang untuk mengoptimalkan hashing dan rekonsiliasi negara. Secara khusus, snapshot mengelompokkan entri buku besar berdasarkan waktu modifikasi terakhir dalam satu set wadah berukuran eksponensial disebut ember. Kumpulan ember disebut ember list, dan memiliki kemiripan dengan pohon gabungan berstruktur log (Pohon LSM) [77]. Daftar keinginan tidak dibaca selama pemrosesan transaksi (lihat Bagian 5.4). Oleh karena itu, desain tertentu aspek pohon LSM bisa dilonggarkan. Khususnya, acak akses dengan kunci tidak diperlukan, dan keranjang hanya dibaca secara berurutan sebagai bagian dari penggabungan level. Hashing ember list dilakukan dengan hashing setiap keranjang saat digabungkan dan menghitung hash kumulatif baru dari keranjang hashes (kecil, indeks referensi tetap hashes) pada setiap penutupan buku besar. Rekonsiliasi daftar keinginan setelah pemutusan sambungan memerlukan pengunduhan hanya ember yang berbeda. 5.2 Model transaksi Suatu transaksi terdiri dari akun sumber, kriteria validitas, a memo, dan daftar satu atau lebih operasi. Gambar 4 mencantumkan operasi yang tersedia. Setiap operasi memiliki akun sumber, yang mana default terhadap keseluruhan transaksi. Sebuah transaksi harus ditandatangani dengan kunci yang sesuai dengan setiap akun sumber di sebuah operasi. Akun multisig memerlukan penandatanganan yang lebih tinggi bobot untuk beberapa operasi (seperti SetOptions) dan lebih rendah untuk yang lain (seperti AllowTrust). Transaksi bersifat atomik—jika ada operasi yang gagal, tidak ada satu pun yang gagal mereka mengeksekusi. Ini menyederhanakan kesepakatan multi-arah. Misalkan sebuah penerbit membuat aset untuk mewakili akta tanah, dan pengguna A ingin menukar sebidang tanah kecil ditambah $10.000 dengan a sebidang tanah yang lebih besar milik B. Kedua pengguna dapat sama-sama menandatangani satu transaksi yang berisi tiga operasi: dua tanah pembayaran dan pembayaran satu dolar. Kriteria validitas utama suatu transaksi adalah nomor urutnya, yang harus lebih besar satu daripada nomor urut transaksi entri buku besar akun sumber. Menjalankan transaksi yang valid (berhasil atau tidak) menambah nomor urut, mencegah pemutaran ulang. Nomor urut awal berisi buku besar nomor dalam bit tinggi untuk mencegah pemutaran ulang bahkan setelah penghapusan dan membuat ulang akun. Kriteria validitas lainnya adalah batasan opsional kapan suatu transaksi dapat dijalankan. Kembali ke tanah dan dolar swap di atas, jika A menandatangani transaksi sebelum B, A tidak boleh ingin B melakukan transaksi selama setahun sebelum mengajukan itu, sehingga dapat menetapkan batas waktu yang membatalkan transaksi setelah beberapa hari. Akun multisig juga dapat dikonfigurasi untuk memberi bobot penandatanganan pada pengungkapan gambar awal hash, yang, dikombinasikan dengan batas waktu, memungkinkan perdagangan lintas rantai atom [1]. Akun sumber transaksi membayar sedikit biaya di XLM, 10−5 XLM kecuali terjadi kemacetan. Di bawah kemacetan, itu biaya operasi ditentukan oleh lelang Belanda. Validator adalah tidak dikompensasi dengan biaya karena validator serupa ke Bitcoin node penuh, bukan penambang. Daripada menghancurkan XLM, biaya didaur ulang dan didistribusikan secara proporsional melalui pemungutan suara pemegang XLM yang ada, yang jika dipikir-pikir mungkin atau mungkin tidak sebanding dengan kerumitannya. 5.3 Nilai-nilai konsensus Untuk setiap buku besar, Stellar menggunakan SCP untuk menyetujui struktur data dengan tiga bidang: kumpulan transaksi hash (termasuk hash dari header buku besar sebelumnya), waktu tutup, and peningkatan. Ketika beberapa nilai dikonfirmasi dinominasikan, Stellar mengambil kumpulan transaksi dengan operasi terbanyak (memutus ikatan berdasarkan total biaya, maka transaksi ditetapkan hash), gabungan semuanya peningkatan, dan waktu penutupan tertinggi. Waktu dekat saja valid jika berada di antara waktu penutupan buku besar terakhir dan hadir, sehingga node tidak mencalonkan waktu yang tidak valid. Peningkatan menyesuaikan parameter global seperti saldo cadangan, biaya operasi minimum, dan versi protokol. Kapan digabungkan selama pencalonan, biaya yang lebih tinggi dan nomor versi protokol menggantikan biaya yang lebih rendah. Peningkatan ini berdampak pada tata kelola melalui ruang pertarungan pemungutan suara gabungan [34], tidak juga egaliter dan tidak terpusat. Setiap validator dikonfigurasi sebagai baik yang mengatur atau tidak mengatur (default), menurut apakah operatornya ingin berpartisipasi dalam tata kelola. Mengatur validators mempertimbangkan tiga jenis peningkatan: diinginkan, valid, dan tidak valid (apa pun yang validator tidak
SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. validator inti cakrawala FS DB DB menyerahkan klien klien validator lainnya Gambar 5. Arsitektur Stellar validator tahu bagaimana menerapkannya). Peningkatan yang diinginkan dikonfigurasikan ke pemicu pada waktu tertentu, dimaksudkan untuk dikoordinasikan antar operator. Node yang mengatur selalu memilih untuk mencalonkan yang diinginkan peningkatan, terima tetapi jangan memilih untuk mencalonkan peningkatan yang valid (yaitu, ikut serta dalam kuorum pemblokiran), dan jangan pernah memilih atau menerima peningkatan yang tidak valid. Gema validator yang tidak mengatur setiap suara yang mereka lihat untuk peningkatan yang valid, pada dasarnya mendelegasikan keputusan tentang peningkatan apa yang diinginkan bagi mereka yang memilih untuk peran tata kelola. 5.4 Implementasi Gambar 5 menunjukkan arsitektur validator Stellar. Sebuah dasmon disebut stellar-core (∼92k baris C++, tidak termasuk perpustakaan pihak ketiga) mengimplementasikan protokol SCP dan mesin negara yang direplikasi. Menghasilkan nilai untuk SCP memerlukan pengurangan sejumlah besar entri buku besar menjadi kriptografi kecil hashes. Sebaliknya, validasi dan eksekusi transaksi memerlukan pencarian status akun dan pencocokan pesanan di harga terbaik. Untuk menjalankan kedua fungsi secara efisien, inti yang luar biasa menyimpan dua representasi buku besar: representasi eksternal yang berisi daftar keinginan, disimpan sebagai file biner yang dapat diperbarui secara efisien dan diperbarui secara bertahap, dan representasi internal dalam database SQL (PostgreSQL untuk node produksi). Stellar-core membuat arsip riwayat hanya tulis yang berisi setiap kumpulan transaksi yang dikonfirmasi dan cuplikannya ember. Arsip ini memungkinkan node baru melakukan bootstrap sendiri saat bergabung dengan jaringan. Ini juga menyediakan catatan buku besar sejarah—perlu ada suatu tempat yang dapat dicari transaksi dari dua tahun lalu. Karena riwayat hanya bersifat tambahan dan jarang diakses, dapat disimpan di tempat yang murah seperti Amazon Glacier atau layanan apa pun yang mengizinkan seseorang untuk menyimpan dan mengambil file datar. Host validator biasanya tidak menghosting arsip mereka sendiri untuk menghindari dampak apa pun pada validasi kinerja dari melayani sejarah. Untuk menjaga agar inti bintang tetap sederhana, ini tidak dimaksudkan untuk digunakan langsung melalui aplikasi dan hanya memperlihatkan antarmuka yang sangat sempit untuk pengajuan transaksi baru. Untuk mendukung klien, sebagian besar validator menjalankan daemon bernama horizon (∼18k baris Go) yang menyediakan antarmuka HTTP untuk pengiriman dan pembelajaran transaksi. horizon memiliki akses hanya baca database SQL stellar-core, meminimalkan risiko horizon mendestabilisasi inti bintang. Fitur-fitur seperti pencarian jalur pembayaran diterapkan sepenuhnya dan dapat ditingkatkan secara sepihak tanpa berkoordinasi dengan validators lainnya. Beberapa daemon opsional pada lapisan yang lebih tinggi adalah klien yang harus dicakup, melengkapi ekosistem. Server jembatan memfasilitasi integrasi Stellar dengan sistem yang ada, misalnya memposting pemberitahuan semua pembayaran yang diterima oleh akun tertentu. SEBUAH server kepatuhan memberikan kaitan bagi lembaga keuangan untuk melakukannya menukar dan menyetujui informasi pengirim dan penerima tentang pembayaran, untuk mematuhi daftar sanksi. Akhirnya, server federasi mengimplementasikan penamaan yang dapat dibaca manusia sistem untuk akun. 6 Pengalaman penerapan Stellar tumbuh selama beberapa tahun menjadi keadaan yang moderat sejumlah operator node penuh yang cukup andal. Namun, Konfigurasi node sedemikian rupa sehingga hidup (meskipun tidak keselamatan) bergantung pada kami, Stellar Development Foundation (SDF); seandainya SDF tiba-tiba menghilang, operator node lainnya perlu campur tangan dan menghapus kami secara manual dari potongan kuorum agar jaringan dapat melanjutkan. Meskipun kami dan banyak pihak lain ingin mengurangi kepentingan sistemik SDF, tujuan ini semakin mendapat prioritas setelahnya peneliti [58] mengukur dan mempublikasikan sentralisasi jaringan tanpa membedakan risiko terhadap keselamatan dan keaktifan. Sejumlah operator bereaksi dengan penyesuaian konfigurasi aktif, terutama meningkatkan ukurannya kuorum dalam upaya melemahkan pentingnya SDF; ironisnya hal ini hanya meningkatkan risiko terhadap nyawa. Ada dua masalah yang memperburuk situasi. Pertama, yang populer alat pemantauan Stellar pihak ketiga [5] dilakukan secara sistematis melebih-lebihkan waktu aktif validator dengan tidak benar-benar memverifikasi inti bintang itu sedang berjalan; hal ini menyebabkan orang-orang ikut serta node yang tidak dapat diandalkan dalam irisan kuorumnya. Kedua, ada bug di dalamnya stellar-core berarti setelah validator dipindahkan ke buku besar berikutnya, itu tidak cukup membantu node yang tersisa menyelesaikan yang sebelumnyabuku besar kami jika terjadi pesan yang hilang. Akibatnya, jaringan mengalami downtime selama 67 menit dan diperlukan koordinasi manual oleh validator administrator untuk memulai kembali. Lebih buruk lagi, ketika mencoba memulai ulang jaringan, terjadi konfigurasi ulang yang terburu-buru secara bersamaan pada beberapa node dalam kesalahan konfigurasi kolektif yang memungkinkan beberapa node melakukannya menyimpang, membutuhkan penutupan manual dari node tersebut dan penyerahan kembali transaksi yang diterima selama divergensi. Untungnya, perbedaan ini dapat ditangkap dan diperbaiki cepat dan tidak mengandung transaksi yang bertentangan, tetapi risiko jaringan gagal mencapai kuorum persimpangan— perpecahan sambil terus menerima potensi konflik transaksi, hanya karena kesalahan konfigurasi—terjadi sangat konkrit dengan kejadian ini. Meninjau pengalaman-pengalaman ini menghasilkan dua kesimpulan utama dan tindakan perbaikan yang sesuai.Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Kritis, 100% 51% 51% Tinggi, 67% 51% Sedang, 67% 51% Rendah, 67% 51% 51% ... ... ... 51% ... 51% Gambar 6. Hierarki kualitas validator. Node dengan kualitas terbaik memerlukan ambang batas tertinggi 100%, sedangkan kualitas yang lebih rendah dikonfigurasikan ke ambang batas 67%. Node dalam satu organisasi memerlukan mayoritas sederhana 51%. 6.1 Kompleksitas dan kerapuhan konfigurasi Stellar menyatakan irisan kuorum sebagai kumpulan kuorum bersarang yang terdiri dari n entri dan ambang batas k di mana setiap kumpulan k entri merupakan bagian kuorum. Masing-masing dari n entri adalah salah satunya kunci publik validator atau, secara rekursif, kumpulan kuorum lainnya. Meskipun fleksibel dan kompak, kami mewujudkan kuorum bertingkat set secara bersamaan memberi operator node terlalu banyak fleksibilitas dan terlalu sedikit panduan: mudah untuk menulis tidak aman (atau bahkan tidak masuk akal). Kriteria pengelompokan node menjadi set, untuk mengatur subset ke dalam hierarki, dan pemilihan ambang batas tidak cukup jelas dan berkontribusi terhadap kegagalan operasional. Tidak jelas apakah akan melakukannya memperlakukan "level" dalam hierarki kumpulan bersarang sebagai tingkat kepercayaan, atau suatu organisasi, atau keduanya; banyak konfigurasi di lapangan mencampuradukkan konsep-konsep ini, selain menentukan berbahaya atau ambang batas yang tidak berarti. Oleh karena itu kami menambahkan mekanisme konfigurasi yang lebih sederhana yang memisahkan dua aspek kumpulan kuorum bertingkat: pengelompokan node bersama-sama berdasarkan organisasi, dan memberi label pada setiap organisasi dengan klasifikasi kepercayaan sederhana (rendah, sedang, tinggi, atau kritis). Organisasi yang berada pada level tinggi dan di atasnya diharuskan untuk melakukan hal tersebut mempublikasikan arsip sejarah. Sistem baru ini mensintesis kumpulan kuorum bersarang di mana setiap organisasi direpresentasikan sebagai a Ambang batas 51% ditetapkan, dan organisasi dikelompokkan ke dalam beberapa set dengan ambang batas 67% atau 100% (tergantung kualitas kelompok). Setiap grup adalah satu entri di grup berikutnya (berkualitas lebih tinggi), seperti yang diilustrasikan pada Gambar 6. Model yang disederhanakan ini mengurangi kemungkinan kesalahan konfigurasi, baik dari segi struktur dari himpunan bersarang yang disintesis dan ambang batas yang dipilih setiap set. 6.2 Deteksi kesalahan konfigurasi secara proaktif Kedua, kami menyadari bahwa mendeteksi kesalahan konfigurasi kolektif dengan menunggu untuk mengamati dampak negatifnya sudah terlambat. Terutama sehubungan dengan kesalahan konfigurasi yang dapat menyimpang—a mode kegagalan yang lebih serius daripada penghentian—yang dibutuhkan jaringan agar dapat segera mendeteksi kesalahan konfigurasi sehingga operator dapat mengembalikannya sebelum terjadi divergensi. Untuk mengatasi kebutuhan ini, kami membangun mekanisme ke dalam perangkat lunak validator yang secara terus-menerus mengumpulkan status konfigurasi kolektif dari semua rekan dalam penutupan transitif node dan mendeteksi potensi divergensi—yaitu, disjoint kuorum—dalam konfigurasi kolektif itu. 6.2.1 Memeriksa persimpangan kuorum Meskipun mengumpulkan bagian kuorum itu mudah, menemukan kuorum yang terpisah di antara mereka adalah hal yang sulit [62]. Namun, kami mengadopsinya seperangkat heuristik algoritmik dan aturan eliminasi kasus diusulkan oleh Lachowski [62] yang memeriksa contoh umum dari masalah beberapa kali lipat lebih cepat dari biaya kasus terburuk. Secara praktis, jaringan saat ini penutupan transitif irisan kuorum berada di urutan 20–30 node dan, dengan optimasi Lachowski, biasanya memeriksa dalam hitungan detik pada satu CPU. Jika diperlukan untuk meningkatkan kinerja, kami dapat memparalelkan pencarian. 6.2.2 Memeriksa konfigurasi berisiko Mendeteksi bahwa jaringan mengakui kuorum yang terpisah adalah sebuah langkah ke arah yang benar, namun terlambat menandai bahaya untuk masalah kritis seperti itu. Idealnya, kami ingin operator node menerima peringatan saat konfigurasi kolektif jaringan hanya mendekati keadaan berisiko. Oleh karena itu, kami memperluas pemeriksaan kuorum persimpangan untuk mendeteksi suatu kondisi kita sebut kekritisan: ketika arus konfigurasi kolektif hanya berjarak satu kesalahan konfigurasi negara bagian yang mengakui kuorum yang terpisah. Untuk mendeteksi kekritisan, pemeriksa berulang kali mengganti konfigurasi masing-masing organisasi dengan simulasi kesalahan konfigurasi kasus terburuk menjalankan kembali pemeriksa persimpangan kuorum dalam pada hasilnya. Jika ada kesalahan konfigurasi kritis yang terjadi, tinggal selangkah lagi dari keadaan saat ini, perangkat lunak mengeluarkan peringatan dan melaporkan organisasi yang mempunyai risiko kesalahan konfigurasi. Perubahan ini memberikan komunitas operator dua lapisan pemberitahuan dan panduan untuk melindungi dari bentuk-bentuk terburuk kesalahan konfigurasi kolektif.
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.
Evaluasi

Untuk memahami kesesuaian Stellar sebagai pembayaran global dan jaringan perdagangan, kami mengevaluasi keadaan jaringan publik dan menjalankan eksperimen terkontrol pada eksperimen pribadi jaringan. Kami fokus pada pertanyaan-pertanyaan berikut: • Seperti apa topologi jaringan produksinya? Berapa rata-rata pesan yang disiarkan, dan bagaimana SCP mengalami timeout? • Apakah latensi pembaruan konsensus dan buku besar tetap independen terhadap jumlah akun?SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. • Bagaimana latensi dipengaruhi oleh peningkatan (a) transaksi per detik (dan, akibatnya, transaksi per buku besar), dan (b) jumlah validator node? • Berapa biaya menjalankan sebuah node dalam kaitannya dengan CPU, memori, dan bandwidth jaringan? Jaringan pembayaran memiliki tingkat transaksi yang rendah dibandingkan ke jenis sistem terdistribusi lainnya. blockchains terkemuka, Bitcoin dan Ethereum, konfirmasi hingga 15 transaksi/detik, kurang dari Stellar. Selain itu, sistem ini memerlukan waktu beberapa menit untuk melakukannya satu jam untuk mengonfirmasi transaksi dengan aman, karena bukti kerja memerlukan menunggu beberapa blok untuk ditambang. Itu jaringan SWIFT non-blockchain rata-rata hanya melakukan 420 transaksi per detik pada hari puncaknya [14]. Oleh karena itu kami memilih untuk membandingkan pengukuran kami dengan target 5 detik interval buku besar, target yang lebih agresif. Hasil kami menunjukkan bahwa latensi masih berada di bawah batas ini beberapa pengoptimalan yang belum diterapkan masih dalam proses. 7.1 Jangkar Aset yang paling banyak diperdagangkan berdasarkan volume mencakup mata uang (misalnya, 3 USD jangkar, 2 CNY), jangkar Bitcoin, keamanan yang didukung real estat token [92], dan mata uang dalam aplikasi [8]. Jangkar yang berbeda memiliki kebijakan yang berbeda. Misalnya, satu jangkar USD, Stronghold, menetapkan auth_reqired dan memerlukan proses kenali pelanggan Anda (KYC) untuk setiap akun yang memilikinya aset. Lainnya, AnchorUSD, memungkinkan siapa pun menerima dan berdagang USD mereka (sehingga memungkinkan untuk mengirim $0,50 ke Meksiko dalam 5 detik dengan biaya $0,000001). Namun, JangkarUSD memang memerlukan KYC dan biaya untuk membeli atau menebus USD mereka dengan transfer kawat konvensional. Di Filipina, di mana peraturan bank lebih longgar untuk pembayaran masuk,coin.ph mendukung pencairan PHP di mesin ATM mana pun [36]. Selain token keamanan yang disebutkan di atas dan mata uang dalam aplikasi, terdapat berbagai token non-mata uang mulai dari obligasi komersial [22] dan kredit karbon [85, 96] dan lebih banyak lagi aset esoteris seperti token yang memberikan insentif kolaboratif penarikan kembali mobil [35]. 7.2 Jaringan publik Saat tulisan ini dibuat, terdapat 126 full node yang aktif, 66 di antaranya berpartisipasi dalam konsensus dengan menandatangani pesan suara. Gambar 7 (dihasilkan oleh [5]) memvisualisasikan jaringan, dengan garis di antaranya dua node jika salah satu muncul di bagian kuorum yang lain dan a garis biru gelap untuk menunjukkan ketergantungan dua arah. Di center adalah sekelompok 17 “tingkat satu validators” de facto yang dijalankan oleh SDF, SatoshiPay, LOBSTR, COINQVEST, dan Keybase. Empat bulan lalu, sebelum peristiwa Bagian 6, disana ada 15 node yang penting secara sistemik: 3 dari yang tampaknya organisasi tingkat satu dan beberapa lajang acak. Itu grafik juga terlihat kurang teratur. Oleh karena itu, nampaknya mekanisme konfigurasi baru dan/atau keputusan operator yang lebih baik untuk berkontribusi pada topologi jaringan yang lebih sehat. Tanpa sumber daya keuangan yang besar (dan pemegang saham terkait Gambar 7. Peta irisan kuorum kewajiban), akan sulit untuk merekrut 5 tingkat satu organisasi sejak awal. Hal ini menunjukkan kuorum irisan memainkan peran yang berguna dalam bootstraping jaringan: siapa pun bisa bergabung dengan tujuan menjadi pemain penting karena tidak ada penjaga gerbang untuk kesepakatan berpasangan. Saat ini ada lebih dari 3,3 juta akun di buku besar. Selesai periode 24 jam terakhir, Stellar rata-rata 4,5 transaksi dan 15,7 operasi per detik. Meninjau buku besar terbaru, sebagian besar transaksi tampaknya memiliki satu operasi, sementara setiap beberapa operasi di buku besar kita melihat transaksi yang berisi banyak operasi itu tampaknya berasal dari pembuat pasar yang mengelola penawaran. Itu waktu yang berarti untuk mencapai konsensus dan memperbarui buku besar 1061 ms dan 46 ms, masing-masing. Persentil ke-99 adalah 2252 mdtk dan 142 mdtk (yang pertama mencerminkan batas waktu 1 detik dalam pemilihan pemimpin nominasi). Catatan kinerja SCP adalah sebagian besar tidak bergantung pada transaksi per detik, sejak SCP menyetujui hash dari banyak transaksi yang sewenang-wenang. Kemacetan lebih besar kemungkinannya timbul dari pencalonan calon transaksi selama nominasi, pelaksanaan dan validasi transaksi, dan menggabungkan keranjang. Kami belum membutuhkannya untuk memparalelkan pemrosesan transaksi stellar-core pada beberapa inti CPU atau drive disk. Kami juga mengevaluasi jumlah pesan SCP yang disiarkan pada jaringan produksi. Dalam kasus normal dengan satu pemimpin terpilih untuk mencalonkan suatu nilai, kami mengharapkan tujuh logis pesan yang akan disiarkan: dua pesan untuk dipilih dan diterima seorang nomipernyataan nate, dua pesan untuk diterima dan dikonfirmasi pernyataan persiapan, dua pesan untuk diterima dan dikonfirmasi pernyataan komit, dan terakhir, pesan eksternalisasi (dikirim setelah melakukan buku besar baru ke disk untuk membantu orang yang tersesat mengejar ketinggalan). Implementasinya menggabungkan konfirmasi komit dan mengeksternalisasikan pesan sebagai optimasi, sebagaimana adanya aman untuk mengeksternalisasi suatu nilai setelah dikomit. Kami kemudian menganalisis metrik yang dikumpulkan pada Stellar validator produksi. Selesai selama 68 jam, 1,3 pesan/detik dikirimkan, rata-rata 6-7 pesan per buku besar. Kami mencatat bahwa totalnya
Pembayaran global yang cepat dan aman dengan Stellar SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Persentil Jumlah Batas Waktu Nominasi Pemungutan suara 75% 0 0 99% 1 0 Maks 4 1 Gambar 8. Batas waktu per buku besar selama 68 jam jumlah pesan yang disiarkan oleh validators lebih besar, sejak di selain pesan pemungutan suara gabungan, node juga menyiarkan transaksi apa pun yang mereka pelajari. Gambar 8 menunjukkan batas waktu yang dialami oleh suatu produksi validator selama jangka waktu 68 jam. Batas waktu nominasi adalah ukuran (tidak)efektifnya fungsi pemilihan pemimpin, sementara waktu tunggu pemungutan suara sangat bergantung pada jaringan dan potensi penundaan pesan. Batas waktunya konsisten dengan jumlah pesan yang dipancarkan: enam pesan di skenario kasus terbaik, dan setidaknya tujuh pesan jika putaran nominasi tambahan diperlukan. 7.3 Eksperimen terkontrol Kami menjalankan eksperimen terkontrol dalam wadah yang dikemas Instans Amazon EC2 c5d.9xlarge dengan RAM 72 GiB, NVMe SSD 900 GB, dan 36 vCPU. Setiap contoh ada di wilayah EC2 yang sama dan memiliki bandwidth tetap 10 Gbps. Kami menggunakan SQLite sebagai toko. (Stellar juga mendukung PostgreSQL, tapi itu memiliki tugas asinkron yang memasukkan kebisingan ke dalam pengukuran.) Stellar menyediakan kueri runtime bawaan, generateload, yang memungkinkan menghasilkan beban sintetis pada target tertentu transaksi/kurs kedua. Meskipun Stellar mendukung beragam fitur perdagangan, seperti buku pesanan dan jalur lintas aset pembayaran, kami fokus pada pembayaran sederhana. Mengonfirmasi transaksi terdiri dari beberapa langkah, jadi kami mencatat pengukuran untuk setiap hal berikut: • Nominasi: waktu dari nominasi hingga persiapan pertama • Pemungutan suara: waktu dari persiapan pertama hingga pengukuhan a pemungutan suara dilakukan • Pembaruan buku besar: saatnya menerapkan nilai konsensus • Jumlah transaksi: transaksi terkonfirmasi per buku besar Setiap eksperimen kami ditentukan oleh tiga parameter: jumlah entri akun dalam buku besar, jumlah beban (berupa pembayaran XLM) yang dikirimkan per detik, dan jumlah validators. Kami mengonfigurasi setiap validator untuk mengetahui tentang setiap validator lainnya (skenario terburuk untuk SCP), dengan potongan kuorum ditetapkan ke mayoritas sederhana node (untuk memaksimalkan jumlah kuorum yang berbeda). Dasar Eksperimen dasar kami mengukur Stellar dengan 100.000 akun, empat validator, dan pembuatan beban kecepatan 100 transaksi/detik. Kami mengamati rata-rata 507 transaksi per buku besar, dengan deviasi standar 49 (9,7%). Perhatikan bahwa tidak ada transaksi yang dibatalkan; sedikit 105 106 107 0 500 1.000 1.500 2.000 Akun Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 9. Latensi seiring bertambahnya jumlah akun varians disebabkan oleh keterbatasan penjadwalan generator beban. Kami mengamati bahwa jumlah transaksi per buku besar konsisten dengan tingkat pembangkitan beban kami, berdasarkan buku besar menutup setiap 5 detik. Nominasi, pemungutan suara, dan buku besar pembaruan menunjukkan latensi rata-rata 82,53 ms, 95,96 ms, dan 174,08 ms, masing-masing. Kami mengamati latensi nominasi tersebut Persentil ke-99 secara konsisten berada di bawah 61 md, dan kadang-kadang lonjakan sekitar 1 detik, sesuai dengan langkah pertama dalam fungsi batas waktu pemilihan pemimpin. Mengingat kinerja dasar, kami melihat dampaknya memvariasikan setiap parameter pengaturan pengujian. Akun Data pada Gambar 9 menunjukkan bahwa skala Stellar serta jumlah akun bertambah. Generasi tes akun menjadi proses yang panjang, seiring pembuatan keranjang dan penggabungan mencegah kami untuk sekadar mengisi database dengan akun langsung melalui SQL. Oleh karena itu, kami melakukan eksperimen hingga 50.000.000 akun. Selagi ada dampak minimal pada konsensus dan latensi pembaruan buku besar, kami mencatat bahwa peningkatan akun menciptakan overhead sebesar menggabungkan ember, yang menjadi lebih besar. Tingkat transaksi Tingkat transaksi mempengaruhi jumlah lalu lintas multicast di antara validators, jumlah transaksi yang termasuk dalam setiap buku besar, dan ukuran tingkat teratas ember. Untuk memahami dampak peningkatan transaksi memuat, kami menjalankan eksperimen dengan 100.000 akun dan 4 validators. Gambar 10 menunjukkan pertumbuhan latensi konsensus yang lambat, sementara sebagian besar waktu dihabiskan untuk memperbarui buku besar. Tidak mengherankan, seiring bertambahnya ukuran kumpulan transaksi membutuhkan waktu lebih lama untuk mengkomitnya ke database. Kami juga mencatat itu latensi pembaruan buku besar sangat bergantung pada implementasi, dan dipengaruhi oleh pilihan database. Node validator Untuk melihat seberapa meningkat jumlah tierone validatorsmemengaruhi kinerja, kami menjalankan eksperimen dengan 100.000 akun, 100 transaksi/detik, dan jumlah validator yang bervariasi dari 4 hingga 43. Semua validator muncul di seluruh kuorum validators; irisan kuorum yang lebih kecil akan melakukannya memiliki dampak yang lebih kecil terhadap kinerja.SOSP '19, 27–30 Oktober 2019, Huntsville, ON, Kanada Lokhava dkk. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Muat [transaksi/detik] Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 10. Latensi seiring meningkatnya beban transaksi 10 20 30 40 0 500 1.000 1.500 2.000 Validator Latensi [ms] Pembaruan buku besar Pemungutan suara Nominasi Gambar 11. Latensi seiring bertambahnya jumlah node Mengubah jumlah node validasi di jaringan berdampak pada jumlah pesan SCP yang dipertukarkan juga jumlah nilai potensial selama nominasi. Gambar 11 menunjukkan waktu nominasi meningkat pada tingkat yang relatif kecil. Meskipun data menunjukkan bahwa pemungutan suara adalah hambatannya, kami percaya bahwa banyak masalah penskalaan dapat diatasi dengan melakukan perbaikan Jaringan overlay Stellar untuk mengoptimalkan lalu lintas jaringan. Sebagai diharapkan, latensi pembaruan buku besar tetap independen jumlah node. Tingkat penutupan Terakhir, kami ingin mengukur kinerja end-to-end Stellar dengan mengukur seberapa sering buku besar dikonfirmasi dan apakah Stellar memenuhi target 5 detik tanpa membatalkan transaksi apa pun. Kami mengamati rata-rata buku besar ditutup waktu 5,03 detik, 5,10 detik, dan 5,15 detik seiring peningkatan akun entri, tingkat transaksi, dan jumlah node, masing-masing. Hasilnya menunjukkan bahwa Stellar dapat menutup buku besar secara konsisten di bawah beban tinggi. 7.4 Menjalankan validator Salah satu fitur penting Stellar adalah biayanya yang rendah menjalankan validator, karena jangkar harus dijalankan (atau dikontrak) validators untuk menegakkan finalitas. SDF menjalankan 3 validators produksi, semuanya pada instans AWS c5.large, yang memiliki dua inti, RAM 4 GiB dan CPU Intel(R) Xeon(R) Platinum 8124M @ Prosesor 3,00GHz. Memeriksa penggunaan sumber daya di satu tempat dari mesin ini, kami mengamati proses Stellar menggunakan sekitar 7% CPU dan 300 MiB memori. Dalam hal lalu lintas jaringan, dengan 28 koneksi ke rekan dan ukuran kuorum dari 34, kecepatan masuk dan keluar adalah 2,78 Mbit/s dan 2,56 Mbit/dtk, masing-masing. Perangkat keras diperlukan untuk menjalankan a prosesnya tidak mahal. Dalam kasus kami, biayanya adalah $0,054/jam atau sekitar $40/bulan. 7.5 Pekerjaan masa depan Eksperimen ini menunjukkan bahwa Stellar dapat dengan mudah menskalakan 1–2 pesanan besarnya melebihi penggunaan jaringan saat ini. Karena tuntutan kinerja sangat sederhana hingga saat ini, Stellar menyisakan ruang untuk banyak penggunaan pengoptimalan langsung teknik terkenal. Misalnya transaksi dan SCP pesan disiarkan oleh validators menggunakan banjir naif protokol, namun idealnya menggunakan protokol yang lebih efisien dan terstruktur multicast peer-to-peer [30]. Selain itu, banyak database waktu pembaruan buku besar dapat ditingkatkan melalui teknik batching dan prefetching standar.
Évaluation

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