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

Por David Mazières · 2015

Resumen

Los pagos internacionales son lentos y costosos, en parte debido al enrutamiento de pagos de múltiples saltos a través de canales heterogéneos. sistemas bancarios. Stellar es una nueva red de pagos global que puede transferir dinero digital directamente a cualquier parte del mundo mundo en segundos. La innovación clave es una transacción segura mecanismo a través de intermediarios no confiables, utilizando un nuevo Protocolo de acuerdo bizantino llamado SCP. Con SCP, cada institución especifica otras instituciones con las cuales permanecer de acuerdo; a través de la interconexión global de la sistema financiero, toda la red se pone de acuerdo en términos atómicos. transacciones que abarcan instituciones arbitrarias, sin solvencia ni riesgo de tipo de cambio por parte de emisores de activos intermediarios o creadores de mercado. Presentamos el modelo, protocolo y verificación formal; describir la red de pago Stellar; y finalmente evaluar Stellar empíricamente a través de puntos de referencia y nuestra experiencia con varios años de uso en producción. Conceptos de CCS • Seguridad y privacidad →Distribuida seguridad de sistemas; • Organización de sistemas informáticos → Arquitecturas de igual a igual; • Sistemas de información → Transferencia electrónica de fondos. Palabras clave blockchain, BFT, quórumes, pagos Formato de referencia ACM: Marta Lokhava, Giuliano Losa, David Mazières, Graydon Hoare, Nicolas Barry, Eli Gafni, Jonathan Jove, Rafał Malinowsky, Jed McCaleb. 2019. Pagos globales rápidos y seguros con Stellar. En SOSP '19: Simposio sobre principios de sistemas operativos, 27 al 30 de octubre, 2019, Huntsville, ON, Canadá. ACM, Nueva York, NY, EE.UU., 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

Introducción

Los pagos internacionales son notoriamente lentos y costosos [32]. Considere la impracticabilidad de enviar 0,50 dólares desde EE.UU. a *Galois, Inc. †UCLA Permiso para realizar copias digitales o impresas de todo o parte de este trabajo para El uso personal o en el aula se concede sin cargo, siempre que no se realicen copias. realizados o distribuidos con fines de lucro o ventaja comercial y que las copias lleven este aviso y la cita completa en la primera página. Derechos de autor de los componentes de este trabajo propiedad de terceros distintos de ACM deben ser respetados. Abstraer con Se permite el crédito. Para copiar de otra manera, o republicar, para publicar en servidores o para redistribuir a listas, requiere permiso previo específico y/o una tarifa. Solicitar permisos de [email protected]. SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá © 2019 Asociación de Maquinaria de Computación. ACM ISBN 978-1-4503-6873-5/19/10...$15,00 https://doi.org/10.1145/3341301.3359636 México, dos países vecinos. Los usuarios finales pagan casi 9 dólares para el promedio de dicha transferencia [32], y un acuerdo bilateral mediada por los bancos centrales de los países sólo podría reducir el costo bancario subyacente a $0,67 por artículo [2]. Además de las tarifas, la latencia de los pagos internacionales generalmente se cuenta en días, lo que hace imposible sacar dinero del extranjero rápidamente en emergencias. En países donde el sistema bancario no funciona o no sirve a todos los ciudadanos, o cuando las tarifas son intolerables, la gente recurre a enviar pagos en autobús [38], por barco [19], y ocasionalmente ahora por Bitcoin [55], todos los cuales incurrir en riesgos, latencia o inconvenientes. Si bien siempre habrá costos de cumplimiento, la evidencia sugiere que se pierde una cantidad significativa por falta de competencia [21], lo cual se ve exacerbado por la tecnología ineficiente. donde la gente puede innovar, los precios y las latencias bajan. Por ejemplo, las remesas desde cuentas bancarias en el segundo trimestre de 2019 costaron un promedio de 6,99%, mientras que la cifra del dinero móvil fue sólo del 4,88% [13]. Una red de pagos abierta y global que atrae la innovación y la competencia de entidades no bancarias podría reducir costos y latencias en todas las capas, incluido el cumplimiento [83]. Este documento presenta Stellar, un pago basado en blockchain red diseñada específicamente para facilitar la innovación y Competencia en pagos internacionales. Stellar es el primero sistema para cumplir los tres objetivos siguientes (bajo un “hipótesis de Internet novedosa pero empíricamente válida”): 1. Membresía abierta: cualquiera puede emitir bonos respaldados por moneda. tokens digitales que se pueden intercambiar entre usuarios. 2. Finalidad impuesta por el emisor: el emisor de un token puede evitar transacciones en el token se reviertan o deshagan. 3. Atomicidad entre emisores: los usuarios pueden intercambiar atómicamente y negociar tokens de múltiples emisores. Lograr los dos primeros es fácil. Cualquier empresa puede ofrecer unilateralmente un producto como Paypal, Venmo, WeChat. Pay, o Alipay y garantizar la firmeza de los pagos en el monedas virtuales que han creado. Desafortunadamente, realizar transacciones atómicas entre estas monedas es imposible. De hecho, a pesar de que Paypal adquirió la empresa matriz de Venmo En 2013, todavía es imposible que los usuarios finales envíen Venmo. dólares a los usuarios de Paypal [78]. Sólo recientemente los comerciantes pueden incluso aceptar ambos con una sola integración. Los objetivos 2 y 3 se pueden lograr en un sistema cerrado. En particular, varios países cuentan con sistemas de pago internos eficientes. redes, normalmente supervisadas por una autoridad reguladora de confianza universal. Sin embargo, la membresía está limitada a un recinto cerrado. conjunto de bancos autorizados y las redes se limitan a la alcance de la autoridad reguladora de un país.SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Los objetivos 1 y 3 se han logrado en blockchain minados, más notablemente en forma de ERC20 tokens en Ethereum [3]. La idea clave de estos blockchains es crear una nueva criptomoneda con la que recompensar a las personas por establecerse transacciones difíciles de revertir. Desafortunadamente, esto significa que los emisores token no controlan la finalidad de la transacción. Si el software los errores hacen que el historial de transacciones se reorganice [26, 73], o cuando el botín de defraudar a la gente excede el costo de historial de reorganización [74, 97], los emisores pueden ser responsables de tokens ya han canjeado por dinero del mundo real. El Stellar blockchain tiene dos propiedades distintivas. En primer lugar, admite de forma nativa mercados eficientes entre tokens de diferentes emisores. Específicamente, cualquiera puede emitir un token, el blockchain proporciona un libro de pedidos integrado para el comercio entre cualquier par de token y los usuarios pueden emitir pagos de ruta que comercian atómicamente en varios pares de divisas mientras garantizando un precio límite de extremo a extremo. En segundo lugar, Stellar introduce un nuevo acuerdo bizantino. protocolo, SCP (Stellar Protocolo de Consenso), a través del cual Los emisores token designan servidores validator específicos para hacer cumplir finalidad de la transacción. Siempre y cuando nadie comprometa los validators de un emisor (y las firmas digitales subyacentes y Los hashes criptográficos permanecen seguros), el emisor sabe exactamente qué transacciones se han producido y evita el riesgo. de pérdidas por blockchain reorganización histórica. La idea clave de SCP es que la mayoría de los emisores de activos se benefician de mercados líquidos y quieren facilitar las transacciones atómicas con otros activos. Por lo tanto, los administradores validator configuran sus servidores para acordar con otros validators exactamente historial de todas las transacciones sobre todos los activos. Un validator v1 puede ser configurado para estar de acuerdo con v2, o v2 puede configurarse para estar de acuerdo con v1, o ambos pueden configurarse para que coincidan entre sí; En todos los casos, ninguno se comprometerá con un historial de transacciones hasta sabe que el otro no puede comprometerse con una historia diferente. Por transitividad, si v1 no puede estar en desacuerdo con v2 y v2 no puede estar en desacuerdo con v3 (o viceversa), v1 no puede estar en desacuerdo con v3, ya sea que v3 represente o no activos, v1 incluso ha escuchado de. Bajo la hipótesis de que estas relaciones de acuerdo conectar transitivamente toda la red, SCP garantiza acuerdo global, lo que lo convierte en un acuerdo bizantino global protocolo con membresía abierta. A este nuevo supuesto de conectividad lo llamamos hipótesis de Internet y observamos que posee tanto de “Internet” (que todo el mundo entiende como significa la red IP más grande conectada transitivamente) y pagos internacionales heredados (que son salto a salto no atómico, pero aprovecha un sistema global transitivamente conectado. red de instituciones financieras). Stellar ha estado en uso de producción desde septiembre de 2015. Para mantener manejable la longitud blockchain, el sistema ejecuta SCP a intervalos de 5 segundos: rápido según los estándares blockchain, pero mucho más lento que las aplicaciones típicas del acuerdo bizantino. Aunque el uso principal ha sido pagos, Stellar también ha probado atractivo para tokens fungibles no monetarios que se benefician de los mercados secundarios inmediatos (ver Sección 7.1). La siguiente sección analiza el trabajo relacionado. La sección 3 presenta SCP. La Sección 4 describe nuestra verificación formal de SCP. La sección 5 describe la capa de pago de Stellar. La sección 6 se relaciona parte de nuestra experiencia de implementación y lecciones aprendidas. La sección 7 evalúa el sistema. La sección 8 concluye.

Введение

Международные платежи, как известно, медленные и дорогостоящие [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

El protocolo de consenso (SCP) Stellar es un protocolo basado en quórum Protocolo de acuerdo bizantino con membresía abierta. Los quórums surgen de las decisiones de configuración local combinadas de nodos individuales. Sin embargo, los nodos sólo reconocen quórums a los que pertenecen ellos mismos, y sólo después aprender las configuraciones locales de todos los demás miembros del quórum. Un beneficio de este enfoque es que SCP es inherentemente Tolera visiones heterogéneas de los nodos que existen. Por lo tanto, Los nodos pueden unirse y salir unilateralmente sin necesidad de un Protocolo de “ver cambio” para coordinar la membresía. 3.1 Acuerdo bizantino federado El problema tradicional del acuerdo bizantino consiste en una sistema cerrado de N nodos, algunos de los cuales están defectuosos y pueden comportarse arbitrariamente. Los nodos reciben valores de entrada e intercambian mensajes para decidir sobre un valor de salida entre las entradas. Un protocolo de acuerdo bizantino es seguro cuando no hay dos nodos con buen comportamiento que produzcan decisiones diferentes y el único decisión fue un insumo válido (para alguna definición de acuerdo válidoSOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. previamente). Un protocolo está activo cuando garantiza que cada nodo honesto eventualmente genera una decisión. Normalmente, los protocolos suponen N = 3f + 1 para algún número entero f > 0, entonces garantizamos seguridad y alguna forma de vida para que siempre y cuando como máximo f nodos estén defectuosos. En algún momento de estos protocolos, los nodos votan sobre los valores propuestos y una propuesta recibir 2f + 1 votos, llamado quórum de votos, se convierte en la decisión. Con N = 3f + 1 nodos, dos quórumes cualesquiera de el tamaño 2f + 1 se superpone en al menos f + 1 nodos; incluso si f de estos Los nodos superpuestos son defectuosos, los dos quórums comparten al menos un nodo no defectuoso, evitando decisiones contradictorias. Sin embargo, este enfoque sólo funciona si todos los nodos están de acuerdo lo que constituye un quórum, lo cual es imposible en SCP donde Es posible que dos nodos ni siquiera sepan de la existencia del otro. Con SCP, cada nodo v declara unilateralmente conjuntos de nodos, llamado sus sectores de quórum, de modo que (a) v cree que si todos los miembros de un segmento están de acuerdo sobre el estado del sistema, entonces tienen razón, y (b) v cree que al menos una de sus porciones estará disponible para brindar información oportuna sobre la estado del sistema. Llamamos al sistema resultante, que consiste de nodos y sus cortes, un Acuerdo Bizantino Federado (Logística de Amazon). Como veremos a continuación, surge un sistema de quórum de los cortes de los nodos. De manera informal, las porciones de un nodo Logística de Amazon expresan con quién El nodo requiere acuerdo. Por ejemplo, un nodo puede requerir un acuerdo con 4 organizaciones específicas, cada una de las cuales ejecuta 3 nodos; a acomodar el tiempo de inactividad, puede configurar sus sectores para que sean todos los conjuntos compuesto por 2 nodos de cada organización. Si esto “requiere La relación “acuerdo con” relaciona transitivamente dos nodos cualesquiera, conseguimos un acuerdo global. De lo contrario, podemos obtener divergencia, pero sólo entre organizaciones ninguna de las cuales requiere acuerdo con el otro. Dada la topología actual sistema financiero, planteamos la hipótesis de que la convergencia generalizada seguirá produciendo una historia de contabilidad única que la gente llama “la red Stellar”, del mismo modo que hablamos de Internet. Los quórums surgen de las porciones de la siguiente manera. Cada nodo especifica su quórum se divide en cada mensaje que envía. Sea S el conjunto de nodos desde los cuales se originó un conjunto de mensajes. un El nodo considera que el conjunto de mensajes ha alcanzado el quórum. umbral cuando cada miembro de S tiene un segmento incluido en S. Por construcción, tal conjunto S, si es unánime, satisface la requisitos de acuerdo de cada uno de sus miembros. Un par defectuoso puede anunciar porciones diseñadas para cambiar lo que Los nodos con buen comportamiento consideran quórumes. Por el bien del análisis del protocolo, definimos un quórum en Logística de Amazon como no vacío. conjunto S de nodos que abarcan al menos una porción de quórum de cada miembro no defectuoso. Esta abstracción es sólida, como cualquier conjunto. de mensajes que pretenden representar un quórum unánime realmente lo hace (incluso si contiene mensajes de nodos defectuosos), y es preciso cuando S contiene sólo nodos que se comportan bien. en En esta sección, también asumimos que los sectores de los nodos no cambian. Sin embargo, nuestros resultados se transfieren al caso del segmento cambiante. porque un sistema en el que cambian las porciones no es menos seguro que un sistema de corte fijo en el que los cortes de un nodo constan de todos los sectores que alguna vez utiliza en el caso de sectores cambiantes (ver Teorema 13 en [68]). Como se explica en la Sección 4, la vivacidad depende de Los nodos con buen comportamiento eventualmente eliminan los nodos no confiables. de sus rebanadas. Debido a que diferentes nodos tienen diferentes requisitos de acuerdo, Logística de Amazon excluye una definición global de seguridad. decimos Los nodos no defectuosos v1 y v2 se entrelazan cuando cada El quórum de v1 interseca cada quórum de v2 en al menos un nodo no defectuoso. Un protocolo de Logística de Amazon puede garantizar un acuerdo sólo entre nodos entrelazados; ya que SCP lo hace, es culpa suya La tolerancia a la seguridad es óptima. La hipótesis de Internet, subyacente al diseño de Stellar, afirma que los nodos que a la gente le importan sobre estarán entrelazados. Decimos que un conjunto de nodos I está intacto si I es un quórum uniformemente no defectuoso tal que cada dos miembros de I están entrelazados incluso si todos los nodos fuera de I son defectuosos. Intuitivamente, Entonces, debería permanecer inmune a las acciones de los no intactos. nodos. SCP garantiza tanto la vida sin bloqueo [93] como seguridad para conjuntos intactos, aunque los nodos en sí no necesitan saber (y tal vez no poder saber) qué conjuntos están intactos. Además, la unión de dos conjuntos intactos que se cruzan es un conjunto intacto. Por lo tanto, los conjuntos intactos definen una partición del Nodos de buen comportamiento, donde cada partición es segura y activa. (bajo algunas condiciones), pero pueden generarse diferentes particiones decisiones divergentes. 3.1.1 Consideraciones de seguridad versus vida en Logística de Amazon Con excepciones limitadas [64], la mayoría de los protocolos de acuerdos bizantinos cerrados están ajustados al punto de equilibrio en el que la seguridad y la vivacidad tienen la misma tolerancia a fallos. En Logística de Amazon, eso significa configuraciones en las que, independientemente de las fallas, todos Los conjuntos entrelazados también están intactos. Dado que Logística de Amazon determina quórums de forma descentralizada, es poco probable que las elecciones de sectores individuales conduzcan a este equilibrio. Además, en al menos en Stellar, el equilibrio no es deseable: las consecuencias de una falla de seguridad (es decir, dinero digital doblemente gastado) son mucho peores que los de una falla en la vida (es decir, retrasos en pagos que de todos modos tomaban días antes del Stellar). gente por lo tanto, debe seleccionar y selecciona porciones de quórum grandes tales que es más probable que sus nodos permanezcan entrelazados que intactos. Inclinando aún más la balanza, es más fácil recuperarse de fallas de vida típicas en un sistema Logística de Amazon que en uno cerrado tradicional. En sistemas cerrados, todos los mensajes deben ser interpretado con respecto al mismo conjunto de quórumes. Por lo tanto, Agregar y eliminar nodos para recuperarse de una falla requiere llegar a un consenso sobre un evento de reconfiguración, lo cual es difícil una vez que el consenso ya no existe. Por el contrario, con Logística de Amazon, cualquier nodo puede ajustar unilateralmente sus porciones de quórum en cualquier tiempo. En respuesta a una interrupción en un sistema de importancia sistémica organización, los administradores de nodos pueden ajustar sus sectores para solucionar el problema, un poco como coordinar respuestas a catástrofes de BGP [63] (aunque sin las limitaciones de enrutamiento a través de enlaces de red física).

Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá 3.1.2 El teorema de la cascada SCP sigue la plantilla del modelo redondo básico [42]; Los nodos avanzan a través de una serie de papeletas numeradas, cada una intentar tres tareas: (1) identificar un valor “seguro” que no esté en contradicción con ninguna decisión en una votación anterior (a menudo denominada preparar la papeleta), (2) acordar el valor seguro, y (3) detectar que el acuerdo fue exitoso. Sin embargo, Logística de Amazon está abierta La membresía obstaculiza varias técnicas comunes, lo que hace que sea imposible "portar" los protocolos cerrados tradicionales a la Logística de Amazon modelo simplemente cambiando la definición de quórum. Una técnica empleada por muchos protocolos es la rotación a través de los nodos líderes en forma de turnos después de los tiempos de espera. En un sistema cerrado, la selección del líder por turnos garantiza que eventualmente un líder único y honesto termine coordinando un acuerdo sobre un único valor. Desafortunadamente, todos contra todos no puede funcionar en un sistema Logística de Amazon con membresía desconocida. Otra técnica común que falla con Logística de Amazon es asumir que un quórum particular puede convencer a todos los nodos. Por ejemplo, Si todos reconocen cualquier nodo 2f + 1 como quórum, entonces 2f + 1 firmas son suficientes para demostrar el estado del protocolo en todos los nodos. De manera similar, si un nodo recibe un quórum de mensajes idénticos A través de la transmisión confiable [24], el nodo puede asumir que todos los nodos que no son defectuosos también verán un quórum. En cambio, en Logística de Amazon, una El quórum no significa nada para los nodos fuera del quórum. Por último, los sistemas no federados suelen emplear sistemas "al revés". razonamiento sobre seguridad: si los nodos f + 1 están defectuosos, toda la seguridad Se pierden las garantías. Por lo tanto, si el nodo v escucha f + 1 nodos, todos declarar algún hecho F, v puede suponer que al menos uno le está diciendo al verdad (y por tanto que F es verdadera) sin pérdida de seguridad. tal El razonamiento falla en Logística de Amazon porque la seguridad es una propiedad de pares. de nodos, por lo que un nodo que ha perdido seguridad para algunos pares puede Siempre se pierde seguridad frente a más nodos al asumir hechos incorrectos. Sin embargo, Logística de Amazon puede razonar al revés sobre la vitalidad. Defina un conjunto de bloqueo v como un conjunto de nodos que intersecta cada porción de v. Si un conjunto de bloqueo de v B es unánimemente defectuoso, B puede negarle al nodo v un quórum y costarle vida. Por lo tanto, si B declara unánimemente el hecho F, entonces v sabe que F es true o v no está intacto. Sin embargo, todavía necesita ver una versión completa. quórum para saber que los nodos entrelazados no contradicen a F, lo que conduce a una ronda final de comunicación en SCP y otros protocolos de Logística de Amazon [47] que no se requieren en casos análogos protocolos de membresía cerrada. El resultado es que tenemos tres posibles niveles de confianza en hechos potenciales: indeterminado, seguro de asumir entre nodos intactos (que veremos término hechos aceptados), y es seguro asumir entre entrelazados nodos (que llamaremos hechos confirmados). El nodo v puede determinar de manera eficiente si un conjunto B está bloqueando v verificando si B cruza todos sus sectores. Curiosamente, si los nodos siempre anuncian las declaraciones que aceptar y un quórum completo acepta una declaración, se desencadena un proceso en cascada mediante el cual las declaraciones se propagan a lo largo conjuntos intactos. Al hecho clave que subyace a esta propagación lo llamamos el teorema de la cascada, que establece lo siguiente: Si I es un conjunto intacto, Q es un quórum de cualquier miembro de I, y S es cualquier superconjunto de Q, entonces S ⊇I o hay un miembro v ∈I tal que v < S y I ∩S es v-bloqueo. Intuitivamente, ¿fue esto no es el caso, el complemento de S contendría un quórum que cruza I pero no Q, violando la intersección de quórum. Tenga en cuenta que si comenzamos con S = Q y expandimos repetidamente S hasta incluir todos los nodos que bloquea, obtenemos un efecto en cascada hasta que, eventualmente, S abarca todo I. 3.2 Descripción del protocolo SCP es un protocolo de consenso parcialmente sincrónico [42] que consta de una serie de intentos para llegar a un consenso llamado papeletas. Las papeletas emplean tiempos de espera de duración cada vez mayor. un El protocolo de sincronización de boletas garantiza que los nodos permanezcan encendidos. la misma papeleta por períodos de tiempo crecientes hasta que las papeletas son efectivamente sincrónicos. La rescisión no está garantizada hasta que las votaciones sean sincrónicas, pero dos votaciones sincrónicas en el que los miembros defectuosos de los sectores de nodos con buen comportamiento no no interferir son suficientes para que SCP termine. Un protocolo de votación especifica las acciones tomadas durante cada boleta. Una votación comienza con una fase de preparación, en la que los nodos tratar de determinar un valor a proponer que no contradiga cualquier decisión previa. Luego, en una fase de confirmación, los nodos intentan para tomar una decisión sobre el valor preparado. La votación emplea un subprotocolo de acuerdo llamado votación federada, in qué nodos votan sobre declaraciones abstractas eso eventualmente puede confirmarse o quedarse estancado. Algunas declaraciones pueden considerarse contradictorias y la seguridad La garantía del voto federado es que no pueden haber dos miembros de un conjunto entrelazado confirma afirmaciones contradictorias. La confirmación de una declaración no está garantizada excepto si está intacta. conjunto cuyos miembros votan todos de la misma manera. Sin embargo, si un miembro de un conjunto intacto confirma una declaración, federada la votación garantiza que todos los miembros del conjunto intacto eventualmente confirmen esa afirmación. Por lo tanto, tomar medidas irreversibles en respuesta a declaraciones confirmatorias preserva la vivacidad de nodos intactos. Los nodos inicialmente proponen valores obtenidos de una nominación. protocolo que aumenta las posibilidades de todos los miembros de una comunidad intacta. conjunto que propone el mismo valor, y que eventualmente converge (aunque no hay forma de determinar que la convergencia sea completa). La nominación combina la votación federada con la selección de líderes. Debido a que el sistema de todos contra todos es imposible en Logística de Amazon, la nominación utiliza un esquema probabilístico de selección de líderes. El teorema de la cascada juega un papel crucial tanto en la votación sincronización y en evitar estados bloqueados desde los cuales la terminación ya no es posible. 3.2.1 votación Los nodos SCP proceden a través de una serie de votaciones numeradas, empleando votación federada para acordar declaraciones sobre qué Los valores se deciden o no en qué papeletas. Si hay asincronía o un comportamiento incorrecto impide llegar a una decisión en la votación n, Los nodos se agotan y vuelven a intentarlo en la boleta n + 1.

SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Recordemos que el voto federado podría no terminar. Por lo tanto, algunos Las declaraciones sobre las papeletas pueden quedar atascadas permanentemente. Estado indeterminado donde los nodos nunca pueden determinar si todavía están en progreso o atascados. Porque los nodos no pueden descartar la posibilidad de que declaraciones indeterminadas luego resulten verdaderas, nunca deben intentar una votación federada sobre nuevas declaraciones contradictorios con los indeterminados. En cada votación n, los nodos utilizan votación federada en dos tipos de declaración: • preparar ⟨n,x⟩– indica que ningún valor distinto de x se decidió o se decidirá alguna vez en cualquier votación ≤n. • comprometer ⟨n,x⟩– indica que x se decide en la votación n. Es importante destacar que preparar ⟨n,x⟩contradice el compromiso ⟨n′,x ′⟩cuando n ≥n′ y x , x ′. Un nodo inicia la votación n intentando la votación federada en un declaración preparar ⟨n,x⟩. Si alguna declaración previa preparar fue confirmado con éxito mediante votación federada, el El nodo elige x del grupo confirmado de la boleta superior. De lo contrario, el nodo establece x como la salida del protocolo de nominación descrito en la siguiente subsección. Si y sólo si un nodo confirma con éxito preparar ⟨n,x⟩ en la votación n, intenta la votación federada sobre el compromiso ⟨n,x⟩. si que tiene éxito, significa que SCP ha decidido, por lo que el nodo genera el valor de la declaración de confirmación confirmada. Considere un conjunto S entrelazado. Dado que como máximo un valor pueden ser confirmados preparados por miembros de S en una votación determinada, no se pueden confirmar dos valores diferentes comprometidos por miembros de S en una votación determinada. Además, si se compromete ⟨n,x⟩ se confirma, luego prepare ⟨n,x⟩se confirmó también; desde preparar ⟨n,x⟩ contradice cualquier compromiso anterior por un valor diferente, por el acuerdo que garantiza el voto federado conseguimos que no se puede decidir ningún valor diferente en una fecha anterior votación de los miembros de S. Por inducción sobre los números de la boleta, Por lo tanto, consiga que SCP sea seguro. Para darle vida, considere un conjunto I intacto y un tiempo suficientemente largo. votación sincrónica Si aparecen nodos defectuosos en los cortes de nodos con buen comportamiento no interfieren en n, luego por votación n + 1 todos los miembros de I han confirmado el mismo conjunto P de declaraciones de preparación. Si P = ∅ y la votación n fue lo suficientemente larga, la El protocolo de nominación habrá convergido en algún valor x. De lo contrario, sea x el valor del equipo con la votación más alta en P. De cualquier manera, intentaré uniformemente votar sobre preparar ⟨n + 1,x⟩ en la próxima votación. Por lo tanto, si n + 1 también es sincrónico, por lo que inevitablemente se sigue una decisión para x. 3.2.2 Nominación La nominación implica votación federada de las declaraciones: • nominar x – indica que x es un candidato de decisión válido. Los nodos pueden votar para nominar múltiples valores, diferentes Las declaraciones nominadas no son contradictorias. Sin embargo, una vez un nodo confirma cualquier declaración nominada, deja de votar para proponer nuevos valores. La votación federada todavía permite que un nodo confirmar nuevas declaraciones nominadas por las que no votó, que votar o aceptar un del quórum aceptar un del quórum una es válida aceptar un de conjunto de bloqueo no comprometido votó un aceptó un confirmó un votó ¬a Figura 1. Etapas del voto federado permite a los miembros de un conjunto intacto confirmar entre sí los valores nominados y al mismo tiempo retener nuevos votos. El resultado (evolutivo) de la nominación es una combinación determinista de todos los valores en las declaraciones de nominación confirmadas. si x representa un conjunto de transacciones, los nodos pueden tomar la unión de conjuntos, el conjunto más grande o el que tiene el hash más alto, por lo que siempre y cuando todos los nodos hagan lo mismo. Porque los nodos retienen nuevos votos después de confirmar una declaración nominada, el conjunto de Las declaraciones confirmadas sólo pueden contener un número finito de valores. El hecho de que las declaraciones confirmadas se difundieran de forma fiable conjuntos intactos significa que los nodos intactos eventualmente convergen en el mismo conjunto de valores nominados y, por tanto, resultado de la nominación, aunque en un punto desconocido arbitrariamente tarde en el protocolo. Los nodos emplean la selección de líderes federados para reducir la número de valores diferentes en declaraciones nominadas. Sólo un líder que aún no haya votado a favor de una declaración propuesta puede introducir una nueva x. Otros nodos esperan recibir noticias líderes y simplemente copiar los votos de nominación (válidos) de sus líderes. Para adaptarse al fracaso, el conjunto de líderes sigue creciendo a medida que avanza. Se producen tiempos de espera, aunque en la práctica sólo unos pocos nodos introducen nuevos valores de x. 3.2.3 Voto federado La votación federada emplea un protocolo de tres fases que se muestra en Figura 1. Los nodos intentan ponerse de acuerdo sobre declaraciones abstractas primero votar, luego aceptar y finalmente confirmar las declaraciones. Un nodo v puede votar por cualquier declaración válida a que no contradice su otrovotos pendientes y declaraciones aceptadas. Lo hace mediante la difusión de un mensaje de voto firmado. v luego acepta a si a es consistente con otras declaraciones aceptadas y (caso 1)v es miembro de un quórum en el que cada nodo vota por a o acepta a, o (caso 2) incluso si v no votó por a, un conjunto de bloqueo v acepta a. En el caso 2, v mayo han emitido previamente votos que contradicen a, que ahora han sido anulado. A v se le permite olvidarse de los votos anulados. y pretender que nunca los lanzó porque siv está intacto, lo sabe los votos anulados no pueden completar el quórum mediante el caso 1. v transmite que acepta a y luego confirma a cuando está en un quórum que acepte por unanimidad a. La figura 2 muestra la efecto de los conjuntos de bloqueo v y el teorema de la cascada durante votación federada. Dos nodos entrelazados no pueden confirmar declaraciones contradictorias, ya que los dos quórums requeridos tendrían que compartir unPagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre 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

Vota X

Vota Y (un) 3 4 2 1 5 7 6 votar x votar x votar x votar Y votar x votar Y votar Y (b) 3 4 2 1 5 7 6 Aceptar x votar x Aceptar x votar Y Aceptar x votar Y votar Y (c) 3 4 2 1 5 7 6 Aceptar x Aceptar x Aceptar x votar Y Aceptar x Aceptar x votar Y (d) 3 4 2 1 5 7 6 Aceptar x votar x Aceptar x Aceptar x Aceptar x Aceptar x Aceptar x (e) Figura 2. Efecto cascada en el voto federado. Cada nodo tiene un segmento de quórum indicado por flechas para los miembros del segmento. (a) Se introducen declaraciones contradictorias X e Y. (b) Los nodos votan por declaraciones válidas. (c) El nodo 1 acepta X después de su quórum {1, 2, 3, 4} vota unánimemente por X. (d) Los nodos 1, 2, 3 y 4 aceptan X; el conjunto {1} es de bloqueo 5, por lo que el nodo 5 acepta X, anulando su voto anterior por Y. (e) El conjunto {5} bloquea 6 y 7, por lo que 6 y 7 aceptan X. nodo no defectuoso que no podía aceptar declaraciones contradictorias. No se garantiza la confirmación de una declaración: en En caso de votación dividida, ambas declaraciones podrán ser permanentemente estancado esperando por un quórum en la fase de votación. Sin embargo, si un nodo en un conjunto intacto I confirma una declaración, la cascada teorema y acepte el caso 2, asegúrese de que todos los I eventualmente confirmar esa afirmación. 3.2.4 Sincronización de boletas Si los nodos no pueden confirmar una declaración de confirmación para el votación actual, se dan por vencidos después de un tiempo muerto. El tiempo de espera llega más tiempo con cada votación para ajustarse a límites arbitrarios en el retraso de la red. Sin embargo, los tiempos de espera por sí solos no son suficientes para sincronizar las votaciones de los nodos que no comenzaron al mismo tiempo o se desincronizó por otras razones. Para lograr la sincronización, los nodos inician el temporizador sólo una vez que son parte de un quórum que se obtiene en la votación actual (o en una posterior) n. esto ralentiza los nodos que se iniciaron temprano y garantiza que no miembro de un conjunto intacto se mantiene demasiado por delante del grupo. Además, si un nodo v alguna vez nota un bloqueo v establecido en un momento posterior votación, salta inmediatamente a la votación más baja, de modo que esta ya no es el caso, independientemente de los temporizadores. la cascada El teorema entonces asegura que todos los rezagados se pongan al día. El resultado es que las papeletas están aproximadamente sincronizadas en todo un país intacto. se establece una vez que el sistema se vuelve sincrónico. 3.2.5 Selección de líder federado La selección de líderes permite a cada nodo elegir líderes de tal manera forma en que los nodos generalmente solo eligen uno o un pequeño número de líderes. Para adaptarse al fracaso del líder, selección del líder procede a través de rondas. Si los líderes de la ronda actual parecen no estar cumpliendo con sus responsabilidades, luego de un ciertos nodos del período de tiempo de espera pasan a la siguiente ronda para ampliar el conjunto de líderes que siguen. Cada ronda emplea dos funciones criptográficas hash únicas, H0 y H1, que generan números enteros en el rango [0,hmax). Por ejemplo, Stellar usa Hi(m) = SHA256(i∥b∥r ∥m), donde b es la instancia SCP general (bloque o número de libro mayor), r es el número de ronda de selección de líder, y hmax = 2256. Dentro una ronda, definimos la prioridad del nodo v como: prioridad(v) = H1(v) Un muñeco de paja sería para que cada nodo eligiera como líder. el nodev con la mayor prioridad (v). Este enfoque funciona bien con porciones de quórum casi idénticas, pero no funciona correctamente Captar la importancia de los nodos en configuraciones desequilibradas. Por ejemplo, si Europa y China aportan cada una 3 nodos para cada quórum, pero China tiene 1000 nodos y Europa 4, entonces China tendrá el nodo de mayor prioridad (99,6%). de la época. Por lo tanto, introducimos una noción de peso de corte, donde peso(u,v) ∈[0, 1] es la fracción de los sectores de quórum del nodo u que contiene el nodo v. Cuando el nodo u selecciona un nuevo líder, sólo considera vecinos, definidos de la siguiente manera: vecinos(u) = { v | H0(v) < hmáx · peso(u,v) } Luego, un nodo comienza con un conjunto vacío de líderes, y en cada round le agrega el nodo v en vecinos(u) con el mayor prioridad (v). Si el conjunto de vecinos está vacío en cualquier ronda, u agrega el nodov con el valor más bajo 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).

Verificación formal de SCP

Para eliminar errores de diseño, verificamos formalmente la seguridad de SCP. y propiedades de vida (ver [65]). En concreto, verificamos que los nodos entrelazados nunca están en desacuerdo y que, bajo las condiciones que se analizan más adelante, cada miembro de un conjunto intacto finalmente decide. Curiosamente, la verificación reveló que el Las condiciones bajo las cuales el SCP garantiza la vida son sutiles, y más fuerte de lo que se pensaba inicialmente [68]: como se analiza a continuación, nodos maliciosos que manipulan el tiempo sin otra cosa Es posible que sea necesario desalojar manualmente a aquellos que se desvían del protocolo. de porciones de quórum.

SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. Para garantizar que las propiedades demostradas se mantengan en todos los aspectos posibles. Configuraciones y ejecuciones de Logística de Amazon, consideramos una opción arbitraria. número de nodos con configuraciones locales arbitrarias. esto incluye escenarios con conjuntos intactos desunidos, así como ejecuciones potencialmente infinitamente largas. El inconveniente es que nosotros enfrentar el desafiante problema de verificar un parámetro parametrizado sistema de estados infinitos. Para mantener la verificación manejable, modelamos SCP en lógica de primer orden (FOL) usando Ivy [69] y la metodología de [82]. El proceso de verificación consiste en proporcionar manualmente conjeturas inductivas que luego son verificadas automáticamente por Hiedra. El modelo FOL de SCP resume algunos aspectos de Sistemas FBA que son difíciles de manejar en FOL (por ejemplo, el teorema de la cascada se toma como axioma), por lo que verificamos la solidez de la abstracción usando Isabelle/HOL [75]. Después de expresar el problema de verificación en FOL, verificamos la seguridad proporcionando un invariante inductivo. el inductivo invariante consta de una docena de conjeturas de una sola línea durante aproximadamente 150 líneas de especificación de protocolo. Luego especificamos las propiedades de vida de SCP en la Lógica Temporal Lineal de Ivy y usamos el vida a la reducción de seguridad de [80, 81] para reducir la vida problema de verificación al problema de encontrar un inductivo invariante. Si bien la seguridad de SCP es relativamente sencilla de demostrar, el argumento de la vida de SCP es mucho más complejo y consta de alrededor de 150 invariantes de una sola línea. Demostrar vivacidad requería una formalización precisa de la supuestos bajo los cuales SCP garantiza la terminación. Inicialmente pensamos que un conjunto intacto siempre lo terminaría si todos Los miembros eliminaron nodos defectuosos de sus sectores [68]. Sin embargo, esto resultó ser insuficiente: un hombre bien educado (pero no intacto) nodo en un quórum de un miembro de Puedo, bajo el influencia de nodos defectuosos, evite la terminación completando un quórum justo antes del final de la votación, provocando así Los miembros de I elegirán diferentes valores de x en la próxima votación. Por lo tanto, debemos suponer además que, informalmente, cada nodo en un quórum de un miembro de I eventualmente se vuelve oportuno o no envía ningún mensaje durante un período de tiempo suficiente. En la práctica, esto significa que los miembros de I may necesitan ajustar sus rebanadas hasta que la condición se mantenga. esto El problema no es inherente a los sistemas Logística de Amazon: Losa et al. [47] presente un protocolo cuya vida depende de los estrictamente más débiles suposiciones de una eventual sincronía y una eventual elección de líder, sin la necesidad de eliminar los nodos defectuosos de los cortes.

Формальная проверка 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] присутствует протокол, жизнеспособность которого зависит от строго более слабого предположения о возможной синхронности и возможном выборе лидера без необходимости удалять неисправные узлы из срезов.

Red de pago

Esta sección describe la red de pago de Stellar, implementada como una máquina de estado replicada [88] encima de SCP. 5.1 modelo de libro mayor El libro mayor de Stellar está diseñado en torno a una abstracción de cuenta (en contraste con la producción de transacciones no gastadas más centradas en monedas o UTXO modelo de Bitcoin). El contenido del libro mayor consta de un conjunto de asientos contables de cuatro tipos distintos: cuentas, líneas de confianza, ofertas y datos de la cuenta. Las cuentas son los principales que poseen y emiten activos. cada uno La cuenta recibe el nombre de una clave pública. De forma predeterminada, la clave privada correspondiente puede firmar transacciones para la cuenta. Sin embargo, las cuentas se pueden reconfigurar para agregar otros firmantes y desautorizar la clave que nombra la cuenta, con un Opción “multisig” para requerir múltiples firmantes. cada cuenta también contiene: un número de secuencia (incluido en las transacciones para evitar la repetición), algunas banderas y un equilibrio en un “nativo” criptomoneda preminada llamada XLM, destinada a mitigar algunos ataques de denegación de servicio y facilitar la creación de mercado como moneda neutral. Las líneas fiduciarias rastrean la propiedad de los activos emitidos, que son nombrado por un par que consta de la cuenta emisora y una cuenta corta código de activo (por ejemplo, “USD” o “EUR”). Cada línea de confianza especifica una cuenta, un activo, el saldo de la cuenta en ese activo, un límite por encima del cual el saldo no puede aumentar, y algunas banderas. Una cuenta debe dar su consentimiento explícito a mantener un activo mediante creando una línea de confianza, evitando que los spammers ensillaran cuentas con activos no deseados. Las regulaciones de Know-your-customer (KYC) requieren que muchas instituciones financieras sepan de quién son los depósitos que tienen, por ejemplo, comprobando una identificación con fotografía. Para cumplir, los emisores pueden establecer una marca auth_reqired opcional en sus cuentas, restringiendo la propiedad de los activos que emiten a cuentas autorizadas. Para otorgar dicha autorización, el emisor fija un límite autorizado marcar las líneas de confianza de los clientes. Las ofertas corresponden a la voluntad de una cuenta de negociar a una cierta cantidad de un activo particular por otro en un momento dado precio en el libro de pedidos; se emparejan automáticamente y se llena cuando los precios de compra/venta se cruzan. Finalmente, los datos de la cuenta constan de triples de cuenta, clave y valor, lo que permite a los titulares de cuentas para publicar pequeños valores de metadatos. Para evitar el spam en el libro mayor, existe un saldo XLM mínimo, llamada reserva. La reserva de una cuenta aumenta con cada asiento contable asociado y disminuye cuando el asiento contable desaparece (por ejemplo, cuando se completa o cancela una orden, o cuando una se elimina la línea de confianza). Actualmente la reserva crece 0,5 XLM (~$0,03) por asiento del libro mayor. Independientemente de la reserva, es Es posible recuperar el valor total de una cuenta eliminando con una operación AccountMerge. Un encabezado de libro mayor, que se muestra en la Figura 3, almacena atributos globales: un número de libro mayor, parámetros como el saldo de reserva por asiento contable, un hash del encabezado del libro mayor anterior (en realidad varios hashes que forman una lista de omisión), la salida de SCP incluye un hash de nuevas transacciones aplicadas en este libro mayor, un hash de los resultados de esas transacciones (por ejemplo, éxito o fracaso para cada uno) y una instantánea hash de todos los asientos del libro mayor. Debido a que la instantánea hash incluye todo el contenido del libro mayor, validators no necesitan conservar el historial para validar las transacciones. Sin embargo, para escalar a cientos de millones de anticipados cuentas, no podemos rehash todas las tablas de asientos contables en cada cierre del libro mayor. Además, no es práctico transferir un libro mayorPagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá libro mayor # = 4 H(hdr anterior) salida SCP H∗(resultados) H∗(instantánea) ... encabezado libro mayor # = 5 H(hdr anterior) salida SCP H∗(resultados) H∗(instantánea) ... encabezado . . . Figura 3. Contenido del libro mayor. H es SHA-256, mientras que H ∗ representa la aplicación jerárquica o recursiva de H. Salida SCP También depende del encabezado anterior hash. Crear cuenta Crear y financiar un nuevo asiento de cuenta en el libro mayor Fusión de cuentas Eliminar asiento del libro mayor de cuenta Establecer opciones Cambiar indicadores y firmantes de cuentas Pago Pagar una cantidad específica de activo al destino. cuenta RutaPago Como Pago, pero paga en un activo diferente (hasta limitar); especificar hasta 5 activos intermediarios AdministrarOferta Crear/eliminar/cambiar asiento de libro mayor de ofertas, -Oferta Pasiva con variante pasiva para permitir un spread cero Administrar datos Crear/eliminar/cambiar cuenta. entrada de datos en el libro mayor CambiarConfianza Crear/eliminar/cambiar línea de confianza Permitir confianza Establecer o borrar la bandera autorizada en la línea de confianza Secuencia de golpes Aumentar sec. numero en cuenta Figura 4. Operaciones del libro mayor principal de ese tamaño cada vez que un nodo se ha desconectado de la red durante demasiado tiempo. Por lo tanto, la instantánea hash es diseñado para optimizar tanto la hashing como la conciliación estatal. Específicamente, la instantánea estratifica los asientos del libro mayor por tiempo. de la última modificación en un conjunto de contenedores de tamaño exponencial llamados cubos. La colección de cubos se llama cubo. lista, y tiene cierta similitud con los árboles de fusión estructurados logarítmicamente (árboles LSM) [77]. La lista de deseos no se lee durante el procesamiento de transacciones (consulte la Sección 5.4). Por lo tanto, cierto diseño Se pueden relajar algunos aspectos de los árboles LSM. En particular, al azar No se requiere acceso mediante clave y los depósitos solo se leen. secuencialmente como parte de la fusión de niveles. Haciendo el cubo La lista se realiza hashing cada depósito a medida que se fusiona y calculando un nuevo hash acumulativo del depósito hashes (un pequeño, índice fijo de referencia hashes) en cada cierre del libro mayor. Conciliar la lista de deseos después de la desconexión requiere descarga sólo cubos que difieren. 5.2 Modelo de transacción Una transacción consta de una cuenta fuente, criterios de validez, una memorándum y una lista de una o más operaciones. La Figura 4 enumera las operaciones disponibles. Cada operación tiene una cuenta fuente, que por defecto es el de la transacción global. Una transacción debe estar firmado por claves correspondientes a cada cuenta de origen en una operación. Las cuentas multifirma pueden requerir una firma más alta peso para algunas operaciones (como SetOptions) y menor para otros (como AllowTrust). Las transacciones son atómicas: si alguna operación falla, ninguna de ellas ellos ejecutan. Esto simplifica los acuerdos multidireccionales. Supongamos que un El emisor crea un activo para representar títulos de propiedad y el usuario A. quiere cambiar una pequeña parcela de tierra más $10,000 por una parcela de tierra más grande propiedad de B. Los dos usuarios pueden firmar una única transacción que contiene tres operaciones: dos terrenos Pagos y pago de un dólar. El principal criterio de validez de una transacción es su número de secuencia, que debe ser uno mayor que el de la transacción. asiento contable de la cuenta fuente. Ejecutar una transacción válida (con éxito o no) incrementa el número de secuencia, evitando la repetición. Los números de secuencia iniciales contienen el libro mayor. número en los bits altos para evitar la reproducción incluso después de eliminar y volver a crear una cuenta. El otro criterio de validez es un límite opcional sobre cuándo se puede ejecutar una transacción. Volviendo a la tierra y al dólar intercambio anterior, si A firma la transacción antes que B, A no puede quiere que B se quede sentado en la transacción durante un año antes de presentarla ello, y por lo tanto podría imponer un límite de tiempo que invalida la transacción después de unos días. También se pueden configurar cuentas multifirma para dar peso de firma a la revelación de una preimagen hash, que, combinado con límites de tiempo, permite el comercio atómico entre cadenas [1]. La cuenta fuente de una transacción paga una tarifa trivial en XLM, 10-5 XLM a menos que haya congestión. En condiciones de congestión, el El coste de las operaciones se fija en una subasta holandesa. Los validadores son no compensado por tarifas porque los validators son análogos a Bitcoin nodos completos, no mineros. En lugar de destruir XLM, las tarifas se reciclan y distribuyen proporcionalmente mediante el voto de titulares de XLM existentes, que en retrospectiva podrían o podrían No habría valido la pena la complejidad. 5.3 Valores de consenso Para cada libro mayor, Stellar utiliza SCP para acordar una estructura de datos con tres campos: un conjunto de transacciones hash (incluido un hash del encabezado del libro mayor anterior), una hora de cierre, unaactualizaciones. Cuando se confirma la nominación de varios valores, Stellar toma el conjunto de transacciones con más operaciones (rompiendo lazos por tarifas totales, luego conjunto de transacciones hash), la unión de todos actualizaciones y el tiempo de cierre más alto. Un tiempo cercano es sólo válido si es entre la hora de cierre del último libro mayor y la presente, por lo que los nodos no nominan tiempos no válidos. Las actualizaciones ajustan parámetros globales como el saldo de reserva, la tarifa mínima de operación y la versión del protocolo. cuando combinados durante la nominación, las tarifas más altas y los números de versión del protocolo reemplazan a los más bajos. Las actualizaciones afectan la gobernanza a través de un espacio de disputa de votación federada [34], ninguno de los dos igualitario ni centralizado. Cada validator está configurado como ya sea gobernante o no gubernamental (el valor predeterminado), según a si su operador quiere participar en la gobernanza. Los validator que gobiernan consideran tres tipos de actualización: deseado, válido e inválido (cualquier cosa que el validator no

SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. validator núcleo horizonte FS DB DB enviar cliente cliente otros validators Figura 5. Arquitectura Stellar validator saber implementar). Las actualizaciones deseadas se configuran para desencadenar en un momento específico, destinado a ser coordinado entre operadores. Los nodos gobernantes siempre votan para nominar a los candidatos deseados. actualizaciones, acepte pero no vote para nominar actualizaciones válidas (es decir, aceptar un quórum de bloqueo) y nunca votar por o aceptar actualizaciones no válidas. Eco no gubernamental de validators cualquier voto que vean para una actualización válida, esencialmente delegando la decisión sobre qué actualizaciones se desean para aquellos que optan para un rol de gobernanza. 5.4 Implementación La Figura 5 muestra la arquitectura validator de Stellar. un demonio llamado stellar-core (~92k líneas de C++, sin contar bibliotecas de terceros) implementa el protocolo SCP y la máquina de estado replicada. Producir valores para SCP requiere reducir un gran número de entradas del libro mayor a pequeños valores criptográficos. hashes. Por el contrario, la validación y ejecución de transacciones requiere buscar el estado de la cuenta y la correspondencia de pedidos en el mejor precio. Para cumplir ambas funciones de manera eficiente, stellar-core mantiene dos representaciones del libro mayor: una representación externa que contiene la lista de deseos, almacenada como archivos binarios que se puede actualizar de manera eficiente y modificar incrementalmentehash, y una representación interna en una base de datos SQL (PostgreSQL para nodos de producción). Stellar-core crea un archivo histórico de solo escritura que contiene cada conjunto de transacciones que se confirmó y instantáneas de cubos. El archivo permite que los nuevos nodos se inicien solos al unirse a la red. También proporciona un registro del libro mayor. historia: es necesario que haya algún lugar donde se pueda buscar una transacción de hace dos años. Dado que el historial es solo para agregar y se accede con poca frecuencia, se puede guardar en lugares baratos como Amazon Glacier o cualquier servicio que permita almacenar y recuperar archivos planos. Los hosts validadores normalmente no alojan sus propios archivos para evitar cualquier impacto en la validación desempeño de la historia del servicio. Para mantener simple el núcleo estelar, no está diseñado para ser utilizado directamente por las aplicaciones y expone sólo una interfaz muy estrecha para el envío de nuevas transacciones. para apoyar clientes, la mayoría de los validator ejecutan un demonio llamado horizonte (∼18k líneas de Go) que proporciona una interfaz HTTP para enviar y aprendizaje de transacciones. horizonte tiene acceso de sólo lectura a base de datos SQL de stellar-core, minimizando el riesgo de horizonte núcleo estelar desestabilizador. Funciones como la búsqueda de rutas de pago se implementan completamente en el horizonte y se pueden actualizar unilateralmente sin coordinarse con otros validators. Varios demonios opcionales de capa superior son clientes del horizonte, completando el ecosistema. Un servidor puente facilita integración de Stellar con sistemas existentes, por ejemplo, publicación de notificaciones de todos los pagos recibidos por una cuenta específica. un El servidor de cumplimiento proporciona ganchos para que las instituciones financieras intercambiar y aprobar información del remitente y del beneficiario sobre pagos, para el cumplimiento de listas de sanciones. Finalmente, un servidor de federación implementa un nombre legible por humanos sistema de cuentas. 6 Experiencia de implementación Stellar creció durante varios años hasta convertirse en un estado con una moderada número de operadores de nodo completo razonablemente confiables. Sin embargo, Las configuraciones de los nodos eran tales que la vida (aunque no seguridad) dependía de nosotros, la Fundación para el Desarrollo Stellar (FDS); Si SDF hubiera desaparecido repentinamente, otros operadores de nodos Habría sido necesario intervenir y eliminarnos manualmente. de porciones de quórum para que la red continúe. Si bien nosotros y muchos otros queremos reducir la importancia sistémica del SDF, este objetivo recibió una prioridad cada vez mayor después de Los investigadores [58] cuantificaron y dieron a conocer la centralización de la red sin diferenciar los riesgos para la seguridad y vivacidad. Varios operadores reaccionaron con ajustes activos de configuración, principalmente aumentando el tamaño de su divisiones de quórum en un esfuerzo por diluir la importancia del SDF; Irónicamente, esto sólo aumentó el riesgo para la vida. Dos problemas agravaron la situación. Primero, un popular herramienta de monitoreo de terceros Stellar [5] fue sistemáticamente sobreestimar el tiempo de actividad de validator al no verificarlo ese núcleo estelar estaba funcionando; esto lleva a la gente a incluir nodos poco confiables en sus sectores de quórum. En segundo lugar, un error en núcleo estelar significaba que una vez que un validator se movía al siguiente libro mayor, no ayudó adecuadamente a los nodos restantes a completar el proceso anteriorlibro mayor en caso de pérdida de mensajes. Como resultado, el La red experimentó 67 minutos de inactividad y requirió coordinación manual por parte de validator administradores para reiniciar. Peor aún, al intentar reiniciar la red, se produjeron reconfiguraciones apresuradas simultáneas en varios nodos. en una mala configuración colectiva que permitió que algunos nodos divergen, lo que requiere un apagado manual de esos nodos y nueva presentación de las transacciones aceptadas durante la divergencia. Afortunadamente, esta divergencia fue detectada y corregida. rápidamente y no contenía transacciones conflictivas, pero el riesgo de que la red no pueda disfrutar de la intersección del quórum: dividiéndose mientras se continúa aceptando situaciones potencialmente conflictivas. transacciones, simplemente debido a una mala configuración, se realizó muy concreto por este incidente. La revisión de estas experiencias llevó a dos conclusiones principales. y las acciones correctivas correspondientes.Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Crítico, 100% 51% 51% Alto, 67% 51% Medio, 67% 51% Bajo, 67% 51% 51% ... ... ... 51% ... 51% Figura 6. Jerarquía de calidad del validador. Nodos de la más alta calidad requieren el umbral más alto del 100%, mientras que las calidades más bajas están configuradas con un umbral del 67%. Nodos dentro de un solo organización requiere una mayoría simple del 51%. 6.1 Complejidad y fragilidad de la configuración. Stellar expresa sectores de quórum como conjuntos de quórum anidados que constan de n entradas y un umbral k donde cualquier conjunto de k entradas constituye una porción de quórum. Cada una de las n entradas entonces es una clave pública validator o, de forma recursiva, otro conjunto de quórum. Aunque flexibles y compactos, implementamos el quórum anidado conjuntos simultáneamente brindaban a los operadores de nodos demasiada flexibilidad y muy poca orientación: era fácil escribir datos inseguros (o incluso configuraciones sin sentido). Los criterios para agrupar nodos en conjuntos, para organizar subconjuntos en una jerarquía, y para elegir los umbrales no fueron suficientemente claros y contribuyeron a fallos operativos. No estaba claro si tratar un "nivel" en la jerarquía de conjuntos anidados como un nivel de confianza, o una organización, o ambos; muchas configuraciones en el campo mezcló estos conceptos, además de especificar peligros o umbrales sin sentido. Por lo tanto, agregamos un mecanismo de configuración más simple. que separa dos aspectos de los conjuntos de quórum anidados: agrupación nodos juntos por organización y etiquetando cada organización con una clasificación de confianza simple (baja, media, alta o crítico). Las organizaciones en niveles superiores y superiores deben publicar archivos de historia. El nuevo sistema sintetiza conjuntos de quórum anidados en los que cada organización está representada como un Se establece un umbral del 51 % y las organizaciones se agrupan en conjuntos con umbrales del 67% o 100% (dependiendo de la calidad del grupo). Cada grupo es una entrada única en el siguiente grupo (de mayor calidad), como se ilustra en la Figura 6. Este modelo simplificado reduce la probabilidad de una mala configuración, tanto en términos de la estructura de los conjuntos anidados sintetizados y los umbrales elegidos para cada conjunto. 6.2 Detección proactiva de errores de configuración En segundo lugar, nos dimos cuenta de que detectar la mala configuración colectiva esperando a observar sus efectos negativos es demasiado tarde. Especialmente con respecto a configuraciones erróneas que pueden divergir: un modo de falla más grave que detenerse: la red necesita para poder detectar errores de configuración inmediatamente para que los operadores puedan revertirlos antes de que ocurra cualquier divergencia. Para abordar esta necesidad, construimos un mecanismo en el software validator que recopila continuamente el estado de configuración colectiva de todos los pares en el cierre transitivo del nodo y detecta el potencial de divergencia, es decir, disjuntos. quórums, dentro de esa configuración colectiva. 6.2.1 Comprobando la intersección del quórum Si bien reunir porciones de quórum es fácil, encontrar quórums disjuntos entre ellas es co-NP-difícil [62]. Sin embargo, adoptamos un conjunto de heurísticas algorítmicas y reglas de eliminación de casos propuesto por Lachowski [62] que verifica casos típicos del problema varios órdenes de magnitud más rápido que el costo en el peor de los casos. En la práctica, la red actual Los cierres transitivos de sectores de quórum son del orden de 20 a 30. nodos y, con las optimizaciones de Lachowski, normalmente verifica en cuestión de segundos en una sola CPU. Si surge la necesidad Para mejorar el rendimiento, podemos paralelizar la búsqueda. 6.2.2 Comprobando configuraciones riesgosas Detectar que la red admite quórums disjuntos es un paso en la dirección correcta, pero advierte el peligro incómodamente tarde para un tema tan crítico. Idealmente, queremos que los operadores de nodos reciban advertencias cuando la configuración colectiva de la red simplemente se está acercando a un estado de riesgo. Por lo tanto, ampliamos el verificador de intersección de quórum para detectar una condición que llamamos criticidad: cuando la corriente La configuración colectiva está a una mala configuración de un estado que admite quórumes disjuntos. Para detectar la criticidad, el verificador reemplaza repetidamente la configuración de cada organización con una configuración incorrecta simulada en el peor de los casos, luego Vuelve a ejecutar el verificador de intersección del quórum interno en el resultado. Si existe algún error de configuración crítico, a un paso de distancia desde el estado actual, el software emite una advertencia y informa que la organización presenta un riesgo de configuración incorrecta. Estos cambios dan a la comunidad de operadores dos capas de aviso y orientación para aislarse contra las peores formas de una mala configuración colectiva.

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

В этом разделе описывается платежная сеть 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 Проверка рискованных конфигураций Обнаружение того, что сеть допускает непересекающиеся кворумы, является шагом в правильном направлении, но сигнализирует об опасности неприятно поздно по столь критичному вопросу. В идеале мы хотим, чтобы операторы узлов получали предупреждения, когда коллективная конфигурация сети просто приближается к опасному состоянию. Поэтому мы расширили проверку пересечения кворума чтобы обнаружить состояние, которое мы называем критичностью: когда текущий коллективная конфигурация находится на расстоянии одной неправильной конфигурации от государство, допускающее непересекающиеся кворумы. Чтобы обнаружить критичность, программа проверки неоднократно заменяет конфигурацию каждой организации смоделированной наихудшей ошибкой конфигурации, а затем повторно запускает проверку пересечения внутреннего кворума для результата. Если такая критическая неправильная конфигурация существует в одном шаге из текущего состояния, программное обеспечение выдает предупреждение и сообщает об организации, представляющей риск неправильной конфигурации. Эти изменения дают сообществу операторов два уровня. уведомлений и указаний для защиты от наихудших форм коллективной неправильной конфигурации.

Evaluación

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

Comprender la idoneidad de Stellar como pago global y red comercial, evaluamos el estado de la red pública y realizó experimentos controlados en un laboratorio experimental privado. red. Nos centramos en las siguientes preguntas: • ¿Cómo es la topología de la red de producción? ¿Cuántos mensajes se transmiten en promedio y ¿Cómo experimenta SCP los tiempos de espera? • ¿Las latencias de actualización del consenso y del libro mayor siguen siendo independientes del número de cuentas?SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. • ¿Cómo se ven afectadas las latencias por el aumento de (a) las transacciones por segundo (y, en consecuencia, las transacciones por segundo)? libro mayor), y (b) el número de validator nodos? • ¿Cuál es el costo de ejecutar un nodo en términos de CPU? memoria y ancho de banda de la red? Las redes de pago tienen tasas de transacción bajas en comparación a otros tipos de sistemas distribuidos. Los principales blockchains, Bitcoin y Ethereum, confirman hasta 15 transacciones/segundo, menos de Stellar. Además, estos sistemas tardan unos minutos en Una hora para confirmar una transacción de forma segura, porque la prueba de trabajo requiere esperar a que se extraigan varios bloques. el La red SWIFT no blockchain promedió solo 420 transacciones por segundo en su día pico [14]. Por lo tanto elegimos para comparar nuestras mediciones con el objetivo de 5 segundos intervalo del libro mayor, un objetivo más agresivo. Nuestros resultados muestran que las latencias están cómodamente por debajo de este límite incluso con Varias optimizaciones no implementadas aún están en proceso. 7.1 Anclas Los principales activos negociados por volumen incluyen divisas (por ejemplo, 3 USD anclas, 2 CNY), un ancla Bitcoin, un valor respaldado por bienes raíces token [92] y una moneda en la aplicación [8]. Diferentes anclas tienen diferentes políticas. Por ejemplo, un ancla en USD, Stronghold, establece auth_reqired y requiere un proceso de conocimiento de su cliente (KYC) para cada cuenta que tenga su activos. Otro, AnchorUSD, cualquiera puede recibir e intercambiar sus USD (haciendo literalmente posible enviar $0.50 a México en 5 segundos con una tarifa de $0.000001). Sin embargo, AnchorUSD requiere KYC y tarifas para comprar o canjear sus USD con transferencias bancarias convencionales. En Filipinas, donde Las regulaciones bancarias son más laxas para los pagos entrantes, monedas.ph admite el retiro de PHP en cualquier cajero automático [36]. Además de la seguridad token mencionada anteriormente y la moneda de la aplicación, existe una variedad de tokens no monetarios que van desde bonos comerciales [22] y créditos de carbono [85, 96] a más activos esotéricos como un token que incentiva la colaboración recuperación del automóvil [35]. 7.2 Red pública Al momento de escribir este artículo, hay 126 nodos completos activos, 66 de los cuales participar en el consenso firmando mensajes de voto. Figura 7 (generado por [5]) visualiza la red, con una línea entre dos nodos si uno aparece en los sectores de quórum del otro y un Línea azul más oscura para mostrar dependencia bidireccional. en el El centro es un grupo de 17 “validators de nivel uno” de facto dirigidos por SDF, SatoshiPay, LOBSTR, COINQVEST y Keybase. Hace cuatro meses, antes de los acontecimientos de la Sección 6, había Había 15 nodos sistémicamente importantes: 3 de aparentemente organizaciones de primer nivel y varios singletons aleatorios. el El gráfico también parecía mucho menos regular. Por lo tanto, el nuevo mecanismo de configuración y/o mejores decisiones del operador parecen contribuir a una topología de red más saludable. sin Grandes recursos financieros (y el correspondiente accionista). Figura 7. Mapa de porción de quórum obligaciones), hubiera sido difícil reclutar 5 niveles uno organizaciones desde el principio. Esto sugiere quórum Los sectores desempeñan un papel útil en el arranque de la red: cualquiera puede unirse con el objetivo de convertirme en un jugador importante porque no existen barreras para el acuerdo por parejas. Actualmente hay más de 3,3 millones de cuentas en el libro mayor. Más En un período reciente de 24 horas, Stellar promedió 4,5 transacciones y 15,7 operaciones por segundo. Revisando los libros de contabilidad recientes, la mayoría Las transacciones parecen tener una sola operación, mientras que cada pocos En los libros mayores vemos transacciones que contienen muchas operaciones que parecen provenir de creadores de mercado que gestionan ofertas. el Los tiempos medios para lograr el consenso y actualizar el libro mayor fueron 1061 ms y 46 ms, respectivamente. Los percentiles 99 fueron 2252 ms y 142 ms (el primero refleja un tiempo de espera de 1 segundo en la selección del líder de nominación). Tenga en cuenta que el rendimiento de SCP es en su mayoría independiente de las transacciones por segundo, ya que SCP acuerda un hash de muchas transacciones arbitrarias. Es más probable que surjan cuellos de botella al propagar el candidato. transacciones durante la nominación, ejecución y validación transacciones y fusión de depósitos. todavía no hemos necesitado para paralelizar el procesamiento de transacciones de stellar-core en múltiples núcleos de CPU o unidades de disco. También evaluamos la cantidad de mensajes SCP transmitidos. en la red de producción. En el caso normal con un solo líder elegido para nominar un valor, esperamos siete lógicas mensajes a difundir: dos mensajes para votar y aceptar una nomiDeclaración de nacimiento, dos mensajes para aceptar y confirmar. una declaración de preparación, dos mensajes para aceptar y confirmar una declaración de confirmación y, finalmente, un mensaje de externalización (enviado después de enviar un nuevo libro mayor al disco para ayudar a los rezagados ponerse al día). La implementación combina confirmar el compromiso. y externalizar mensajes como una optimización, ya que es Es seguro externalizar un valor una vez comprometido. Luego analizamos las métricas recopiladas en una producción Stellar validator. Más En el transcurso de 68 horas se emitieron 1,3 mensajes/segundo, con un promedio de 6 a 7 mensajes por libro mayor. Observamos que el total

Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá percentil Número de tiempos de espera Nominación votación 75% 0 0 99% 1 0 máx. 4 1 Figura 8. Tiempos de espera por libro mayor de 68 horas El recuento de mensajes transmitidos por validators es mayor, ya que en Además de los mensajes de votación federados, los nodos también transmiten cualquier transacción que conozcan. La Figura 8 muestra los tiempos de espera experimentados por una producción. validator durante un período de 68 horas. Los tiempos de espera para las nominaciones son una medida de la (in)eficacia de la función de elección del líder, mientras que los tiempos de espera de las votaciones dependen en gran medida de la red y posibles retrasos en los mensajes. Los tiempos de espera son consistentes. con el número de mensajes emitidos: seis mensajes en el en el mejor de los casos, y al menos siete mensajes si se necesita una ronda de nominaciones adicional. 7.3 Experimentos controlados Realizamos experimentos controlados en contenedores empaquetados en Instancias Amazon EC2 c5d.9xlarge con 72 GiB de RAM, 900 GB de SSD NVMe y 36 vCPU. Cada instancia estaba en la misma región EC2 y tenía un ancho de banda fijo de 10 Gbps. Usamos SQLite como tienda. (Stellar también es compatible con PostgreSQL, pero eso tiene tareas asincrónicas que inyectan ruido en las mediciones). Stellar proporciona una consulta de tiempo de ejecución integrada, generateload, que permite generar carga sintética en un objetivo específico transacción/segunda tasa. Aunque Stellar admite varios Funciones comerciales, como libro de órdenes y ruta entre activos. pagos, nos centramos en pagos simples. La confirmación de transacciones consta de varios pasos, por lo que registró las medidas para cada uno de los siguientes: • Nominación: tiempo desde la nominación hasta la primera preparación. • Votación: tiempo desde la primera preparación hasta la confirmación de una boleta comprometida • Actualización del libro mayor: es hora de aplicar el valor de consenso • Recuento de transacciones: transacciones confirmadas por libro mayor Cada uno de nuestros experimentos estuvo definido por tres parámetros: el número de asientos de cuenta en el libro mayor, la cantidad de carga (en forma de pagos XLM) enviada por segundo, y el número de validators. Configuramos cada validator saber sobre todos los demás validator (el peor de los casos para SCP), con porciones de quórum establecidas en cualquier mayoría simple de nodos (para maximizar el número de quórums diferentes). Línea de base Nuestro experimento de referencia midió Stellar con 100.000 cuentas, cuatro validator y la generación de carga tasa de 100 transacciones/segundo. Observamos 507 transacciones por libro mayor en promedio, con una desviación estándar de 49 (9,7%). Tenga en cuenta que no se descartaron transacciones; el ligero 105 106 107 0 500 1.000 1.500 2.000 Cuentas Latencia [ms] Actualización del libro mayor votación Nominación Figura 9. Latencia a medida que aumenta el número de cuentas La variación se debe a limitaciones de programación del generador de carga. Observamos que el número de transacciones por libro mayor fue consistente con nuestra tasa de generación de carga, dado el libro mayor cerrando cada 5 segundos. Nominación, votación y libro mayor La actualización mostró latencias medias de 82,53 ms, 95,96 ms y 174,08 ms, respectivamente. Observamos que la latencia de nominación El percentil 99 está constantemente por debajo de 61 ms, con ocasionales picos de aproximadamente 1 segundo, correspondientes al primer paso en la función de tiempo de espera de la selección de líder. Dado el desempeño de referencia, analizamos los efectos de variar cada uno de los parámetros de configuración de la prueba. Cuentas Los datos de la Figura 9 sugieren que Stellar escala así como el número de cuentas aumenta. Generación de prueba Las cuentas se convirtieron en un proceso largo, ya que la creación de depósitos y la fusión nos impidió simplemente poblar la base de datos con cuentas directamente a través de SQL. Por lo tanto, llevamos a cabo nuestra experimentos para hasta 50.000.000 de cuentas. mientras hay impacto mínimo en las latencias de actualización del consenso y del libro mayor, observamos que el aumento de cuentas crea un gasto general de fusionando cubos, que se hacen más grandes. Tasa de transacción La tasa de transacción afecta la cantidad de multidifusión de tráfico entre validators, el número de transacciones incluidas en cada libro mayor y el tamaño del nivel superior cubos. Comprender los efectos del aumento de las transacciones. carga, realizamos un experimento con 100.000 cuentas y 4 validators. La Figura 10 muestra un lento crecimiento en la latencia del consenso, mientras que la mayor parte del tiempo se dedicó a actualizar el libro mayor. No es sorprendente que a medida que el conjunto de transacciones aumenta de tamaño, lleva más tiempo enviarlo a la base de datos. También notamos que La latencia de actualización del libro mayor depende en gran medida de la implementación. y se ve afectado por la elección de la base de datos. Nodos validadores Para ver cómo aumenta el número de tíone validatorsimpacta el rendimiento, realizamos experimentos con 100.000 cuentas, 100 transacciones por segundo y un número variable de validators de 4 a 43. Aparecieron todos los validators en todos los sectores de quórum de validators; porciones de quórum más pequeñas tienen un menor impacto en el rendimiento.SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá Lokhava et al. 100 150 200 250 300 350 0 500 1.000 1.500 2.000 Carga [transacciones/segundo] Latencia [ms] Actualización del libro mayor votación Nominación Figura 10. Latencia a medida que aumenta la carga de transacciones 10 20 30 40 0 500 1.000 1.500 2.000 Validadores Latencia [ms] Actualización del libro mayor votación Nominación Figura 11. Latencia a medida que aumenta el número de nodos Cambiar el número de nodos de validación en la red afecta la cantidad de mensajes SCP intercambiados, así como el número de valores potenciales durante la nominación. Figura 11 muestra que el tiempo de nominación crece a un ritmo relativamente pequeño. Si bien los datos sugieren que las votaciones son el cuello de botella, Creemos que muchos problemas de escala se pueden abordar mejorando Red superpuesta de Stellar para optimizar el tráfico de red. como Como era de esperar, la latencia de actualización del libro mayor se mantuvo independiente de el número de nodos. Tasa de cierre Por último, queríamos medir el rendimiento de extremo a extremo de Stellar midiendo la frecuencia con la que se confirman los libros de contabilidad y si Stellar cumple su objetivo de 5 segundos sin abandonar cualquier transacción. Observamos un cierre promedio del libro mayor tiempos de 5,03 s, 5,10 s y 5,15 s a medida que aumentamos la cuenta entradas, tasa de transacción y número de nodos, respectivamente. Los resultados sugieren que Stellar puede cerrar libros contables de forma consistente bajo carga alta. 7.4 Ejecutando un validator Una de las características importantes de Stellar es el bajo costo de ejecutando un validator, ya que los anclajes deben ejecutarse (o contraerse) validators para hacer cumplir la finalidad. SDF ejecuta 3 validator de producción, todos en instancias c5.large de AWS, que tienen dos núcleos, 4 GiB de RAM y CPU Intel(R) Xeon(R) Platinum 8124M @ Procesadores de 3,00 GHz. Inspeccionar el uso de recursos en uno de estas máquinas, observamos el proceso Stellar usando alrededor del 7% de la CPU y 300 MiB de memoria. En términos de tráfico de red, con 28 conexiones a pares y un tamaño de quórum de 34, las velocidades entrantes y salientes fueron de 2,78 Mbit/s y 2,56 Mbit/s, respectivamente. Hardware necesario para ejecutar tal El proceso es económico. En nuestro caso, el coste es de 0,054$/hora. o alrededor de $40/mes. 7.5 Trabajo futuro Estos experimentos sugieren que Stellar puede escalar fácilmente entre 1 y 2 pedidos de magnitud más allá del uso actual de la red. porque el Las demandas de rendimiento han sido tan modestas hasta la fecha, Stellar deja espacio para muchas optimizaciones sencillas utilizando técnicas bien conocidas. Por ejemplo, transacciones y SCP los mensajes son transmitidos por validators usando una inundación ingenua protocolo, pero idealmente debería utilizar métodos más eficientes y estructurados. multidifusión punto a punto [30]. Además, con muchas bases de datos El tiempo de actualización del libro mayor se puede mejorar mediante técnicas estándar de procesamiento por lotes y captación previa.

Оценка

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]. Кроме того, большая база данных Время обновления реестра можно сократить с помощью стандартных методов пакетной обработки и предварительной выборки.

Conclusión

Los pagos internacionales son caros y tardan días. Fondo la custodia pasa a través de múltiples instituciones financieras, incluidos bancos corresponsales y servicios de transferencia de dinero. Debido a que se debe confiar plenamente en cada salto, es difícil para los nuevos nuevos participantes ganen cuota de mercado y compitan. Stellar muestra cómo enviar dinero a todo el mundo de forma económica en segundos. el La innovación clave es un nuevo protocolo de acuerdo bizantino de membresía abierta, SCP, que aprovecha la estructura de igual a igual. de la red financiera para lograr un consenso global bajo un Nueva hipótesis de Internet. SCP permite que Stellar se comprometa atómicamente transacciones irreversibles entre participantes arbitrarios que no se conocen ni confían el uno en el otro. Esto, a su vez, garantiza a los nuevos participantes el acceso a los mismos mercados establecidos. jugadores, hace que sea seguro obtener el mejor intercambio disponible tasas incluso de creadores de mercado que no son de confianza, y dramáticamente Reduce la latencia de pago. Agradecimientos Stellar no estaría donde está hoy sin el temprano liderazgo de Joyce Kim o las tremendas contribuciones de Scott Fleckenstein y Bartek Nowotarski en la construcción y manteniendo horizonte, el SDK Stellar y otras piezas clave del ecosistema Stellar. También agradecemos a Kolten Bergeron, Henry Corrigan-Gibbs, Candace Kelly, Kapil K. Jain, Boris Reznikov, Jeremy Rubin, Christian Rudder, Eric Saunders, Torsten Stüber, Tomer Weller, los revisores anónimos y nuestra pastora Justine Sherry por sus útiles comentarios sobre borradores anteriores. Descargo de responsabilidad La contribución del profesor Mazières a esta publicación fue como consultor remunerado y no formó parte de su Deberes o responsabilidades de la Universidad de Stanford.

Pagos globales rápidos y seguros con Stellar SOSP ’19, 27 al 30 de octubre de 2019, Huntsville, ON, Canadá

Заключение

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

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