스텔라 합의 프로토콜
Аннотация
Международные платежи медленны и дороги, отчасти из-за многошаговой маршрутизации платежей через разнородные сети. банковские системы. Stellar — новая глобальная платежная сеть который может напрямую переводить цифровые деньги в любую точку мира. мир за секунды. Ключевое нововведение — безопасная транзакция механизм через ненадежных посредников, используя новый Протокол византийского соглашения под названием SCP. С помощью SCP каждый учреждение указывает другие учреждения, в которых можно остаться по согласию; благодаря глобальной взаимосвязанности финансовой системы, вся сеть затем соглашается на атомную транзакции, охватывающие произвольные учреждения, без риска платежеспособности или валютного курса со стороны промежуточных эмитентов активов или маркет-мейкеры. Мы представляем модель, протокол и формальная проверка; описать платежную сеть Stellar; и, наконец, оценить Stellar эмпирически с помощью тестов и наш опыт нескольких лет производственного использования. Концепции CCS • Безопасность и конфиденциальность → Распределенный безопасность систем; • Организация компьютерных систем → Одноранговые архитектуры; • Информационные системы → Электронный перевод средств. Ключевые слова blockchain, BFT, кворумы, выплаты Справочный формат ACM: Марта Лохава, Джулиано Лоса, Дэвид Мазьер, Грэйдон Хоар, Николас Бэрри, Эли Гафни, Джонатан Джоув, Рафал Малиновский, Джед Маккалеб. 2019. Быстрые и безопасные глобальные платежи с Stellar. В СОСП ’19: Симпозиум по принципам операционных систем, 27–30 октября, 2019, Хантсвилл, Онтарио, Канада. ACM, Нью-Йорк, Нью-Йорк, США, 17 страниц. https://doi.org/10.1145/3341301.3359636
초록
국제 결제는 느리고 비용이 많이 듭니다. 부분적으로는 이기종을 통한 멀티홉 결제 라우팅 때문입니다. 은행 시스템. Stellar는 새로운 글로벌 결제 네트워크입니다. 어디서나 디지털 화폐를 직접 전송할 수 있는 몇 초 만에 세계. 핵심 혁신은 안전한 거래입니다 새로운 메커니즘을 사용하여 신뢰할 수 없는 중개자를 통한 메커니즘 SCP라고 불리는 비잔틴 합의 프로토콜. SCP를 사용하면 각각 기관은 남아 있을 다른 기관을 지정합니다. 동의하다; 글로벌 상호 연결을 통해 금융 시스템, 전체 네트워크는 원자에 동의합니다. 중개 자산 발행자의 지급 능력이나 환율 위험 없이 임의의 기관에 걸친 거래 또는 시장 조성자. 우리는 SCP의 모델, 프로토콜 및 공식적인 검증; Stellar 결제 네트워크를 설명하세요. 마지막으로 벤치마크를 통해 경험적으로 Stellar을 평가합니다. 수년간의 생산 사용 경험. CCS 개념 • 보안 및 개인정보 보호 →분산 시스템 보안; • 전산시스템 구성 → 피어 투 피어 아키텍처 • 정보시스템 → 전자 자금 이체. 키워드 blockchain, BFT, 정족수, 지불 ACM 참조 형식: 마르타 로카바, 줄리아노 로사, 데이비드 마지에르, 그레이던 호어, 니콜라스 배리, 엘리 가프니, 조나단 조브, 라파우 말리노프스키, 제드 맥칼렙. 2019. Stellar를 통한 빠르고 안전한 글로벌 결제. SOSP에서는 ’19: 운영 체제 원칙에 관한 심포지엄, 10월 27~30일 2019, 헌츠빌, 온타리오, 캐나다. ACM, 뉴욕, 뉴욕, 미국, 17페이지. https://doi.org/10.1145/3341301.3359636
Введение
Международные платежи, как известно, медленные и дорогостоящие [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 завершается.
소개
국제 결제는 느리고 비용이 많이 드는 것으로 악명 높습니다 [32]. 미국에서 다음 국가로 0.50달러를 보내는 것은 비실용적입니다. *갈로이스 주식회사 †UCLA 본 저작물의 전부 또는 일부를 디지털 또는 하드 카피로 만들 수 있는 권한 개인 또는 교실 사용은 사본이 아닌 한 무료로 허용됩니다. 영리 또는 상업적 이익을 위해 제작 또는 배포되었으며 그 사본에는 다음과 같은 내용이 포함됩니다. 이 통지문과 첫 페이지에 전체 인용문이 나와 있습니다. 구성 요소에 대한 저작권 ACM이 아닌 타인이 소유한 이 저작물은 존중되어야 합니다. 추상화 신용이 허용됩니다. 다른 방식으로 복사하거나 다시 게시하거나 서버에 게시하거나 목록으로 재배포하려면 사전 특정 허가 및/또는 수수료가 필요합니다. 요청 [email protected]의 권한입니다. SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 © 2019 컴퓨팅 기계 협회. ACM ISBN 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년 2분기 은행 계좌에서 송금하는 데 드는 평균 비용은 6.99%, 모바일 머니 수치는 4.88% [13]에 불과했습니다. 혁신을 불러일으키는 개방형 글로벌 결제 네트워크 비은행 기업과의 경쟁이 위축될 수 있습니다. 규정 준수를 포함한 모든 계층의 비용 및 대기 시간 [83]. 이 백서는 blockchain 기반 결제인 Stellar을 제시합니다. 혁신을 촉진하고 국제 결제 경쟁. Stellar이 첫 번째입니다 다음 세 가지 목표를 모두 충족하는 시스템( 참신하지만 경험적으로 유효한 "인터넷 가설"): 1. 오픈멤버십 – 누구나 통화담보 발행 가능 사용자 간에 교환할 수 있는 디지털 token입니다. 2. 발급자 시행 최종성 – token의 발급자는 이를 방지할 수 있습니다. token의 거래가 취소되거나 실행 취소되지 않습니다. 3. 발행자 간 원자성 – 사용자는 원자적으로 교환할 수 있습니다. 여러 발행자로부터 token을 거래하세요. 처음 두 개를 달성하는 것은 쉽습니다. 어떤 회사라도 Paypal, Venmo, WeChat과 같은 제품을 일방적으로 제공할 수 있습니다. 지불 또는 Alipay를 통해 지불의 최종성을 보장합니다. 그들이 만든 가상 화폐. 불행하게도 이러한 통화 간에 원자적으로 거래하는 것은 불가능합니다. 사실, Paypal이 Venmo의 모회사를 인수했음에도 불구하고 2013년에는 여전히 최종 사용자가 Venmo를 보내는 것이 불가능합니다. PayPal 사용자에게 [78] 달러를 지급합니다. 최근에야 상인들이 단일 통합으로 두 가지를 모두 수용할 수도 있습니다. 목표 2와 3은 폐쇄형 시스템에서 달성할 수 있습니다. 특히 국내결제가 효율적인 국가가 많습니다. 일반적으로 보편적으로 신뢰할 수 있는 규제 기관이 감독하는 네트워크입니다. 단, 회원가입은 비공개로 제한됩니다. 공인 은행 집합과 네트워크는 다음으로 제한됩니다. 국가의 규제 당국에 도달합니다.SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. 목표 1과 3은 채굴된 blockchain에서 달성되었습니다. 특히 Ethereum [3]의 ERC20 tokens 형식입니다. 이 blockchains의 핵심 아이디어는 사람들이 정착에 대해 보상할 수 있는 새로운 암호화폐를 만드는 것입니다. 되돌리기 어려운 거래. 불행하게도 이는 token 발행자가 거래 최종성을 제어하지 않는다는 것을 의미합니다. 소프트웨어인 경우 오류로 인해 거래 내역이 재구성됩니다 [26, 73], 또는 사람들을 속여 얻은 전리품이 그 비용을 초과하는 경우 기록 재구성 [74, 97], 발행자는 tokens에 대해 책임을 질 수 있습니다. 그들은 이미 실제 돈으로 교환했습니다. Stellar blockchain에는 두 가지 구별되는 속성이 있습니다. 첫째, 기본적으로 tokens 간의 효율적인 시장을 지원합니다. 다른 발행자로부터. 특히 누구나 token을 발행할 수 있습니다. blockchain은 token 쌍 간의 거래를 위한 내장 주문서를 제공하며 사용자는 경로 지불을 발행할 수 있습니다. 여러 통화쌍에 걸쳐 원자적으로 거래되는 반면 종단간 한계 가격을 보장합니다. 둘째, Stellar은 새로운 비잔틴 계약을 도입합니다. 프로토콜, SCP(Stellar 합의 프로토콜)를 통해 token 발급자는 시행할 특정 validator 서버를 지정합니다. 거래 최종성. 발행자의 validator(및 기본 디지털 서명 및 암호화 hashes는 안전하게 유지됩니다.) 발행자는 어떤 거래가 발생했는지 정확히 알고 위험을 방지합니다. blockchain 기록 재구성으로 인한 손실. SCP의 핵심 아이디어는 대부분의 자산 발행자가 다음으로부터 이익을 얻는다는 것입니다. 유동적인 시장이며 원자 거래를 촉진하기를 원합니다. 다른 자산과 함께. 따라서 validator 관리자는 해당 서버는 정확한 내용에 대해 다른 validator과 동의합니다. 모든 자산에 대한 모든 거래 내역. validator v1은 다음과 같습니다. v2에 동의하도록 구성하거나 v2에 동의하도록 구성할 수 있습니다. v1을 사용하거나 둘 다 서로 동의하도록 구성할 수 있습니다. 모든 경우에 어느 쪽도 거래 내역을 약속하지 않습니다. 다른 사람이 다른 역사를 맡을 수 없다는 것을 알고 있습니다. 전이성에 따라 v1이 v2에 동의하지 않고 v2가 v3에 동의하지 않으면(또는 그 반대) v1은 v2에 동의하지 않을 수 있습니다. v3, v3이 v1이 들어본 자산을 나타내는지 여부 의. 이러한 합의 관계가 성립한다는 가설 하에 전체 네트워크를 전이적으로 연결, SCP 보장 글로벌 협약, 이를 글로벌 비잔틴 협약으로 만듭니다. 공개 멤버십을 갖춘 프로토콜. 우리는 이 새로운 연결성 가정을 인터넷 가설이라고 부르며, 모두가 이해하는 "인터넷"을 모두 보유하고 있습니다. 전이적으로 연결된 단일 최대 규모의 IP 네트워크를 의미함) 기존 국제 결제(홉별 결제) 비원자적이지만 전이적으로 연결된 글로벌 금융 기관 네트워크). Stellar은 2015년 9월부터 프로덕션에서 사용되었습니다. blockchain 길이를 관리 가능하게 유지하기 위해 시스템이 실행됩니다. 5초 간격의 SCP—blockchain 표준으로는 빠르지만, 비잔틴 계약의 일반적인 적용보다 훨씬 느립니다. 주요 용도는 결제였지만 Stellar은(는) 비화폐 대체 가능 token에 대한 매력이 입증되었습니다. 즉각적인 2차 시장에서 제공됩니다(섹션 7.1 참조). 다음 섹션에서는 관련 작업에 대해 설명합니다. 섹션 3은 다음과 같습니다. SCP. 섹션 4에서는 SCP의 공식 검증을 설명합니다. 섹션 5에서는 Stellar의 결제 계층에 대해 설명합니다. 섹션 6 관련 우리의 배포 경험과 교훈 중 일부. 섹션 7에서는 시스템을 평가합니다. 섹션 8이 마무리됩니다.
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
Stellar 합의 프로토콜
Stellar 합의 프로토콜(SCP)은 쿼럼 기반입니다. 공개 멤버십을 갖춘 비잔틴 계약 프로토콜. 쿼럼은 개별 노드의 결합된 로컬 구성 결정에서 나타납니다. 그러나 노드는 오직 자신이 속한 정원회, 그리고 그 이후에만 다른 모든 정원회 구성원의 로컬 구성을 학습합니다. 이 접근 방식의 한 가지 이점은 SCP가 본질적으로 어떤 노드가 존재하는지에 대한 이질적인 관점을 허용합니다. 따라서, 노드는 별도의 작업 없이 일방적으로 합류하고 나갈 수 있습니다. 멤버십을 조정하기 위한 "변경 보기" 프로토콜입니다. 3.1 연합 비잔틴 계약 전통적인 비잔틴 합의 문제는 다음과 같이 구성됩니다. N개 노드로 구성된 폐쇄형 시스템. 그 중 일부는 결함이 있으며 임의로 행동하십시오. 노드는 입력 값을 받고 교환합니다. 입력 중 출력 값을 결정하는 메시지입니다. 비잔틴 합의 프로토콜은 선의로 행동하는 두 노드가 서로 다른 결정과 고유한 결과를 출력하지 않을 때 안전합니다. 결정은 유효한 입력이었습니다(유효한 합의의 일부 정의에 대해).SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. 사전에). 프로토콜은 다음을 보장할 때 활성화됩니다. 모든 정직한 노드는 결국 결정을 내립니다. 일반적으로 프로토콜은 일부 정수에 대해 N = 3f + 1이라고 가정합니다. f > 0이면 안전성과 어떤 형태의 활성도 보장됩니다. 최대 f 노드에 결함이 있는 한. 이들 중 어느 단계에서는 프로토콜, 노드는 제안된 값과 제안에 투표합니다. 투표 정족수라고 불리는 2f + 1 표를 받는 것은 다음과 같습니다. 결정. N = 3f + 1개 노드의 경우 두 쿼럼은 크기 2f + 1은 최소 f + 1개 노드에서 겹칩니다. 만약 이것들이 f개라도 겹치는 노드에 결함이 있는 경우 두 쿼럼은 최소한 결함이 없는 노드 하나를 사용하여 모순된 결정을 방지합니다. 그러나 이 접근 방식은 모든 노드가 동의하는 경우에만 작동합니다. 쿼럼을 구성하는 것은 SCP에서는 불가능합니다. 두 노드는 서로의 존재조차 알지 못할 수도 있습니다. SCP를 사용하면 각 노드 v가 일방적으로 노드 집합을 선언합니다. (a) v는 쿼럼 슬라이스라고 부릅니다. 슬라이스의 구성원이 시스템 상태에 동의하면 그들은 옳고, (b) v는 그 조각 중 적어도 하나가 에 관한 정보를 적시에 제공할 수 있을 것입니다. 시스템 상태. 우리는 결과 시스템을 다음과 같이 부릅니다. 노드와 그 조각, 연합 비잔틴 계약 (FBA) 시스템. 다음에 살펴보겠지만, 정족수 시스템이 등장합니다. 노드의 조각에서. 비공식적으로 FBA 노드의 슬라이스는 누구와 함께 있는지 표현합니다. 노드에는 동의가 필요합니다. 예를 들어, 노드는 각각 3개의 노드를 실행하는 4개의 특정 조직과의 계약이 필요할 수 있습니다. 에 가동 중지 시간을 수용하여 슬라이스를 모든 세트로 설정할 수 있습니다. 각 조직의 2개 노드로 구성됩니다. 이것이 "필요하다면 '합의' 관계는 임의의 두 노드를 전이적으로 관련시킵니다. 우리는 세계적인 합의를 얻었습니다. 그렇지 않으면 우리는 발산을 얻을 수 있습니다. 그러나 어느 쪽도 요구하지 않는 조직 사이에서만 가능합니다. 상대방과의 합의. 오늘의 토폴로지를 고려하면 금융 시스템에서 우리는 광범위한 수렴이 사람들이 부르는 단일 원장 기록을 계속 생성할 것이라고 가정합니다. 우리가 인터넷에 대해 말하는 것과 마찬가지로 "Stellar 네트워크"입니다. 쿼럼은 다음과 같이 조각에서 발생합니다. 모든 노드는 지정합니다 보내는 모든 메시지에서 쿼럼 조각이 삭제됩니다. S를 메시지 집합이 시작된 노드 집합입니다. 에이 노드는 메시지 집합이 쿼럼에 도달한 것으로 간주합니다. S의 모든 구성원이 S에 포함된 슬라이스를 가질 때 임계값입니다. 구성에 따르면, 그러한 집합 S는 만장일치로 다음을 만족합니다. 각 회원의 동의 요구 사항. 결함이 있는 피어는 무엇을 변경하기 위해 제작된 슬라이스를 광고할 수 있습니다. 선의로 행동하는 노드는 쿼럼을 고려합니다. 프로토콜 분석을 위해 FBA의 쿼럼을 비어 있지 않은 것으로 정의합니다. 적어도 하나의 쿼럼 슬라이스를 포함하는 노드 집합 S 결함이 없는 각 멤버. 이 추상화는 어떤 집합과 마찬가지로 건전합니다. 만장일치로 정족수를 대표한다고 주장하는 메시지 실제로 그렇습니다(결함 있는 노드의 메시지가 포함된 경우에도). S가 선의로 행동하는 노드만 포함하면 정확합니다. 에서 이 섹션에서는 노드의 슬라이스가 변경되지 않는다고 가정합니다. 그럼에도 불구하고 우리의 결과는 슬라이스 변경 사례로 이전됩니다. 슬라이스가 변경되는 시스템은 다음과 같이 안전하기 때문입니다. 노드의 슬라이스가 모든 항목으로 구성되는 고정 슬라이스 시스템 슬라이스 변경 사례에서 사용한 슬라이스(정리 참조) [68]의 13). 섹션 4에서 설명했듯이 활성 상태는 다음에 따라 달라집니다. 선량하게 행동하는 노드는 결국 신뢰할 수 없는 노드를 제거합니다. 그들의 조각에서. 노드마다 계약 요구 사항이 다르기 때문에 FBA에서는 안전에 대한 글로벌 정의를 배제합니다. 우리는 말한다 결함이 없는 노드 v1과 v2는 다음과 같은 경우 서로 얽혀 있습니다. v1의 쿼럼은 적어도 하나의 v2의 모든 쿼럼과 교차합니다. 결함이 없는 노드. FBA 프로토콜은 합의를 보장할 수 있습니다. 얽힌 노드 사이에서만; SCP가 그렇게 하기 때문에, 그것의 잘못이다 안전에 대한 내성이 최적입니다. 인터넷 가설, Stellar의 기본 디자인에는 사람들이 관심을 갖는 노드가 명시되어 있습니다. 대략 얽히게 됩니다. I 외부의 모든 노드에 결함이 있더라도 I의 모든 두 구성원이 서로 얽혀 있는 균일하게 결함이 없는 쿼럼인 경우 노드 집합 I는 손상되지 않습니다. 직관적으로, 그러면 나는 손상되지 않은 사람의 행동에 영향을 받지 않는 상태를 유지해야 합니다. 노드. SCP는 비차단 활성 [93]과 노드 자체는 필요하지 않지만 손상되지 않은 세트에 대한 안전성 어떤 세트가 손상되지 않았는지 알 수 있습니다(알지 못할 수도 있음). 게다가, 교차하는 두 개의 온전한 집합의 합집합은 다음과 같습니다. 온전한 세트. 따라서 손상되지 않은 세트는 다음의 파티션을 정의합니다. 각 파티션이 안전하고 활성화되어 있는 잘 동작하는 노드 (일부 조건 하에서)하지만 다른 파티션이 출력될 수 있습니다. 다양한 결정. 3.1.1 FBA의 안전 및 활성 고려 사항 제한된 예외([64])를 제외하고 대부분의 폐쇄형 비잔틴 합의 프로토콜은 균형점에 맞춰 조정됩니다. 안전성과 활성성은 동일한 내결함성을 갖습니다. FBA에서는 이는 장애에 관계없이 모든 것이 가능한 구성을 의미합니다. 얽힌 세트도 그대로 유지됩니다. FBA가 결정한다는 점을 고려하면 분산된 방식으로 쿼럼을 구성하는 경우 개별 슬라이스 선택이 이러한 균형으로 이어질 가능성은 거의 없습니다. 더욱이, 적어도 Stellar에서는 균형이 바람직하지 않습니다. 그 결과 안전 실패(즉, 이중 지출 디지털 화폐)는 활성 실패(즉, 지연)보다 훨씬 더 나쁩니다. 어쨌든 Stellar 전에 며칠이 걸린 지불). 사람 그러므로 큰 쿼럼 조각을 선택해야 하며 그렇게 해야 합니다. 그들의 노드는 손상되지 않은 것보다 서로 얽혀 있을 가능성이 더 높습니다. 저울을 더 기울이면 회복하기가 더 쉽습니다. 기존의 폐쇄형 시스템보다 FBA 시스템의 일반적인 활성 오류입니다. 폐쇄형 시스템에서는 모든 메시지가 다음과 같아야 합니다. 동일한 정원회 집합을 기준으로 해석됩니다. 따라서, 장애 복구를 위해 노드를 추가 및 제거하려면 다음이 필요합니다. 합의가 더 이상 활성화되지 않으면 재구성 이벤트에 대한 합의에 도달하기가 어렵습니다. 이에 반해 FBA의 경우 모든 노드는 언제든지 쿼럼 슬라이스를 일방적으로 조정할 수 있습니다. 시간. 시스템적으로 중요한 서비스의 중단에 대응하여 조직에서 노드 관리자는 슬라이스를 다음과 같이 조정할 수 있습니다. 문제를 해결하세요. 대응을 조정하는 것과 비슷합니다. BGP 재앙 63 물리적 네트워크 링크를 통한 라우팅).
Stellar을 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 3.1.2 캐스케이드 정리 SCP는 기본 원형 모델 [42]의 템플릿을 따릅니다. 노드는 번호가 매겨진 일련의 투표를 통해 진행됩니다. 세 가지 작업 시도: (1) 이전 투표의 결정과 모순되지 않는 "안전한" 값을 식별합니다(종종 투표용지 준비), (2) 안전한 값에 동의하고, (3) 합의가 성공적이었음을 감지합니다. 그러나 FBA는 열려 있습니다. 멤버십은 몇 가지 일반적인 기술을 방해합니다. 기존의 폐쇄형 프로토콜을 FBA로 "포팅"하는 것은 불가능합니다. 단순히 쿼럼의 정의를 변경하여 모델을 만들 수 있습니다. 많은 프로토콜에서 사용되는 기술 중 하나는 회전입니다. 시간 초과 후 라운드 로빈 방식으로 리더 노드를 통과합니다. 폐쇄형 시스템에서는 라운드 로빈 리더 선택이 보장됩니다. 결국 독특하고 정직한 리더는 단일 가치에 대한 합의를 조정하게 됩니다. 아쉽게도 라운드 로빈 멤버십을 알 수 없는 FBA 시스템에서는 작업할 수 없습니다. FBA에서 실패하는 또 다른 일반적인 기술은 특정 쿼럼이 모든 노드를 설득할 수 있다고 가정하는 것입니다. 예를 들어, 모든 사람이 2f + 1 노드를 쿼럼으로 인식하면 2f + 1개의 서명이면 모든 노드에 대한 프로토콜 상태를 증명하는 데 충분합니다. 마찬가지로, 노드가 동일한 메시지의 쿼럼을 수신하는 경우 신뢰할 수 있는 브로드캐스트 [24]을 통해 노드는 결함이 없는 모든 노드도 쿼럼을 볼 것이라고 가정할 수 있습니다. 이와 대조적으로 FBA에서는 쿼럼은 쿼럼 외부의 노드에 아무런 의미가 없습니다. 마지막으로, 비연합 시스템은 종종 "역방향"을 사용합니다. 안전에 대한 추론: f + 1개 노드에 결함이 있는 경우 모든 안전 보증이 손실됩니다. 따라서 노드 v가 f + 1개 노드를 모두 듣는다면 어떤 사실 F를 진술하고, v는 적어도 하나가 F를 말하고 있다고 가정할 수 있습니다. 안전의 손실 없이 진실(따라서 F가 참)입니다. 그러한 안전은 쌍의 속성이기 때문에 FBA에서는 추론이 실패합니다. 따라서 일부 피어에 대한 안전성을 잃은 노드는 항상 나쁜 사실을 가정하여 더 많은 노드에 대한 안전을 잃습니다. 그러나 FBA는 활성에 대해 거꾸로 추론할 수 있습니다. v-차단 세트를 모든 노드와 교차하는 노드 세트로 정의합니다. v의 슬라이스. v-차단 세트 B가 만장일치로 결함이 있는 경우 B 노드 v 쿼럼을 거부하고 활성 상태를 저하할 수 있습니다. 따라서 만약 B가 만장일치로 사실 F를 진술하면, v는 F가 다음 중 하나라는 것을 알게 됩니다. true 또는 v가 손상되지 않았습니다. 그러나 v는 여전히 전체 내용을 확인해야 합니다. 얽힌 노드가 F와 모순되지 않는다는 것을 알기 위한 쿼럼 이는 SCP에서의 마지막 의사소통으로 이어지며 유사하게 필요하지 않은 다른 FBA 프로토콜 [47] 폐쇄형 멤버십 프로토콜. 그 결과 우리는 잠재적인 사실에 대한 세 가지 가능한 신뢰 수준: 불확정, 온전한 노드 사이에서 가정해도 안전함(우리는 이를 용어로 인정된 사실), 서로 얽혀 있는 것으로 가정해도 안전합니다. 노드(확인된 사실이라고 부르겠습니다). 노드 v는 B가 모든 슬라이스와 교차하는지 여부를 확인하여 집합 B가 vblocking인지 여부를 효율적으로 결정할 수 있습니다. 흥미롭게도 노드가 항상 성명을 발표한다면 전체 쿼럼이 성명을 수락하면 성명이 전체에 전파되는 계단식 프로세스가 시작됩니다. 온전한 세트. 우리는 이 전파의 기초가 되는 핵심 사실을 다음과 같이 부릅니다. 캐스케이드 정리는 다음과 같습니다. 만약 내가 온전한 집합, 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, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. 소환 연합 투표는 종료되지 않을 수 있습니다. 따라서 일부 투표 용지에 대한 진술은 영구적으로 정체될 수 있습니다. 노드가 자신인지 여부를 결코 결정할 수 없는 불확정 상태 아직 진행 중이거나 중단되었습니다. 노드는 배제할 수 없기 때문에 불확실한 진술이 나중에 사실로 판명될 가능성, 새로운 진술에 대해 연합 투표를 시도해서는 안 됩니다. 불확실한 것에 반대되는 것. 각 투표 n에서 노드는 두 가지 유형에 대한 연합 투표를 사용합니다. 성명서 : • prepare ⟨n,x⟩ – x 이외의 값은 없음을 나타냅니다. ≤n 투표에서 결정되었거나 결정될 예정입니다. • commit ⟨n,x⟩ – x가 투표 n에서 결정되었음을 나타냅니다. 중요한 것은 ⟨n,x⟩contradicts 커밋을 준비하는 것입니다. ⟨n′,x ′⟩n ≥n′이고 x , x ′인 경우. 노드는 a에 대한 연합 투표를 시도하여 n 투표를 시작합니다. 명령문은 ⟨n,x⟩를 준비합니다. 이전 준비 문이 있는 경우 연합투표를 통해 성공적으로 확인되었으며, 노드는 확인된 가장 높은 투표 준비에서 x를 선택합니다. 그렇지 않으면 노드는 x를 다음의 출력으로 설정합니다. 다음 하위 섹션에 설명된 지명 프로토콜. 노드가 준비 ⟨n,x⟩를 성공적으로 확인한 경우에만 투표 n에서는 커밋 ⟨n,x⟩에 대해 연합 투표를 시도합니다. 만약에 성공하면 SCP가 결정했음을 의미하므로 노드는 다음을 출력합니다. 확인된 커밋 문의 값입니다. 얽힌 집합 S를 생각해 보세요. 최대 하나의 값이므로 특정 투표에서 S 구성원이 작성한 것을 확인할 수 있지만 두 가지 다른 값이 확인되지는 않습니다. 특정 투표 용지에 S 멤버가 포함됩니다. 게다가 ⟨n,x⟩를 커밋하면 확인되면 준비 ⟨n,x⟩도 확인되었습니다. 이후 prepare ⟨n,x⟩는 연합 투표의 합의 보장에 따라 다른 값에 대한 이전 커밋과 모순됩니다. 우리는 이전에 다른 값이 결정될 수 없다는 것을 알고 있습니다. S회원의 투표. 투표용지 번호 유도를 통해 우리는 그러므로 SCP가 안전하다는 것을 알아내십시오. 활성을 위해서는 온전한 세트 I와 충분히 긴 세트를 고려하세요. 동기식 투표 n. 조각에 결함이 있는 노드가 나타나는 경우 선의로 행동하는 노드 중 n개는 간섭하지 않고 투표를 통해 간섭합니다. n + 1 I의 모든 멤버는 동일한 준비문 세트 P를 확인했습니다. P = ∅이고 투표용지 n이 충분히 길면, 지명 프로토콜은 어떤 값 x에 수렴될 것입니다. 그렇지 않은 경우 x를 P에서 가장 높은 투표로 준비한 값으로 둡니다. 어느 쪽이든 균일하게 페더레이션을 시도합니다. 다음 투표에서 준비 ⟨n + 1,x⟩에 투표하세요. 그러므로 만일 n + 1도 동기식이므로 x에 대한 결정은 필연적으로 따릅니다. 3.2.2 지명 지명에는 다음 진술에 대한 연합 투표가 수반됩니다. • x 지명 – x가 유효한 결정 후보임을 명시합니다. 노드는 여러 가치를 지명하기 위해 투표할 수 있습니다. 지명 진술은 모순되지 않습니다. 그러나 일단 노드는 지명 성명을 확인하고 투표를 중단합니다. 새로운 가치를 지명합니다. 연합 투표는 여전히 노드가 다음을 수행할 수 있도록 허용합니다. 투표하지 않은 새로운 지명 성명을 확인합니다. 투표 또는 수락 정족수에서 받아들이다 정족수에서 a는 유효하다 ~로부터 받다 차단 세트 커밋되지 않은 투표했다 받아들였다 확인했다 ¬a에 투표했습니다 그림 1. 연합 투표 단계 온전한 집합의 구성원이 서로 확인할 수 있도록 허용 새로운 투표를 보류하면서 가치를 지명합니다. 지명의 (진화하는) 결과는 확인된 지명 명세서에 있는 모든 값의 결정론적 조합입니다. 만약에 x는 일련의 거래를 나타내며, 노드는 합집합을 취할 수 있습니다. 세트 중 가장 큰 세트 또는 가장 높은 hash을 가진 세트입니다. 모든 노드가 동일한 작업을 수행하는 한. 노드가 새로운 것을 보류하기 때문에 하나의 지명 성명을 확인한 후 투표합니다. 확인된 문에는 한정된 수의 값만 포함될 수 있습니다. 확인된 진술이 확실하게 전파된다는 사실 손상되지 않은 세트는 손상되지 않은 노드가 결국 다음으로 수렴됨을 의미합니다. 동일한 지정 값 세트 및 그에 따른 지정 결과, 하지만 프로토콜의 임의로 늦은 시점에 알 수 없는 지점이 있습니다. 노드는 연합 리더 선택을 사용하여 지명 진술서의 다양한 값 수. 만 지명 성명서에 아직 투표하지 않은 리더는 새로운 x를 도입할 수 있습니다. 다른 노드는 응답을 기다립니다. 리더의 (유효한) 지명 투표를 복사하면 됩니다. 실패를 수용하기 위해 리더 세트는 다음과 같이 계속 성장합니다. 시간 초과가 발생하지만 실제로는 소수의 노드에서만 새로운 x 값이 도입됩니다. 3.2.3 연합 투표 연합 투표는 다음과 같은 3단계 프로토콜을 사용합니다. 그림 1. 노드는 먼저 추상적 진술에 동의하려고 시도합니다. 투표하고, 수락하고, 최종적으로 진술을 확인합니다. 노드 v는 그렇지 않은 유효한 진술 a에 투표할 수 있습니다. 다른 것과 모순된다미결제 투표 및 수락된 성명서. 이는 서명된 투표 메시지를 방송함으로써 이루어집니다. v 그런 다음 a가 다른 승인된 진술과 일치하고 (사례 1) v가 다음과 같은 쿼럼의 구성원인 경우 a를 승인합니다. 각 노드는 a에 투표하거나 a를 수락합니다. 또는 (케이스 2) v인 경우에도 마찬가지입니다. a에 투표하지 않았으면 v-차단 세트가 a를 수락합니다. 경우 2의 경우, v는 이전에 a에 반대되는 투표를 한 적이 있는데, 지금은 기각되었습니다. v 기각된 투표를 잊어버리는 것이 허용됩니다. v가 손상되지 않은 경우 이를 알고 있기 때문에 결코 캐스팅하지 않은 척합니다. 기각된 투표는 사례 1을 통해 정족수를 완료할 수 없습니다. v는 a를 수락한다고 브로드캐스트한 다음 a가 수신되면 확인합니다. 만장일치로 a를 받아들이는 정족수. 그림 2는 v-차단 세트의 효과와 캐스케이드 정리 연합투표. 서로 얽힌 두 개의 노드는 모순되는 진술을 확인할 수 없습니다. 두 개의 필수 쿼럼이 공유해야 하기 때문입니다.Stellar를 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 3 4 2 1 5 7
Голосуйте Х
Голосуйте за (а) 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).
X 투표
Y에 투표하세요 (아) 3 4 2 1 5 7 6 투표 X 투표 X 투표 X 투표 Y 투표 X 투표 Y 투표 Y (비) 3 4 2 1 5 7 6 수락 X 투표 X 수락 X 투표 Y 수락 X 투표 Y 투표 Y (다) 3 4 2 1 5 7 6 수락 X 수락 X 수락 X 투표 Y 수락 X 수락 X 투표 Y (디) 3 4 2 1 5 7 6 수락 X 투표 X 수락 X 수락 X 수락 X 수락 X 수락 X (e) 그림 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를 수락하면 결국 모든 것이 보장됩니다. 그 진술을 확인하십시오. 3.2.4 투표지 동기화 노드가 해당 커밋 문을 확인할 수 없는 경우 현재 투표용지에서 시간 초과 후 포기합니다. 시간 초과가 발생합니다. 임의의 범위에 맞게 조정하기 위해 각 투표 용지의 길이를 늘립니다. 네트워크 지연에. 그러나 시간 초과만으로는 동시에 시작되지 않은 노드의 투표를 동기화하는 데 충분하지 않습니다. 다른 이유로 동기화가 해제되었습니다. 동기화를 달성하기 위해 노드는 노드가 노드의 일부인 경우에만 타이머를 시작합니다. 현재(또는 이후) 투표 n에 모두 참여하는 정족수. 이 일찍 시작된 노드의 속도를 늦추고 온전한 세트의 구성원이 그룹보다 너무 앞서 있습니다. 게다가 노드 v가 나중에 v-blocking 세트를 발견한 경우 즉시 가장 낮은 투표지로 건너뜁니다. 타이머에 관계없이 더 이상 그렇지 않습니다. 캐스케이드 정리는 모든 낙오자들이 따라잡을 수 있도록 보장합니다. 결과 투표용지는 온전한 전체에 걸쳐 대략적으로 동기화된다는 것입니다. 시스템이 동기화되면 설정됩니다. 3.2.5 연합 리더 선택 리더 선택을 통해 각 노드는 다음과 같은 리더를 선택할 수 있습니다. 노드가 일반적으로 하나 또는 작은 숫자만 선택하는 방식 지도자의. 리더 실패를 수용하기 위해 리더 선택 라운드를 통해 진행됩니다. 현재 라운드의 리더인 경우 자신의 책임을 다하지 않는 것처럼 보이다가 나중에 특정 시간 초과 기간 노드는 다음 라운드로 진행됩니다. 그들이 따르는 리더의 집합을 확장합니다. 각 라운드에서는 [0,hmax) 범위의 정수를 출력하는 두 개의 고유한 암호화 hash 함수인 H0 및 H1을 사용합니다. 예를 들어 Stellar은 Hi(m) = SHA256(ib||r||m)을 사용합니다. 여기서 b는 전체 SCP 인스턴스(블록 또는 원장 번호)이고, r은 리더 선택 라운드 번호, hmax = 2256. 내 라운드마다 노드 v의 우선순위를 다음과 같이 정의합니다. 우선순위(v) = H1(v) 각 노드마다 하나의 Stratman이 리더로 선택됩니다. 우선순위가 가장 높은 노드(v). 이 접근 방식은 효과적입니다. 거의 동일한 쿼럼 슬라이스를 사용하지만 제대로 작동하지 않습니다. 불균형 구성에서 노드의 중요성을 포착합니다. 예를 들어 유럽과 중국이 각각 3씩 기여한다면 모든 쿼럼에 노드를 할당하지만 중국은 1,000개의 노드를 실행하고 유럽은 4개를 실행하는 경우 중국이 99.6%의 가장 높은 우선순위 노드를 갖게 됩니다. 시간의. 따라서 우리는 슬라이스 가중치의 개념을 도입합니다. Weight(u,v) ∈[0, 1]은 노드 u의 쿼럼 슬라이스의 비율입니다. 노드 v를 포함합니다. 노드 u가 새로운 리더를 선택할 때, 다음과 같이 정의된 이웃만 고려합니다. 이웃(u) = {v | H0(v) < hmax · 가중치(u,v) } 그런 다음 노드는 빈 리더 세트로 시작하고 각 라운드는 그것에 가장 높은 이웃(u)의 노드 v를 추가합니다. 우선순위(동사). 모든 라운드에서 이웃 세트가 비어 있으면 u는 대신 H0(v)/weight(u,v)의 가장 낮은 값을 가진 nodev를 추가합니다.
Формальная проверка 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] присутствует протокол, жизнеспособность которого зависит от строго более слабого предположения о возможной синхронности и возможном выборе лидера без необходимости удалять неисправные узлы из срезов.
SCP의 공식 검증
설계 오류를 없애기 위해 SCP의 안전성을 정식으로 검증했습니다. 및 활성 속성([65] 참조). 구체적으로 우리는 확인했습니다. 서로 얽힌 노드는 결코 동의하지 않으며 아래에 설명된 조건 하에서 온전한 세트의 모든 구성원이 결국 결정합니다. 흥미롭게도 검증 결과 SCP가 활성을 보장하는 조건은 미묘합니다. 처음에 생각했던 것보다 더 강합니다 [68]: 아래에 설명된 대로, 별다른 조치 없이 타이밍을 조작하는 악성 노드 프로토콜에서 벗어나면 수동으로 제거해야 할 수도 있습니다. 쿼럼 조각에서.
SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. 속성이 가능한 모든 측면에서 유지되는지 확인하기 위해 FBA 구성 및 실행은 임의적인 것으로 간주됩니다. 임의의 로컬 구성이 있는 노드 수. 이 분리된 온전한 세트가 있는 시나리오와 잠재적으로 무한히 긴 실행이 포함됩니다. 단점은 우리가 매개변수화된 값을 검증하는 어려운 문제에 직면합니다. 무한 상태 시스템. 검증을 다루기 쉽게 유지하기 위해 우리는 Ivy [69] 및 [82] 방법론을 사용하여 1차 논리(FOL)로 SCP를 모델링했습니다. 검증 프로세스는 수동으로 귀납적 추측을 제공한 다음 자동으로 확인하는 것으로 구성됩니다. 아이비. SCP의 FOL 모델은 다음의 일부 측면을 추상화합니다. FOL에서 다루기 어려운 FBA 시스템(예: 캐스케이드 정리는 공리로 간주되므로) Isabelle/HOL [75]을 사용한 추상화의 건전성. FOL에서 검증 문제를 표현한 후 귀납적 불변량을 제공하여 안전성을 검증합니다. 유도성 불변은 약 12개의 한 줄 추측으로 구성됩니다. 150라인의 프로토콜 사양. 그런 다음 Ivy의 선형 시간 논리에서 SCP의 활성 속성을 지정하고 liveness를 줄이기 위해 [80, 81]의 안전 감소에 대한 liveness 검증 문제에서 귀납적 문제를 찾는 문제 불변. SCP의 안전은 상대적으로 간단하지만 증명하자면, SCP의 생존성 주장은 훨씬 더 복잡하고 약 150개의 단일 행 불변성으로 구성됩니다. 활성을 증명하려면 다음의 정확한 형식화가 필요합니다. SCP가 종료를 보장한다는 가정. 우리는 처음에 온전한 세트가 모두 있는 경우 항상 종료할 것이라고 생각했습니다. 구성원이 슬라이스 [68]에서 결함이 있는 노드를 제거했습니다. 그러나 이것은 불충분한 것으로 판명되었습니다. 손상되지 않음) I can 구성원의 쿼럼에 있는 노드, 결함이 있는 노드의 영향을 완료하여 종료를 방지합니다. 투표가 끝나기 직전에 정족수를 확보하여 I 멤버는 다음 투표에서 다른 x 값을 선택했습니다. 따라서 우리는 비공식적으로 다음을 추가로 가정해야 합니다. I 구성원의 쿼럼에 있는 각 노드는 결국 다음 중 하나를 수행합니다. 적시에 메시지를 보내거나 충분한 기간 동안 메시지를 전혀 보내지 않습니다. 실제로 이는 I의 구성원이 조건이 유지될 때까지 슬라이스를 조정해야 합니다. 이 문제는 FBA 시스템에 고유한 것이 아닙니다: Losa et al. [47] 현재 활성도가 엄격하게 약한 프로토콜에 따라 달라지는 프로토콜 슬라이스에서 결함이 있는 노드를 제거할 필요 없이 최종 동기화 및 최종 리더 선택만 가정합니다.
Платежная сеть
В этом разделе описывается платежная сеть 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 Проверка рискованных конфигураций Обнаружение того, что сеть допускает непересекающиеся кворумы, является шагом в правильном направлении, но сигнализирует об опасности неприятно поздно по столь критичному вопросу. В идеале мы хотим, чтобы операторы узлов получали предупреждения, когда коллективная конфигурация сети просто приближается к опасному состоянию. Поэтому мы расширили проверку пересечения кворума чтобы обнаружить состояние, которое мы называем критичностью: когда текущий коллективная конфигурация находится на расстоянии одной неправильной конфигурации от государство, допускающее непересекающиеся кворумы. Чтобы обнаружить критичность, программа проверки неоднократно заменяет конфигурацию каждой организации смоделированной наихудшей ошибкой конфигурации, а затем повторно запускает проверку пересечения внутреннего кворума для результата. Если такая критическая неправильная конфигурация существует в одном шаге из текущего состояния, программное обеспечение выдает предупреждение и сообщает об организации, представляющей риск неправильной конфигурации. Эти изменения дают сообществу операторов два уровня. уведомлений и указаний для защиты от наихудших форм коллективной неправильной конфигурации.
결제 네트워크
이 섹션에서는 SCP 위에 복제된 상태 머신 [88]으로 구현된 Stellar의 결제 네트워크에 대해 설명합니다. 5.1 원장 모델 Stellar의 원장은 계정 추상화를 중심으로 설계되었습니다( 보다 코인 중심의 사용되지 않은 거래 출력과 대조 또는 UTXO 모델의 Bitcoin). 원장 내용은 다음과 같이 구성됩니다. 계정, 신탁선, 등 네 가지 유형의 원장 항목 집합 제안 및 계정 데이터. 계정은 자산을 소유하고 발행하는 주체입니다. 각각 계정의 이름은 공개 키로 지정됩니다. 기본적으로 해당 개인 키는 계정에 대한 거래에 서명할 수 있습니다. 그러나 다른 서명자를 추가하고 계정 이름을 지정하는 키의 인증을 취소하도록 계정을 재구성할 수 있습니다. 여러 서명자를 요구하는 "다중 서명" 옵션. 각 계정 또한 다음을 포함합니다: 시퀀스 번호(트랜잭션에 포함됨) 재생을 방지하기 위해), 일부 플래그 및 "네이티브"의 균형 XLM이라는 사전 채굴된 암호화폐로, 일부 서비스 거부 공격 및 시장 형성 촉진 중립 통화로. Trustlines는 발행된 자산의 소유권을 추적합니다. 발행 계좌와 숏 계좌로 구성된 쌍으로 명명 자산 코드(예: 'USD' 또는 'EUR'). 각 신뢰선은 다음을 지정합니다. 계정, 자산, 해당 자산의 계정 잔액, 잔고를 초과할 수 없는 한도 및 일부 플래그. 계정은 자산 보유에 명시적으로 동의해야 합니다. 스패머가 안장하는 것을 방지하는 신뢰 라인 생성 원하지 않는 자산이 있는 계정. 고객 파악(KYC) 규정에 따라 많은 금융 기관은 자신이 보유하고 있는 예금이 누구인지 알아야 합니다. 예를 들어 사진이 있는 신분증을 확인하는 것입니다. 이를 준수하기 위해 발급자는 다음을 설정할 수 있습니다. 계정에 선택적인 auth_reqired 플래그를 추가하여 발행한 자산의 소유권을 승인된 계정으로 제한합니다. 그러한 승인을 부여하기 위해 발급자는 승인된 권한을 설정합니다. 고객의 신뢰선에 플래그를 지정합니다. 제안은 계정의 거래 의지에 따라 결정됩니다. 특정 자산의 일정 금액을 다른 자산에 대해 특정 금액으로 주문서의 가격; 자동으로 일치하고 매수/매도 가격이 교차할 때 채워집니다. 마지막으로 계정 데이터는 계정, 키, 값의 세 가지로 구성되어 계정 소유자를 허용합니다. 작은 메타데이터 값을 게시합니다. 원장 스팸을 방지하기 위해 최소 XLM 잔액이 있습니다. 예비라고. 계정의 준비금은 각각 증가합니다. 관련 원장 입력 및 원장 입력 시 감소 사라집니다(예: 주문이 완료되거나 취소되는 경우, 또는 신뢰라인이 삭제되었습니다). 현재 준비금은 0.5 XLM 증가합니다. (~$0.03) 원장 항목당. 보유금액에 상관없이, 삭제를 통해 계정의 전체 가치를 회수 가능 AccountMerge 작업을 사용하여 이를 수행합니다. 그림 3에 표시된 원장 헤더는 전역 속성을 저장합니다. 원장 번호, 예비 잔액과 같은 매개변수 원장 항목, 이전 원장 헤더의 hash(실제로는 여러 hashes가 건너뛰기 목록을 형성함), SCP 출력에는 다음이 포함됩니다. 이 원장에 적용된 새로운 거래의 hash, 의 hash 해당 거래의 결과(예: 성공 또는 실패) 각각) 및 모든 원장 항목의 스냅샷 hash. 스냅샷 hash에는 모든 원장 내용이 포함되어 있으므로, validators는 거래를 검증하기 위해 기록을 보유할 필요가 없습니다. 그러나 예상되는 수억 규모로 확장하려면 계정마다 모든 원장 항목 테이블을 다시hash할 수는 없습니다. 장부를 닫습니다. 또한, 원장을 이전하는 것은 실용적이지 않습니다.Stellar를 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 원장 # = 4 H(이전 hdr) SCP 출력 H(결과) H(스냅샷) ... 헤더 원장 # = 5 H(이전 hdr) SCP 출력 H(결과) H(스냅샷) ... 헤더 . . . 그림 3. 원장 내용. H는 SHA-256이고, H *는 H의 계층적 또는 재귀적 적용을 나타냅니다. SCP 출력 또한 이전 헤더 hash에 따라 달라집니다. 계정 만들기 새 계정 원장 항목 생성 및 자금 조달 계정병합 계정 원장 항목 삭제 옵션 설정 계정 플래그 및 서명자 변경 결제 대상에게 특정 수량의 자산을 지불합니다. 계정 경로지불 결제와 비슷하지만 다른 자산으로 결제(최대 제한하다); 최대 5개의 중개 자산을 지정하세요. 제안 관리 제안 원장 항목 생성/삭제/변경, -패시브 제안 확산을 허용하지 않는 수동적 변형 포함 데이터 관리 계정 생성/삭제/변경 데이터 원장 항목 변화신뢰 신뢰라인 생성/삭제/변경 허용신뢰 트러스트 라인에서 승인된 플래그 설정 또는 지우기 범프 시퀀스 시퀀스를 늘립니다. 계좌번호 그림 4. 원장 운영 노드 연결이 끊어질 때마다 해당 크기 네트워크가 너무 오래 연결되었습니다. 따라서 스냅샷 hash은(는) hashing 및 상태 조정을 모두 최적화하도록 설계되었습니다. 특히 스냅샷은 원장 항목을 시간별로 계층화합니다. 기하급수적으로 크기가 커지는 컨테이너 세트의 마지막 수정 버킷이라고 부릅니다. 버킷 모음을 버킷이라고 합니다. 목록을 작성하며 로그 구조 병합 트리와 일부 유사합니다. (LSM-트리) [77]. 버킷리스트는 트랜잭션 처리 중에는 읽히지 않습니다(섹션 5.4 참조). 그러므로 특정 디자인 LSM 트리의 측면을 완화할 수 있습니다. 특히, 무작위 키로 액세스할 필요가 없으며 버킷은 읽기만 가능합니다. 병합 수준의 일부로 순차적으로. 버킷 해싱 목록은 병합될 때 각 버킷을 hashing하고 버킷 hashes의 새로운 누적 hash을 계산하여 수행됩니다(작은, 각 원장 마감 시 고정 참조 인덱스 hashes). 연결 해제 후 버킷리스트를 조정하려면 다운로드가 필요합니다. 버킷만 다릅니다. 5.2 거래 모델 거래는 원본 계정, 유효성 기준, 메모 및 하나 이상의 작업 목록. 그림 4에는 사용 가능한 작업이 나열되어 있습니다. 각 작업에는 원본 계정이 있습니다. 기본값은 전체 거래의 기본값입니다. 거래는 반드시 모든 소스 계정에 해당하는 키로 서명되어야 합니다. 작업. 다중서명 계정에는 더 높은 서명이 필요할 수 있습니다. 일부 작업(예: SetOptions)의 가중치 이하 다른 경우(예: AllowTrust). 트랜잭션은 원자적입니다. 작업이 실패하면 아무 작업도 수행되지 않습니다. 그들은 실행합니다. 이는 다자간 거래를 단순화합니다. 가정하자 발행자는 토지 증서를 나타내는 자산을 생성하고 사용자 A는 작은 토지 구획과 $10,000를 교환하고 싶습니다. B가 소유한 더 큰 토지 구획. 두 사용자는 모두 서명할 수 있습니다. 세 가지 작업을 포함하는 단일 거래: 두 개의 토지 지불 및 1달러 지불. 트랜잭션의 주요 유효성 기준은 시퀀스 번호이며, 이 시퀀스 번호는 트랜잭션의 시퀀스 번호보다 1 커야 합니다. 원본 계정 원장 항목입니다. 유효한 트랜잭션 실행 (성공 여부에 관계없이) 시퀀스 번호를 증가시켜 재생을 방지합니다. 초기 시퀀스 번호에는 원장이 포함됩니다. 삭제 후에도 재생을 방지하기 위해 상위 비트에 숫자를 넣습니다. 그리고 계정을 다시 만드세요. 다른 타당성 기준은 선택적인 제한입니다. 트랜잭션이 실행될 수 있습니다. 땅과 달러로 돌아가다 위의 스왑에서 A가 B보다 먼저 거래에 서명하면 A는 서명하지 않을 수 있습니다. B가 제출하기 전에 1년 동안 거래를 보류하기를 원합니다. 따라서 거래를 무효화하는 시간 제한을 둘 수 있습니다. 며칠 후. 다중서명 계정도 구성할 수 있습니다 hash 사전 이미지의 공개에 서명 가중치를 부여하기 위해, 이는 시간 제한과 결합되어 원자 크로스체인 거래를 허용합니다 [1]. 거래의 원본 계정은 XLM으로 소소한 수수료를 지불합니다. 정체가 없는 한 10−5 XLM. 혼잡 상황에서는 운영 비용은 네덜란드 경매에 의해 결정됩니다. 검증인은 validators가 유사하기 때문에 수수료로 보상되지 않습니다. 채굴자가 아닌 Bitcoin 전체 노드로. XLM을 파괴하는 대신, 수수료는 투표에 의해 비례적으로 재활용되고 분배됩니다. 기존 XLM 보유자(회고하면 그럴 수도 있고 그럴 수도 있음) 복잡성을 감당할 가치가 없었습니다. 5.3 합의 가치 각 원장에 대해 Stellar은 SCP를 사용하여 데이터 구조에 동의합니다. 세 개의 필드 포함: 트랜잭션 세트 hash(hash 포함) 이전 원장 헤더의), 마감 시간,d 업그레이드. 여러 값이 지명된 것으로 확인되면 Stellar이 가장 많은 작업이 포함된 트랜잭션 세트(연결 끊기) 총 수수료를 기준으로 거래 세트 hash), 모든 항목의 합집합 업그레이드 및 가장 높은 마감 시간. 마감시간은 오직 마지막 원장의 마감 시간과 마감 시간 사이이면 유효합니다. 존재하므로 노드는 잘못된 시간을 지정하지 않습니다. 업그레이드는 준비금 잔액, 최소 운영 비용 및 프로토콜 버전과 같은 글로벌 매개변수를 조정합니다. 언제 지명 중에 결합되면 높은 수수료와 프로토콜 버전 번호가 낮은 번호를 대체합니다. 업그레이드는 연합 투표 난투 공간을 통해 거버넌스에 영향을 미칩니다 [34], 둘 다 평등주의적이지도 중앙집권적이지도 않습니다. 각 validator은(는) 다음과 같이 구성됩니다. 관리 또는 비관리(기본값)에 따라 운영자가 거버넌스에 참여하기를 원하는지 여부. validator을 관리하려면 세 가지 종류의 업그레이드를 고려하세요. 원하는 것, 유효한 것, 유효하지 않은 것(validator이 하지 않는 모든 것)
SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. validator 핵심 지평선 FS DB DB 제출하다 클라이언트 클라이언트 다른 validators 그림 5. Stellar validator 아키텍처 구현 방법을 알고 있습니다). 원하는 업그레이드가 다음과 같이 구성되었습니다. 특정 시간에 트리거되고 서로 조정되도록 의도되었습니다. 연산자. 관리 노드는 항상 원하는 후보를 지명하기 위해 투표합니다. 업그레이드, 수락하지만 유효한 업그레이드를 지명하기 위해 투표하지는 않음 (즉, 차단 정족수를 따르며) 절대로 투표하지 마십시오. 또는 잘못된 업그레이드를 수락합니다. 비정부 validators 에코 유효한 업그레이드에 대해 보는 모든 투표(기본적으로 위임) 선택한 사람들이 원하는 업그레이드에 대한 결정 거버넌스 역할을 위해. 5.4 구현 그림 5는 Stellar의 validator 아키텍처를 보여줍니다. 데몬 stellar-core(~92k 라인의 C++, 타사 라이브러리 제외)라고 불리는 SCP 프로토콜과 복제된 상태 머신을 구현합니다. SCP의 가치를 생성하려면 많은 수의 원장 항목을 작은 암호화로 줄여야 합니다. hashes. 대조적으로, 거래 검증 및 실행 계정 상태 및 주문 일치를 조회해야 합니다. 최고의 가격. 두 기능을 모두 효율적으로 제공하기 위해 stellar-core 원장의 두 가지 표현, 즉 버킷 목록을 포함하는 외부 표현을 유지하며 바이너리 파일로 저장됩니다. 효율적으로 업데이트하고 점진적으로 rehashed할 수 있습니다. SQL 데이터베이스의 내부 표현(PostgreSQL 생산 노드의 경우). Stellar-core는 다음을 포함하는 쓰기 전용 기록 아카이브를 생성합니다. 확인된 각 트랜잭션 세트와 스냅샷 버킷. 아카이브를 통해 새 노드가 스스로 부트스트랩할 수 있습니다. 네트워크에 가입할 때. 장부에 대한 기록도 제공합니다. 역사 - 자료를 찾아볼 수 있는 곳이 있어야 합니다. 2년 전 거래. 기록은 추가 전용이므로 자주 접근하지 않는 정보이므로 저렴한 곳에 보관할 수 있습니다. Amazon Glacier 또는 저장을 허용하는 모든 서비스 등 플랫 파일을 검색합니다. 검증인 호스트는 일반적으로 호스트하지 않습니다. 검증에 영향을 미치지 않도록 자체 아카이브 제공 기록의 실적입니다. 스텔라 코어를 단순하게 유지하기 위해 사용되지 않습니다. 애플리케이션에 의해 직접 제공되며 새로운 트랜잭션 제출을 위해 매우 좁은 인터페이스만 노출합니다. 지원하다 클라이언트, 대부분의 validators는 horizon(~18k)이라는 데몬을 실행합니다. Go 라인) 제출을 위한 HTTP 인터페이스를 제공합니다. 그리고 거래를 학습합니다. horizon에는 읽기 전용 액세스 권한이 있습니다. stellar-core의 SQL 데이터베이스, 지평선의 위험을 최소화 불안정한 항성핵. 지불 경로 찾기와 같은 기능은 완전히 수평으로 구현되며 업그레이드 가능 다른 validator들과 협력하지 않고 일방적으로. 여러 선택적 상위 계층 데몬이 클라이언트가 되어 생태계를 완성합니다. 브릿지 서버는 다음을 용이하게 합니다. Stellar을 기존 시스템과 통합합니다(예: 특정 계정에서 받은 모든 결제에 대한 알림 게시). 에이 규정 준수 서버는 금융 기관에 후크를 제공합니다. 발송인 및 수취인 정보 교환 및 승인 제재 목록 준수를 위해 결제 시. 마지막으로, 페더레이션 서버는 사람이 읽을 수 있는 이름 지정을 구현합니다. 계정 시스템. 6 배포 경험 Stellar은 몇 년 동안 적당한 수준의 상태로 성장했습니다. 합리적으로 신뢰할 수 있는 전체 노드 운영자의 수. 그러나, 노드의 구성은 활성 상태였습니다(물론 그렇지는 않았지만 안전)은 우리 Stellar 개발 재단에 달려 있습니다. (SDF); SDF가 갑자기 사라졌다면, 다른 노드 운영자들은 개입하여 수동으로 우리를 제거해야 했을 것입니다. 네트워크를 계속하려면 쿼럼 슬라이스에서 가져옵니다. 우리와 다른 많은 사람들은 SDF의 시스템적 중요성을 줄이고 싶어하지만 이 목표는 이후에 점점 더 높은 우선순위를 받았습니다. 연구원 [58] 안전 및 위험에 대한 위험을 구분하지 않고 네트워크의 중앙 집중화를 정량화하고 공개했습니다. 활력. 많은 운영자가 적극적인 구성 조정에 반응하여 주로 규모를 늘렸습니다. SDF의 중요성을 희석하기 위한 노력의 일환으로 정족수 분할; 아이러니하게도 이는 생존에 대한 위험만 증가시켰습니다. 두 가지 문제가 상황을 악화시켰습니다. 먼저, 인기 있는 타사 Stellar 모니터링 도구 [5]가 체계적으로 실제로 확인하지 않음으로써 validator 가동 시간을 과대평가함 그 스텔라 코어가 실행 중이었습니다. 이는 사람들이 다음을 포함하도록 유도합니다. 쿼럼 슬라이스에 신뢰할 수 없는 노드가 있습니다. 둘째, 버그 stellar-core는 validator이 다음 원장으로 이동한 것을 의미합니다. 나머지 노드가 사전 준비를 완료하는 데 적절하게 도움이 되지 않았습니다.메시지 분실에 대비한 장부. 그 결과, 네트워크에서 67분의 다운타임이 발생하여 필요 validator 관리자가 수동으로 조정하여 다시 시작합니다. 더 나쁜 것은 네트워크를 다시 시작하려고 시도하는 동안 여러 노드에서 동시에 긴급한 재구성이 발생했다는 것입니다. 일부 노드에서 분기되어 해당 노드를 수동으로 종료해야 하며 분기 동안 승인된 거래를 다시 제출합니다. 다행히도 이러한 차이가 포착되어 수정되었습니다. 신속하고 충돌하는 거래가 포함되지 않았지만 네트워크가 쿼럼 교차를 활용하지 못할 위험 - 잠재적인 충돌을 계속 수용하면서 분열 단순히 구성 오류로 인해 트랜잭션이 발생했습니다. 이번 사건으로 매우 구체적이군요. 이러한 경험을 검토한 결과 두 가지 주요 결론이 도출되었습니다. 그리고 그에 상응하는 시정 조치.Stellar를 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 심각, 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]). 그러나 우리는 채택했습니다. 일련의 알고리즘 휴리스틱 및 사례 제거 규칙 일반적인 사례를 확인하는 Lachowski [62]이 제안한 것 문제보다 몇 배 더 빠르게 문제를 해결합니다. 최악의 비용. 실제로 현재 네트워크의 쿼럼 슬라이스 전이적 폐쇄는 20~30개 정도입니다. 노드를 사용하고 Lachowski의 최적화를 통해 일반적으로 확인합니다. 단일 CPU에서 몇 초 만에 가능합니다. 필요한 경우 성능을 향상시키기 위해 검색을 병렬화할 수 있습니다. 6.2.2 위험한 구성 확인 네트워크가 분리된 쿼럼을 허용하는지 감지하는 것이 한 단계입니다. 올바른 방향으로 가고 있지만 불편할 정도로 늦게 위험을 알립니다. 그런 중요한 문제에 대해. 이상적으로는 네트워크의 집합적 구성이 발생할 때 노드 운영자가 경고를 받기를 원합니다. 위험한 상태에 가까워지고 있을 뿐입니다. 따라서 우리는 쿼럼 교차 검사기를 확장했습니다. 임계성(Criticality)이라고 부르는 조건을 감지하려면: 현재 집합적 구성은 하나의 잘못된 구성입니다. 분리된 정족수를 인정하는 주. 중요도를 탐지하려면, 검사기는 각 조직의 구성을 시뮬레이션된 최악의 구성 오류로 반복적으로 대체합니다. 결과에 대해 내부 쿼럼 교차 검사기를 다시 실행합니다. 그러한 중대한 구성 오류가 한 단계 더 진행된 경우 현재 상태에서 소프트웨어는 경고를 발행하고 잘못된 구성 위험이 있는 조직을 보고합니다. 이러한 변화는 운영자 커뮤니티에 두 가지 계층을 제공합니다. 최악의 형태로부터 보호하기 위한 통지 및 지침 집단적 구성 오류.
Оценка

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

Stellar의 글로벌 결제로서의 적합성을 이해하고 거래 네트워크, 우리는 공용 네트워크의 상태를 평가했습니다. 개인 실험에 대해 통제된 실험을 실행했습니다. 네트워크. 우리는 다음 질문에 중점을 두었습니다. • 프로덕션 네트워크 토폴로지는 어떤 모습입니까? 평균적으로 얼마나 많은 메시지가 방송되는지, 그리고 SCP는 어떻게 시간 초과를 경험합니까? • 합의 및 원장 업데이트 지연 시간이 계정 수와 독립적으로 유지됩니까?SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. • (a) 초당 트랜잭션 증가(결과적으로 초당 트랜잭션 증가)가 지연 시간에 어떤 영향을 미칩니까? 원장) 및 (b) validator 노드 수는 무엇입니까? • CPU 측면에서 노드를 실행하는 데 드는 비용은 얼마입니까? 메모리 및 네트워크 대역폭? 결제 네트워크에 비해 거래율이 낮습니다. 다른 유형의 분산 시스템에 적용됩니다. 주요 blockchain, Bitcoin 및 Ethereum, 초당 최대 15개의 트랜잭션을 확인합니다. Stellar 미만. 게다가 이러한 시스템은 작업 증명을 위해서는 여러 블록이 채굴될 때까지 기다려야 하기 때문에 거래를 안전하게 확인하는 데 한 시간이 걸립니다. 는 non-blockchain SWIFT 네트워크는 최대 피크일인 [14]에 초당 평균 420건의 트랜잭션만 처리했습니다. 그러므로 우리는 선택했습니다 측정값을 5초 목표와 비교하기 위해 원장 간격, 더 공격적인 목표입니다. 우리의 결과는 다음과 같습니다 대기 시간은 다음과 같은 경우에도 이 한도보다 훨씬 낮습니다. 아직 구현되지 않은 몇 가지 최적화가 파이프라인에 있습니다. 7.1 앵커 거래량 기준으로 가장 많이 거래되는 자산에는 통화가 포함됩니다(예: 3 USD 앵커, 2 CNY), Bitcoin 앵커, 부동산 담보 증권 token [92] 및 인앱 통화 [8]. 앵커마다 정책이 다릅니다. 예를 들어 USD 앵커 하나는 Stronghold는 auth_reqired를 설정하고 보유하고 있는 모든 계정에 대해 고객 파악(KYC) 프로세스를 요구합니다. 자산. 또 다른 AnchorUSD, 누구나 받고 거래하자 USD(문자 그대로 $0.50를 멕시코로 보내는 것이 가능함) $0.000001의 수수료로 5초 안에 완료됩니다. 그러나 AnchorUSD는 USD를 구매하거나 상환하려면 KYC 및 수수료가 필요합니다. 기존 송금 방식으로. 필리핀에서는 입금에 대한 은행 규정이 완화되었습니다, coin.ph 모든 ATM 기계 [36]에서 PHP 현금화를 지원합니다. 앞서 언급한 보안 token 및 인앱 통화 외에도 다음과 같은 다양한 비통화 token이 있습니다. 상업 채권 [22] 및 탄소 배출권 [85, 96] 더보기 token 협업을 장려하는 난해한 자산 자동차 압수 [35]. 7.2 공용 네트워크 이 글을 쓰는 시점에서 126개의 활성 풀 노드가 있으며 그 중 66개는 투표 메시지에 서명하여 합의에 참여합니다. 그림 7 ([5]에 의해 생성됨)은 사이에 선을 사용하여 네트워크를 시각화합니다. 하나가 다른 노드의 쿼럼 조각에 나타나는 경우 두 개의 노드 진한 파란색 선은 양방향 의존성을 나타냅니다. 에서 센터는 17개의 사실상 "계층 1 validators"로 구성된 클러스터입니다. SDF, SatoshiPay, LOBSTR, COINQVEST 및 Keybase. 4개월 전, 섹션 6의 사건이 일어나기 전, 시스템적으로 중요한 노드는 15개였습니다. 겉보기에는 3개였습니다. Tier 1 조직과 여러 개의 무작위 싱글톤. 는 그래프도 훨씬 덜 규칙적으로 보였습니다. 따라서 새로운 구성 메커니즘 및/또는 더 나은 운영자 결정이 필요한 것 같습니다. 더 건강한 네트워크 토폴로지에 기여합니다. 없이 훌륭한 재정 자원(및 해당 주주) 그림 7. 쿼럼 슬라이스 맵 의무), 5급 1인 채용은 어려웠을 것 그러나 처음부터 조직. 이는 정족수를 제안합니다. 슬라이스는 네트워크 부트스트래핑에서 유용한 역할을 합니다. 누구나 할 수 있습니다. 중요한 플레이어가 되겠다는 목표를 가지고 참여하세요. 쌍으로 합의할 수 있는 문지기가 없습니다. 현재 원장에는 330만 개 이상의 계정이 있습니다. 오버 최근 24시간 동안 Stellar은 평균 4.5건의 거래를 기록했으며 초당 15.7 작업. 최근 원장을 검토하면 대부분 트랜잭션은 단일 작업을 수행하는 것처럼 보이지만 몇 번의 작업마다 원장에는 다음과 같은 많은 작업이 포함된 트랜잭션이 표시됩니다. 제안을 관리하는 시장 조성자로부터 오는 것으로 보입니다. 는 합의를 달성하고 원장을 업데이트하는 데 걸리는 시간은 다음과 같습니다. 각각 1061ms와 46ms입니다. 99번째 백분위수는 2252ms 및 142ms(전자는 1초 시간 초과를 반영함) 지명 지도자 선정에서). 참고 SCP의 성능은 SCP 이후 대부분 초당 트랜잭션과 독립적입니다. 임의의 많은 거래 중 hash에 동의합니다. 병목 현상은 후보 전파로 인해 발생할 가능성이 더 높습니다. 지명, 실행 및 검증 중 거래 트랜잭션 및 버킷 병합. 우리는 아직 필요하지 않았습니다 여러 CPU 코어 또는 디스크 드라이브를 통해 stellar-core의 트랜잭션 처리를 병렬화합니다. 우리는 또한 방송된 SCP 메시지의 수를 평가했습니다. 생산 네트워크에서. 일반적인 경우에는 단일 리더가 가치를 지명하기 위해 선출되면 우리는 7가지 논리적인 가치를 기대합니다. 브로드캐스트할 메시지: 투표하고 수락할 메시지 2개 노미nate 성명, 수락 및 확인을 위한 두 개의 메시지 준비문, 승인 및 확인을 위한 두 개의 메시지 커밋 문, 마지막으로 외부화 메시지 (낙오자를 돕기 위해 새 원장을 디스크에 커밋한 후 전송됨) 따라잡으세요). 구현은 커밋 확인을 결합합니다. 메시지를 최적화로 외부화합니다. 커밋된 후에 값을 외부화하는 것이 안전합니다. 그런 다음 프로덕션 Stellar validator에서 수집된 측정항목을 분석합니다. 오버 68시간 동안 초당 1.3개의 메시지가 방출되었습니다. 원장당 평균 6-7개의 메시지. 우리는 총
Stellar을 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 백분위수 시간 초과 횟수 지명 투표 75% 0 0 99% 1 0 맥스 4 1 그림 8. 68시간이 넘는 원장당 시간 초과 validators가 브로드캐스트한 메시지 수가 더 많습니다. 연합 투표 메시지 외에도 노드도 브로드캐스트합니다. 그들이 배우는 모든 거래. 그림 8은 프로덕션에서 발생한 시간 초과를 보여줍니다. validator 68시간 동안. 추천 시간 제한은 다음과 같습니다. 리더 선출 기능의 효율성(비)을 측정하는 반면, 투표 시간 초과는 네트워크에 크게 의존합니다. 잠재적인 메시지 지연. 시간 초과가 일관되게 발생합니다. 방출된 메시지 수: 최선의 시나리오, 추가 지명 라운드가 필요한 경우 최소 7개의 메시지. 7.3 통제된 실험 우리는 포장된 용기에서 통제된 실험을 실시했습니다. 72GiB RAM을 갖춘 Amazon EC2 c5d.9xlarge 인스턴스, 900GB의 NVMe SSD 및 36개의 vCPU. 각 인스턴스는 동일한 EC2 지역이고 고정 대역폭이 10Gbps였습니다. 우리는 SQLite를 저장소로 사용했습니다. (Stellar은 PostgreSQL도 지원합니다. 하지만 측정에 노이즈를 주입하는 비동기 작업이 있습니다.) Stellar은 내장된 런타임 쿼리, 생성 로드, 특정 대상에서 합성 부하를 생성할 수 있는 기능 거래/두 번째 요율. Stellar은 다양한 기능을 지원하지만 주문장 및 자산 간 경로와 같은 거래 기능 결제 방식으로는 간편결제에 중점을 두었습니다. 거래 확인은 여러 단계로 구성되어 있으므로 다음 각각에 대한 측정값을 기록했습니다. • 추천: 추천부터 첫 준비까지의 시간 • 투표: 처음 준비부터 확인까지의 시간 투표용지가 확정됨 • 원장 업데이트: 합의 가치를 적용하는 시간 • 거래수: 원장별 확인된 거래 각 실험은 세 가지 매개변수로 정의되었습니다. 원장의 계정 항목 수, 금액 초당 제출된 로드(XLM 결제 형식), 그리고 validator의 수. 우리는 validator마다 구성했습니다. 다른 모든 validator에 대해 알고 싶습니다(최악의 시나리오) SCP의 경우) 쿼럼 슬라이스는 단순 과반수로 설정됩니다. 노드(다양한 쿼럼 수를 최대화하기 위해). 기준선 기본 실험에서는 Stellar을(를) 측정했습니다. 100,000개의 계정, 4개의 validator 및 로드 생성 초당 100건의 트랜잭션 속도. 우리는 원장당 평균 507건의 거래를 관찰했으며 표준편차는 49입니다. (9.7%). 삭제된 트랜잭션은 없습니다. 경미한 105 106 107 0 500 1,000 1,500 2,000 계정 지연 시간 [ms] 원장 업데이트 투표 지명 그림 9. 계정 수 증가에 따른 지연 시간 변동은 부하 생성기의 일정 제한으로 인해 발생합니다. 우리는 원장당 거래 수를 관찰했습니다. 원장을 고려하면 로드 생성 속도와 일치했습니다. 5초마다 닫힙니다. 지명, 투표 및 장부 업데이트에서는 평균 대기 시간이 82.53ms, 95.96ms로 나타났습니다. 각각 174.08ms입니다. 우리는 지명 지연 시간을 관찰했습니다. 99번째 백분위수는 지속적으로 61ms 미만입니다. 첫 번째 단계에 해당하는 약 1초의 스파이크 리더 선택의 타임아웃 기능. 기본 성능을 고려하여 효과를 살펴보았습니다. 각 테스트 설정 매개변수를 변경하는 것입니다. 계정 그림 9의 데이터는 Stellar이 확장됨을 시사합니다. 그리고 계정수도 늘어납니다. 테스트 생성 버킷 생성 및 병합으로 인해 단순히 데이터베이스를 채우는 것이 불가능해졌습니다. SQL을 통해 직접 계정을 사용합니다. 따라서 우리는 최대 50,000,000개의 계정에 대한 실험을 수행할 수 있습니다. 있는 동안 합의 및 원장 업데이트 지연 시간에 미치는 영향을 최소화합니다. 계정을 늘리면 다음과 같은 오버헤드가 발생합니다. 버킷을 병합하면 더 커집니다. 거래율 거래율은 금액에 영향을 미칩니다. validator 간의 트래픽 멀티캐스트, 각 원장에 포함된 트랜잭션 수, 최상위 수준의 크기 버킷. 거래 증가의 효과를 이해하려면 로드 후 100,000개의 계정과 4개의 validator을 사용하여 실험을 실행했습니다. 그림 10은 합의 지연 시간의 느린 증가를 보여줍니다. 대부분의 시간은 원장을 업데이트하는 데 소비되었습니다. 당연히 트랜잭션 세트의 크기가 증가함에 따라 데이터베이스에 커밋하는 데 시간이 더 걸립니다. 우리는 또한 원장 업데이트 지연 시간은 구현에 따라 크게 달라집니다. 데이터베이스 선택에 영향을 받습니다. 검증인 노드 Tierone validators의 수가 어떻게 증가하는지 확인하려면성능에 영향을 미치므로 실험을 진행했습니다. 100,000개의 계정, 100개의 트랜잭션/초 및 4에서 43까지 다양한 수의 validator이 있습니다. 모든 validator이 나타났습니다. 모든 validators의 쿼럼 슬라이스에서; 더 작은 쿼럼 슬라이스는 성능에 미치는 영향이 적습니다.SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌 Lokhavaet al. 100 150 200 250 300 350 0 500 1,000 1,500 2,000 로드 [트랜잭션/초] 지연 시간 [ms] 원장 업데이트 투표 지명 그림 10. 트랜잭션 로드 증가에 따른 지연 시간 10 20 30 40 0 500 1,000 1,500 2,000 검증인 지연 시간 [ms] 원장 업데이트 투표 지명 그림 11. 노드 수가 증가함에 따른 지연 시간 네트워크의 검증 노드 수 변경 교환된 SCP 메시지 수에도 영향을 미칩니다. 지명 중 잠재적 가치의 수. 그림 11 지명 시간이 상대적으로 작은 비율로 증가하는 것을 보여줍니다. 데이터에 따르면 투표가 병목 현상을 일으키는 것으로 나타났습니다. 개선을 통해 많은 확장 문제를 해결할 수 있다고 믿습니다. Stellar의 오버레이 네트워크는 네트워크 트래픽을 최적화합니다. 다음과 같이 예상대로 원장 업데이트 지연 시간은 노드 수. 마감율 마지막으로 원장이 확인되는 빈도와 Stellar이 5초 목표를 달성하는지 여부를 측정하여 Stellar의 엔드투엔드 성능을 측정하고 싶었습니다. 모든 거래를 삭제합니다. 우리는 평균 원장 마감을 관찰했습니다. 계정을 늘리면 5.03초, 5.10초, 5.15초가 됩니다. 각각 항목, 트랜잭션 속도 및 노드 수입니다. 결과는 Stellar이 지속적으로 원장을 마감할 수 있음을 시사합니다. 높은 부하에서. 7.4 validator 실행 Stellar의 중요한 특징 중 하나는 저렴한 비용입니다. 앵커가 실행(또는 계약)되어야 하므로 validator을 실행합니다. validators를 사용하여 최종성을 강화합니다. SDF는 2개의 코어가 있는 c5.large AWS 인스턴스에서 3개의 프로덕션 validator을 실행합니다. 4GiB RAM 및 Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz 프로세서. 하나의 리소스 사용량 검사 이 기계 중 우리는 다음을 사용하여 Stellar 프로세스를 관찰했습니다. CPU는 약 7%, 메모리는 300MiB입니다. 네트워크 트래픽 측면에서 피어에 대한 연결이 28개이고 쿼럼 크기가 있습니다. 34개 중 수신 및 발신 속도는 2.78Mbit/s였으며 각각 2.56Mbit/s입니다. 이러한 실행에 필요한 하드웨어 프로세스가 저렴합니다. 우리의 경우 비용은 $0.054/시간입니다. 또는 월 $40 정도입니다. 7.5 미래의 일 이러한 실험은 Stellar이 쉽게 1~2개 주문을 확장할 수 있음을 시사합니다. 오늘날의 네트워크 사용량을 넘어서는 규모입니다. 왜냐하면 현재까지 성능 요구 사항은 너무 적었습니다. Stellar 다음을 사용하여 많은 간단한 최적화를 위한 여지를 남겨둡니다. 잘 알려진 기술. 예를 들어 트랜잭션과 SCP 메시지는 순진한 플러딩을 사용하여 validators에 의해 방송됩니다. 하지만 이상적으로는 보다 효율적이고 구조화된 프로토콜을 사용해야 합니다. 피어 투 피어 멀티캐스트 [30]. 또한, 데이터베이스가 많이 사용되는 원장 업데이트 시간은 표준 일괄 처리 및 프리페치 기술을 통해 향상될 수 있습니다.
Заключение
Международные платежи стоят дорого и занимают несколько дней. Фонд хранение проходит через несколько финансовых учреждений, включая банки-корреспонденты и службы денежных переводов. Поскольку каждому переходу необходимо полностью доверять, новым пользователям сложно абитуриентам, чтобы завоевать долю рынка и конкурировать. Stellar шоу как дешево отправить деньги по всему миру за считанные секунды. Ключевым нововведением является новый протокол Византийского соглашения с открытым членством, SCP, который использует одноранговую структуру. финансовой сети для достижения глобального консенсуса под новая гипотеза Интернета. SCP позволяет Stellar атомарно зафиксировать необратимые транзакции между произвольными участниками, которые не знают друг друга и не доверяют друг другу. Это, в свою очередь, гарантирует новым участникам доступ к тем же рынкам, что и существующие. игроков, позволяет безопасно получить лучший доступный обмен ставки даже у ненадежных маркет-мейкеров, и резко уменьшает задержку платежа. Благодарности Stellar не был бы тем, чем он является сегодня, без раннего лидерство Джойс Ким или огромный вклад Скотт Флекенштейн и Бартек Новотарски в строительстве и поддержание горизонта, Stellar SDK и другие ключевые элементы экосистемы Stellar. Мы также благодарим Колтена Бержерона, Генри Корриган-Гиббс, Кэндис Келли, Капил К. Джайн, Борис Резников, Джереми Рубин, Кристиан Раддер, Эрик Сондерс, Торстен Штюбер, Томер Веллер, анонимные рецензенты и нашему пастуху Жюстин Шерри за полезные комментарии более ранние черновики. Отказ от ответственности Вклад профессора Мазьера в эту публикацию был сделан в качестве платного консультанта и не был частью его работы. Обязанности или ответственность Стэнфордского университета.
Быстрые и безопасные международные платежи с Stellar SOSP '19, 27–30 октября 2019 г., Хантсвилл, Онтарио, Канада
결론
국제 결제는 비용이 많이 들고 며칠이 걸립니다. 기금 보관은 환은행 및 송금 서비스를 포함한 여러 금융 기관을 통해 이루어집니다. 각 홉은 완전히 신뢰되어야 하기 때문에 새로운 홉은 어렵습니다. 시장점유율을 확보하고 경쟁하기 위한 진입자. Stellar 쇼 단 몇 초 만에 전 세계로 저렴하게 송금하는 방법. 는 핵심 혁신은 P2P 구조를 활용하는 새로운 개방형 멤버십 비잔틴 계약 프로토콜인 SCP입니다. 금융 네트워크의 글로벌 합의를 달성하기 위해 새로운 인터넷 가설. SCP는 Stellar을 원자적으로 커밋하도록 허용합니다. 임의 참가자 간의 되돌릴 수 없는 거래 서로에 대해 모르거나 신뢰하지 않습니다. 이는 결과적으로 신규 진입자가 기존 시장과 동일한 시장에 접근할 수 있도록 보장합니다. 플레이어는 최상의 교환을 안전하게 받을 수 있습니다. 신뢰할 수 없는 시장 조성자로부터도 가격이 하락하고 극적으로 결제 지연 시간을 줄입니다. 감사의 말 Stellar는 이른 시간이 없었다면 지금의 모습은 없었을 것입니다. 조이스 김의 리더십이나 Scott Fleckenstein과 Bartek Nowotarski가 건물을 짓고 지평선 유지, Stellar SDK 및 기타 핵심 부분 Stellar 생태계의. Kolten Bergeron에게도 감사드립니다. 헨리 코리건-깁스, 캔디스 켈리, 카필 K. 제인, 보리스 레즈니코프, 제레미 루빈, 크리스티안 러더, 에릭 손더스, Torsten Stüber, Tomer Weller, 익명의 심사위원, 그리고 우리 목자 저스틴 셰리(Justine Sherry)가 도움이 되는 의견을 주었습니다. 이전 초안. 면책조항 이 출판물에 대한 Mazières 교수의 기여는 유급 컨설턴트로서 이루어졌으며 그의 일부는 아닙니다. 스탠포드 대학의 의무 또는 책임.
Stellar를 통한 빠르고 안전한 글로벌 결제 SOSP ’19, 2019년 10월 27~30일, 캐나다 온타리오주 헌츠빌