Protokol Konsensus Stellar

The Stellar Consensus Protocol

Автор David Mazières · 2015

Abstract

Abstract

International payments are slow and expensive, in part because of multi-hop payment routing through heterogeneous banking systems. Stellar is a new global payment network that can directly transfer digital money anywhere in the world in seconds. The key innovation is a secure transaction mechanism across untrusted intermediaries, using a new Byzantine agreement protocol called SCP. With SCP, each institution specifies other institutions with which to remain in agreement; through the global interconnectedness of the financial system, the whole network then agrees on atomic transactions spanning arbitrary institutions, with no solvency or exchange-rate risk from intermediary asset issuers or market makers. We present SCP’s model, protocol, and formal verification; describe the Stellar payment network; and finally evaluate Stellar empirically through benchmarks and our experience with several years of production use. CCS Concepts • Security and privacy →Distributed systems security; • Computer systems organization → Peer-to-peer architectures; • Information systems → Electronic funds transfer. Keywords blockchain, BFT, quorums, payments ACM Reference Format: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Fast and secure global payments with Stellar. In SOSP ’19: Symposium on Operating Systems Principles, October 27–30, 2019, Huntsville, ON, Canada. ACM, New York, NY, USA, 17 pages. https://doi.org/10.1145/3341301.3359636

Abstrak

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

Introduction

Introduction

International payments are notoriously slow and costly [32]. Consider the impracticality of sending $0.50 from the U.S. to *Galois, Inc. †UCLA Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]. SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada © 2019 Association for Computing Machinery. ACM ISBN 978-1-4503-6873-5/19/10...$15.00 https://doi.org/10.1145/3341301.3359636 Mexico, two neighboring countries. End users pay nearly $9 for the average such transfer [32], and a bilateral agreement brokered by the countries’ central banks could only reduce the underlying bank cost to $0.67 per item [2]. On top of fees, the latency of international payments is generally counted in days, making it impossible to get money abroad quickly in emergencies. In countries where the banking system doesn’t work or doesn’t serve all citizens, or where fees are intolerable, people resort to sending payments by bus [38], by boat [19], and occasionally now by Bitcoin [55], all of which incur risk, latency, or inconvenience. While there will always be compliance costs, evidence suggests a significant amount is lost to lack of competition [21], which is exacerbated by inefficient technology. Where people can innovate, prices and latencies go down. For instance, remittances from bank accounts in Q2 2019 cost an average of 6.99%, while the figure for mobile money was only 4.88% [13]. An open, global payment network that attracts innovation and competition from non-bank entities could drive down costs and latencies at all layers, including compliance [83]. This paper presents Stellar, a blockchain-based payment network specifically designed to facilitate innovation and competition in international payments. Stellar is the first system to meet all three of the following goals (under a novel but empirically valid “Internet hypothesis”): 1. Open membership – Anyone can issue currency-backed digital tokens that can be exchanged among users. 2. Issuer-enforced finality – A token’s issuer can prevent transactions in the token from being reversed or undone. 3. Cross-issuer atomicity – Users can atomically exchange and trade tokens from multiple issuers. Achieving the first two is easy. Any company can unilaterally offer a product such as Paypal, Venmo, WeChat Pay, or Alipay and ensure the finality of payments in the virtual currencies they have created. Unfortunately, transacting atomically across these currencies is impossible. In fact, despite Paypal having acquired Venmo’s parent company in 2013, it is still impossible for end users to send Venmo dollars to Paypal users [78]. Only recently can merchants even accept both with a single integration. Goals 2 and 3 can be achieved in a closed system. In particular, a number of countries have efficient domestic payment networks, typically overseen by a universally trusted regulatory authority. However, membership is limited to a closed set of chartered banks and the networks are limited to the reach of a country’s regulatory authority.

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. Goals 1 and 3 have been achieved in mined blockchains, most notably in the form of ERC20 tokens on Ethereum [3]. The key idea of these blockchains is to create a new cryptocurrency with which to reward people for making settled transactions hard to revert. Unfortunately, this means token issuers do not control transaction finality. If software errors cause transactions history to be reorganized [26, 73], or when the spoils of defrauding people exceed the cost of reorganizing history [74, 97], issuers may be liable for tokens they have already redeemed for real-world money. The Stellar blockchain has two distinguishing properties. First, it natively supports efficient markets between tokens from different issuers. Specifically, anyone can issue a token, the blockchain provides a built-in orderbook for trade between any pair of tokens, and users can issue path payments that atomically trade across several currency pairs while guaranteeing an end-to-end limit price. Second, Stellar introduces a new Byzantine agreement protocol, SCP (Stellar Consensus Protocol), through which token issuers designate specific validator servers to enforce transaction finality. So long as no one compromises an issuer’s validators (and the underlying digital signatures and cryptographic hashes remain secure), the issuer knows exactly which transactions have occurred and avoids the risk of losses from blockchain history reorganization. SCP’s key idea is that most asset issuers benefit from liquid markets and want to facilitate atomic transactions with other assets. Hence, validator administrators configure their servers to agree with other validators on the exact history of all transactions on all assets. A validator v1 can be configured to agree with v2, or v2 can be configured to agree with v1, or both may be configured to agree with each other; in all cases, neither will commit to a transaction history until it knows the other cannot commit to a different history. By transitivity, if v1 cannot disagree with v2 and v2 cannot disagree with v3 (or vice versa), v1 cannot disagree with v3, whether or not v3 represents assets v1 has even heard of. Under the hypothesis that these agreement relationships transitively connect the whole network, SCP guarantees global agreement, making it a global Byzantine agreement protocol with open membership. We call this new connectedness assumption the Internet hypothesis, and note that it holds of both “the Internet” (which everyone understands to mean the single largest transitively connected IP network) and legacy international payments (which are hop-by-hop non-atomic, but leverage a transitively connected, global network of financial institutions). Stellar has been in production use since September, 2015. To keep the blockchain length manageable, the system runs SCP at 5-second intervals—fast by blockchain standards, but far slower than typical applications of Byzantine agreement. Though the primary use has been payments, Stellar has also proven appealing for non-money fungible tokens that benefit from immediate secondary markets (see Section 7.1). The next section discusses related work. Section 3 presents SCP. Section 4 describes our formal verification of SCP. Section 5 describes Stellar’s payment layer. Section 6 relates some of our deployment experience and lessons learned. Section 7 evaluates the system. Section 8 concludes.

Perkenalan

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

Stellar consensus protocol

Stellar consensus protocol

The Stellar consensus protocol (SCP) is a quorum-based Byzantine agreement protocol with open membership. Quorums emerge from the combined local configuration decisions of individual nodes. However, nodes only recognize quorums to which they belong themselves, and only after learning the local configurations of all other quorum members. One benefit of this approach is that SCP inherently tolerates heterogeneous views of what nodes exist. Hence, nodes can join and leave unilaterally with no need for a “view change” protocol to coordinate membership. 3.1 Federated Byzantine agreement The traditional Byzantine agreement problem consists of a closed system of N nodes, some of which are faulty and may behave arbitrarily. Nodes receive input values and exchange messages to decide on an output value among the inputs. A Byzantine agreement protocol is safe when no two wellbehaved nodes output different decisions and the unique decision was a valid input (for some definition of valid agreed

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. upon beforehand). A protocol is live when it guarantees that every honest node eventually outputs a decision. Typically, protocols assume N = 3f + 1 for some integer f > 0, then guarantee safety and some form of liveness so long as at most f nodes are faulty. At some stage in these protocols, nodes vote on proposed values and a proposal receiving 2f + 1 votes, called a quorum of votes, becomes the decision. With N = 3f + 1 nodes, any two quorums of size 2f + 1 overlap in at least f + 1 nodes; even if f of these overlapping nodes are faulty, the two quorums share at least one non-faulty node, preventing contradictory decisions. However, this approach only works if all nodes agree on what constitutes a quorum, which is impossible in SCP where two nodes may not even know of each other’s existence. With SCP, each node v unilaterally declares sets of nodes, called its quorum slices, such that (a) v believes that if all members of a slice agree about the state of the system, then they are right, and (b) v believes that at least one of its slices will be available to provide timely information about the state of the system. We call the resulting system, consisting of nodes and their slices, a Federated Byzantine Agreement (FBA) system. As we will see next, a quorum system emerges from nodes’ slices. Informally, an FBA node’s slices express with whom the node requires agreement. E.g., a node may require agreement with 4 specific organizations, each running 3 nodes; to accommodate downtime, it may set its slices to be all sets consisting of 2 nodes from each organization. If this “requires agreement with” relation transitively relates any two nodes, we get global agreement. Otherwise, we can get divergence, but only between organizations neither of which requires agreement with the other. Given the topology of today’s financial system, we hypothesize that widespread convergence will keep producing a singe ledger history people call “the Stellar network,” much as we speak of the Internet. Quorums arise from slices as follows. Every node specifies its quorum slices in every message it sends. Let S be the set of nodes from which a set of messages originated. A node considers the set of messages to have reached quorum threshold when every member of S has a slice included in S. By construction, such a set S, if unanimous, satisfies the agreement requirements of each of its members. A faulty peer may advertise slices crafted to change what well-behaved nodes consider quorums. For the sake of protocol analysis, we define a quorum in FBA to be a non-empty set S of nodes encompassing at least one quorum slice of each non-faulty member. This abstraction is sound, as any set of messages purporting to represent a unanimous quorum actually does (even if it contains messages from faulty nodes), and it is precise when S contains only well-behaved nodes. In this section, we also assume that nodes’ slices do not change. Nevertheless, our results transfer to the changing-slice case because a system in which slices change is no less safe than a fixed-slice system in which a node’s slices consist of all the slices it ever uses in the changing-slices case (see Theorem 13 in [68]). As explained in Section 4, liveness depends on well-behaved nodes eventually removing unreliable nodes from their slices. Because different nodes have different agreement requirements, FBA precludes a global definition of safety. We say non-faulty nodes v1 and v2 are intertwined when every quorum of v1 intersects every quorum of v2 in at least one non-faulty node. An FBA protocol can ensure agreement only between intertwined nodes; since SCP does so, its fault tolerance for safety is optimal. The Internet hypothesis, underlying Stellar’s design, states that the nodes people care about will be intertwined. We say a set of nodes I is intact if I is a uniformly nonfaulty quorum such that every two members of I are intertwined even if every node outside of I is faulty. Intuitively, then, I should remain impervious to the actions of non-intact nodes. SCP guarantees both non-blocking liveness [93] and safety to intact sets, though nodes themselves do not need to know (and may not be able to know) which sets are intact. Furthermore, the union of two intact sets that intersect is an intact set. Therefore, intact sets define a partition of the well-behaved nodes, where each partition is safe and live (under some conditions), but different partitions may output divergent decisions. 3.1.1 Safety vs. Liveness considerations in FBA With limited exceptions [64], most closed Byzantine agreement protocols are tuned to the equilibrium point at which safety and liveness have the same fault tolerance. In FBA, that means configurations in which, regardless of failures, all intertwined sets are also intact. Given that FBA determines quorums in a decentralized way, it is unlikely that individual slice choices will lead to this equilibrium. Moreover, at least in Stellar, equilibrium is not desirable: the consequences of a safety failure (namely double-spent digital money) are far worse than those of a liveness failure (namely delays in payments that anyway took days before Stellar). People therefore should and do select large quorum slices such that their nodes are more likely to remain intertwined than intact. Further tipping the scales, it is easier to recover from typical liveness failures in an FBA system than in a traditional closed one. In closed systems, all messages must be interpreted with respect to the same set of quorums. Hence, adding and removing nodes to recover from failure requires reaching consensus on a reconfiguration event, which is difficult once consensus is no longer live. By contrast, with FBA, any node can unilaterally adjust its quorum slices at any time. In response to an outage at a systemically important organization, node administrators can adjust their slices to work around the problem, a bit like coordinating responses to BGP catastrophes [63] (though without the constraints of routing over physical network links).

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada 3.1.2 The cascade theorem SCP follows the template of the basic round model [42]; nodes progress through a series of numbered ballots, each attempting three tasks: (1) identify a “safe” value not contradicted by any decision in a previous ballot (often termed preparing the ballot), (2) agree on the safe value, and (3) detect that agreement was successful. However, FBA’s open membership stymies several common techniques, making it impossible to “port” traditional closed protocols to the FBA model by simply changing the definition of quorum. One technique employed by many protocols is rotating through leader nodes in round-robin fashion following timeouts. In a closed system, round-robin leader selection ensures that eventually a unique honest leader ends up coordinating agreement on a single value. Unfortunately, round-robin cannot work in an FBA system with unknown membership. Another common technique that fails with FBA is assuming a particular quorum can convince all nodes. For instance, if everyone recognizes any 2f + 1 nodes as a quorum, then 2f + 1 signatures suffice to prove protocol state to all nodes. Similarly, if a node receives a quorum of identical messages through reliable broadcast [24], the node can assume all nonfaulty nodes will also see a quorum. In FBA, by contrast, a quorum means nothing to nodes outside the quorum. Finally, non-federated systems often employ “backwards” reasoning about safety: if f + 1 nodes are faulty, all safety guarantees are lost. Hence, if node v hears f + 1 nodes all state some fact F, v can assume at least one is telling the truth (and hence that F is true) with no loss of safety. Such reasoning fails in FBA because safety is a property of pairs of nodes, so a node that has lost safety to some peers can always lose safety to more nodes by assuming bad facts. FBA can, however, reason backwards about liveness. Define a v-blocking set as a set of nodes that intersects every slice of v. If a v-blocking set B is unanimously faulty, B can deny node v a quorum and cost it liveness. Hence, if B unanimously states fact F, then v knows that either F is true or v is not intact. However, v still needs to see a full quorum to know that intertwined nodes won’t contradict F, which leads to a final round of communication in SCP and other FBA protocols [47] that is not required in analogous closed-membership protocols. The result is that we have three possible levels of confidence in potential facts: indeterminate, safe to assume among intact nodes (which we will term accepted facts), and safe to assume among intertwined nodes (which we will term confirmed facts). Node v can efficiently determine whether a set B is vblocking by checking whether B intersects all its slices. Interestingly, if nodes always announce the statements they accept and a full quorum accepts a statement, it sets off a cascading process by which statements propagate throughout intact sets. We call the key fact underlying this propagation the cascade theorem, which sates the following: If I is an intact set, Q is a quorum of any member of I, and S is any superset of Q, then either \(S \supseteq I\) or there is a member \(v \in I\) such that \(v \notin S\) and \(I \cap S\) is \(v\)-blocking. Intuitively, were this not the case, the complement of S would contain a quorum that intersects I but not Q, violating quorum intersection. Note that if we start with S = Q and repeatedly expand S to include all nodes it blocks, we obtain a cascading effect until, eventually, S encompasses all of I. 3.2 Protocol description SCP is a partially synchronous consensus protocol [42] consisting of a series of attempts to reach consensus called ballots. Ballots employ timeouts of increasing duration. A ballot-synchronization protocol ensures that nodes stay on the same ballot for increasing periods of time until the ballots are effectively synchronous. Termination is not guaranteed until ballots are synchronous, but two synchronous ballots in which faulty members of well-behaved nodes’ slices do not interfere are sufficient for SCP to terminate. A balloting protocol specifies the actions taken during each ballot. A ballot begins with a prepare phase, in which nodes try to determine a value to propose that does not contradict any previous decision. Then, in a commit phase, nodes try to make a decision on the prepared value. Balloting employs an agreement sub-protocol called federated voting, in which nodes vote on abstract statements that may eventually be confirmed or get stuck. Some statements might be designated contradictory, and the safety guarantee of federated voting is that no two members of an intertwined set confirm contradictory statements. Confirmation of a statement is not guaranteed except for an intact set whose members all vote the same way. However, if a member of an intact set does confirm a statement, federated voting guarantees that all members of the intact set eventually confirm that statement. Hence, taking irreversible steps in response to confirming statements preserves liveness for intact nodes. Nodes initially propose values obtained from a nomination protocol that increases the chances of all members of an intact set proposing the same value, and that eventually converges (though with no way to determine convergence is complete). Nomination combines federated voting with leader selection. Because round-robin is impossible in FBA, nomination uses a probabilistic leader-selection scheme. The cascade theorem plays a crucial role both in ballot synchronization and in avoiding blocked states from which termination is no longer possible. 3.2.1 Balloting SCP nodes proceed through a series of numbered ballots, employing federated voting to agree on statements about which values are or are not decided in which ballots. If asynchrony or faulty behavior prevents reaching a decision in ballot n, nodes time out and try again in ballot n + 1.

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. Recall federated voting might not terminate. Hence, some statements about ballots can get stuck in a permanently indeterminate state where nodes can never determine if they are still in progress or stuck. Because nodes cannot rule out the possibility of indeterminate statements later proving true, they must never attempt federated voting on new statements contradicting indeterminate ones. In each ballot n, nodes use federated voting on two types of statement: • prepare ⟨n,x⟩– states that no value other than x was or will ever be decided in any ballot \(\leq n\). • commit \(\langle n, x \rangle\) – states \(x\) is decided in ballot \(n\). Importantly, note that prepare \(\langle n, x \rangle\) contradicts commit \(\langle n', x' \rangle\) when \(n \geq n'\) and \(x \neq x'\). A node starts ballot n by attempting federated voting on a statement prepare ⟨n,x⟩. If any previous prepare statement was successfully confirmed through federated voting, the node chooses x from the confirmed prepare of the highest ballot. Otherwise, the node sets x to the output of the nomination protocol described in the next subsection. If and only if a node successfully confirms prepare ⟨n,x⟩ in ballot n, it attempts federated voting on commit ⟨n,x⟩. If that succeeds, it means SCP has decided, so the node outputs the value from the confirmed commit statement. Consider an intertwined set S. Since at most one value can be confirmed prepared by members of S in a given ballot, no two different values may be confirmed committed by members of S in a given ballot. Moreover, if commit ⟨n,x⟩ is confirmed, then prepare ⟨n,x⟩was confirmed too; since prepare ⟨n,x⟩contradicts any earlier commit for a different value, by the agreement guarantees of federated voting we get that no different value may be decided in an earlier ballot by members of S. By induction on ballot numbers, we therefore get that SCP is safe. For liveness, consider an intact set I and a long enough synchronous ballot n. If faulty nodes appearing in the slices of well-behaved nodes do not interfere in n, then by ballot n + 1 all members of I have confirmed the same set P of prepare statements. If P = ∅and ballot n was long enough, the nomination protocol will have converged on some value x. Otherwise, let x be the value from the prepare with the highest ballot in P. Either way, I will uniformly attempt federated voting on prepare ⟨n + 1,x⟩in the next ballot. Therefore, if n + 1 is also synchronous, a decision for x inevitably follows. 3.2.2 Nomination Nomination entails federated voting on statements: • nominate x – states x is a valid decision candidate. Nodes may vote to nominate multiple values—different nominate statements are not contradictory. However, once a node confirms any nominate statement, it stops voting to nominate new values. Federated voting still allows a node to confirm new nominate statements it didn’t vote for, which vote-or-accept a from quorum accept a from quorum a is valid accept a from blocking set uncommitted voted a accepted a confirmed a voted ¬a Figure 1. Stages of federated voting allows members of an intact set to confirm one another’s nominated values while still withholding new votes. The (evolving) result of nomination is a deterministic combination of all values in confirmed nominate statements. If x represents a set of transactions, nodes can take the union of sets, the largest set, or the one with the highest hash, so long as all nodes do the same. Because nodes withhold new votes after confirming one nominate statement, the set of confirmed statements can contain only finitely many values. The fact that confirmed statements reliably spread through intact sets means intact nodes eventually converge on the same set of nominated values and hence nomination result, though at an unknown point arbitrarily late in the protocol. Nodes employ federated leader selection to reduce the number of different values in nominate statements. Only a leader who has not already voted for a nominate statement may introduce a new x. Other nodes wait to hear from leaders and just copy their leaders’ (valid) nominate votes. To accommodate failure, the set of leaders keeps growing as timeouts occur, though in practice only a few nodes introduce new values of x. 3.2.3 Federated voting Federated voting employs a three-phase protocol shown in Figure 1. Nodes try to agree on abstract statements by first voting, then accepting, and finally confirming statements. A node v may vote for any valid statement a that does not contradict its other outstanding votes and accepted statements. It does so by broadcasting a signed vote message. v then accepts a if a is consistent with other accepted statements and either (case 1)v is a member of a quorum in which each node either votes for a or accepts a, or (case 2) even if v didn’t vote for a, a v-blocking set accepts a. In case 2, v may have previously cast votes contradicting a, which have now been overruled. v is allowed to forget about overruled votes and pretend it never cast them because ifv is intact, it knows overruled votes cannot complete a quorum through case 1. v broadcasts that it accepts a, then confirms a when it is in a quorum that unanimously accepts a. Figure 2 shows the effect of v-blocking sets and the cascade theorem during federated voting. Two intertwined nodes cannot confirm contradictory statements, as the two required quorums would have to share a

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada 3 4 2 1 5 7

Stellar protokol konsensus

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

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

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

Vote X

Vote X

Vote Y (a) 3 4 2 1 5 7 6 Vote X Vote X Vote X Vote Y Vote X Vote Y Vote Y (b) 3 4 2 1 5 7 6 Accept X Vote X Accept X Vote Y Accept X Vote Y Vote Y (c) 3 4 2 1 5 7 6 Accept X Accept X Accept X Vote Y Accept X Accept X Vote Y (d) 3 4 2 1 5 7 6 Accept X Vote X Accept X Accept X Accept X Accept X Accept X (e) Figure 2. Cascade effect in federated voting. Each node has one quorum slice indicated by arrows to members of the slice. (a) Contradictory statements X and Y are introduced. (b) Nodes vote for valid statements. (c) Node 1 accepts X after its quorum {1, 2, 3, 4} unanimously votes for X. (d) Nodes 1, 2, 3, and 4 all accept X; set {1} is 5-blocking, so node 5 accepts X, overruling its previous vote for Y. (e) Set {5} is 6- and 7-blocking, so 6 and 7 both accept X. non-faulty node that could not accept contradictory statements. Confirmation of a statement is not guaranteed: in case of a split vote, both statements may be permanently stuck waiting for a quorum in the voting phase. However, if a node in an intact set I confirms a statement, the cascade theorem and accept case 2 ensure that all of I will eventually confirm that statement. 3.2.4 Ballot synchronization If nodes are unable to confirm a commit statement for the current ballot, they give up after a timeout. The timeout gets longer with each ballot so as to adjust to arbitrary bounds on network delay. However, timeouts alone are not sufficient to synchronize ballots of nodes that did not start at the same time or got desynchronized for other reasons. To achieve synchronization, nodes start the timer only once they are part of a quorum that is all at the current (or a later) ballot n. This slows down nodes that started early and ensures that no member of an intact set stays too far ahead of the group. Moreover, if a node v ever notices a v-blocking set at a later ballot, it immediately skips to the lowest ballot such that this is no longer the case, regardless of any timers. The cascade theorem then ensures that all stragglers catch up. The result is that ballots are roughly synchronized throughout an intact set once the system becomes synchronous. 3.2.5 Federated leader selection Leader selection allows each node to pick leaders in such a way that nodes generally only choose one or a small number of leaders. To accommodate leader failure, leader selection proceeds through rounds. If leaders of the current round appear not to be fulfilling their responsibilities, then after a certain timeout period nodes proceed to the next round to expand the set of leaders that they follow. Each round employs two unique cryptographic hash functions, H0 and H1, that output integers in the range [0,hmax). For instance, Stellar uses Hi(m) = SHA256(i∥b∥r ∥m), where b is the overall SCP instance (block or ledger number), r is the leader selection round number, and hmax = 2256. Within a round, we define the priority of node v as: priority(v) = H1(v) One strawman would be for each node to choose as leader the nodev with the highest priority(v). This approach works well with nearly identical quorum slices, but doesn’t properly capture the importance of nodes in imbalanced configurations. For instance, if Europe and China each contribute 3 nodes to every quorum, but China runs 1,000 nodes and Europe 4, then China will have the highest-priority node 99.6% of the time. We therefore introduce a notion of slice weight, where \(\text{weight}(u,v) \in [0, 1]\) is the fraction of node \(u\)'s quorum slices containing node \(v\). When node \(u\) is selecting a new leader, it only considers neighbors, defined as follows:

\[\text{neighbors}(u) = \{ v \mid H_0(v) < h_{\max} \cdot \text{weight}(u,v) \}\]

A node \(u\) then starts with an empty set of leaders, and at each round adds to it the node \(v\) in \(\text{neighbors}(u)\) with the highest \(\text{priority}(v)\). If the neighbors set is empty in any round, \(u\) instead adds the node \(v\) with lowest value of \(H_0(v)/\text{weight}(u,v)\).

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

Formal verification of SCP

Formal verification of SCP

To eliminate design errors, we formally verified SCP’s safety and liveness properties (see [65]). Specifically, we verified that intertwined nodes never disagree and that, under conditions discussed below, every member of an intact set eventually decides. Interestingly, verification revealed that the conditions under which SCP guarantees liveness are subtle, and stronger than initially thought [68]: as discussed below, malicious nodes that manipulate timing without otherwise deviating from the protocol may need to be manually evicted from quorum slices.

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. To ensure that the properties proved hold in all possible FBA configurations and executions, we consider an arbitrary number of nodes with arbitrary local configurations. This includes scenarios with disjoint intact sets, as well as potentially infinitely long executions. The drawback is that we face the challenging problem of verifying a parameterized infinite-state system. To keep verification tractable, we modeled SCP in firstorder logic (FOL) using Ivy [69] and the methodology of [82]. The verification process consists of manually providing inductive conjectures that are then automatically checked by Ivy. The FOL model of SCP abstracts over some aspects of FBA systems that are difficult to handle in FOL (e.g., the cascade theorem is taken as an axiom), so we verify the soundness of the abstraction using Isabelle/HOL [75]. After expressing the verification problem in FOL, we verify safety by providing an inductive invariant. The inductive invariant consists of a dozen one-line conjectures for about 150 lines of protocol specification. We then specify SCP’s liveness properties in Ivy’s Linear Temporal Logic and use the liveness to safety reduction of [80, 81] to reduce the liveness verification problem to the problem of finding an inductive invariant. While SCP’s safety is relatively straightforward to prove, SCP’s liveness argument is much more intricate and consists of around 150 single-line invariants. Proving liveness required a precise formalization of the assumptions under which SCP ensures termination. We initially thought an intact set I would always terminate if all members removed faulty nodes from their slices [68]. However, this turned out to be insufficient: a well-behaved (but not intact) node in a quorum of a member of I can, under the influence of faulty nodes, prevent termination by completing a quorum just before the end of a ballot, thereby causing members of I to chose different values of x in the next ballot. We must therefore additionally assume that, informally, each node in a quorum of a member of I eventually either becomes timely or doesn’t send messages at all for a sufficient period. In practice, this means members of I may need to adjust their slices until the condition holds. This issue is not inherent to FBA systems: Losa et al. [47] present a protocol whose liveness depends on the strictly weaker assumptions of just eventual synchrony and eventual leaderelection, without the need to remove faulty nodes from slices.

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.

Payment network

Payment network

This section describes Stellar’s payment network, implemented as a replicated state machine [88] on top of SCP. 5.1 Ledger model Stellar’s ledger is designed around an account abstraction (in contrast to the more coin-centric unspent transaction output or UTXO model of Bitcoin). The ledger contents consists of a set of ledger entries of four distinct types: accounts, trustlines, offers, and account data. Accounts are the principals that own and issue assets. Each account is named by a public key. By default, the corresponding private key can sign transactions for the account. However, accounts can be reconfigured to add other signers and deauthorize the key that names the account, with a “multisig” option to require multiple signers. Each account also contains: a sequence number (included in transactions to prevent replay), some flags, and a balance in a “native” pre-mined cryptocurrency called XLM, intended to mitigate some denial-of-service attacks and facilitate market making as a neutral currency. Trustlines track the ownership of issued assets, which are named by a pair consisting of the issuing account and a short asset code (e.g., “USD” or “EUR”). Each trustline specifies an account, an asset, the account’s balance in that asset, a limit above which the balance cannot rise, and some flags. An account must explicitly consent to holding an asset by creating a trustline, preventing spammers from saddling accounts with unwanted assets. Know-your-customer (KYC) regulations require many financial institutions to know whose deposits they are holding, for instance by checking photo ID. To comply, issuers can set an optional auth_reqired flag on their accounts, restricting ownership of the assets they issue to authorized accounts. To grant such authorization, the issuer sets an authorized flag on customers’ trustlines. Offers correspond to an account’s willingness to trade up to a certain amount of a particular asset for another at a given price on the order book; they are automatically matched and filled when buy/sell prices cross. Finally, account data consists of account, key, value triples, allowing account holders to publish small metadata values. To prevent ledger spam, there is a minimum XLM balance, called the reserve. An account’s reserve increases with each associated ledger entry and decreases when the ledger entry disappears (e.g., when an order is filled or canceled, or when a trustline is deleted). Currently the reserve grows by 0.5 XLM (∼$0.03) per ledger entry. Regardless of the reserve, it is possible to reclaim the entire value of an account by deleting it with an AccountMerge operation. A ledger header, shown in Figure 3, stores global attributes: a ledger number, parameters such as the reserve balance per ledger entry, a hash of the previous ledger header (actually several hashes forming a skiplist), the SCP output including a hash of new transactions applied at this ledger, a hash of the results of those transactions (e.g., success or failure for each), and a snapshot hash of all ledger entries. Because the snapshot hash includes all ledger contents, validators need not retain history to validate transactions. However, to scale to hundreds of millions of anticipated accounts, we cannot rehash all ledger entry tables on every ledger close. Moreover, it is not practical to transfer a ledger

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada ledger # = 4 H(prev hdr) SCP output H∗(results) H∗(snapshot) ... header ledger # = 5 H(prev hdr) SCP output H∗(results) H∗(snapshot) ... header . . . Figure 3. Ledger contents. H is SHA-256, while H ∗represents hierarchical or recursive application of H. SCP output also depends the previous header hash. CreateAccount Create and fund new account ledger entry AccountMerge Delete account ledger entry SetOptions Change account flags and signers Payment Pay specific quantity of asset to dest. acct. PathPayment Like Payment, but pay in different asset (up to limit); specify up to 5 intermediary assets ManageOffer Create/delete/change offer ledger entry, -PassiveOffer with passive variant to allow zero spread ManageData Create/delete/change acct. data ledger entry ChangeTrust Create/delete/change trustline AllowTrust Set or clear authorized flag on trustline BumpSequence Increase seq. number on account Figure 4. Principal ledger operations of that size every time a node has been disconnected from the network for too long. The snapshot hash is therefore designed to optimize both hashing and state reconciliation. Specifically, the snapshot stratifies ledger entries by time of last modification in a set of exponentially-sized containers called buckets. The collection of buckets is called the bucket list, and bears some similarity to log-structured merge-trees (LSM-trees) [77]. The bucket list is not read during transaction processing (see Section 5.4). Hence, certain design aspects of LSM-trees can be relaxed. In particular, random access by key is not required, and buckets are only ever read sequentially as part of merging levels. Hashing the bucket list is done by hashing each bucket as it is merged and calculating a new cumulative hash of the bucket hashes (a small, fixed index of reference hashes) at each ledger close. Reconciling the bucket list after disconnection requires downloading only buckets that differ. 5.2 Transaction model A transaction consists of a source account, validity criteria, a memo, and a list of one or more operations. Figure 4 lists available operations. Each operation has a source account, which defaults to that of the overall transaction. A transaction must be signed by keys corresponding to every source account in an operation. Multisig accounts can require higher signing weight for some operations (such as SetOptions) and lower for others (such as AllowTrust). Transactions are atomic—if any operation fails, none of them execute. This simplifies multi-way deals. Suppose an issuer creates an asset to represent land deeds, and user A wants to exchange a small land parcel plus $10,000 for a bigger land parcel owned by B. The two users can both sign a single transaction containing three operations: two land payments and one dollar payment. A transaction’s main validity criterion is its sequence number, which must be one greater than that of the transaction’s source account ledger entry. Executing a valid transaction (successfully or not) increments the sequence number, preventing replay. Initial sequence numbers contain the ledger number in the high bits to prevent replay even after deleting and re-creating an account. The other validity criterion is an optional limit on when a transaction can execute. Returning to the land and dollar swap above, if A signs the transaction before B, A may not want B to sit on the transaction for a year before submitting it, and so could place a time limit invalidating the transaction after a few days. Multisig accounts can also be configured to give signing weight to the revelation of a hash pre-image, which, combined with time bounds, permits atomic crosschain trading [1]. A transaction’s source account pays a trivial fee in XLM, 10−5 XLM unless there is congestion. Under congestion, the cost of operations is set by Dutch auction. Validators are not compensated by fees because validators are analogous to Bitcoin full nodes, not miners. Rather than destroy XLM, fees are recycled and distributed proportionally by vote of existing XLM holders, which in retrospect might or might not have been worth the complexity. 5.3 Consensus values For each ledger, Stellar uses SCP to agree on a data structure with three fields: a transaction set hash (including a hash of the previous ledger header), a close time, and upgrades. When multiple values are confirmed nominated, Stellar takes the transaction set with the most operations (breaking ties by total fees, then transaction set hash), the union of all upgrades, and the highest close time. A close time is only valid if it is between the last ledger’s close time and the present, so nodes do not nominate invalid times. Upgrades adjust global parameters such as the reserve balance, minimum operation fee, and protocol version. When combined during nomination, higher fees and protocol version numbers supersede lower ones. Upgrades effect governance through a federated-voting tussle space [34], neither egalitarian nor centralized. Each validator is configured as either governing or non-governing (the default), according to whether its operator wants to participate in governance. Governing validators consider three kinds of upgrade: desired, valid, and invalid (anything the validator does not

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. validator core horizon FS DB DB submit client client other validators Figure 5. Stellar validator architecture know how to implement). Desired upgrades are configured to trigger at a specific time, intended to be coordinated among operators. Governing nodes always vote to nominate desired upgrades, accept but do not vote to nominate valid upgrades (i.e., go along with a blocking quorum), and never vote for or accept invalid upgrades. Non-governing validators echo any vote they see for a valid upgrade, essentially delegating the decision on what upgrades are desired to those who opt for a governance role. 5.4 Implementation Figure 5 shows Stellar’s validator architecture. A daemon called stellar-core (∼92k lines of C++, not counting thirdparty libraries) implements the SCP protocol and the replicated state machine. Producing values for SCP requires reducing large numbers of ledger entries to small cryptographic hashes. By contrast, transaction validation and execution requires looking up account state and order matching at the best price. To serve both functions efficiently, stellar-core keeps two representations of the ledger: an external representation containing the bucket list, stored as binary files that can be efficiently updated and incrementally rehashed, and an internal representation in a SQL database (PostgreSQL for production nodes). Stellar-core creates a write-only history archive containing each transaction set that was confirmed and snapshots of buckets. The archive lets new nodes bootstrap themselves when joining the network. It also provides a record of ledger history—there needs to be some place one can look up a transaction from two years ago. Since history is append-only and accessed infrequently, it can be kept in cheap places such as Amazon Glacier or any service allowing one to store and retrieve flat files. Validator hosts typically do not host their own archives so as to avoid any impact on validation performance from serving history. To keep stellar-core simple, it is not intended to be used directly by applications and exposes only a very narrow interface for the submission of new transactions. To support clients, most validators run a daemon called horizon (∼18k lines of Go) that provides an HTTP interface for submitting and learning of transactions. horizon has read-only access to stellar-core’s SQL database, minimizing the risk of horizon destabilizing stellar-core. Features such as payment path finding are implemented entirely in horizon and can be upgraded unilaterally without coordinating with other validators. Several optional higher-layer daemons are clients to horizon, rounding out the ecosystem. A bridge server facilitates integration of Stellar with existing systems, e.g., posting notifications of all payments received by a specific account. A compliance server provides hooks for financial institutions to exchange and approve of sender and beneficiary information on payments, for compliance with sanctions lists. Finally, a federation server implements a human-readable naming system for accounts. 6 Deployment experience Stellar grew for several years into a state with a moderate number of reasonably-reliable full node operators. However, nodes’ configurations were such that liveness (though not safety) depended on us, the Stellar Development Foundation (SDF); had SDF suddenly disappeared, other node operators would have needed to intervene and manually remove us from quorum slices for the network to continue. While we and many others want to reduce SDF’s systemic importance, this goal received increasing priority after researchers [58] quantified and publicized the network’s centralization without differentiating the risks to safety and liveness. A number of operators reacted with active configuration adjustments, primarily increasing the size of their quorum slices in an effort to dilute SDF’s importance; ironically this only increased the risk to liveness. Two problems exacerbated the situation. First, a popular third-party Stellar monitoring tool [5] was systematically overestimating validator uptime by not actually verifying that stellar-core was running; this lead people to include unreliable nodes in their quorum slices. Second, a bug in stellar-core meant once a validator moved to the next ledger, it didn’t adequately help remaining nodes complete the previous ledger in the event of lost messages. As a result, the network experienced 67 minutes of downtime and required manual coordination by validator administrators to restart. Worse, while attempting to restart the network, simultaneous rushed reconfigurations on multiple nodes resulted in a collective misconfiguration that allowed some nodes to diverge, requiring a manual shutdown of those nodes and resubmission of the transactions accepted during the divergence. Luckily, this divergence was caught and corrected quickly and contained no conflicting transactions, but the risk of the network failing to enjoy quorum intersection— splitting while continuing to accept potentially conflicting transactions, simply due to misconfiguration—was made very concrete by this incident. Reviewing these experiences led to two major conclusions and corresponding corrective actions.

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Critical, 100% 51% 51% High, 67% 51% Medium, 67% 51% Low, 67% 51% 51% ... ... ... 51% ... 51% Figure 6. Validator quality hierarchy. Highest quality nodes require the highest threshold of 100%, whereas lower qualities are configured to 67% threshold. Nodes within a single organization require a simple 51% majority. 6.1 Configuration complexity and fragility Stellar expresses quorum slices as nested quorum sets consisting of n entries and a threshold k where any set of k entries constitutes a quorum slice. Each of the n entries then is either a validator public key or, recursively, another quorum set. While flexible and compact, we realized nested quorum sets simultaneously afforded node operators too much flexibility and too little guidance: it was easy to write unsafe (or even nonsensical) configurations. The criteria for grouping nodes into sets, for organizing subsets into a hierarchy, and for choosing thresholds were all insufficiently clear and contributed to operational failures. It wasn’t clear whether to treat a “level” in the nested-set hierarchy as a level of trust, or an organization, or both; many configurations in the field mixed these concepts, in addition to specifying dangerous or meaningless thresholds. We therefore added a simpler configuration mechanism that separates two aspects of nested quorum sets: grouping nodes together by organization, and labeling each organization with a simple trust classification (low, medium, high, or critical). Organizations at and above high are required to publish history archives. The new system synthesizes nestedquorum sets in which each organization is represented as a 51% threshold set, and organizations are grouped into sets with 67% or 100% thresholds (depending on group quality). Each group is a single entry in the next (higher quality) group, as illustrated in Figure 6. This simplified model reduces the likelihood of misconfiguration, both in terms of the structure of the synthesized nested sets and the thresholds chosen for each set. 6.2 Proactive detection of misconfiguration Second, we realized that detecting collective misconfiguration by waiting to observe its negative effects is too late. Especially with respect to misconfigurations that can diverge—a more serious failure mode than halting—the network needs to be able to detect misconfiguration immediately so that operators can revert it before any divergence actually hapens. To address this need, we built a mechanism into the validator software that continuously gathers the collective configuration state of all the peers in the node’s transitive closure and detects the potential for divergence—i.e., disjoint quorums—within that collective configuration. 6.2.1 Checking quorum intersection While gathering quorum slices is easy, finding disjoint quorums among them is co-NP-hard [62]. However, we adopted a set of algorithmic heuristics and case-elimination rules proposed by Lachowski [62] that check typical instances of the problem several orders of magnitude faster than the worst-case cost. Practically speaking, the current network’s quorum slice transitive closures are on the order of 20–30 nodes and, with Lachowski’s optimizations, typically check in a matter of seconds on a single CPU. Should the need arise to enhance performance, we may parallelize the search. 6.2.2 Checking risky configurations Detecting that the network admits disjoint quorums is a step in the right direction, but flags the danger uncomfortably late for such a critical issue. Ideally, we want node operators to receive warnings when the network’s collective configuration is merely approaching a risky state. We therefore extended the quorum-intersection checker to detect a condition we call criticality: when the current collective configuration is one misconfiguration away from a state that admits disjoint quorums. To detect criticality, the checker repeatedly replaces each organization’s configuration with a simulated worst-case misconfiguration, then re-runs the inner quorum intersection checker on the result. If any such critical misconfiguration exists one step away from the current state, the software issues a warning and reports the organization posing a misconfiguration risk. These changes give the community of operators two layers of notice and guidance to insulate against the worst forms of collective misconfiguration.

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.

Evaluation

Evaluation

To understand Stellar’s suitablity as a global payment and trading network, we evaluated the state of the public network and ran controlled experiments on a private experimental network. We focused on the following questions: • What does the production network topology look like? How many messages are broadcast on average, and how does SCP experience timeouts? • Do consensus and ledger update latencies remain independent of the number of accounts?

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

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. • How are latencies affected by increasing (a) transactions per second (and, consequently, transactions per ledger), and (b) the number of validator nodes? • What is the cost of running a node in terms of CPU, memory, and network bandwidth? Payment networks have low transaction rates compared to other types of distributed system. The leading blockchains, Bitcoin and Ethereum, confirm up to 15 transactions/second, less than Stellar. Moreover, these systems take minutes to an hour to confirm a transaction securely, because proof-ofwork requires waiting for several blocks to be mined. The non-blockchain SWIFT network averaged only 420 transactions per second on its peak day [14]. We therefore chose to compare our measurements against the 5-second target ledger interval, a more aggressive target. Our results show that latencies are comfortably below this limit even with several unimplemented optimizations still in the pipeline. 7.1 Anchors The top traded assets by volume include currency (e.g., 3 USD anchors, 2 CNY), a Bitcoin anchor, a real-estate-backed security token [92], and an in-app currency [8]. Different anchors have different policies. For instance, one USD anchor, Stronghold, sets auth_reqired and requires a know-yourcustomer (KYC) process for every account that holds their assets. Another, AnchorUSD, let’s anyone receive and trade their USD (making it literally possible to send $0.50 to Mexico in 5 seconds with a fee of $0.000001). However, AnchorUSD does require KYC and fees to purchase or redeem their USD with conventional wire transfers. In the Philippines, where bank regulations are laxer for incoming payments, coins.ph supports cashing out PHP at any ATM machine [36]. In addition to the aforementioned security token and in-app currency, there’s a range of non-currency tokens ranging from commercial bonds [22] and carbon credits [85, 96] to more esoteric assets such as a token incentivizing collaborative car repossession [35]. 7.2 Public network As of this writing, there are 126 active full nodes, 66 of which participate in consensus by signing vote messages. Figure 7 (generated by [5]) visualizes the network, with a line between two nodes if one appears in the other’s quorum slices and a darker blue line to show bi-directional dependence. At the center is a cluster of 17 de facto “tier-one validators” run by SDF, SatoshiPay, LOBSTR, COINQVEST, and Keybase. Four months ago, before the events of Section 6, there were 15 systemically important nodes: 3 from seemingly tier-one organizations and several random singletons. The graph also looked much less regular. Hence, the new configuration mechanism and/or better operator decisions seem to be contributing to a healthier network topology. Without great financial resources (and corresponding shareholder Figure 7. Quorum slice map obligations), it would have been difficult to recruit 5 tier one organizations from the start, however. This suggests quorum slices play a useful role in network bootstraping: anyone can join with the goal of becoming an important player because there are no gatekeepers to pairwise agreement. There are currently over 3.3M accounts in the ledger. Over a recent 24-hour period, Stellar averaged 4.5 transactions and 15.7 operations per second. Reviewing recent ledgers, most transactions seem to have a single operation, while every few ledgers we see transactions containing many operations that appear to come from market makers managing offers. The mean times to achieve consensus and update the ledger were 1061 ms and 46 ms, respectively. The 99th percentiles were 2252 ms and 142 ms (the former reflecting a 1-second timeout in nomination leader selection). Note SCP’s performance is mostly independent of transactions per second, since SCP agrees on a hash of arbitrarily many transactions. Bottlenecks are more likely to arise from propagating candidate transactions during nomination, executing and validating transactions, and merging buckets. We have not yet needed to parallelize stellar-core’s transaction processing over multiple CPU cores or disk drives. We also evaluated the number of SCP messages broadcast on the production network. In the normal case with a single leader elected to nominate a value, we expect seven logical messages to be broadcast: two messages to vote and accept a nominate statement, two messages to accept and confirm a prepare statement, two message to accept and confirm a commit statement, and finally, an externalize message (sent after committing a new ledger to disk to help stragglers catch up). The implementation combines confirm commit and externalize messages as an optimization, since it is safe to externalize a value after it is committed. We then analyze metrics gathered on a production Stellar validator. Over the course of 68 hours, 1.3 messages/second were emitted, averaging to 6-7 messages per ledger. We note that the total

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Percentile Number of Timeouts Nomination Balloting 75% 0 0 99% 1 0 Max 4 1 Figure 8. Timeouts per ledger over 68 hours count of messages broadcast by validators is larger, since in addition to federated voting messages, nodes also broadcast any transactions they learn about. Figure 8 shows the timeouts experienced by a production validator over a period of 68 hours. Nomination timeouts are a measure of the (in)effectiveness of the leader election function, while ballot timeouts depend heavily on the network and potential message delays. The timeouts are consistent with the number of messages emitted: six messages in the best case scenario, and at least seven messages if an additional nomination round is needed. 7.3 Controlled experiments We ran controlled experiments in containers packed onto Amazon EC2 c5d.9xlarge instances with 72 GiB of RAM, 900 GB of NVMe SSD, and 36 vCPUs. Each instance was in the same EC2 region and had a fixed bandwidth of 10 Gbps. We used SQLite as a store. (Stellar also supports PostgreSQL, but that has asynchronous tasks that inject noise into measurements.) Stellar provides a built-in runtime query, generateload, that allows generating synthetic load at a specific target transaction/second rate. Although Stellar supports various trading features, such as order book and cross-asset path payments, we focused on simple payments. Confirming transactions consists of multiple steps, so we recorded the measurements for each of the following: • Nomination: time from nomination to first prepare • Balloting: time from first prepare to confirming a ballot committed • Ledger update: time to apply consensus value • Transaction count: confirmed transactions per ledger Each of our experiments was defined by three parameters: the number of account entries in the ledger, the amount of load (in the form of XLM payments) submitted per second, and the number of validators. We configured every validator to know about every other validator (a worst-case scenario for SCP), with quorum slices set to any simple majority of nodes (so as to maximize the number of different quorums). Baseline Our baseline experiment measured Stellar with 100,000 accounts, four validators, and the load generation rate of 100 transactions/second. We observed 507 transactions per ledger on average, with standard deviation of 49 (9.7%). Note that no transactions were dropped; the slight 105 106 107 0 500 1,000 1,500 2,000 Accounts Latency [ms] Ledger update Balloting Nomination Figure 9. Latency as number of accounts increases variance is due to scheduling limitations of the load generator. We observed that the number of transactions per ledger was consistent with our load generation rate, given ledger closing every 5 seconds. Nomination, balloting, and ledger update showed mean latencies of 82.53 ms, 95.96 ms, and 174.08 ms, respectively. We observed that nomination latency 99th percentile is consistently under 61ms, with occasional spikes of roughly 1 second, corresponding to the first step in the timeout function of leader selection. Given the baseline performance, we looked at the effects of varying each of the test setup parameters. Accounts The data in Figure 9 suggests that Stellar scales well as the number of accounts increases. Generation of test accounts became a lengthy process, as bucket creation and merging prevented us from simply populating the database with accounts directly via SQL. Therefore, we conducted our experiments for up to 50,000,000 accounts. While there is minimal impact on consensus and ledger update latencies, we note that increasing accounts creates an overhead of merging buckets, which get larger. Transaction rate Transaction rate impacts the amount of traffic multicast among validators, the number of transactions included in each ledger, and the size of the top level buckets. To understand the effects of increasing transaction load, we ran an experiment with 100,000 accounts and 4 validators. Figure 10 shows slow growth in the consensus latency, while the majority of time was spent updating the ledger. Not surprisingly, as the transaction set increases in size, it takes longer to commit it to the database. We also note that ledger update latency is heavily implementation-dependent, and is affected by the choice of the database. Validator nodes To see how increasing the number of tierone validators impacts performance, we ran experiments with 100,000 accounts, 100 transactions/second, and a varying number of validators from 4 to 43. All validators appeared in all validators’ quorum slices; smaller quorum slices would have a lesser impact on performance.

SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada Lokhava et al. 100 150 200 250 300 350 0 500 1,000 1,500 2,000 Load [transactions/second] Latency [ms] Ledger update Balloting Nomination Figure 10. Latency as transaction load increases 10 20 30 40 0 500 1,000 1,500 2,000 Validators Latency [ms] Ledger update Balloting Nomination Figure 11. Latency as number of nodes increases Changing the number of validating nodes on the network impacts the number of SCP messages exchanged as well as the number of potential values during nomination. Figure 11 shows nomination time growing at a relatively small rate. While the data suggests that balloting is the bottleneck, we believe many scaling issues can be addressed by improving Stellar’s overlay network to optimize network traffic. As expected, ledger update latency remained independent of the number of nodes. Close rate Lastly, we wanted to measure Stellar’s end-toend performance by measuring how often ledgers are confirmed and whether Stellar meets its 5-second target without dropping any transactions. We observed average ledger close times of 5.03 s, 5.10 s, and 5.15 s as we increased account entries, transaction rate, and number of nodes, respectively. The results suggest that Stellar can consistently close ledgers under high load. 7.4 Running a validator One of the important features of Stellar is the low cost of running a validator, as anchors should run (or contract with) validators to enforce finality. SDF runs 3 production validators, all on c5.large AWS instances, which have two cores, 4 GiB of RAM and Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz processors. Inspecting resource usage on one of these machines, we observed the Stellar process using around 7% of CPU and 300 MiB of memory. In terms of network traffic, with 28 connections to peers and a quorum size of 34, the incoming and outgoing rates were 2.78 Mbit/s and 2.56 Mbit/s, respectively. Hardware required to run such a process is inexpensive. In our case, the cost is $0.054/hour or about $40/month. 7.5 Future work These experiments suggest Stellar can easily scale 1–2 orders of magnitude beyond today’s network usage. Because the performance demands have been so modest to date, Stellar leaves room for many straight-forward optimizations using well-known techniques. For example, transactions and SCP messages are broadcast by validators using a naïve flooding protocol, but should ideally use more efficient, structured peer-to-peer multicast [30]. Additionally, database-heavy ledger update time can be improved through standard batching and prefetching techniques.

Evaluasi

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

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

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

Conclusion

Conclusion

International payments are expensive and take days. Fund custody passes through multiple financial institutions including correspondent banks and money transfer services. Because each hop must be fully trusted, it is difficult for new entrants to gain market share and compete. Stellar shows how to send money around the world cheaply in seconds. The key innovation is a new open-membership Byzantine agreement protocol, SCP, that leverages the peer-to-peer structure of the financial network to achieve global consensus under a novel Internet hypothesis. SCP lets Stellar atomically commit irreversible transactions across arbitrary participants who don’t know about or trust each other. That in turn guarantees new entrants access to the same markets as established players, makes it secure to get the best available exchange rates even from untrusted market makers, and dramatically reduces payment latency. Acknowledgments Stellar would not be where it is today without the early leadership of Joyce Kim or the tremendous contributions of Scott Fleckenstein and Bartek Nowotarski in building and maintaining horizon, the Stellar SDK, and other key pieces of the Stellar ecosystem. We also thank Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, the anonymous reviewers, and our shepherd Justine Sherry for their helpful comments on earlier drafts. Disclaimer Professor Mazières’s contribution to this publication was as a paid consultant, and was not part of his Stanford University duties or responsibilities.

Fast and secure global payments with Stellar SOSP ’19, October 27–30, 2019, Huntsville, ON, Canada

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