Протокол консенсуса Stellar

Por David Mazières · 2015

Resumo

Os pagamentos internacionais são lentos e caros, em parte devido ao roteamento de pagamentos multi-hop através de plataformas heterogêneas. sistemas bancários. Stellar é uma nova rede global de pagamentos que pode transferir dinheiro digital diretamente para qualquer lugar do mundo em segundos. A principal inovação é uma transação segura mecanismo através de intermediários não confiáveis, usando um novo Protocolo de acordo bizantino denominado SCP. Com o SCP, cada instituição especifica outras instituições com as quais permanecer de acordo; através da interconectividade global do sistema financeiro, toda a rede concorda então com a energia atômica transações abrangendo instituições arbitrárias, sem risco de solvência ou de taxa de câmbio de emissores intermediários de ativos ou formadores de mercado. Apresentamos o modelo, protocolo e verificação formal; descrever a rede de pagamento Stellar; e finalmente avaliar Stellar empiricamente através de benchmarks e nossa experiência com vários anos de uso em produção. Conceitos de CCS • Segurança e privacidade →Distribuído segurança de sistemas; • Organização de sistemas informáticos → Arquiteturas ponto a ponto; • Sistemas de informação → Transferência eletrônica de fundos. Palavras-chave blockchain, BFT, quóruns, pagamentos Formato de referência ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pagamentos globais rápidos e seguros com Stellar. No SOSP '19: Simpósio sobre Princípios de Sistemas Operacionais, 27 a 30 de outubro, 2019, Huntsville, ON, Canadá. ACM, Nova York, NY, EUA, 17 páginas. https://doi.org/10.1145/3341301.3359636

Аннотация

Международные платежи медленны и дороги, отчасти из-за многошаговой маршрутизации платежей через разнородные сети. банковские системы. Stellar — новая глобальная платежная сеть который может напрямую переводить цифровые деньги в любую точку мира. мир за секунды. Ключевое нововведение — безопасная транзакция механизм через ненадежных посредников, используя новый Протокол византийского соглашения под названием SCP. С помощью SCP каждый учреждение указывает другие учреждения, в которых можно остаться по согласию; благодаря глобальной взаимосвязанности финансовой системы, вся сеть затем соглашается на атомную транзакции, охватывающие произвольные учреждения, без риска платежеспособности или валютного курса со стороны промежуточных эмитентов активов или маркет-мейкеры. Мы представляем модель, протокол и формальная проверка; описать платежную сеть Stellar; и, наконец, оценить Stellar эмпирически с помощью тестов и наш опыт нескольких лет производственного использования. Концепции CCS • Безопасность и конфиденциальность → Распределенный безопасность систем; • Организация компьютерных систем → Одноранговые архитектуры; • Информационные системы → Электронный перевод средств. Ключевые слова blockchain, BFT, кворумы, выплаты Справочный формат ACM: Марта Лохава, Джулиано Лоса, Дэвид Мазьер, Грэйдон Хоар, Николас Бэрри, Эли Гафни, Джонатан Джоув, Рафал Малиновский, Джед Маккалеб. 2019. Быстрые и безопасные глобальные платежи с Stellar. В СОСП ’19: Симпозиум по принципам операционных систем, 27–30 октября, 2019, Хантсвилл, Онтарио, Канада. ACM, Нью-Йорк, Нью-Йорк, США, 17 страниц. https://doi.org/10.1145/3341301.3359636

Introdução

Os pagamentos internacionais são notoriamente lentos e caros [32]. Considere a impraticabilidade de enviar US$ 0,50 dos EUA para * Galois, Inc. †UCLA Permissão para fazer cópias digitais ou impressas de todo ou parte deste trabalho para o uso pessoal ou em sala de aula é concedido gratuitamente, desde que as cópias não sejam feitos ou distribuídos com fins lucrativos ou vantagens comerciais e que as cópias contenham este aviso e a citação completa na primeira página. Direitos autorais para componentes deste trabalho de propriedade de terceiros que não a ACM devem ser honrados. Abstraindo com crédito é permitido. Para copiar de outra forma, ou republicar, para postar em servidores ou para redistribuir para listas, requer permissão prévia específica e/ou taxa. Solicitação permissões de [email protected]. SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá © 2019 Associação de Máquinas de Computação. ACM ISBN 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 México, dois países vizinhos. Os usuários finais pagam quase US$ 9 para a média dessa transferência [32], e um acordo bilateral intermediada pelos bancos centrais dos países só poderia reduzir o banco subjacente custa US$ 0,67 por item [2]. Além das taxas, a latência dos pagamentos internacionais é geralmente contada em dias, impossibilitando a obtenção rápida de dinheiro no exterior em emergências. Em países onde o sistema bancário não funciona ou não serve todos os cidadãos, ou onde as taxas são intoleráveis, as pessoas recorrem ao envio de pagamentos por autocarro [38], por barco [19], e ocasionalmente agora por Bitcoin [55], todos os quais incorrer em risco, latência ou inconveniência. Embora sempre haja custos de conformidade, as evidências sugerem que uma quantia significativa é perdida devido à falta de concorrência [21], que é exacerbado pela tecnologia ineficiente. Onde as pessoas pode inovar, os preços e as latências caem. Por exemplo, as remessas de contas bancárias no segundo trimestre de 2019 custaram em média 6,99%, enquanto o valor do dinheiro móvel foi de apenas 4,88% [13]. Uma rede de pagamentos aberta e global que atrai inovação e a concorrência de entidades não bancárias poderá reduzir custos e latências em todas as camadas, incluindo conformidade [83]. Este artigo apresenta Stellar, um sistema de pagamento baseado em blockchain rede especificamente projetada para facilitar a inovação e concorrência nos pagamentos internacionais. Stellar é o primeiro sistema para atender a todos os três objetivos a seguir (sob um “hipótese da Internet” nova, mas empiricamente válida: 1. Associação aberta – Qualquer pessoa pode emitir títulos garantidos por moeda tokens digitais que podem ser trocados entre os usuários. 2. Finalidade imposta pelo emissor – O emissor de um token pode evitar transações em token sejam revertidas ou desfeitas. 3. Atomicidade entre emissores – Os usuários podem trocar atomicamente e negociar tokens de vários emissores. Alcançar os dois primeiros é fácil. Qualquer empresa pode oferecer unilateralmente um produto como Paypal, Venmo, WeChat Pay, ou Alipay e garantir a finalização dos pagamentos no moedas virtuais que eles criaram. Infelizmente, fazer transações atomicamente entre essas moedas é impossível. Na verdade, apesar do Paypal ter adquirido a controladora da Venmo em 2013, ainda é impossível para os usuários finais enviarem Venmo dólares para usuários do Paypal [78]. Só recentemente os comerciantes podem até mesmo aceitar ambos com uma única integração. Os objectivos 2 e 3 podem ser alcançados num sistema fechado. Em particular, vários países dispõem de sistemas de pagamento internos eficientes redes, normalmente supervisionadas por uma autoridade reguladora de confiança universal. No entanto, a adesão é limitada a um período fechado conjunto de bancos licenciados e as redes são limitadas ao alcance da autoridade reguladora de um país.SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. As metas 1 e 3 foram alcançadas em blockchains minadas, mais notavelmente na forma de ERC20 tokens em Ethereum [3]. A ideia principal desses blockchains é criar uma nova criptomoeda com a qual recompensar as pessoas por fazerem acordos transações difíceis de reverter. Infelizmente, isso significa que os emissores token não controlam a finalidade da transação. Se software erros fazem com que o histórico de transações seja reorganizado [26, 73], ou quando os despojos de fraudar as pessoas excedem o custo de reorganizando o histórico [74, 97], os emissores podem ser responsáveis por tokens eles já foram resgatados por dinheiro do mundo real. O Stellar blockchain possui duas propriedades distintas. Primeiro, ele oferece suporte nativo a mercados eficientes entre tokens de diferentes emissores. Especificamente, qualquer pessoa pode emitir um token, o blockchain fornece uma carteira de pedidos integrada para negociação entre qualquer par de tokens, e os usuários podem emitir pagamentos de caminho que negociam atomicamente em vários pares de moedas enquanto garantindo um preço limite de ponta a ponta. Em segundo lugar, Stellar introduz um novo acordo bizantino protocolo, SCP (Stellar Protocolo de Consenso), através do qual token emissores designam servidores validator específicos para aplicar finalidade da transação. Contanto que ninguém comprometa os validators de um emissor (e as assinaturas digitais subjacentes e hashes criptográficos permanecem seguros), o emissor sabe exatamente quais transações ocorreram e evita o risco de perdas decorrentes da reorganização histórica de blockchain. A ideia principal do SCP é que a maioria dos emitentes de activos beneficiam mercados líquidos e querem facilitar as transações atômicas com outros ativos. Portanto, os administradores validator configuram seus servidores para concordar com outros validators sobre o exato histórico de todas as transações em todos os ativos. Um validator v1 pode ser configurado para concordar com v2, ou v2 pode ser configurado para concordar com v1, ou ambos podem ser configurados para concordar entre si; em todos os casos, nenhum dos dois se comprometerá com um histórico de transações até sabe que o outro não pode comprometer-se com uma história diferente. Por transitividade, se v1 não pode discordar de v2 e v2 não pode discordar de v3 (ou vice-versa), v1 não pode discordar de v3. v3, se v3 representa ou não ativos, v1 já ouviu falar de. Sob a hipótese de que essas relações de acordo conectar transitivamente toda a rede, o SCP garante acordo global, tornando-o um acordo bizantino global protocolo com adesão aberta. Chamamos esta nova suposição de conectividade de hipótese da Internet, e notamos que ela detém tanto da “Internet” (que todos entendem significa a maior rede IP conectada transitivamente) e pagamentos internacionais legados (que são executados passo a passo não atômico, mas alavancar um mundo transitivamente conectado e global rede de instituições financeiras). Stellar está em uso em produção desde setembro de 2015. Para manter o comprimento blockchain gerenciável, o sistema executa SCP em intervalos de 5 segundos – rápido para os padrões blockchain, mas muito mais lento do que as aplicações típicas do acordo bizantino. Embora o uso principal tenha sido pagamentos, Stellar também comprovadamente atraente para tokens fungíveis não monetários que se beneficiam provenientes de mercados secundários imediatos (ver Secção 7.1). A próxima seção discute trabalhos relacionados. A seção 3 apresenta SCP. A Seção 4 descreve nossa verificação formal do SCP. A seção 5 descreve a camada de pagamento de Stellar. A seção 6 relaciona um pouco de nossa experiência de implantação e lições aprendidas. A seção 7 avalia o sistema. A seção 8 conclui.

Введение

Международные платежи, как известно, медленные и дорогостоящие [32]. Подумайте о непрактичности отправки 0,50 доллара США из США в *Галуа, Инк. † Калифорнийский университет в Лос-Анджелесе Разрешение на создание цифровых или печатных копий всей или части этой работы для использование в личных целях или в классе предоставляется бесплатно при условии, что копии не изготовлены или распространены с целью получения прибыли или коммерческой выгоды, и что копии несут это уведомление и полная цитата на первой странице. Авторские права на компоненты этой работы, принадлежащей не ACM, необходимо уважать. Абстрагирование с помощью кредит разрешен. Копировать иным образом или повторно публиковать, размещать на серверах или повторное распространение по спискам требует предварительного специального разрешения и/или платы. Запрос разрешения от [email protected]. SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада © 2019 Ассоциация вычислительной техники. ISBN ACM 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 Мексика, две соседние страны. Конечные пользователи платят почти 9 долларов. в среднем такая передача [32] и двустороннее соглашение при посредничестве центральных банков стран может лишь сократить стоимость базового банка составляет 0,67 доллара США за единицу [2]. Помимо сборов, обычно учитывается задержка международных платежей в сутках, что делает невозможным быстрое получение денег за границу в чрезвычайные ситуации. В странах, где банковская система не работают или не обслуживают всех граждан, или там, где плата невыносима, люди прибегают к отправке платежей автобусом [38], лодка [19], а иногда и Bitcoin [55], и все это несут риск, задержки или неудобства. Несмотря на то, что затраты на соблюдение требований будут всегда, данные свидетельствуют о том, что значительная сумма теряется из-за отсутствия конкуренции [21], что усугубляется неэффективными технологиями. Где люди могут внедрять инновации, цены и задержки снижаются. Например, денежные переводы с банковских счетов во втором квартале 2019 года стоили в среднем 6,99%, тогда как показатель мобильных денег составил всего 4,88% [13]. Открытая глобальная платежная сеть, привлекающая инновации и конкуренция со стороны небанковских организаций может привести к снижению затраты и задержки на всех уровнях, включая соответствие [83]. В этом документе представлен Stellar, платеж на основе blockchain. сеть, специально созданная для содействия инновациям и конкуренция в международных платежах. Stellar — первый систему для достижения всех трех следующих целей (в рамках новая, но эмпирически обоснованная «интернет-гипотеза»): 1. Открытое членство. Любой может выпускать облигации, обеспеченные валютой. цифровые token, которыми могут обмениваться пользователи. 2. Окончательность, обеспечиваемая эмитентом. Эмитент token может предотвратить транзакции в token от отмены или отмены. 3. Атомарность между эмитентами. Пользователи могут атомарно обмениваться и торгуйте token от нескольких эмитентов. Достичь первых двух несложно. Любая компания может в одностороннем порядке предложить такой продукт, как Paypal, Venmo, WeChat. Pay или Alipay и обеспечьте окончательность платежей в виртуальные валюты, которые они создали. К сожалению, атомарные транзакции между этими валютами невозможны. Фактически, несмотря на то, что Paypal приобрела материнскую компанию Venmo в 2013 году конечные пользователи по-прежнему не могут отправлять Venmo долларов пользователям Paypal [78]. Только в последнее время торговцы могут даже принять оба с одной интеграцией. Цели 2 и 3 могут быть достигнуты в закрытой системе. В частности, в ряде стран действуют эффективные внутренние платежные системы. сети, обычно контролируемые регулирующим органом, пользующимся универсальным доверием. Однако членство ограничивается закрытым набор зарегистрированных банков, а сети ограничены досягаемость регулирующего органа страны.SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. Цели 1 и 3 были достигнуты за добытые blockchains, особенно в форме ERC20 tokens на Ethereum [3]. Основная идея этих blockchain — создать новую криптовалюту, с помощью которой можно будет вознаграждать людей за поселение. транзакции трудно отменить. К сожалению, это означает, что эмитенты token не контролируют завершенность транзакций. Если программное обеспечение ошибки приводят к реорганизации истории транзакций [26, 73], или когда трофеи от обмана людей превышают стоимость реорганизации истории [74, 97], эмитенты могут нести ответственность за tokens они уже выкуплены за реальные деньги. Stellar blockchain имеет два отличительных свойства. Во-первых, он изначально поддерживает эффективные рынки между tokens от разных эмитентов. В частности, любой может выдать token, blockchain предоставляет встроенную книгу заказов для торговли между любой парой token, и пользователи могут осуществлять платежи по пути которые атомарно торгуют несколькими валютными парами, в то время как гарантия сквозной лимитной цены. Во-вторых, Stellar представляет новое византийское соглашение. протокол SCP (Stellar Протокол консенсуса), посредством которого Эмитенты token назначают определенные серверы validator для обеспечения соблюдения завершенность сделки. Пока никто не скомпрометирует validator эмитента (а также лежащие в его основе цифровые подписи и криптографические hashе остаются в безопасности), эмитент точно знает, какие транзакции произошли, и избегает риска убытков от blockchain истории реорганизации. Ключевая идея SCP заключается в том, что большинство эмитентов активов получают выгоду от ликвидные рынки и хотят облегчить атомарные транзакции с другими активами. Следовательно, администраторы validator настраивают свои серверы, чтобы договориться с другими validator о точном история всех транзакций по всем активам. validator v1 может быть настроено на согласие с версией 2, или v2 можно настроить на согласие с v1 или оба могут быть настроены для согласования друг с другом; во всех случаях ни один из них не будет сохранять историю транзакций до тех пор, пока он знает, что другой не может принять участие в другой истории. По транзитивности, если v1 не может не согласиться с v2, а v2 не может не согласиться с v3 (или наоборот), v1 не может не согласиться с v1. v3, независимо от того, представляет ли v3 активы, о которых v1 вообще слышал оф. Предполагая, что эти отношения соглашения транзитивно подключить всю сеть, SCP гарантирует глобальное соглашение, что делает его глобальным византийским соглашением протокол с открытым членством. Мы называем это новое предположение о связности гипотезой Интернета и отмечаем, что оно касается как «Интернета» (который всем понятен, означают единственную крупнейшую транзитивно подключенную IP-сеть) и устаревшие международные платежи (которые выполняются поэтапно неатомарны, но используют транзитивно связанную глобальную сеть финансовых учреждений). Stellar используется с сентября 2015 г. Чтобы длина blockchain оставалась управляемой, система запускает SCP с интервалом в 5 секунд — быстро по стандартам blockchain, но гораздо медленнее, чем типичное применение византийского соглашения. Хотя основным использованием были платежи, Stellar также доказанная привлекательность для неденежных взаимозаменяемых token, которые приносят пользу с непосредственных вторичных рынков (см. раздел 7.1). В следующем разделе обсуждаются соответствующие работы. В разделе 3 представлены SCP. Раздел 4 описывает нашу формальную проверку SCP. В разделе 5 описан уровень оплаты Stellar. Раздел 6 касается наш опыт развертывания и извлеченные уроки. В разделе 7 оценивается система. Раздел 8 завершается.

Stellar protocolo de consenso

O protocolo de consenso Stellar (SCP) é um protocolo baseado em quórum Protocolo de acordo bizantino com adesão aberta. Os quóruns emergem das decisões combinadas de configuração local de nós individuais. No entanto, os nós só reconhecem quóruns aos quais eles próprios pertencem, e somente depois aprender as configurações locais de todos os outros membros do quórum. Um benefício desta abordagem é que o SCP inerentemente tolera visões heterogêneas de quais nós existem. Portanto, nós podem ingressar e sair unilateralmente sem necessidade de um Protocolo de “visualização de mudança” para coordenar a adesão. 3.1 Acordo Federado Bizantino O problema tradicional do acordo bizantino consiste em um sistema fechado de N nós, alguns dos quais são defeituosos e podem comportar-se arbitrariamente. Os nós recebem valores de entrada e trocam mensagens para decidir sobre um valor de saída entre as entradas. Um protocolo de acordo bizantino é seguro quando dois nós bem comportados não produzem decisões diferentes e o único decisão foi uma entrada válida (para alguma definição de acordo válidoSOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. previamente). Um protocolo está ativo quando garante que cada nó honesto eventualmente produz uma decisão. Normalmente, os protocolos assumem N = 3f + 1 para algum número inteiro f > 0, então garanta segurança e alguma forma de vivacidade para que desde que no máximo f nós estejam com defeito. Em algum momento destes protocolos, os nós votam nos valores propostos e uma proposta receber 2f + 1 votos, chamado de quórum de votos, torna-se a decisão. Com N = 3f + 1 nós, quaisquer dois quóruns de tamanho 2f + 1 sobreposição em pelo menos f + 1 nós; mesmo que f destes nós sobrepostos estão com defeito, os dois quóruns compartilham pelo menos um nó não defeituoso, evitando decisões contraditórias. No entanto, esta abordagem só funciona se todos os nós concordarem o que constitui um quórum, o que é impossível no SCP onde dois nós podem nem saber da existência um do outro. Com SCP, cada nó v declara unilateralmente conjuntos de nós, chamado de fatias de quorum, de modo que (a) v acredita que se todos membros de uma fatia concordam sobre o estado do sistema, então eles estão certos, e (b) v acredita que pelo menos uma de suas fatias estará disponível para fornecer informações oportunas sobre o estado do sistema. Chamamos o sistema resultante, consistindo de nós e suas fatias, um Acordo Bizantino Federado (FBA) sistema. Como veremos a seguir, surge um sistema de quórum das fatias dos nós. Informalmente, as fatias de um nó FBA expressam com quem o nó requer acordo. Por exemplo, um nó pode exigir acordo com 4 organizações específicas, cada uma executando 3 nós; para acomodar o tempo de inatividade, ele pode definir suas fatias como todas definidas consistindo em 2 nós de cada organização. Se isso “requer acordo com” relação relaciona transitivamente quaisquer dois nós, obtemos um acordo global. Caso contrário, podemos obter divergência, mas apenas entre organizações, nenhuma das quais exige acordo com o outro. Dada a topologia de hoje sistema financeiro, levantamos a hipótese de que a convergência generalizada continuará a produzir um único livro-razão histórico que as pessoas chamam “a rede Stellar”, assim como falamos da Internet. Os quóruns surgem das fatias da seguinte maneira. Cada nó especifica seu quórum é dividido em cada mensagem que envia. Seja S o conjunto de nós dos quais um conjunto de mensagens se originou. Um nó considera que o conjunto de mensagens atingiu o quorum limite quando cada membro de S tem uma fatia incluída em S. Por construção, tal conjunto S, se unânime, satisfaz o requisitos de acordo de cada um dos seus membros. Um colega defeituoso pode anunciar fatias criadas para mudar o que nós bem comportados consideram quóruns. Para fins de análise de protocolo, definimos um quórum no FBA como um valor não vazio conjunto S de nós abrangendo pelo menos uma fatia de quorum de cada membro não defeituoso. Esta abstração é sólida, como qualquer conjunto de mensagens que pretendem representar um quórum unânime realmente faz (mesmo que contenha mensagens de nós defeituosos), e é preciso quando S contém apenas nós bem comportados. Em nesta seção, também assumimos que as fatias dos nós não mudam. No entanto, nossos resultados são transferidos para o caso da fatia variável porque um sistema no qual as fatias mudam não é menos seguro do que um sistema de fatia fixa em que as fatias de um nó consistem em todos os fatias que ele usa no caso de fatias variáveis (ver Teorema 13 em [68]). Conforme explicado na Seção 4, a vivacidade depende de nós bem comportados eventualmente removendo nós não confiáveis de suas fatias. Como nós diferentes têm requisitos de acordo diferentes, a FBA impede uma definição global de segurança. Nós dizemos nós não defeituosos v1 e v2 estão interligados quando cada O quorum de v1 cruza todo quorum de v2 em pelo menos um nó não defeituoso. Um protocolo FBA pode garantir acordo apenas entre nós interligados; já que SCP faz isso, é culpa a tolerância à segurança é ótima. A hipótese da Internet, subjacente ao design de Stellar, afirma que as pessoas dos nós se importam sobre estarão interligados. Dizemos que um conjunto de nós I está intacto se I for um quorum uniformemente não defeituoso, tal que todos os dois membros de I estejam interligados, mesmo que todos os nós fora de I estejam defeituosos. Intuitivamente, então, eu deveria permanecer imune às ações de pessoas não intactas nós. SCP garante atividade sem bloqueio [93] e segurança para conjuntos intactos, embora os próprios nós não precisem saber (e pode não ser capaz de saber) quais conjuntos estão intactos. Além disso, a união de dois conjuntos intactos que se cruzam é um conjunto intacto. Portanto, conjuntos intactos definem uma partição do nós bem comportados, onde cada partição é segura e ativa (sob algumas condições), mas partições diferentes podem gerar decisões divergentes. 3.1.1 Considerações de segurança versus vivacidade no FBA Com exceções limitadas [64], a maioria dos protocolos de acordos bizantinos fechados estão sintonizados no ponto de equilíbrio em que segurança e vivacidade têm a mesma tolerância a falhas. Na FBA, isso significa configurações nas quais, independentemente de falhas, todos conjuntos entrelaçados também estão intactos. Dado que a FBA determina quóruns de forma descentralizada, é improvável que as escolhas individuais das fatias conduzam a este equilíbrio. Além disso, em pelo menos em Stellar, o equilíbrio não é desejável: as consequências de uma falha de segurança (ou seja, dinheiro digital gasto duas vezes) são muito piores do que aqueles de uma falha de vivacidade (ou seja, atrasos em pagamentos que, de qualquer forma, demoraram dias antes de Stellar). Pessoas portanto, deve e seleciona grandes fatias de quorum, de modo que é mais provável que seus nós permaneçam entrelaçados do que intactos. Inclinando ainda mais a balança, é mais fácil recuperar-se de falhas típicas de vivacidade em um sistema FBA do que em um sistema fechado tradicional. Em sistemas fechados, todas as mensagens devem ser interpretada em relação ao mesmo conjunto de quóruns. Portanto, adicionar e remover nós para se recuperar de falhas requer chegar a um consenso sobre um evento de reconfiguração, o que é difícil quando o consenso já não existe. Em contrapartida, com a FBA, qualquer nó pode ajustar unilateralmente suas fatias de quorum a qualquer momento. tempo. Em resposta a uma interrupção em um local sistemicamente importante organização, os administradores de nós podem ajustar suas fatias para contornar o problema, um pouco como coordenar respostas às catástrofes do BGP [63] (embora sem as restrições de roteamento em links de rede física).

Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá 3.1.2 O teorema da cascata SCP segue o modelo do modelo redondo básico [42]; nós progridem através de uma série de cédulas numeradas, cada tentando três tarefas: (1) identificar um valor “seguro” não contrariado por qualquer decisão em uma votação anterior (muitas vezes denominado preparar a votação), (2) concordar com o valor seguro e (3) detectar que o acordo foi bem sucedido. No entanto, a FBA está aberta a adesão atrapalha diversas técnicas comuns, tornando impossível “portar” protocolos fechados tradicionais para a FBA modelo simplesmente alterando a definição de quórum. Uma técnica empregada por muitos protocolos é a rotação através de nós líderes em modo round-robin após tempos limites. Em um sistema fechado, a seleção do líder round-robin garante que eventualmente um líder único e honesto acaba coordenando um acordo sobre um único valor. Infelizmente, round-robin não pode funcionar em um sistema FBA com associação desconhecida. Outra técnica comum que falha com o FBA é assumir que um quorum específico pode convencer todos os nós. Por exemplo, se todos reconhecerem quaisquer nós 2f + 1 como um quorum, então Assinaturas 2f + 1 são suficientes para provar o estado do protocolo para todos os nós. Da mesma forma, se um nó receber um quorum de mensagens idênticas por meio de transmissão confiável [24], o nó pode assumir que todos os nós não defeituosos também verão um quorum. Na FBA, por outro lado, um quorum não significa nada para nós fora do quorum. Finalmente, os sistemas não federados muitas vezes empregam raciocínio sobre segurança: se f + 1 nós estiverem com defeito, todos os nós de segurança garantias são perdidas. Portanto, se o nó v ouvir f + 1 nós, todos declarar algum fato F, v pode assumir que pelo menos um está contando ao verdade (e, portanto, que F é verdadeiro) sem perda de segurança. Tal o raciocínio falha na FBA porque a segurança é uma propriedade dos pares de nós, então um nó que perdeu segurança para alguns pares pode sempre perdem a segurança para mais nós ao presumir fatos ruins. A FBA pode, no entanto, raciocinar ao contrário sobre a vivacidade. Defina um conjunto de bloqueio v como um conjunto de nós que intercepta todos fatia de v. Se um conjunto de bloqueio v B for unanimemente defeituoso, B pode negar ao nó v um quorum e custar-lhe vida. Portanto, se B declara unanimemente o fato F, então v sabe que ou F é verdadeiro ou v não está intacto. No entanto, v ainda precisa ver uma visão completa quorum para saber que nós entrelaçados não contradirão F, o que leva a uma rodada final de comunicação em SCP e outros protocolos FBA [47] que não são necessários em análogos protocolos de adesão fechada. O resultado é que temos três níveis possíveis de confiança em fatos potenciais: indeterminado, seguro para assumir entre nós intactos (que iremos termos aceitos), e seguro para assumir entre interligados nós (que chamaremos de fatos confirmados). O nó v pode determinar com eficiência se um conjunto B está bloqueando, verificando se B intercepta todas as suas fatias. Curiosamente, se os nós sempre anunciam as declarações que eles aceita e um quórum completo aceita uma declaração, ele desencadeia um processo em cascata pelo qual as declarações se propagam por toda parte conjuntos intactos. Chamamos o fato chave subjacente a esta propagação o teorema da cascata, que afirma o seguinte: Se I é um conjunto intacto, Q é um quorum de qualquer membro de I, e S é qualquer superconjunto de Q, então S ⊇I ou existe um membro v ∈I tal que v < S e I ∩S é v-bloqueio. Intuitivamente, se isso não for o caso, o complemento de S conteria um quorum que cruza I, mas não Q, violando a interseção de quorum. Observe que se começarmos com S = Q e expandirmos repetidamente S para incluir todos os nós que ele bloqueia, obtemos um efeito cascata até que, eventualmente, S abrange tudo de I. 3.2 Descrição do protocolo SCP é um protocolo de consenso parcialmente síncrono [42] que consiste em uma série de tentativas para chegar a um consenso chamadas cédulas. As cédulas empregam tempos limite de duração crescente. Um protocolo de sincronização de votos garante que os nós permaneçam ligados mesma cédula por períodos crescentes de tempo até que as cédulas são efetivamente síncronos. A rescisão não é garantida até que as votações sejam síncronas, mas duas votações síncronas em que membros defeituosos de fatias de nós bem comportados não interferir são suficientes para que o SCP seja encerrado. Um protocolo de votação especifica as ações tomadas durante cada votação. Uma votação começa com uma fase de preparação, na qual os nós tentar determinar um valor a propor que não contradiga qualquer decisão anterior. Então, em uma fase de commit, os nós tentam para tomar uma decisão sobre o valor preparado. A votação emprega um subprotocolo de acordo denominado votação federada, i.n quais nós votam em declarações abstratas que pode eventualmente ser confirmado ou travar. Algumas declarações podem ser consideradas contraditórias e a segurança A garantia do voto federado é que não haja dois membros de um conjunto entrelaçado confirma afirmações contraditórias. A confirmação de uma declaração não é garantida, exceto por uma declaração intacta conjunto cujos membros votam todos da mesma maneira. No entanto, se um membro de um conjunto intacto confirma uma declaração, federado a votação garante que todos os membros do conjunto intacto eventualmente confirmem essa afirmação. Portanto, tomar medidas irreversíveis em resposta a declarações de confirmação preserva a vivacidade para nós intactos. Os nós propõem inicialmente valores obtidos a partir de uma nomeação protocolo que aumenta as chances de todos os membros de um grupo intacto conjunto que propõe o mesmo valor, e que eventualmente converge (embora sem nenhuma maneira de determinar que a convergência está completa). A nomeação combina votação federada com seleção de líderes. Como o round-robin é impossível na FBA, a nomeação usa um esquema probabilístico de seleção de líderes. O teorema da cascata desempenha um papel crucial tanto na votação sincronização e em evitar estados bloqueados dos quais a rescisão não é mais possível. 3.2.1 Votação Os nós SCP procedem através de uma série de cédulas numeradas, empregando votação federada para chegar a acordo sobre as declarações sobre as quais os valores são ou não decididos em quais votações. Se assincronia ou comportamento defeituoso impede a tomada de uma decisão na votação n, os nós expiram e tentam novamente na votação n + 1.

SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. A votação federada de recall pode não terminar. Portanto, alguns declarações sobre cédulas podem ficar presas permanentemente estado indeterminado onde os nós nunca podem determinar se eles ainda estão em andamento ou travados. Porque os nós não podem descartar a possibilidade de declarações indeterminadas mais tarde se provarem verdadeiras, eles nunca devem tentar a votação federada em novas declarações contradizendo os indeterminados. Em cada votação n, os nós usam votação federada em dois tipos de declaração: • prepare ⟨n,x⟩– afirma que nenhum valor diferente de x foi ou será decidido em qualquer votação ≤n. • commit ⟨n,x⟩– afirma que x foi decidido na votação n. É importante ressaltar que prepare ⟨n,x⟩contradicts commit ⟨n′,x ′⟩quando n ≥n′ e x , x ′. Um nó inicia a votação n tentando uma votação federada em um instrução prepare ⟨n,x⟩. Se alguma declaração de preparação anterior foi confirmado com sucesso através da votação federada, o o nó escolhe x do resultado confirmado da votação mais alta. Caso contrário, o nó define x como a saída do protocolo de nomeação descrito na próxima subseção. Se e somente se um nó confirmar com sucesso a preparação ⟨n,x⟩ na votação n, ele tenta a votação federada no commit ⟨n,x⟩. Se tiver sucesso, significa que o SCP decidiu, então o nó gera o valor da instrução de commit confirmada. Considere um conjunto entrelaçado S. Como no máximo um valor podem ser confirmados preparados pelos membros de S em uma determinada votação, dois valores diferentes não podem ser confirmados cometidos por membros de S em uma determinada votação. Além disso, se cometer ⟨n,x⟩ for confirmado, então prepare ⟨n,x⟩foi confirmado também; desde prepare ⟨n,x⟩ contradiz qualquer commit anterior por um valor diferente, pelas garantias do acordo de votação federada entendemos que nenhum valor diferente pode ser decidido em um momento anterior votação pelos membros de S. Por indução nos números das cédulas, nós portanto, certifique-se de que o SCP é seguro. Para vivacidade, considere um conjunto intacto I e um tempo suficiente votação síncrona f Se nós defeituosos aparecerem nas fatias de nós bem comportados não interferem em n, então por votação n + 1 todos os membros de I confirmaram o mesmo conjunto P de instruções de preparação. Se P = ∅ e a votação n fosse longa o suficiente, o protocolo de nomeação terá convergido para algum valor x. Caso contrário, seja x o valor do plano com a votação mais alta em P. De qualquer forma, tentarei uniformemente votando em preparar ⟨n + 1,x⟩na próxima votação. Portanto, se n + 1 também é síncrono, segue-se inevitavelmente uma decisão para x. 3.2.2 Nomeação A nomeação implica votação federada nas declarações: • nomear x – afirma que x é um candidato válido à decisão. Os nós podem votar para nomear vários valores – diferentes as declarações de nomeação não são contraditórias. Contudo, uma vez um nó confirma qualquer declaração de nomeação, ele para de votar para indicar novos valores. A votação federada ainda permite que um nó confirmar novas declarações de nomeação nas quais não votou, o que votar ou aceitar um do quórum aceitar um do quórum a é válido aceitar um de conjunto de bloqueio descomprometido votei em um aceitou um confirmou um votei ¬a Figura 1. Etapas da votação federada permite que membros de um conjunto intacto confirmem as opiniões uns dos outros valores indicados enquanto ainda retém novos votos. O resultado (evolutivo) da nomeação é uma combinação determinística de todos os valores em declarações de nomeação confirmadas. Se x representa um conjunto de transações, os nós podem assumir a união de conjuntos, o maior conjunto ou aquele com o maior hash, então desde que todos os nós façam o mesmo. Como os nós retêm novos votos depois de confirmar uma declaração de nomeação, o conjunto de declarações confirmadas podem conter apenas um número finito de valores. O facto de declarações confirmadas se espalharem de forma fiável através de conjuntos intactos significa que nós intactos eventualmente convergem para o mesmo conjunto de valores indicados e, portanto, resultado da nomeação, embora em um ponto desconhecido arbitrariamente no final do protocolo. Os nós empregam seleção de líderes federados para reduzir o número de valores diferentes em instruções nomeadas. Somente um líder que ainda não tenha votado a favor de uma declaração de nomeação pode introduzir um novo x. Outros nós esperam para ouvir líderes e apenas copiar os votos indicados (válidos) de seus líderes. Para acomodar o fracasso, o conjunto de líderes continua a crescer à medida que ocorrem tempos limite, embora na prática apenas alguns nós introduzam novos valores de x. 3.2.3 Votação federada A votação federada emprega um protocolo de três fases mostrado em Figura 1. Os nós tentam concordar com declarações abstratas primeiro votando, depois aceitando e, finalmente, confirmando as declarações. Um nó v pode votar em qualquer afirmação válida a que não contradiga seu outrovotos pendentes e declarações aceitas. Fá-lo através da transmissão de uma mensagem de voto assinada. v então aceita a se a for consistente com outras declarações aceitas e (caso 1)v for membro de um quórum no qual cada nó vota em a ou aceita a, ou (caso 2) mesmo se v não votou em a, um conjunto de bloqueio v aceita a. No caso 2, v pode já emitiram votos contradizendo a, que agora foi anulado. v pode esquecer os votos anulados e fingir que nunca os lançou porque se estiver intacto, ele sabe votos anulados não podem completar o quórum no caso 1. v transmite que aceita a e depois confirma a quando estiver em um quórum que aceita por unanimidade a. A Figura 2 mostra o efeito dos conjuntos de bloqueio v e o teorema da cascata durante votação federada. Dois nós entrelaçados não podem confirmar declarações contraditórias, pois os dois quóruns necessários teriam que compartilhar umPagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá 3 4 2 1 5 7

Stellar консенсусный протокол

Протокол консенсуса Stellar (SCP) основан на кворуме. Протокол Византийского соглашения с открытым членством. Кворумы возникают в результате объединения решений по локальной конфигурации отдельных узлов. Однако узлы распознают только кворумам, к которым они принадлежат сами, и только после изучение локальных конфигураций всех остальных членов кворума. Одним из преимуществ этого подхода является то, что SCP по своей сути допускает неоднородные представления о том, какие узлы существуют. Следовательно, узлы могут присоединяться и выходить в одностороннем порядке без необходимости Протокол «просмотра изменений» для координации членства. 3.1 Федеративное византийское соглашение Традиционная проблема византийского соглашения состоит из замкнутая система из N узлов, часть из которых неисправна и может вести себя произвольно. Узлы получают входные значения и обмениваются сообщения для выбора выходного значения среди входных. Протокол византийского соглашения безопасен, когда никакие два узла с хорошим поведением не выдают разные решения и уникальный решение было действительным вкладом (для некоторого определения действительного согласованногоSOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. заранее). Протокол активен, если он гарантирует, что каждый честный узел в конечном итоге выдает решение. Обычно протоколы предполагают N = 3f + 1 для некоторого целого числа. f > 0, то гарантируйте безопасность и некоторую форму жизнеспособности, поэтому пока не более f узлов неисправны. На каком-то этапе этих протоколы, узлы голосуют за предложенные значения и предложение получение 2f + 1 голосов, называемое кворумом голосов, становится решение. При N = 3f + 1 узлах любые два кворума размер 2f+1 перекрывается не менее чем в f+1 узлах; даже если f из этих перекрывающиеся узлы неисправны, два кворума имеют как минимум общий доступ один исправный узел, предотвращающий противоречивые решения. Однако этот подход работает только в том случае, если все узлы согласны с что представляет собой кворум, что невозможно в SCP, где два узла могут даже не знать о существовании друг друга. При использовании SCP каждый узел v в одностороннем порядке объявляет наборы узлов, называемые его срезами кворума, такие, что (a) v считает, что если все члены среза договариваются о состоянии системы, затем они правы, и (b) v считает, что хотя бы один из его срезов будет доступен для своевременного предоставления информации о состояние системы. Назовем полученную систему, состоящую узлов и их срезов, Федеративное Византийское соглашение (ФБА). Как мы увидим далее, возникает система кворума. из срезов узлов. Неформально, срезы узла FBA выражают, с кем узел требует согласия. Например, для узла может потребоваться соглашение с 4 конкретными организациями, в каждой из которых имеется по 3 узла; чтобы учесть время простоя, он может установить свои срезы как все наборы состоящий из 2 узлов от каждой организации. Если это «требует отношение «согласие с» транзитивно связывает любые два узла, мы получаем глобальное соглашение. В противном случае мы можем получить расхождение, но только между организациями, ни одна из которых не требует соглашение с другим. Учитывая топологию сегодняшней финансовой системы, мы предполагаем, что широкая конвергенция будет продолжать создавать единую историю реестра, которую люди называют «сеть Stellar», как мы говорим об Интернете. Кворумы возникают из срезов следующим образом. Каждый узел определяет его кворум распределяется в каждом отправляемом им сообщении. Пусть S будет набор узлов, из которых исходил набор сообщений. А узел считает, что набор сообщений достиг кворума порог, когда каждый член S имеет срез, включенный в S. По построению такой набор S, если он единогласен, удовлетворяет условию требования соглашения каждого из его участников. Неисправный узел может рекламировать фрагменты, созданные для изменения того, что узлы с хорошим поведением учитывают кворумы. Для анализа протокола мы определяем кворум в FBA как непустой набор S узлов, охватывающий хотя бы один срез кворума каждый исправный член. Эта абстракция обоснована, как и любое множество сообщений, якобы представляющих единогласный кворум на самом деле так и есть (даже если оно содержит сообщения от неисправных узлов), и это точно, когда S содержит только узлы с хорошим поведением. В в этом разделе мы также предполагаем, что срезы узлов не изменяются. Тем не менее, наши результаты переносятся на случай меняющегося среза. потому что система, в которой меняются слайсы, не менее безопасна, чем система с фиксированными срезами, в которой срезы узла состоят из всех срезы, которые он когда-либо использует в случае меняющихся срезов (см. теорему 13 в [68]). Как поясняется в разделе 4, жизнеспособность зависит от хорошо работающие узлы со временем удаляют ненадежные узлы из своих кусочков. Поскольку разные узлы имеют разные требования к соглашению, FBA исключает глобальное определение безопасности. Мы говорим исправные узлы v1 и v2 переплетаются, когда каждый кворум v1 пересекает каждый кворум v2 хотя бы в одном исправный узел. Протокол FBA может гарантировать соглашение только между переплетенными узлами; раз SCP так делает, то это его вина допуск по безопасности оптимален. Гипотеза Интернета, лежащий в основе дизайна Stellar, утверждает, что узлы заботятся о людях. о будет переплетаться. Мы говорим, что набор узлов I неповреждён, если I представляет собой равномерно исправный кворум, в котором каждые два члена I переплетены, даже если каждый узел вне I неисправен. Интуитивно, тогда я должен оставаться невосприимчивым к действиям неповрежденных узлы. SCP гарантирует как неблокирующую работоспособность [93], так и безопасность неповрежденных наборов, хотя сами узлы не нуждаются в знать (а может и не знать), какие наборы целы. Более того, объединение двух пересекающихся целых множеств есть целый комплект. Следовательно, неповрежденные множества определяют разбиение узлы с хорошим поведением, где каждый раздел безопасен и работоспособен (при некоторых условиях), но разные разделы могут выводить разные решения. 3.1.1 Соображения безопасности и жизнеспособности в FBA За редким исключением [64], большинство протоколов закрытых византийских соглашений настроены на точку равновесия, в которой безопасность и живучесть имеют одинаковую отказоустойчивость. В ФБА, это означает конфигурации, в которых, независимо от сбоев, все переплетенные множества также целы. Учитывая, что ФБА определяет кворумы децентрализованно, маловероятно, что индивидуальный выбор срезов приведет к такому равновесию. Более того, на по крайней мере, в Stellar равновесие нежелательно: последствия сбоя безопасности (а именно двойного расходования цифровых денег) гораздо хуже, чем при сбое работоспособности (а именно задержки в платежах, которые в любом случае произошли за несколько дней до Stellar). Люди поэтому следует и следует выбирать большие фрагменты кворума, такие, чтобы их узлы, скорее всего, останутся переплетенными, чем нетронутыми. Чем больше чаша весов склоняется, тем легче оправиться от типичные сбои живучести в системе ФБА, чем в традиционной закрытой. В закрытых системах все сообщения должны быть интерпретируются относительно одного и того же набора кворумов. Следовательно, добавление и удаление узлов для восстановления после сбоя требует достижение консенсуса по вопросу реконфигурации, что становится затруднительным, если консенсуса больше нет. В отличие от ФБА, любой узел может в одностороннем порядке корректировать свои доли кворума в любой момент. время. В ответ на отключение системно важного объекта организации, администраторы узлов могут настраивать свои фрагменты в соответствии с обойти проблему, что-то вроде координации ответов к катастрофам BGP [63] (хотя и без ограничений маршрутизация по физическим сетевым каналам).

Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада 3.1.2 Каскадная теорема SCP следует шаблону базовой круглой модели [42]; узлы проходят через серию пронумерованных бюллетеней, каждый пытаясь выполнить три задачи: (1) определить «безопасное» значение, не противоречащее никакому решению предыдущего голосования (часто называемое подготовка бюллетеня), (2) согласовать безопасное значение и (3) обнаружить, что соглашение было успешным. Тем не менее, открытый ФБА членство блокирует несколько распространенных методов, что делает его невозможно «портировать» традиционные закрытые протоколы на ФБА модель, просто изменив определение кворума. Одним из методов, используемых во многих протоколах, является ротация. через ведущие узлы в циклическом порядке после таймаутов. В закрытой системе циклический выбор лидера обеспечивает что в конечном итоге единственный честный лидер в конечном итоге согласовывает соглашение по единой ценности. К сожалению, круговой не может работать в системе FBA с неизвестным членством. Другой распространенный метод, который не работает с FBA, заключается в предположении, что определенный кворум может убедить все узлы. Например, если все признают любые 2f + 1 узлов кворумом, то 2f + 1 подписей достаточно, чтобы подтвердить состояние протокола для всех узлов. Аналогично, если узел получает кворум идентичных сообщений посредством надежной широковещательной рассылки [24] узел может предположить, что все исправные узлы также увидят кворум. В FBA, напротив, кворум ничего не значит для узлов вне кворума. Наконец, нефедеративные системы часто используют «обратный» подход. рассуждения о безопасности: если f+1 узлов неисправны, то вся безопасность гарантии теряются. Следовательно, если узел v слышит f + 1 узел, все констатировать некоторый факт F, v может предположить, что по крайней мере один из них говорит истина (и, следовательно, F истинно) без потери безопасности. такой рассуждения терпят неудачу в FBA, потому что безопасность - это свойство пар узлов, поэтому узел, потерявший безопасность для некоторых узлов, может всегда теряйте безопасность из-за большего количества узлов, предполагая неверные факты. Однако FBA может рассуждать наоборот о жизнеспособности. Определите набор v-блокировок как набор узлов, пересекающих каждую срез v. Если v-блокирующее множество B единогласно ошибочно, B может лишить узел v кворума и лишить его жизнеспособности. Следовательно, если B единогласно констатирует факт F, тогда v знает, что либо F является true или v не поврежден. Тем не менее, Ви все еще нужно увидеть полную картину. кворум знать, что переплетенные узлы не будут противоречить F, что приводит к заключительному раунду общения в SCP и другие протоколы FBA [47], которые не требуются в аналогичных протоколы закрытого членства. В результате мы имеем три возможных уровня уверенности в потенциальных фактах: неопределенный, безопасный для неповрежденных узлов (который мы будем общепринятые факты), и можно с уверенностью предположить среди переплетенных узлы (которые мы будем называть подтвержденными фактами). Узел v может эффективно определить, является ли набор B блокирующим, проверив, пересекает ли B все его срезы. Интересно, что если узлы всегда объявляют утверждения, которые они Accept и полный кворум принимает утверждение, это запускает каскадный процесс, посредством которого утверждения распространяются по всему целые комплекты. Мы называем ключевой факт, лежащий в основе этого распространения каскадная теорема, которая утверждает следующее: если I — неповреждённое множество, Q — кворум любого члена I, а S — любой надмножество Q, то либо S ⊇I, либо существует элемент v ∈I такой, что v < S и I ∩S является v-блокирующим. Интуитивно, было ли это это не так, дополнение S будет содержать кворум который пересекает I, но не Q, что нарушает пересечение кворума. Обратите внимание: если мы начнем с S = Q и неоднократно расширим S до включаем все узлы, которые он блокирует, мы получаем каскадный эффект до тех пор, пока: в конечном итоге S охватывает все I. 3.2 Описание протокола SCP — это частично синхронный протокол консенсуса [42], состоящий из серии попыток достижения консенсуса, называемых бюллетени. В бюллетенях используются тайм-ауты увеличивающейся продолжительности. А протокол синхронизации голосования гарантирует, что узлы остаются включенными один и тот же бюллетень в течение увеличивающихся периодов времени, пока бюллетени эффективно синхронны. Прекращение действия не гарантировано пока бюллетени не будут синхронными, но два синхронных голосования в котором неисправные члены срезов узлов с хорошим поведением «Не вмешиваться» достаточно для завершения SCP. Протокол голосования определяет действия, предпринимаемые в ходе каждого голосование. Голосование начинается с этапа подготовки, на котором узлы попытаться определить предлагаемую ценность, которая не противоречит любое предыдущее решение. Затем, на этапе фиксации, узлы пытаются принять решение по подготовленному значению. При голосовании используется подпротокол соглашения, называемый федеративным голосованием, т.е.n какие узлы голосуют за абстрактные утверждения это может в конечном итоге подтвердиться или застрять. Некоторые утверждения могут быть названы противоречивыми, а безопасность гарантия федеративного голосования заключается в том, что никакие два члена переплетенное множество подтверждает противоречивые утверждения. Подтверждение заявления не гарантируется, за исключением неповрежденного набор, все члены которого голосуют одинаково. Однако, если член неповрежденного набора подтверждает утверждение, федеративно голосование гарантирует, что все члены целого множества в конечном итоге подтвердят это утверждение. Поэтому предпринимаются необратимые шаги в ответ на подтверждающие высказывания сохраняет живость в течение неповрежденные узлы. Узлы первоначально предлагают значения, полученные в результате номинации. протокол, который увеличивает шансы всех членов неповрежденного множество, предлагающее одно и то же значение, и оно в конечном итоге сходится (хотя и без возможности определить полную сходимость). Выдвижение сочетает в себе федеративное голосование и выбор лидера. Поскольку в FBA циклическая система невозможна, для номинации используются вероятностная схема выбора лидера. Каскадная теорема играет решающую роль как при голосовании, так и при голосовании. синхронизации и во избежание заблокированных состояний, из которых расторжение уже невозможно. 3.2.1 Голосование Узлы SCP проходят серию пронумерованных бюллетеней, используя федеративное голосование для согласования утверждений, относительно которых значения определяются или не определяются в ходе голосования. Если асинхронность или неправильное поведение препятствует принятию решения в бюллетене n, тайм-аут узлов и повторите попытку в бюллетене n + 1.

SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. Напомним, федеративное голосование может не прекратиться. Следовательно, некоторые заявления по поводу избирательных бюллетеней могут навсегда застрять в неопределенное состояние, в котором узлы никогда не могут определить, являются ли они все еще выполняются или застряли. Поскольку узлы не могут исключить возможность неопределенных утверждений, которые впоследствии окажутся истинными, они никогда не должны пытаться проводить федеративное голосование по новым заявлениям противоречащие неопределенным. В каждом бюллетене n узлы используют федеративное голосование по двум типам. заявления: • подготовить ⟨n,x⟩– утверждает, что никакое значение, кроме x было или когда-либо будет решено в любом голосовании ≤n. • commit ⟨n,x⟩– утверждает, что x определяется в бюллетене n. Важно отметить, что подготовка ⟨n,x⟩ противоречит коммиту. ⟨n′,x ′⟩, когда n ≥n′ и x , x ′. Узел начинает голосование n, пытаясь провести федеративное голосование на заявление подготовить ⟨n,x⟩. Если какой-либо предыдущий оператор подготовки был успешно подтвержден посредством федеративного голосования, узел выбирает x из подтвержденной подготовки высшего бюллетеня. В противном случае узел устанавливает x в выходной сигнал Протокол номинации описан в следующем подразделе. Тогда и только тогда, когда узел успешно подтверждает подготовку ⟨n,x⟩ в бюллетене n он пытается провести федеративное голосование по фиксации ⟨n,x⟩. Если если это удалось, это означает, что SCP принял решение, поэтому узел выводит значение из подтвержденного оператора фиксации. Рассмотрим переплетенное множество S. Поскольку не более одного значения могут быть подтверждены подготовленными членами S в данном бюллетене, никакие два разных значения не могут быть подтверждены совершенными члены S в данном бюллетене. Более того, если совершить ⟨n,x⟩ подтверждено, то подготовка ⟨n,x⟩ тоже подтверждена; с тех пор подготовка ⟨n,x⟩ противоречит любому предыдущему коммиту для другого значения, по соглашению гарантирует федеративное голосование мы понимаем, что никакое другое значение не может быть принято ранее голосование членов S. Индукцией по номерам бюллетеней мы поэтому убедитесь, что SCP безопасен. Для живости рассмотрим неповрежденный набор I и достаточно длинный синхронное голосование n. Если в срезах появляются неисправные узлы хорошо себя ведущих узлов не вмешиваются, то голосованием n + 1 все члены I подтвердили один и тот же набор P операторов подготовки. Если P = ∅ и бюллетень n был достаточно длинным, протокол номинации сойдётся на некотором значении x. В противном случае, пусть x будет значением из подготовки с наибольшим числом голосов в P. В любом случае, я буду равномерно пытаться объединить голосование по подготовке ⟨n + 1,x⟩ в следующем туре голосования. Следовательно, если n + 1 также синхронно, неизбежно следует решение по x. 3.2.2 Номинация Выдвижение предполагает федеративное голосование по заявлениям: • Номинировать x – утверждает, что x является действительным кандидатом на решение. Узлы могут голосовать за назначение нескольких значений — разных высказывания номинантов не противоречат друг другу. Однако однажды узел подтверждает любое заявление о назначении, он прекращает голосование за номинировать новые ценности. Федеративное голосование по-прежнему позволяет узлу подтвердить новые заявления о выдвижении кандидатов, за которые он не голосовал, которые голосуй или принимай из кворума принять из кворума а действителен принять от блокирующий набор незафиксированный проголосовал за принял подтвердил проголосовал за Рисунок 1. Этапы федеративного голосования позволяет членам неповрежденного набора подтверждать друг друга номинированные ценности, при этом отказываясь от новых голосов. (Развивающийся) результат номинации — это детерминированная комбинация всех значений в подтвержденных номинирующих заявлениях. Если x представляет собой набор транзакций, узлы могут объединяться наборов, самый большой набор или набор с наибольшим hash, поэтому пока все узлы делают то же самое. Поскольку узлы не содержат новых голосов после подтверждения одного заявления о выдвижении кандидатуры, набор подтвержденные утверждения могут содержать только конечное число значений. Тот факт, что подтвержденные заявления надежно распространялись через неповрежденные множества означают, что неповрежденные узлы в конечном итоге сходятся на тот же набор номинированных ценностей и, следовательно, результат номинации, хотя и в неизвестном месте, в произвольном конце протокола. Узлы используют федеративный выбор лидеров, чтобы уменьшить количество различных значений в номинирующих утверждениях. Только лидер, который еще не проголосовал за выдвижение кандидатуры, может ввести новый x. Другие узлы ждут вестей от лидеров и просто копировать (действительные) голоса их лидеров. Чтобы приспособиться к неудаче, набор лидеров продолжает расти по мере того, как происходят тайм-ауты, хотя на практике только несколько узлов вводят новые значения x. 3.2.3 Федеративное голосование Федеративное голосование использует трехэтапный протокол, показанный на рис. Рисунок 1. Узлы сначала пытаются договориться об абстрактных утверждениях голосование, затем принятие и, наконец, подтверждение заявлений. Узел v может голосовать за любое допустимое утверждение a, которое не соответствует противоречить другомувыдающиеся голоса и принятые заявления. Это делается путем трансляции подписанного сообщения о голосовании. Затем v принимает a, если a согласуется с другими принятыми утверждениями и либо (случай 1) v является членом кворума, в котором каждый узел либо голосует за a, либо принимает a, либо (случай 2), даже если v не голосовал за a, набор v-blocking принимает a. В случае 2 v может ранее отдали голоса, противоречащие а, которые теперь было отменено. v разрешено забыть об отклоненных голосах и притвориться, что никогда их не применял, потому что если v цел, он знает отмененные голоса не могут обеспечить кворум в случае 1. v сообщает, что принимает a, а затем подтверждает, когда оно находится в кворум, который единогласно принимает а. На рисунке 2 показано эффект v-блокирующих множеств и каскадная теорема во время федеративное голосование. Два переплетенных узла не могут подтвердить противоречивые утверждения, поскольку два необходимых кворума должны будут иметь общийБыстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада 3 4 2 1 5 7

Votar X

Vote Y (a) 3 4 2 1 5 7 6 Votar X Votar X Votar X Votar S Votar X Votar S Votar S (b) 3 4 2 1 5 7 6 Aceitar X Votar X Aceitar X Votar S Aceitar X Votar S Votar S (c) 3 4 2 1 5 7 6 Aceitar X Aceitar X Aceitar X Votar S Aceitar X Aceitar X Votar S (d) 3 4 2 1 5 7 6 Aceitar X Votar X Aceitar X Aceitar X Aceitar X Aceitar X Aceitar X (e) Figura 2. Efeito cascata na votação federada. Cada nó possui uma fatia de quorum indicada por setas para os membros da fatia. (a) As declarações contraditórias X e Y são introduzidas. (b) Os nós votam em declarações válidas. (c) O nó 1 aceita X após seu quorum {1, 2, 3, 4} vota por unanimidade em X. (d) Todos os nós 1, 2, 3 e 4 aceitam X; o conjunto {1} tem bloqueio 5, então o nó 5 aceita X, anulando seu voto anterior em Y. (e) O conjunto {5} é bloqueador de 6 e 7, então 6 e 7 aceitam X. nó não defeituoso que não poderia aceitar declarações contraditórias. A confirmação de uma declaração não é garantida: em caso de votação por partes, ambas as declarações poderão ser permanentemente preso à espera de quórum na fase de votação. No entanto, se um nó em um conjunto intacto I confirma uma afirmação, a cascata teorema e aceitar o caso 2 garantem que tudo I acabará confirme essa afirmação. 3.2.4 Sincronização de votação Se os nós não conseguirem confirmar uma instrução de commit para o votação atual, eles desistem após um tempo limite. O tempo limite fica mais tempo a cada votação para se ajustar a limites arbitrários no atraso da rede. No entanto, os tempos limite por si só não são suficientes para sincronizar cédulas de nós que não iniciaram ao mesmo tempo ou ficou dessincronizado por outros motivos. Para conseguir a sincronização, os nós iniciam o temporizador apenas quando fazem parte de um quorum que está todo na votação atual (ou posterior) n. Isto retarda os nós que começaram cedo e garante que não membro de um conjunto intacto fica muito à frente do grupo. Além disso, se um nó v perceber um bloqueio v definido posteriormente votação, ele pula imediatamente para a votação mais baixa, de modo que este não é mais o caso, independentemente de quaisquer temporizadores. A cascata o teorema garante então que todos os retardatários o alcancem. O resultado é que as cédulas são aproximadamente sincronizadas ao longo de um período intacto definido assim que o sistema se tornar síncrono. 3.2.5 Seleção de líder federado A seleção de líderes permite que cada nó escolha líderes de tal maneira que os nós geralmente escolhem apenas um ou um pequeno número de líderes. Para acomodar o fracasso do líder, a seleção do líder prossegue através das rodadas. Se os líderes da rodada atual parecem não estar cumprindo com suas responsabilidades, então, após um certos nós de período de tempo limite avançam para a próxima rodada para expandir o conjunto de líderes que eles seguem. Cada rodada emprega duas funções criptográficas exclusivas hash, H0 e H1, que geram números inteiros no intervalo [0,hmax). Por exemplo, Stellar usa Hi(m) = SHA256(i∥b∥r ∥m), onde b é a instância geral do SCP (número do bloco ou razão), r é o número da rodada de seleção do líder e hmax = 2256. Dentro uma rodada, definimos a prioridade do nó v como: prioridade(v) = H1(v) Um espantalho seria para cada nó escolher como líder o nodev com a prioridade mais alta (v). Essa abordagem funciona funciona bem com fatias de quorum quase idênticas, mas não funciona corretamente capturar a importância dos nós em configurações desequilibradas. Por exemplo, se a Europa e a China contribuírem cada uma com 3 nós para cada quórum, mas a China executa 1.000 nós e a Europa 4, então a China terá o nó de maior prioridade 99,6% da época. Introduzimos, portanto, uma noção de peso da fatia, onde peso(u,v) ∈[0, 1] é a fração das fatias de quorum do nó u contendo o nó v. Quando o nó u está selecionando um novo líder, ele considera apenas vizinhos, definidos da seguinte forma: vizinhos(você) = { v | H0(v) < hmax · peso(u,v) } Um nodeu então começa com um conjunto vazio de líderes, e em cada round adiciona a ele o nó v em vizinhos (u) com o maior prioridade (v). Se o conjunto de vizinhos estiver vazio em qualquer rodada, u adiciona o nóv com menor valor de H0(v)/peso(u,v).

Голосуйте Х

Голосуйте за (а) 3 4 2 1 5 7 6 Голосовать Х Голосовать Х Голосовать Х Голосовать Да Голосовать Х Голосовать Да Голосовать Да (б) 3 4 2 1 5 7 6 Принять Х Голосовать Х Принять Х Голосовать Да Принять Х Голосовать Да Голосовать Да (с) 3 4 2 1 5 7 6 Принять Х Принять Х Принять Х Голосовать Да Принять Х Принять Х Голосовать Да (г) 3 4 2 1 5 7 6 Принять Х Голосовать Х Принять Х Принять Х Принять Х Принять Х Принять Х (е) Рисунок 2. Каскадный эффект при федеративном голосовании. Каждый узел имеет один срез кворума, обозначенный стрелками, указывающими на членов среза. (a) Вводятся противоречивые утверждения X и Y. (b) Узлы голосуют за действительные утверждения. (c) Узел 1 принимает X после наличия кворума {1, 2, 3, 4} единогласно голосуют за X. (d) Все узлы 1, 2, 3 и 4 принимают X; набор {1} блокирует 5, поэтому узел 5 принимает X, отменяя его предыдущий голос за Y. (e) Набор {5} блокирует 6 и 7, поэтому оба 6 и 7 принимают X. исправный узел, который не смог принять противоречивые утверждения. Подтверждение заявления не гарантируется: в В случае разделения голосов оба заявления могут быть навсегда застрял в ожидании кворума на этапе голосования. Однако, если узел в неповрежденном множестве подтверждаю утверждение, каскад теорему и принять случай 2, гарантируя, что все I в конечном итоге подтвердите это утверждение. 3.2.4 Синхронизация бюллетеней Если узлы не могут подтвердить оператор фиксации для текущем голосовании, они сдаются после тайм-аута. Тайм-аут получает дольше с каждым бюллетенем, чтобы приспособиться к произвольным границам о задержке сети. Однако одних таймаутов недостаточно для синхронизации бюллетеней узлов, которые не запустились одновременно или рассинхронизировался по другим причинам. Чтобы добиться синхронизации, узлы запускают таймер только тогда, когда они являются частью кворум то есть весь на текущем (или более позднем) голосовании. Это замедляет узлы, которые запустились раньше, и гарантирует, что никакие член интактной группы остается слишком далеко впереди группы. Более того, если узел v когда-либо заметит установку v-блокировки позднее, бюллетень, он немедленно переходит к низшему бюллетеню, так что это это больше не так, независимо от каких-либо таймеров. Каскад Тогда теорема гарантирует, что все отстающие догонят. Результат заключается в том, что избирательные бюллетени примерно синхронизированы на всем протяжении устанавливается, как только система становится синхронной. 3.2.5 Выбор федеративного лидера Выбор лидера позволяет каждому узлу выбирать лидеров в таком способ, которым узлы обычно выбирают только один или небольшое количество лидеров. Чтобы справиться с неудачей лидера, выбор лидера проходит через раунды. Если лидеры текущего тура кажутся не выполняющими своих обязанностей, то после некоторого узлы определенного периода таймаута переходят к следующему раунду, чтобы расширить круг лидеров, за которыми они следуют. В каждом раунде используются две уникальные криптографические функции hash, H0 и H1, которые выводят целые числа в диапазоне [0,hmax). Например, Stellar использует Hi(m) = SHA256(i∥b∥r ∥m), где b — общий экземпляр SCP (номер блока или реестра), r — номер раунда выбора лидера, hmax = 2256. В пределах за раунд мы определяем приоритет узла v как: приоритет(v) = H1(v) Для каждого узла будет выбран один подставной человек в качестве лидера. узел с наивысшим приоритетом (v). Этот подход работает хорошо с почти идентичными фрагментами кворума, но не правильно отразить важность узлов в несбалансированных конфигурациях. Например, если Европа и Китай вносят по 3 узлов в каждый кворум, но в Китае используется 1000 узлов, а в Европе — 4, тогда у Китая будет узел с наивысшим приоритетом 99,6% того времени. Поэтому мы вводим понятие веса среза, где вес(u,v) ∈[0, 1] — это доля срезов кворума узла u содержащий узел v. Когда узел u выбирает нового лидера, он учитывает только соседей, определенных следующим образом: соседи (и) = { v | H0(v) < hmax · вес(u,v) } Затем узел нодеу начинается с пустого набора лидеров, и в каждом round добавляет к нему узел v из соседей(u) с наивысшим приоритет(v). Если набор соседей пуст в каком-либо раунде, вместо этого u добавляет узел с наименьшим значением H0(v)/weight(u,v).

Verificação formal do SCP

Para eliminar erros de projeto, verificamos formalmente a segurança do SCP e propriedades de vivacidade (ver [65]). Especificamente, verificamos que os nós entrelaçados nunca discordam e que, nas condições discutidas abaixo, cada membro de um conjunto intacto eventualmente decide. Curiosamente, a verificação revelou que o as condições sob as quais o SCP garante a vivacidade são sutis, e mais forte do que se pensava inicialmente [68]: conforme discutido abaixo, nós maliciosos que manipulam o tempo sem de outra forma desviar-se do protocolo pode precisar ser despejado manualmente de fatias de quórum.

SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. Para garantir que as propriedades provaram ser válidas em todos os Configurações e execuções FBA, consideramos um arbitrário número de nós com configurações locais arbitrárias. Isto inclui cenários com conjuntos intactos disjuntos, bem como execuções potencialmente infinitamente longas. A desvantagem é que nós enfrentar o desafiador problema de verificar um parametrizado sistema de estados infinitos. Para manter a verificação tratável, modelamos SCP em lógica de primeira ordem (FOL) usando Ivy [69] e a metodologia de [82]. O processo de verificação consiste em fornecer manualmente conjecturas indutivas que são então automaticamente verificadas por Hera. O modelo FOL do SCP abstrai alguns aspectos do Sistemas FBA que são difíceis de manusear em FOL (por exemplo, o teorema da cascata é tomado como um axioma), então verificamos o solidez da abstração usando Isabelle/HOL [75]. Após expressar o problema de verificação em FOL, verificamos a segurança fornecendo um invariante indutivo. O indutivo invariante consiste em uma dúzia de conjecturas de uma linha para cerca de 150 linhas de especificação de protocolo. Em seguida, especificamos as propriedades de vivacidade de SCP na Lógica Temporal Linear de Ivy e usamos o vivacidade para redução de segurança de [80, 81] para reduzir a vivacidade problema de verificação ao problema de encontrar um indutivo invariante. Embora a segurança do SCP seja relativamente simples de provar, o argumento da vivacidade do SCP é muito mais complexo e consiste em cerca de 150 invariantes de linha única. Provar a vivacidade exigiu uma formalização precisa do premissas sob as quais a SCP garante a rescisão. Inicialmente pensamos que um conjunto intacto eu sempre encerraria se todos os membros removeram nós defeituosos de suas fatias [68]. No entanto, isto revelou-se insuficiente: um homem bem comportado (mas não intacto) nó em um quorum de um membro de posso, sob o influência de nós defeituosos, evite a terminação completando um quórum pouco antes do final da votação, causando assim membros de I escolham valores diferentes de x na próxima votação. Devemos, portanto, assumir adicionalmente que, informalmente, cada nó em um quorum de um membro de I eventualmente torna-se oportuno ou não envia mensagens por um período suficiente. Na prática, isso significa que os membros do I podem precisam ajustar suas fatias até que a condição seja mantida. Isto a questão não é inerente aos sistemas FBA: Losa et al. [47] presente um protocolo cuja vivacidade depende do estritamente mais fraco suposições de apenas eventual sincronia e eventual eleição de líder, sem a necessidade de remover nós defeituosos das fatias.

Формальная проверка SCP

Чтобы исключить ошибки проектирования, мы официально подтвердили безопасность SCP. и свойства живучести (см. [65]). В частности, мы проверили что переплетенные узлы никогда не расходятся во мнениях и что в условиях, обсуждаемых ниже, в конечном итоге решение принимает каждый член целого множества. Интересно, что проверка показала, что условия, при которых SCP гарантирует жизнеспособность, являются тонкими, и сильнее, чем первоначально предполагалось [68]: как обсуждается ниже, вредоносные узлы, которые манипулируют временем без иного при отклонении от протокола может потребоваться выселение вручную из срезов кворума.

SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. Чтобы гарантировать, что свойства будут сохранены во всех возможных Конфигурации и исполнения ФБА мы рассматриваем произвольные. количество узлов с произвольными локальными конфигурациями. Это включает сценарии с непересекающимися неповрежденными множествами, а также потенциально бесконечно длинные выполнения. Недостаток в том, что мы сталкиваются со сложной проблемой проверки параметризованного система с бесконечными состояниями. Чтобы обеспечить удобство проверки, мы смоделировали SCP в логике первого порядка (FOL), используя Ivy [69] и методологию [82]. Процесс проверки состоит из ручного создания индуктивных предположений, которые затем автоматически проверяются Айви. FOL-модель SCP абстрагируется от некоторых аспектов Системы FBA, с которыми сложно работать на ВОЛС (например, каскадная теорема принимается за аксиому), поэтому проверяем справедливость обоснованность абстракции с использованием Isabelle/HOL [75]. После выражения проблемы проверки в FOL мы проверяем безопасность, предоставляя индуктивный инвариант. Индуктивный инвариант состоит из дюжины однострочных гипотез примерно 150 строк спецификации протокола. Затем мы указываем свойства жизнеспособности SCP в линейной временной логике Айви и используем метод жизнеспособность для снижения безопасности [80, 81] для снижения живучести задача проверки к задаче нахождения индуктивного инвариант. Хотя безопасность SCP относительно легко обеспечить доказать, что аргумент жизнеспособности SCP гораздо более сложен и состоит примерно из 150 однострочных инвариантов. Доказательство живучести потребовало точной формализации предположения, при которых SCP обеспечивает прекращение действия. Сначала мы думали, что нетронутый набор я всегда закрою, если все участники удалили неисправные узлы из своих срезов [68]. Однако этого оказалось недостаточно: воспитанный (но не исправен) узел в кворуме члена I can, под влияние неисправных узлов, предотвратить завершение, выполнив кворума непосредственно перед окончанием голосования, тем самым вызывая члены I выберут другие значения x в следующем туре голосования. Поэтому мы должны дополнительно предположить, что неформально каждый узел в кворуме члена I в конечном итоге либо становится своевременным или вообще не отправляет сообщения в течение достаточного периода времени. На практике это означает, что члены I могут необходимо корректировать свои срезы до тех пор, пока условие не выполнится. Это проблема не свойственна системам FBA: Losa et al. [47] присутствует протокол, жизнеспособность которого зависит от строго более слабого предположения о возможной синхронности и возможном выборе лидера без необходимости удалять неисправные узлы из срезов.

Rede de pagamento

Esta seção descreve a rede de pagamento de Stellar, implementada como uma máquina de estado replicada [88] sobre SCP. 5.1 Modelo de razão O razão de Stellar é projetado em torno de uma abstração de conta (em contraste com a saída de transações não gastas mais centrada em moedas ou modelo UTXO de Bitcoin). O conteúdo do razão consiste em um conjunto de entradas contábeis de quatro tipos distintos: contas, linhas confiáveis, ofertas e dados da conta. As contas são os principais que possuem e emitem ativos. Cada conta é nomeada por uma chave pública. Por padrão, a chave privada correspondente pode assinar transações para a conta. No entanto, as contas podem ser reconfiguradas para adicionar outros assinantes e desautorizar a chave que dá nome à conta, com um Opção “multisig” para exigir vários assinantes. Cada conta também contém: um número de sequência (incluído em transações para evitar replay), algumas bandeiras e um equilíbrio em um modo “nativo” criptomoeda pré-minerada chamada XLM, destinada a mitigar alguns ataques de negação de serviço e facilitar a criação de mercado como uma moeda neutra. Trustlines rastreiam a propriedade dos ativos emitidos, que são nomeado por um par que consiste na conta emissora e uma conta curta código do ativo (por exemplo, “USD” ou “EUR”). Cada linha confiável especifica uma conta, um ativo, o saldo da conta nesse ativo, um limite acima do qual a balança não pode subir e algumas bandeiras. Uma conta deve consentir explicitamente em manter um ativo por criando uma linha confiável, evitando que spammers sobrecarreguem contas com ativos indesejados. As regulamentações Conheça seu Cliente (KYC) exigem que muitas instituições financeiras saibam de quem são os depósitos que possuem, por exemplo, verificando um documento de identidade com foto. Para cumprir, os emitentes podem definir um sinalizador auth_reqired opcional em suas contas, restringindo a propriedade dos ativos que emitem a contas autorizadas. Para conceder tal autorização, o emissor estabelece um sinalizar nas linhas de confiança dos clientes. As ofertas correspondem à disposição de uma conta em negociar a uma certa quantia de um determinado ativo por outro em um determinado preço na carteira de pedidos; eles são automaticamente combinados e preenchido quando os preços de compra/venda se cruzam. Por fim, os dados da conta consistem em triplos de conta, chave e valor, permitindo aos titulares de contas para publicar pequenos valores de metadados. Para evitar spam contábil, há um saldo mínimo de XLM, chamada de reserva. A reserva de uma conta aumenta com cada entrada do razão associada e diminui quando a entrada do razão desaparece (por exemplo, quando um pedido é atendido ou cancelado, ou quando um a linha confiável é excluída). Atualmente a reserva cresce 0,5 XLM (∼$0,03) por entrada no razão. Independentemente da reserva, é possível recuperar o valor total de uma conta excluindo isso com uma operação AccountMerge. Um cabeçalho de razão, mostrado na Figura 3, armazena atributos globais: um número de razão, parâmetros como o saldo de reserva por entrada do razão, um hash do cabeçalho do razão anterior (na verdade vários hashes formando uma skiplist), a saída SCP incluindo um hash de novas transações aplicadas neste razão, um hash de os resultados dessas transações (por exemplo, sucesso ou fracasso para cada) e um instantâneo hash de todas as entradas do razão. Como o instantâneo hash inclui todo o conteúdo do razão, validators não precisam reter histórico para validar transações. No entanto, para escalar para centenas de milhões de contas, não podemos rehash todas as tabelas de lançamento contábil em cada fechamento do livro razão. Além disso, não é prático transferir um livro razãoPagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá razão # = 4 H (hdr anterior) Saída SCP H∗(resultados) H∗(instantâneo) ... cabeçalho razão # = 5 H (hdr anterior) Saída SCP H∗(resultados) H∗(instantâneo) ... cabeçalho . . . Figura 3. Conteúdo do razão. H é SHA-256, enquanto H ∗representa aplicação hierárquica ou recursiva de H. Saída SCP também depende do cabeçalho anterior hash. Criar conta Criar e financiar nova entrada no razão da conta Mesclagem de contas Excluir entrada do razão da conta Definir opções Alterar sinalizadores e assinantes da conta Pagamento Pague uma quantidade específica de ativo ao destino. conta. CaminhoPagamento Semelhante ao Pagamento, mas pague em ativos diferentes (até limitar); especifique até 5 ativos intermediários Gerenciar oferta Criar/excluir/alterar entrada do razão de ofertas, -Oferta passiva com variante passiva para permitir spread zero Gerenciar dados Criar/excluir/alterar conta. entrada de dados Mudança de confiança Criar/excluir/alterar linha confiável Permitir confiança Definir ou limpar sinalizador autorizado na linha confiável Sequência de Bump Aumente a sequência. número na conta Figura 4. Principais operações contábeis desse tamanho toda vez que um nó foi desconectado a rede por muito tempo. O instantâneo hash é, portanto, projetado para otimizar hashing e reconciliação de estado. Especificamente, o instantâneo estratifica as entradas do razão por tempo da última modificação em um conjunto de contêineres de tamanho exponencial chamados baldes. A coleção de baldes é chamada de balde lista e tem alguma semelhança com árvores de mesclagem estruturadas em log (Árvores LSM) [77]. A lista de baldes não é lida durante o processamento da transação (ver Seção 5.4). Portanto, certo design aspectos das árvores LSM podem ser relaxados. Em particular, aleatório o acesso por chave não é necessário e os buckets só são lidos sequencialmente como parte da fusão de níveis. Hashing do balde list é feita hash cada intervalo à medida que ele é mesclado e calculando um novo hash cumulativo do intervalo hashes (um pequeno, índice fixo de referência hashes) em cada fechamento do razão. Reconciliar a lista de baldes após a desconexão requer download apenas baldes que diferem. 5.2 Modelo de transação Uma transação consiste em uma conta de origem, critérios de validade, um memorando e uma lista de uma ou mais operações. A Figura 4 lista as operações disponíveis. Cada operação possui uma conta de origem, que o padrão é o da transação geral. Uma transação deve ser assinado por chaves correspondentes a cada conta de origem em uma operação. Contas Multisig podem exigir assinatura superior peso para algumas operações (como SetOptions) e menor para outros (como AllowTrust). As transações são atômicas – se alguma operação falhar, nenhuma delas eles executam. Isso simplifica negócios multidirecionais. Suponha que um o emissor cria um ativo para representar escrituras de terra, e o usuário A quer trocar um pequeno terreno mais US$ 10.000 por um maior parcela de terreno de propriedade de B. Os dois usuários podem assinar uma única transação contendo três operações: dois terrenos pagamentos e pagamento de um dólar. O principal critério de validade de uma transação é o seu número de sequência, que deve ser um valor maior que o número da transação. entrada no razão da conta de origem. Executando uma transação válida (com sucesso ou não) incrementa o número de sequência, evitando a repetição. Os números de sequência iniciais contêm o razão número nos bits altos para evitar a repetição mesmo após a exclusão e recriar uma conta. O outro critério de validade é um limite opcional sobre quando uma transação pode ser executada. Voltando à terra e ao dólar swap acima, se A assinar a transação antes de B, A não poderá quer que B permaneça na transação por um ano antes de enviar isso, e assim poderia colocar um limite de tempo invalidando a transação depois de alguns dias. Contas Multisig também podem ser configuradas para dar peso de assinatura à revelação de uma pré-imagem hash, que, combinado com limites de tempo, permite a negociação atômica de crosschain [1]. A conta de origem de uma transação paga uma taxa trivial em XLM, 10−5 XLM, a menos que haja congestionamento. Sob congestionamento, o o custo das operações é definido por leilão holandês. Validadores são não compensado por taxas porque validators são análogos para Bitcoin nós completos, não mineradores. Em vez de destruir o XLM, as taxas são recicladas e distribuídas proporcionalmente pelo voto dos detentores de XLM existentes, que em retrospecto podem ou podem não valeu a pena a complexidade. 5.3 Valores de consenso Para cada razão, Stellar usa SCP para chegar a um acordo sobre uma estrutura de dados com três campos: um conjunto de transações hash (incluindo um hash do cabeçalho do razão anterior), um horário de fechamento, umd atualizações. Quando vários valores são confirmados como nomeados, Stellar leva o conjunto de transações com mais operações (quebrando empates por taxas totais, então conjunto de transações hash), a união de todos atualizações e o maior tempo de fechamento. Um tempo próximo é apenas válido se for entre o horário de fechamento do último razão e o presente, então os nós não nomeiam tempos inválidos. As atualizações ajustam parâmetros globais como saldo de reserva, taxa mínima de operação e versão do protocolo. Quando combinados durante a nomeação, taxas mais altas e números de versão de protocolo substituem os mais baixos. As atualizações afetam a governança por meio de um espaço de disputa de votação federada [34], nem igualitário nem centralizado. Cada validator é configurado como governamental ou não governamental (o padrão), de acordo com se o seu operador deseja participar na governação. Os validators governantes consideram três tipos de atualização: desejado, válido e inválido (qualquer coisa que validator não

SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. validator núcleo horizonte FS BD BD enviar cliente cliente outros validators Figura 5. Arquitetura Stellar validator saiba como implementar). As atualizações desejadas são configuradas para acionado em um momento específico, destinado a ser coordenado entre operadores. Os nós governantes sempre votam para nomear os atualizações, aceite, mas não vote para nomear atualizações válidas (ou seja, concordar com um quórum de bloqueio) e nunca votar ou aceitar atualizações inválidas. Eco de validators não governamentais qualquer voto que eles vejam para uma atualização válida, essencialmente delegando a decisão sobre quais upgrades são desejados para aqueles que optam para um papel de governança. 5.4 Implementação A Figura 5 mostra a arquitetura validator de Stellar. Um demônio chamado stellar-core (∼92k linhas de C++, sem contar bibliotecas de terceiros) implementa o protocolo SCP e a máquina de estado replicada. A produção de valores para SCP requer a redução de um grande número de entradas contábeis para pequenos valores criptográficos. hashes. Por outro lado, a validação e execução de transações requer a consulta do estado da conta e da correspondência de pedidos em o melhor preço. Para servir ambas as funções de forma eficiente, stellar-core mantém duas representações do razão: uma representação externa contendo a lista de baldes, armazenada como arquivos binários que pode ser atualizado de forma eficiente e rehashed incrementalmente, e uma representação interna em um banco de dados SQL (PostgreSQL para nós de produção). Stellar-core cria um arquivo de histórico somente gravação contendo cada conjunto de transações que foi confirmado e instantâneos de baldes. O arquivo permite que novos nós sejam inicializados ao ingressar na rede. Ele também fornece um registro do razão história - é preciso haver algum lugar onde se possa procurar um transação de dois anos atrás. Como o histórico é apenas anexado e acessado com pouca frequência, pode ser mantido em lugares baratos como Amazon Glacier ou qualquer serviço que permita armazenar e recuperar arquivos simples. Os hosts validadores normalmente não hospedam seus próprios arquivos, de modo a evitar qualquer impacto na validação desempenho do histórico de veiculação. Para manter o núcleo estelar simples, ele não se destina a ser usado diretamente pelas aplicações e expõe apenas uma interface muito estreita para o envio de novas transações. Para apoiar clientes, a maioria dos validators executam um daemon chamado horizonte (∼18k linhas de Go) que fornece uma interface HTTP para enviar e aprendizagem de transações. Horizon tem acesso somente leitura a banco de dados SQL do stellar-core, minimizando o risco de horizonte núcleo estelar desestabilizador. Recursos como localização de caminhos de pagamento são implementados inteiramente no horizonte e podem ser atualizados unilateralmente sem coordenação com outros validators. Vários daemons opcionais de camada superior são clientes do horizonte, completando o ecossistema. Um servidor bridge facilita integração de Stellar com sistemas existentes, por exemplo, publicação de notificações de todos os pagamentos recebidos por uma conta específica. Um servidor de conformidade fornece ganchos para instituições financeiras trocar e aprovar informações do remetente e do beneficiário sobre pagamentos, para cumprimento das listas de sanções. Finalmente, um servidor de federação implementa uma nomenclatura legível por humanos sistema de contas. 6 Experiência de implantação Stellar cresceu durante vários anos até se tornar um estado com um moderado número de operadores de nó completo razoavelmente confiáveis. No entanto, as configurações dos nós eram tais que a vivacidade (embora não segurança) dependia de nós, a Stellar Fundação de Desenvolvimento (FDS); se o SDF desaparecesse repentinamente, outros operadores de nó precisaria intervir e nos remover manualmente das fatias de quórum para a rede continuar. Embora nós e muitos outros desejemos reduzir a importância sistémica do FDS, este objectivo recebeu prioridade crescente após pesquisadores [58] quantificaram e divulgaram a centralização da rede sem diferenciar os riscos à segurança e vivacidade. Vários operadores reagiram com ajustes activos de configuração, aumentando principalmente o tamanho dos seus fatias de quórum num esforço para diluir a importância do SDF; ironicamente, isso apenas aumentou o risco de vida. Dois problemas agravaram a situação. Primeiro, um popular ferramenta de monitoramento Stellar de terceiros [5] foi sistematicamente superestimando o tempo de atividade de validator por não verificar realmente aquele núcleo estelar estava funcionando; isso leva as pessoas a incluir nós não confiáveis em suas fatias de quorum. Em segundo lugar, um bug no núcleo estelar significa uma vez que um validator mudou para o próximo livro-razão, não ajudou adequadamente os nós restantes a completar o anteriorlivro contábil em caso de perda de mensagens. Como resultado, o rede experimentou 67 minutos de inatividade e exigiu coordenação manual por administradores validator para reiniciar. Pior ainda, ao tentar reiniciar a rede, resultaram reconfigurações apressadas simultâneas em vários nós. em uma configuração incorreta coletiva que permitiu que alguns nós divergem, exigindo um desligamento manual desses nós e reapresentação das operações aceitas durante a divergência. Felizmente, esta divergência foi detectada e corrigida rapidamente e não continha transações conflitantes, mas o risco de a rede não aproveitar a interseção de quorum - divisão enquanto continua a aceitar conflitos potencialmente conflitantes transações, simplesmente devido a configuração incorreta - foi feita muito concreto por este incidente. A revisão dessas experiências levou a duas conclusões principais e ações corretivas correspondentes.Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Crítico, 100% 51% 51% Alto, 67% 51% Médio, 67% 51% Baixo, 67% 51% 51% ... ... ... 51% ... 51% Figura 6. Hierarquia de qualidade do validador. Nós da mais alta qualidade exigem o limite mais alto de 100%, enquanto as qualidades mais baixas são configuradas para o limite de 67%. Nós dentro de um único organização exige uma maioria simples de 51%. 6.1 Complexidade e fragilidade da configuração Stellar expressa fatias de quorum como conjuntos de quorum aninhados que consistem em n entradas e um limite k onde qualquer conjunto de k entradas constitui uma fatia do quórum. Cada uma das n entradas é então uma chave pública validator ou, recursivamente, outro conjunto de quorum. Embora flexíveis e compactos, percebemos o quórum aninhado conjuntos simultaneamente proporcionavam aos operadores de nós muita flexibilidade e pouca orientação: era fácil escrever de forma insegura (ou configurações até mesmo absurdas). Os critérios para agrupamento nós em conjuntos, para organizar subconjuntos em uma hierarquia, e Os critérios para a escolha dos limiares eram insuficientemente claros e contribuíram para falhas operacionais. Não estava claro se deveria tratar um “nível” na hierarquia de conjunto aninhado como um nível de confiança; ou uma organização, ou ambos; muitas configurações no campo misturou esses conceitos, além de especificar perigosos ou limites sem sentido. Portanto, adicionamos um mecanismo de configuração mais simples que separa dois aspectos dos conjuntos de quorum aninhados: agrupamento nós juntos por organização e rotulando cada organização com uma classificação de confiança simples (baixa, média, alta ou crítico). As organizações de nível superior ou superior são obrigadas a publicar arquivos históricos. O novo sistema sintetiza conjuntos de quorum aninhados nos quais cada organização é representada como um Limite de 51% definido e as organizações são agrupadas em conjuntos com limites de 67% ou 100% (dependendo da qualidade do grupo). Cada grupo é uma única entrada no próximo grupo (de qualidade superior), conforme ilustrado na Figura 6. Este modelo simplificado reduz o probabilidade de configuração incorreta, tanto em termos de estrutura dos conjuntos aninhados sintetizados e os limites escolhidos para cada conjunto. 6.2 Detecção proativa de configuração incorreta Em segundo lugar, percebemos que detectar a má configuração colectiva, esperando para observar os seus efeitos negativos, é demasiado tarde. Especialmente no que diz respeito a configurações incorretas que podem divergir – uma modo de falha mais sério do que a parada – a rede precisa ser capaz de detectar erros de configuração imediatamente para que os operadores possam revertê-los antes que qualquer divergência realmente aconteça. Para atender a essa necessidade, construímos um mecanismo no software validator que reúne continuamente o estado de configuração coletiva de todos os pares no fechamento transitivo do nó e detecta o potencial de divergência - ou seja, disjunção. quóruns – dentro dessa configuração coletiva. 6.2.1 Verificando a interseção do quórum Embora coletar fatias de quórum seja fácil, encontrar quóruns disjuntos entre eles é co-NP-difícil [62]. Contudo, adotamos um conjunto de heurísticas algorítmicas e regras de eliminação de casos proposto por Lachowski [62] que verifica instâncias típicas do problema várias ordens de magnitude mais rápido do que custo do pior caso. Na prática, a actual rede os fechamentos transitivos da fatia de quorum são da ordem de 20 a 30 nós e, com as otimizações de Lachowski, normalmente verifica em questão de segundos em uma única CPU. Caso surja a necessidade para melhorar o desempenho, podemos paralelizar a pesquisa. 6.2.2 Verificando configurações arriscadas Detectar que a rede admite quóruns disjuntos é um passo na direção certa, mas sinaliza o perigo desconfortavelmente tarde para uma questão tão crítica. Idealmente, queremos que os operadores dos nós recebam avisos quando a configuração coletiva da rede está apenas se aproximando de um estado de risco. Portanto, estendemos o verificador de interseção de quorum para detectar uma condição que chamamos de criticidade: quando a corrente configuração coletiva está a uma configuração incorreta de um estado que admite quóruns disjuntos. Para detectar criticidade, o verificador substitui repetidamente a configuração de cada organização por uma configuração incorreta simulada do pior caso e, em seguida, executa novamente o verificador de interseção de quorum interno no resultado. Se alguma configuração incorreta crítica existir a um passo de distância do estado atual, o software emite um aviso e relata que a organização representa um risco de configuração incorreta. Estas mudanças dão à comunidade de operadores duas camadas aviso e orientação para isolar contra as piores formas de má configuração coletiva.

Платежная сеть

В этом разделе описывается платежная сеть Stellar, реализованная как реплицированный конечный автомат PH_0000 поверх SCP. 5.1 Модель бухгалтерской книги Регистр Stellar построен на абстракции счета (в в отличие от более ориентированного на монеты вывода неизрасходованных транзакций или UTXO модель Bitcoin). Содержимое реестра состоит из набор записей бухгалтерской книги четырех различных типов: счета, линии доверия, предложения и данные учетной записи. Счета — это принципалы, которые владеют и выпускают активы. Каждый учетная запись называется по открытому ключу. По умолчанию соответствующий закрытый ключ может подписывать транзакции для учетной записи. Однако учетные записи можно перенастроить, чтобы добавить других подписывающих лиц и деавторизовать ключ, который называет учетную запись, с помощью опция «multisig», требующая нескольких подписывающих лиц. Каждый аккаунт также содержит: порядковый номер (включенный в транзакции для предотвращения повтора), некоторые флаги и баланс в «родном» предварительно добытая криптовалюта под названием XLM, предназначенная для смягчения последствий некоторые атаки типа «отказ в обслуживании» и способствуют созданию рынка как нейтральная валюта. Линии доверия отслеживают право собственности на выпущенные активы, которые именуется парой, состоящей из эмиссионного счета и короткого код актива (например, «USD» или «EUR»). Каждая линия доверия определяет счет, актив, баланс счета в этом активе, предел, выше которого баланс не может подняться, и некоторые флаги. Учетная запись должна дать явное согласие на хранение актива путем создание линии доверия, предотвращающей обременение спамеров аккаунты с нежелательными активами. Правила «Знай своего клиента» (KYC) требуют, чтобы многие финансовые учреждения знали, чьи депозиты они держат. например, проверив удостоверение личности с фотографией. Для соблюдения требований эмитенты могут установить дополнительный флаг auth_reqired в их учетных записях, ограничивающий право собственности на активы, которые они выдают, авторизованным учетным записям. Для предоставления такого разрешения эмитент устанавливает авторизованный пометить на линиях доверия клиентов. Предложения соответствуют готовности аккаунта торговать вверх. на определенное количество определенного актива в обмен на другой при данном цена в книге заказов; они автоматически сопоставляются и заполняется при пересечении цен покупки/продажи. Наконец, данные учетной записи состоят из троек учетной записи, ключа и значения, что позволяет владельцам учетных записей публиковать небольшие значения метаданных. Чтобы предотвратить спам в реестре, существует минимальный баланс XLM. называется резервом. Резерв счета увеличивается с каждым связанная запись в бухгалтерской книге и уменьшается, когда запись в бухгалтерской книге исчезает (например, когда ордер исполнен или отменен, или когда линия доверия удалена). На данный момент резерв увеличивается на 0,5 XLM. (∼0,03 доллара США) за запись в бухгалтерской книге. Независимо от резерва, это можно вернуть всю стоимость учетной записи, удалив это с помощью операции AccountMerge. Заголовок реестра, показанный на рисунке 3, хранит глобальные атрибуты: номер бухгалтерской книги, такие параметры, как резервный баланс на запись в бухгалтерской книге, hash предыдущего заголовка бухгалтерской книги (фактически несколько hashes, образующих список пропуска), выходные данные SCP, включая hash новых транзакций, примененных в этом реестре, hash результаты этих транзакций (например, успех или неудача для каждый), а также снимок hash всех записей бухгалтерской книги. Поскольку снимок hash включает в себя все содержимое бухгалтерской книги, validator не требуется сохранять историю для проверки транзакций. Однако для масштабирования до сотен миллионов ожидаемых счетов, мы не можем повторно hash все таблицы записей главной книги на каждом бухгалтерскую книгу закрыть. Кроме того, передавать реестр непрактично.Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада регистр № = 4 H(предыдущий hdr) Выход SCP H∗(результаты) H∗(снимок) ... заголовок регистр № = 5 H(предыдущий hdr) Выход SCP H∗(результаты) H∗(снимок) ... заголовок . . . Рисунок 3. Содержимое реестра. H — это SHA-256, а H * представляет собой иерархическое или рекурсивное применение вывода H. SCP. также зависит от предыдущего заголовка hash. Создать аккаунт Создайте и профинансируйте новую запись в книге счетов Слияние учетных записей Удалить запись в книге учета счетов Установить параметры Изменение флагов учетной записи и подписантов Оплата Выплатите определенное количество актива в пользу dest. акт. ПутьОплата Как оплата, но оплата в другом активе (вверх). ограничить); укажите до 5 промежуточных активов Управление предложением Создать/удалить/изменить запись в книге предложений, -Пассивное предложение с пассивным вариантом, обеспечивающим нулевой спред Управление данными Создать/удалить/изменить аккаунт. запись в книге данных ИзменениеДоверие Создать/удалить/изменить линию доверия Разрешить доверие Установить или снять флаг авторизации на линии доверия BumpSequence Увеличение сек. номер на счету Рисунок 4. Основные операции реестра такого размера каждый раз, когда узел отключался от сети слишком долго. Таким образом, снимок hash предназначен для оптимизации как hashing, так и согласования состояний. В частности, моментальный снимок стратифицирует записи реестра по времени. последней модификации в наборе контейнеров экспоненциального размера называются ведрами. Совокупность ведер называется ведром. список и имеет некоторое сходство с деревьями слияния с логарифмической структурой. (LSM-деревья) [77]. Список желаний не читается во время обработки транзакции (см. раздел 5.4). Следовательно, определенный дизайн аспекты LSM-деревьев можно ослабить. В частности, случайный доступ по ключу не требуется, а сегменты доступны только для чтения последовательно в рамках слияния уровней. Хеширование ведра список создается путем hash обработки каждого сегмента по мере его объединения и расчета нового совокупного значения hash сегмента hashes (небольшого, фиксированный справочный индекс hashes) при каждом закрытии бухгалтерской книги. Для согласования списка желаний после отключения требуется загрузка различаются только ведра. 5.2 Модель транзакции Транзакция состоит из исходного счета, критериев действительности, памятка и список одной или нескольких операций. На рис. 4 перечислены доступные операции. Каждая операция имеет исходный аккаунт, который по умолчанию соответствует значению всей транзакции. Транзакция должна быть подписан ключами, соответствующими каждой исходной учетной записи в операция. Учетные записи с мультиподписью могут потребовать более высокого уровня подписи. вес для некоторых операций (например, SetOptions) и ниже для других (например, AllowTrust). Транзакции являются атомарными: если какая-либо операция завершается неудачно, ни одна из их казнят. Это упрощает многосторонние сделки. Предположим, эмитент создает актив для представления земельных документов, а пользователь А хочет обменять небольшой земельный участок плюс 10 000 долларов на больший земельный участок, принадлежащий Б. Оба пользователя могут подписать одна сделка, содержащая три операции: две земельные платежи и платеж в один доллар. Основным критерием действительности транзакции является ее порядковый номер, который должен быть на единицу больше, чем номер транзакции. запись в книге учета исходных счетов. Выполнение действительной транзакции (успешно или нет) увеличивает порядковый номер, предотвращая повтор. Начальные порядковые номера содержат реестр номер в старших битах, чтобы предотвратить повтор даже после удаления и повторное создание учетной записи. Другим критерием достоверности является необязательное ограничение на то, когда транзакция может быть выполнена. Возвращение к земле и доллару своп выше, если A подписывает транзакцию раньше B, A не может хочу, чтобы B участвовал в транзакции в течение года, прежде чем отправить ее это, и поэтому может установить ограничение по времени, делающее транзакцию недействительной через несколько дней. Учетные записи с мультиподписью также могут быть настроены. чтобы придать вес подписи обнаружению прообраза hash, что в сочетании с ограничениями по времени позволяет осуществлять атомарную кроссчейн-торговлю [1]. С исходного счета транзакции взимается небольшая комиссия в XLM. 10−5 XLM, если нет перегрузок. В условиях заторов, Стоимость операций устанавливается на голландском аукционе. Валидаторы не компенсируется комиссией, поскольку validators аналогичны на Bitcoin полные узлы, а не майнеры. Вместо того, чтобы уничтожить XLM, сборы перерабатываются и распределяются пропорционально голосованием существующие держатели XLM, которые, оглядываясь назад, могут или могут не стоили такой сложности. 5.3 Консенсусные ценности Для каждого реестра Stellar использует SCP для согласования структуры данных. с тремя полями: набор транзакций hash (включая hash предыдущего заголовка книги), время закрытия,д обновления. Если подтверждено назначение нескольких значений, Stellar принимает набор транзакций с наибольшим количеством операций (разрыв связей по общей сумме комиссий, затем набор транзакций hash), объединение всех обновления и максимальное время закрытия. Близкое время только действительно, если это происходит между временем закрытия последнего реестра и присутствует, поэтому узлы не указывают недопустимое время. Обновления настраивают глобальные параметры, такие как резервный баланс, минимальная комиссия за операцию и версия протокола. Когда При объединении во время номинации более высокие сборы и номера версий протокола заменяют более низкие. Обновления влияют на управление через пространство федеративного голосования [34], ни эгалитарный и централизованный. Каждый validator настроен как либо управляющий, либо неуправляющий (по умолчанию), в зависимости от от того, хочет ли его оператор участвовать в управлении. Управляющие validators рассматривают три типа обновления: желаемый, действительный и недействительный (все, что validator не делает

SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. validator ядро горизонт ФС БД БД отправить клиент клиент другие validators Рисунок 5. Архитектура Stellar validator знаю, как реализовать). Желаемые обновления настроены на запуск в определенное время, предназначенный для координации между операторы. Управляющие узлы всегда голосуют за выдвижение желаемых обновления: принимайте, но не голосуйте за назначение действительных обновлений (т. е. соглашайтесь с блокирующим кворумом) и никогда не голосуйте за или принять недействительные обновления. Неуправляющее эхо validators любой голос, который они видят за действительное обновление, по сути делегируя решение о том, какие обновления желательны для тех, кто выбирает на руководящую роль. 5.4 Реализация На рис. 5 показана архитектура validator Stellar. Демон называемый stellar-core (~92 тыс. строк C++, не считая сторонних библиотек), реализует протокол SCP и реплицируемый конечный автомат. Создание значений для SCP требует сокращения большого количества записей реестра до небольших криптографических операций. hashes. Напротив, проверка и выполнение транзакции требует просмотра состояния учетной записи и сопоставления заказов на лучшая цена. Чтобы эффективно выполнять обе функции, звездное ядро хранит два представления реестра: внешнее представление, содержащее список сегментов, хранящееся в виде двоичных файлов, которые могут быть эффективно обновлены и постепенно измененыhash, а также внутреннее представление в базе данных SQL (PostgreSQL для производственных узлов). Stellar-core создает архив истории, доступный только для записи, содержащий каждый подтвержденный набор транзакций и снимки ведра. Архив позволяет новым узлам загружаться самостоятельно. при подключении к сети. Он также обеспечивает запись в бухгалтерской книге история — должно быть место, где можно найти сделка двухлетней давности. Поскольку история доступна только для добавления и доступ к нему нечастый, его можно хранить в дешевых местах например Amazon Glacier или любой сервис, позволяющий хранить и получить плоские файлы. Хосты-валидаторы обычно не размещают свои собственные архивы, чтобы избежать какого-либо влияния на проверку производительность из истории обслуживания. Чтобы сохранить простоту звездного ядра, оно не предназначено для использования непосредственно приложениями и предоставляет лишь очень узкий интерфейс для отправки новых транзакций. Поддержать клиентов, большинство validator используют демон под названием Horizon (~18 тыс. строки Go), который предоставляет HTTP-интерфейс для отправки и изучение транзакций. Horizon имеет доступ только для чтения к База данных SQL stellar-core, сводящая к минимуму риск горизонта дестабилизирующее звездное ядро. Такие функции, как поиск пути платежа, будут полностью реализованы в перспективе и могут быть обновлены. в одностороннем порядке без согласования с другими validators. Несколько дополнительных демонов более высокого уровня являются клиентами горизонта, дополняя экосистему. Сервер-мост облегчает интеграция Stellar с существующими системами, например, публикация уведомлений обо всех платежах, полученных на определенный счет. А сервер соответствия предоставляет финансовым учреждениям возможность обмен и утверждение информации об отправителе и получателе по выплатам, за соблюдением санкционных списков. Наконец, сервер федерации реализует удобочитаемое именование система для аккаунтов. 6 Опыт внедрения Stellar за несколько лет перерос в состояние с умеренным количество достаточно надежных операторов полного узла. Однако, конфигурации узлов были таковы, что работоспособность (хотя и не безопасность) зависела от нас, Фонда развития Stellar (СДС); если бы SDF внезапно исчез, другие операторы узлов пришлось бы вмешаться и удалить нас вручную из фрагментов кворума, чтобы сеть могла продолжить работу. Хотя мы и многие другие хотим снизить системную значимость СДС, эта цель получила все больший приоритет после исследователи [58] количественно оценили и обнародовали централизацию сети, не дифференцируя риски для безопасности и живость. Ряд операторов отреагировали активными изменениями конфигурации, в первую очередь увеличением размера своих дробление кворума в попытке ослабить важность SDF; по иронии судьбы это только увеличило риск для жизни. Ситуацию усугубили две проблемы. Во-первых, популярный сторонний инструмент мониторинга Stellar [5] систематически переоценка времени безотказной работы validator без фактической проверки это звездное ядро работало; это побуждает людей включать ненадежные узлы в своих срезах кворума. Во-вторых, ошибка в звездное ядро означало, что как только validator перейдет в следующий реестр, это не помогло должным образом остальным узлам завершить предыдущеесобственный реестр на случай потери сообщений. В результате сеть испытала 67 минут простоя и потребовала координация вручную администраторами validator для перезапуска. Хуже того, попытка перезапустить сеть привела к одновременным поспешным реконфигурациям на нескольких узлах. в коллективной неправильной конфигурации, которая позволила некоторым узлам расходятся, что требует ручного отключения этих узлов и повторная отправка сделок, принятых во время расхождения. К счастью, это расхождение было обнаружено и исправлено. быстро и не содержало конфликтующих транзакций, но риск того, что сеть не сможет воспользоваться пересечением кворума — расщепление, продолжая при этом принимать потенциально конфликтующие транзакций, просто из-за неправильной конфигурации — было сделано очень конкретен в этом инциденте. Анализ этого опыта привел к двум важным выводам. и соответствующие корректирующие действия.Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Критический, 100% 51% 51% Высокий, 67% 51% Средний, 67% 51% Низкий, 67% 51% 51% ... ... ... 51% ... 51% Рисунок 6. Иерархия качества валидатора. Узлы высочайшего качества требуется самый высокий порог 100 %, тогда как более низкие качества настроены на порог 67 %. Узлы внутри одного организации требуется простое большинство в 51%. 6.1 Сложность и хрупкость конфигурации Stellar выражает фрагменты кворума как вложенные наборы кворума, состоящие из n записей и порога k, где любой набор из k записей составляет срез кворума. Тогда каждая из n записей либо открытый ключ validator или, рекурсивно, другой набор кворума. Несмотря на гибкость и компактность, мы реализовали вложенный кворум. наборы одновременно предоставляли операторам узлов слишком большую гибкость и слишком мало указаний: было легко написать небезопасное (или даже бессмысленные) конфигурации. Критерии группировки узлы в наборы для организации подмножеств в иерархию и все пороговые значения для выбора были недостаточно ясными и способствовали сбоям в работе. Было не ясно, стоит ли рассматривать «уровень» в иерархии вложенных множеств как уровень доверия, или организация, или и то, и другое; множество конфигураций в полевых условиях смешали эти понятия, помимо указания опасных или бессмысленные пороги. Поэтому мы добавили более простой механизм настройки. который разделяет два аспекта вложенных наборов кворума: группировку узлы вместе по организациям и маркируя каждую организацию простой классификацией доверия (низкое, среднее, высокое или критично). Организации уровня и выше обязаны публиковать исторические архивы. Новая система синтезирует наборы вложенных кворумов, в которых каждая организация представлена как Установлен порог 51%, и организации сгруппированы в наборы с порогом 67% или 100% (в зависимости от качества группы). Каждая группа представляет собой отдельную запись в следующей (более качественной) группе. как показано на рисунке 6. Эта упрощенная модель уменьшает вероятность неправильной конфигурации, как с точки зрения структуры синтезированных вложенных наборов и порогов, выбранных для каждый набор. 6.2 Упреждающее обнаружение неправильной конфигурации Во-вторых, мы поняли, что обнаруживать коллективную неправильную конфигурацию, ожидая наблюдения за ее негативными последствиями, уже слишком поздно. Особенно в отношении неправильных конфигураций, которые могут расходиться. более серьезный режим отказа, чем остановка — сети необходимо чтобы иметь возможность немедленно обнаружить неправильную конфигурацию, чтобы операторы могли исправить ее до того, как действительно произойдет какое-либо расхождение. Чтобы удовлетворить эту потребность, мы встроили в программное обеспечение validator механизм, который непрерывно собирает состояние коллективной конфигурации всех узлов в транзитивном замыкании узла и обнаруживает возможность расхождения, т. е. непересекающихся кворумы — внутри этой коллективной конфигурации. 6.2.1 Проверка пересечения кворума Хотя собрать фрагменты кворума легко, найти среди них непересекающиеся кворумы — задача со-NP-сложная [62]. Однако мы приняли набор алгоритмических эвристик и правил исключения регистров предложено Лачовски [62], которое проверяет типичные экземпляры решения проблемы на несколько порядков быстрее, чем стоимость в худшем случае. Практически говоря, нынешняя сеть транзитивных замыканий среза кворума порядка 20–30. узлы и, с помощью оптимизации Лаховски, обычно проверяют за считанные секунды на одном процессоре. Если возникнет необходимость для повышения производительности мы можем распараллелить поиск. 6.2.2 Проверка рискованных конфигураций Обнаружение того, что сеть допускает непересекающиеся кворумы, является шагом в правильном направлении, но сигнализирует об опасности неприятно поздно по столь критичному вопросу. В идеале мы хотим, чтобы операторы узлов получали предупреждения, когда коллективная конфигурация сети просто приближается к опасному состоянию. Поэтому мы расширили проверку пересечения кворума чтобы обнаружить состояние, которое мы называем критичностью: когда текущий коллективная конфигурация находится на расстоянии одной неправильной конфигурации от государство, допускающее непересекающиеся кворумы. Чтобы обнаружить критичность, программа проверки неоднократно заменяет конфигурацию каждой организации смоделированной наихудшей ошибкой конфигурации, а затем повторно запускает проверку пересечения внутреннего кворума для результата. Если такая критическая неправильная конфигурация существует в одном шаге из текущего состояния, программное обеспечение выдает предупреждение и сообщает об организации, представляющей риск неправильной конфигурации. Эти изменения дают сообществу операторов два уровня. уведомлений и указаний для защиты от наихудших форм коллективной неправильной конфигурации.

Avaliação

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

Para entender a adequação de Stellar como pagamento global e rede comercial, avaliamos o estado da rede pública e realizou experimentos controlados em um laboratório experimental privado rede. Nós nos concentramos nas seguintes questões: • Qual é a aparência da topologia da rede de produção? Quantas mensagens são transmitidas em média e como o SCP experimenta tempos limite? • O consenso e as latências de atualização do razão permanecem independentes do número de contas?SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. • Como as latências são afetadas pelo aumento de (a) transações por segundo (e, consequentemente, transações por razão) e (b) o número de nós validator? • Qual é o custo de execução de um nó em termos de CPU, memória e largura de banda da rede? As redes de pagamento têm taxas de transação baixas em comparação para outros tipos de sistema distribuído. Os principais blockchains, Bitcoin e Ethereum, confirme até 15 transações/segundo, menos de Stellar. Além disso, esses sistemas levam minutos para uma hora para confirmar uma transação com segurança, porque a prova de trabalho exige a espera pela mineração de vários blocos. O A rede SWIFT não blockchain teve uma média de apenas 420 transações por segundo em seu dia de pico [14]. Escolhemos, portanto, para comparar nossas medições com a meta de 5 segundos intervalo de contabilidade, um alvo mais agressivo. Nossos resultados mostram que as latências estão confortavelmente abaixo deste limite, mesmo com várias otimizações não implementadas ainda em andamento. 7.1 Âncoras Os ativos mais negociados por volume incluem moeda (por exemplo, 3 USD âncoras, 2 CNY), uma âncora Bitcoin, um título garantido por imóveis token [92] e uma moeda no aplicativo [8]. Âncoras diferentes têm políticas diferentes. Por exemplo, uma âncora em USD, Stronghold, define auth_reqired e exige um processo conheça seu cliente (KYC) para cada conta que possui seu ativos. Outro, AnchorUSD, vamos receber e negociar seus dólares americanos (tornando literalmente possível enviar US$ 0,50 para o México em 5 segundos com uma taxa de US$ 0,000001). No entanto, AnchorUSD exige KYC e taxas para comprar ou resgatar seus dólares americanos com transferências bancárias convencionais. Nas Filipinas, onde regulamentações bancárias são mais flexíveis para pagamentos recebidos, coins.ph suporta saques de PHP em qualquer caixa eletrônico [36]. Além da segurança token mencionada acima e da moeda no aplicativo, há uma variedade de tokens não monetários que variam de títulos comerciais [22] e créditos de carbono [85, 96] para mais ativos esotéricos, como um token que incentiva a colaboração reintegração de posse do carro [35]. 7.2 Rede pública No momento em que este livro foi escrito, havia 126 nós completos ativos, 66 dos quais participar do consenso assinando mensagens de voto. Figura 7 (gerado por [5]) visualiza a rede, com uma linha entre dois nós se um aparecer nas fatias de quorum do outro e um linha azul mais escura para mostrar dependência bidirecional. No center é um cluster de 17 “validators” de fato de primeiro nível administrado por SDF, SatoshiPay, LOBSTR, COINQVEST e Keybase. Há quatro meses, antes dos acontecimentos da Secção 6, houve havia 15 nós sistemicamente importantes: 3 de aparentemente organizações de nível um e vários singletons aleatórios. O o gráfico também parecia muito menos regular. Portanto, o novo mecanismo de configuração e/ou melhores decisões do operador parecem contribuir para uma topologia de rede mais saudável. Sem grandes recursos financeiros (e correspondentes Figura 7. Mapa de fatia de quórum obrigações), teria sido difícil recrutar 5 níveis um organizações desde o início, no entanto. Isso sugere quórum fatias desempenham um papel útil na inicialização da rede: qualquer um pode junte-se com o objetivo de se tornar um player importante porque não há guardiões para o acordo entre pares. Existem atualmente mais de 3,3 milhões de contas no livro razão. Acabou um período recente de 24 horas, Stellar teve uma média de 4,5 transações e 15,7 operações por segundo. Revendo livros contábeis recentes, a maioria as transações parecem ter uma única operação, enquanto a cada poucas livros, vemos transações contendo muitas operações que parecem vir de formadores de mercado que gerenciam ofertas. O os tempos médios para alcançar consenso e atualizar o livro foram 1061ms e 46ms, respectivamente. Os percentis 99 foram 2252 ms e 142 ms (o primeiro refletindo um tempo limite de 1 segundo na seleção do líder de nomeação). Observe que o desempenho do SCP é principalmente independente de transações por segundo, uma vez que SCP concorda com um hash de muitas transações arbitrárias. É mais provável que gargalos surjam da propagação de candidatos transações durante a nomeação, execução e validação transações e mesclagem de buckets. Ainda não precisamos para paralelizar o processamento de transações do Stellar-Core em vários núcleos de CPU ou unidades de disco. Também avaliamos o número de mensagens SCP transmitidas na rede de produção. No caso normal com um único líder eleito para indicar um valor, esperamos sete mensagens a serem transmitidas: duas mensagens para votar e aceitar um nomedeclaração nate, duas mensagens para aceitar e confirmar uma declaração de preparação, duas mensagens para aceitar e confirmar uma declaração de commit e, finalmente, uma mensagem externalizada (enviado depois de enviar um novo livro-razão para o disco para ajudar os retardatários alcançar). A implementação combina confirmar commit e externalizar mensagens como uma otimização, uma vez que é seguro externalizar um valor após ele ser confirmado. Em seguida, analisamos as métricas coletadas em uma produção Stellar validator. Acabou ao longo de 68 horas, foram emitidas 1,3 mensagens/segundo, em média de 6 a 7 mensagens por livro-razão. Notamos que o total

Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Percentil Número de tempos limite Nomeação Votação 75% 0 0 99% 1 0 Máx. 4 1 Figura 8. Tempos limite por razão superior a 68 horas contagem de mensagens transmitidas por validators é maior, pois em além das mensagens de votação federada, os nós também transmitem quaisquer transações sobre as quais tomem conhecimento. A Figura 8 mostra os tempos limite experimentados por uma produção validator durante um período de 68 horas. Os tempos limite de nomeação são uma medida da (in)eficácia da função eleitoral do líder, enquanto o tempo limite da votação depende muito da rede e possíveis atrasos nas mensagens. Os tempos limite são consistentes com o número de mensagens emitidas: seis mensagens no melhor cenário, e pelo menos sete mensagens se uma rodada de nomeação adicional for necessária. 7.3 Experimentos controlados Realizamos experimentos controlados em recipientes embalados em Instâncias c5d.9xlarge do Amazon EC2 com 72 GiB de RAM, 900 GB de SSD NVMe e 36 vCPUs. Cada instância estava em na mesma região EC2 e tinha largura de banda fixa de 10 Gbps. Usamos SQLite como loja. (Stellar também suporta PostgreSQL, mas isso tem tarefas assíncronas que injetam ruído nas medições.) Stellar fornece uma consulta de tempo de execução integrada, generateload, que permite gerar carga sintética em um alvo específico transação/segunda taxa. Embora Stellar suporte vários recursos de negociação, como carteira de pedidos e caminho entre ativos pagamentos, nos concentramos em pagamentos simples. A confirmação de transações consiste em várias etapas, por isso registrou as medições para cada um dos seguintes: • Nomeação: tempo desde a nomeação até a primeira preparação • Votação: tempo desde a primeira preparação até a confirmação de um votação confirmada • Atualização do razão: hora de aplicar o valor de consenso • Contagem de transações: transações confirmadas por razão Cada um de nossos experimentos foi definido por três parâmetros: o número de lançamentos de conta no razão, a quantidade de carga (na forma de pagamentos XLM) enviada por segundo, e o número de validators. Configuramos cada validator saber sobre todos os outros validator (o pior cenário para SCP), com fatias de quórum definidas para qualquer maioria simples de nós (de modo a maximizar o número de quóruns diferentes). Linha de base Nosso experimento de linha de base mediu Stellar com 100.000 contas, quatro validators e a geração de carga taxa de 100 transações/segundo. Observamos em média 507 transações por razão, com desvio padrão de 49 (9,7%). Observe que nenhuma transação foi descartada; o leve 105 106 107 0 500 1.000 1.500 2.000 Contas Latência [ms] Atualização do razão Votação Nomeação Figura 9. Latência à medida que o número de contas aumenta a variação é devida a limitações de programação do gerador de carga. Observamos que o número de transações por razão foi consistente com nossa taxa de geração de carga, dado o razão fechando a cada 5 segundos. Nomeação, votação e registro atualização mostrou latências médias de 82,53 ms, 95,96 ms e 174,08ms, respectivamente. Observamos que a latência de nomeação O percentil 99 está consistentemente abaixo de 61 ms, com ocasionais picos de aproximadamente 1 segundo, correspondendo à primeira etapa na função de tempo limite de seleção do líder. Dado o desempenho da linha de base, analisamos os efeitos de variar cada um dos parâmetros de configuração do teste. Contas Os dados da Figura 9 sugerem que Stellar escala bem como o número de contas aumenta. Geração de teste contas tornou-se um processo demorado, pois a criação de buckets e a fusão nos impediu de simplesmente preencher o banco de dados com contas diretamente via SQL. Por isso, conduzimos nosso experimentos para até 50 milhões de contas. Enquanto houver impacto mínimo no consenso e nas latências de atualização do razão, notamos que o aumento de contas cria uma sobrecarga de mesclando baldes, que ficam maiores. Taxa de transação A taxa de transação afeta a quantidade de multicast de tráfego entre validators, o número de transações incluídas em cada razão e o tamanho do nível superior baldes. Para entender os efeitos do aumento das transações load, realizamos um experimento com 100.000 contas e 4 validators. A Figura 10 mostra o crescimento lento na latência de consenso, enquanto a maior parte do tempo foi gasta atualizando o razão. Não é de surpreender que, à medida que o conjunto de transações aumenta de tamanho, leva mais tempo para confirmá-lo no banco de dados. Notamos também que a latência de atualização do razão depende fortemente da implementação, e é afetado pela escolha do banco de dados. Nós validadores Para ver como aumentar o número de níveis validatorsafeta o desempenho, realizamos experimentos com 100.000 contas, 100 transações/segundo e um número variável de validators de 4 a 43. Todos os validators apareceram em todas as fatias de quorum de validators; fatias de quórum menores seriam têm um impacto menor no desempenho.SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Carregar [transações/segundo] Latência [ms] Atualização do razão Votação Nomeação Figura 10. Latência à medida que a carga da transação aumenta 10 20 30 40 0 500 1.000 1.500 2.000 Validadores Latência [ms] Atualização do razão Votação Nomeação Figura 11. Latência conforme o número de nós aumenta Alterando o número de nós de validação na rede afeta o número de mensagens SCP trocadas, bem como o número de valores potenciais durante a nomeação. Figura 11 mostra o tempo de nomeação crescendo a uma taxa relativamente pequena. Embora os dados sugiram que a votação é o gargalo, acredito que muitos problemas de escala podem ser resolvidos melhorando Rede de sobreposição de Stellar para otimizar o tráfego de rede. Como esperado, a latência de atualização do razão permaneceu independente de o número de nós. Taxa de fechamento Por último, queríamos medir o desempenho ponta a ponta de Stellar medindo a frequência com que os livros contábeis são confirmados e se Stellar atinge sua meta de 5 segundos sem descartando qualquer transação. Observamos o razão médio próximo tempos de 5,03 s, 5,10 s e 5,15 s à medida que aumentamos a conta entradas, taxa de transação e número de nós, respectivamente. Os resultados sugerem que Stellar pode fechar livros contábeis de forma consistente sob alta carga. 7.4 Executando um validator Uma das características importantes de Stellar é o baixo custo de executando um validator, como as âncoras devem ser executadas (ou contratadas) validators para impor finalidade. O SDF executa três validators de produção, todos em instâncias c5.large da AWS, que possuem dois núcleos, 4 GiB de RAM e CPU Intel(R) Xeon(R) Platinum 8124M @ Processadores de 3,00 GHz. Inspecionando o uso de recursos em um dessas máquinas, observamos o processo Stellar usando cerca de 7% da CPU e 300 MiB de memória. Em termos de tráfego de rede, com 28 conexões a pares e tamanho de quorum de 34, as taxas de entrada e saída eram de 2,78 Mbit/s e 2,56 Mbit/s, respectivamente. Hardware necessário para executar tal processo é barato. No nosso caso, o custo é de US$ 0,054/hora ou cerca de US$ 40/mês. 7,5 Trabalho futuro Esses experimentos sugerem que Stellar pode facilmente escalar de 1 a 2 pedidos de magnitude além do uso atual da rede. Porque o as demandas de desempenho têm sido tão modestas até o momento, Stellar deixa espaço para muitas otimizações diretas usando técnicas bem conhecidas. Por exemplo, transações e SCP mensagens são transmitidas por validators usando uma inundação ingênua protocolo, mas idealmente deveria usar protocolo mais eficiente e estruturado multicast ponto a ponto [30]. Além disso, bancos de dados pesados o tempo de atualização do razão pode ser melhorado por meio de técnicas padrão de lote e pré-busca.

Оценка

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

Чтобы понять пригодность Stellar в качестве глобального платежа и торговой сети, мы оценили состояние публичной сети и проводил контролируемые эксперименты на частном экспериментальном сеть. Мы сосредоточились на следующих вопросах: • Как выглядит топология производственной сети? Сколько сообщений в среднем передается в эфир, и как SCP испытывает тайм-ауты? • Остаются ли задержки консенсуса и обновления реестра независимыми от количества учетных записей?SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. • Как на задержки влияет увеличение (а) транзакций в секунду (и, следовательно, количества транзакций в секунду) реестр) и (б) количество узлов validator? • Какова стоимость эксплуатации узла с точки зрения ЦП, память и пропускная способность сети? Платежные сети имеют низкую скорость транзакций по сравнению к другим типам распределенных систем. Ведущие blockchains, Bitcoin и Ethereum, подтверждают до 15 транзакций в секунду, менее Stellar. Более того, этим системам требуется несколько минут, чтобы час для безопасного подтверждения транзакции, поскольку доказательство работы требует ожидания нескольких блоков для майнинга. Сеть SWIFT, не относящаяся к blockchain, в пиковый день PH_0000 в среднем совершала всего 420 транзакций в секунду. Поэтому мы выбрали чтобы сравнить наши измерения с целевым показателем в 5 секунд интервал реестра, более агрессивная цель. Наши результаты показывают что задержки комфортно ниже этого предела даже при несколько нереализованных оптимизаций все еще находятся в стадии разработки. 7.1 Якоря В число наиболее торгуемых активов по объему входит валюта (например, 3 доллара США). якоря, 2 юаня), якоря Bitcoin, ценных бумаг, обеспеченных недвижимостью token [92] и валюты приложения [8]. У разных якорей разные политики. Например, один якорь в долларах США, Stronghold устанавливает auth_reqired и требует прохождения процедуры «знай своего клиента» (KYC) для каждой учетной записи, в которой хранятся их активы. Еще один, AnchorUSD, пусть кто угодно получает и торгует их доллары США (что делает буквально возможным отправить 0,50 доллара США в Мексику за 5 секунд с комиссией $0,000001). Однако AnchorUSD требует KYC и комиссий для покупки или погашения своих долларов США с помощью обычных банковских переводов. На Филиппинах, где банковские правила более мягкие в отношении входящих платежей, coin.ph поддерживает обналичивание PHP в любом банкомате [36]. Помимо вышеупомянутой безопасности token и валюты в приложении, существует ряд невалютных token от коммерческие облигации [22] и углеродные кредиты [85, 96] и более эзотерические активы, такие как token, стимулирующие совместную работу изъятие автомобиля [35]. 7.2 Публичная сеть На момент написания статьи имеется 126 активных полных узлов, 66 из которых участвовать в консенсусе, подписывая сообщения для голосования. Рисунок 7 (созданный [5]) визуализирует сеть с линией между два узла, если один из них присутствует в срезах кворума другого, и более темная синяя линия показывает двунаправленную зависимость. На центр представляет собой кластер из 17 де-факто «validator» первого уровня, управляемых SDF, SatoshiPay, LOBSTR, COINQVEST и Keybase. Четыре месяца назад, до событий Раздела 6, было 15 системообразующих узлов: 3 из казалось бы организации первого уровня и несколько случайных одиночек. график также выглядел гораздо менее регулярным. Следовательно, новый механизм конфигурации и/или более эффективные решения оператора кажутся чтобы внести вклад в более здоровую топологию сети. Без большие финансовые ресурсы (и соответствующий акционер Рисунок 7. Карта среза кворума обязательства), было бы сложно набрать 5 человек первого уровня однако организации с самого начала. Это предполагает кворум срезы играют полезную роль в начальной загрузке сети: каждый может присоединиться к цели стать важным игроком, потому что нет никаких привратников к парному соглашению. В настоящее время в реестре зарегистрировано более 3,3 миллиона учетных записей. Кончено за последние 24 часа Stellar в среднем совершало 4,5 транзакций и 15,7 операций в секунду. Анализируя последние бухгалтерские книги, большинство транзакции, кажется, имеют одну операцию, в то время как каждые несколько В реестрах мы видим транзакции, содержащие множество операций, которые похоже, исходят от маркет-мейкеров, управляющих предложениями. среднее время достижения консенсуса и обновления реестра составило 1061 мс и 46 мс соответственно. 99-й процентиль был 2252 мс и 142 мс (первое соответствует тайм-ауту в 1 секунду). в выборе лидера номинации). Обратите внимание, что производительность SCP в основном не зависит от транзакций в секунду, поскольку SCP соглашается на hash произвольного количества транзакций. Узкие места чаще возникают из-за распространения кандидата операции во время номинации, исполнения и проверки транзакции и объединение сегментов. Нам пока не нужно для распараллеливания обработки транзакций stellar-core на нескольких ядрах ЦП или дисках. Мы также оценили количество транслируемых SCP-сообщений. в производственной сети. В обычном случае с одним лидер, избранный для выдвижения ценности, мы ожидаем семь логических сообщения для трансляции: два сообщения для голосования и принятия номизаявление Nate, два сообщения для принятия и подтверждения заявление о подготовке, два сообщения для принятия и подтверждения оператор фиксации и, наконец, сообщение о внешнем виде (отправляется после записи нового реестра на диск, чтобы помочь отставшим догнать). Реализация сочетает в себе подтверждение фиксации и экспортировать сообщения в качестве оптимизации, поскольку это безопасно экспортировать значение после его фиксации. Затем мы анализируем показатели, собранные на производстве Stellar validator. Кончено в течение 68 часов было отправлено 1,3 сообщения в секунду, в среднем до 6-7 сообщений на реестр. Отметим, что общая сумма

Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада процентиль Количество таймаутов Номинация Голосование 75% 0 0 99% 1 0 Макс 4 1 Рисунок 8. Таймауты для каждого реестра более 68 часов количество сообщений, переданных validators, больше, поскольку в Помимо сообщений федеративного голосования, узлы также транслируют любые транзакции, о которых они узнают. На рис. 8 показаны тайм-ауты, с которыми сталкивается производственная система. validator в течение 68 часов. Тайм-ауты для выдвижения мера (не)эффективности функции выбора лидера, в то время как тайм-ауты голосования сильно зависят от сети и потенциальные задержки сообщений. Таймауты совпадают с количеством отправленных сообщений: шесть сообщений в в лучшем случае и не менее семи сообщений, если потребуется дополнительный раунд выдвижения. 7.3 Контролируемые эксперименты Мы проводили контролируемые эксперименты в контейнерах, упакованных на Инстансы Amazon EC2 c5d.9xlarge с 72 ГиБ ОЗУ, 900 ГБ твердотельного накопителя NVMe и 36 виртуальных ЦП. Каждый экземпляр находился в том же регионе EC2 и имел фиксированную пропускную способность 10 Гбит/с. В качестве хранилища мы использовали SQLite. (Stellar также поддерживает PostgreSQL, но здесь есть асинхронные задачи, которые вносят шум в измерения.) Stellar предоставляет встроенный запрос времени выполнения,generload, что позволяет генерировать синтетическую нагрузку на конкретную цель транзакция/второй курс. Хотя Stellar поддерживает различные торговые функции, такие как книга заказов и путь кросс-активов платежей, мы сосредоточились на простых платежах. Подтверждение транзакций состоит из нескольких этапов, поэтому мы записал измерения для каждого из следующих показателей: • Номинация: время от номинации до первой подготовки. • Голосование: время от первой подготовки до подтверждения голосование совершено • Обновление реестра: пришло время применить консенсусную ценность • Количество транзакций: подтвержденные транзакции по реестру. Каждый из наших экспериментов определялся тремя параметрами: количество счетных записей в книге учета, сумма нагрузка (в виде платежей XLM), отправляемая в секунду, и количество validators. Мы настраивали каждые validator знать обо всех остальных validator (наихудший сценарий для SCP), с срезами кворума, установленными на любое простое большинство узлов (чтобы максимизировать количество различных кворумов). Базовый уровень В нашем базовом эксперименте было измерено Stellar с 100 000 аккаунтов, четыре validator и генерация нагрузки Скорость 100 транзакций в секунду. В среднем мы наблюдали 507 транзакций на каждый реестр со стандартным отклонением 49. (9,7%). Обратите внимание, что ни одна транзакция не была отменена; легкий 105 106 107 0 500 1000 1500 2000 Счета Задержка [мс] Обновление бухгалтерской книги Голосование Номинация Рисунок 9. Задержка при увеличении количества учетных записей Отклонение связано с ограничениями планирования генератора нагрузки. Мы заметили, что количество транзакций в реестре соответствовало нашей скорости генерации нагрузки, согласно данным реестра закрывается каждые 5 секунд. Выдвижение, голосование и учет Обновление показало средние задержки 82,53 мс, 95,96 мс и 174,08 мс соответственно. Мы заметили, что задержка номинации 99-й процентиль постоянно ниже 61 мс, с редкими всплески длительностью примерно 1 секунду, что соответствует первому шагу в функции таймаута выбора лидера. Учитывая базовую производительность, мы рассмотрели эффекты варьирования каждого из параметров испытательной установки. Счета Данные на рисунке 9 показывают, что Stellar масштабируется а количество аккаунтов увеличивается. Генерация теста учетных записей стали длительным процессом, поскольку создание корзин и слияние не позволило нам просто заполнить базу данных с учетными записями напрямую через SQL. Поэтому мы провели нашу эксперименты до 50 000 000 аккаунтов. Пока есть минимальное влияние на консенсус и задержки обновления реестра, мы отмечаем, что увеличение счетов создает накладные расходы в размере объединение ведер, которые становятся больше. Скорость транзакции Скорость транзакций влияет на сумму многоадресная рассылка трафика между validator, количество транзакций, включенных в каждый реестр, и размер верхнего уровня ведра. Чтобы понять последствия увеличения транзакций load мы провели эксперимент со 100 000 аккаунтами и 4 validator. На рисунке 10 показан медленный рост задержки консенсуса. в то время как большая часть времени была потрачена на обновление реестра. Неудивительно, что по мере увеличения размера набора транзакций требуется больше времени, чтобы зафиксировать его в базе данных. Мы также отмечаем, что задержка обновления реестра сильно зависит от реализации, и зависит от выбора базы данных. Узлы валидатора Чтобы увидеть, как увеличивается количество тиронов validatorsвлияет на производительность, мы провели эксперименты со 100 000 учетных записей, 100 транзакциями в секунду и различным количеством validator от 4 до 43. Появились все validator. во всех слоях кворума validators; меньшие фрагменты кворума будут оказывают меньшее влияние на производительность.SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада Лохава и др. 100 150 200 250 300 350 0 500 1000 1500 2000 Нагрузка [транзакций/секунду] Задержка [мс] Обновление бухгалтерской книги Голосование Номинация Рисунок 10. Задержка при увеличении транзакционной нагрузки 10 20 30 40 0 500 1000 1500 2000 Валидаторы Задержка [мс] Обновление бухгалтерской книги Голосование Номинация Рисунок 11. Задержка при увеличении количества узлов Изменение количества проверяющих узлов в сети влияет на количество обмениваемых SCP-сообщений, а также количество потенциальных значений при номинации. Рисунок 11 показывает, что время выдвижения кандидатур растет относительно небольшими темпами. Хотя данные показывают, что голосование является узким местом, мы считают, что многие проблемы масштабирования можно решить, улучшив Оверлейная сеть Stellar для оптимизации сетевого трафика. Как ожидаемо, задержка обновления реестра оставалась независимой от количество узлов. Закрыть курс Наконец, мы хотели измерить сквозную производительность Stellar, измеряя, как часто регистры подтверждаются и достигает ли Stellar своего 5-секундного целевого показателя без отмена любых транзакций. Мы наблюдали среднее закрытие книги раз 5,03 с, 5,10 с и 5,15 с по мере увеличения счета записи, скорость транзакций и количество узлов соответственно. Результаты показывают, что Stellar может последовательно закрывать реестры. под высокой нагрузкой. 7.4 Запуск validator Одной из важных особенностей Stellar является низкая стоимость. запуск validator, поскольку якоря должны работать (или заключать контракт с) validators для обеспечения окончательности. SDF запускает 3 производственных validator, все на экземплярах AWS c5.large, которые имеют два ядра, 4 ГБ ОЗУ и процессор Intel(R) Xeon(R) Platinum 8124M Процессоры @ 3,00 ГГц. Проверка использования ресурсов на одном из этих машин мы наблюдали процесс Stellar, используя около 7% процессора и 300 МБ памяти. С точки зрения сетевого трафика: 28 подключений к узлам и размер кворума. из 34 входящие и исходящие скорости составляли 2,78 Мбит/с, а 2,56 Мбит/с соответственно. Аппаратное обеспечение, необходимое для запуска такого процедура недорогая. В нашем случае стоимость составляет $0,054/час. или около 40 долларов в месяц. 7,5 Будущая работа Эти эксперименты показывают, что Stellar может легко масштабироваться на 1–2 порядка. масштабов, превосходящих сегодняшнее использование сети. Потому что Требования к производительности на сегодняшний день настолько скромны, что Stellar оставляет место для многих простых оптимизаций с использованием известные методики. Например, транзакции и SCP сообщения транслируются validators с использованием наивного флуда протокол, но в идеале следует использовать более эффективный, структурированный одноранговая многоадресная рассылка [30]. Кроме того, большая база данных Время обновления реестра можно сократить с помощью стандартных методов пакетной обработки и предварительной выборки.

Conclusão

Os pagamentos internacionais são caros e demoram dias. Fundo a custódia passa por múltiplas instituições financeiras, incluindo bancos correspondentes e serviços de transferência de dinheiro. Como cada salto deve ser totalmente confiável, é difícil para novos novos participantes ganhem participação de mercado e concorram. Stellar mostra como enviar dinheiro para todo o mundo de forma barata em segundos. O A principal inovação é um novo protocolo de acordo bizantino de adesão aberta, SCP, que aproveita a estrutura peer-to-peer da rede financeira para alcançar um consenso global sob um nova hipótese da Internet. SCP permite que Stellar confirme atomicamente transações irreversíveis entre participantes arbitrários que não conhecem ou confiam um no outro. Isso, por sua vez, garante aos novos participantes o acesso aos mesmos mercados estabelecidos jogadores, torna seguro obter a melhor troca disponível taxas mesmo de formadores de mercado não confiáveis, e dramaticamente reduz a latência de pagamento. Agradecimentos Stellar não estaria onde está hoje sem o início liderança de Joyce Kim ou as tremendas contribuições de Scott Fleckenstein e Bartek Nowotarski na construção e mantendo o horizonte, o Stellar SDK e outras peças importantes do ecossistema Stellar. Agradecemos também a Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Leme, Eric Saunders, Torsten Stüber, Tomer Weller, os revisores anônimos e nossa pastora Justine Sherry por seus comentários úteis sobre rascunhos anteriores. Isenção de responsabilidade A contribuição do Professor Mazières para esta publicação foi como consultor remunerado e não fez parte de seu trabalho. Deveres ou responsabilidades da Universidade de Stanford.

Pagamentos globais rápidos e seguros com Stellar SOSP '19, 27 a 30 de outubro de 2019, Huntsville, ON, Canadá

Заключение

Международные платежи стоят дорого и занимают несколько дней. Фонд хранение проходит через несколько финансовых учреждений, включая банки-корреспонденты и службы денежных переводов. Поскольку каждому переходу необходимо полностью доверять, новым пользователям сложно абитуриентам, чтобы завоевать долю рынка и конкурировать. Stellar шоу как дешево отправить деньги по всему миру за считанные секунды. Ключевым нововведением является новый протокол Византийского соглашения с открытым членством, SCP, который использует одноранговую структуру. финансовой сети для достижения глобального консенсуса под новая гипотеза Интернета. SCP позволяет Stellar атомарно зафиксировать необратимые транзакции между произвольными участниками, которые не знают друг друга и не доверяют друг другу. Это, в свою очередь, гарантирует новым участникам доступ к тем же рынкам, что и существующие. игроков, позволяет безопасно получить лучший доступный обмен ставки даже у ненадежных маркет-мейкеров, и резко уменьшает задержку платежа. Благодарности Stellar не был бы тем, чем он является сегодня, без раннего лидерство Джойс Ким или огромный вклад Скотт Флекенштейн и Бартек Новотарски в строительстве и поддержание горизонта, Stellar SDK и другие ключевые элементы экосистемы Stellar. Мы также благодарим Колтена Бержерона, Генри Корриган-Гиббс, Кэндис Келли, Капил К. Джайн, Борис Резников, Джереми Рубин, Кристиан Раддер, Эрик Сондерс, Торстен Штюбер, Томер Веллер, анонимные рецензенты и нашему пастуху Жюстин Шерри за полезные комментарии более ранние черновики. Отказ от ответственности Вклад профессора Мазьера в эту публикацию был сделан в качестве платного консультанта и не был частью его работы. Обязанности или ответственность Стэнфордского университета.

Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада