Детальный взгляд на блокчейн без блокчейна
Со временем мир блокчейна разделяется на две отдельные части. С одной стороны, публичные цепочки блоков со связанными с ними криптовалютами недавно получили замечательное возвращение, в результате чего многие стали миллионерами. С другой стороны, использование разрешенных или корпоративных блокчейнов росло тихо, но неуклонно, видя их первые живое развертывание в нескольких отраслях в течение 2017 года.
Один интересный вопрос для рассмотрения - соответствующий уровень сходства между этими двумя типами цепочек. Оба реализуют общую базу данных, используя одноранговые сети, криптографию с открытым и закрытым ключом, правила транзакций и механизмы консенсуса, которые могут пережить злоумышленников. Это много общего. Тем не менее, публичные и частные блокчейны предъявляют различные требования в отношении конфиденциальности, масштабируемости и управления. Возможно, эти различия указывают на необходимость радикально расходящихся конструкций.
Ассоциация Веревка Платформа, разработанная R3 банковский консорциум, занимает четкую позицию по этому вопросу. В то время как некоторые аспекты были вдохновлены публичными блокчейнами, Corda была разработана с нуля на основе потребностей членов R3. Действительно, хотя R3 все еще использует слово «блокчейн» широко чтобы продвигать свой продукт, у Corda вообще нет цепочки блоков. Больше чем любая другая платформа «распределенной бухгалтерской книги», о которой я знаю, Corda радикально отходит от архитектуры обычных блокчейнов.
Моя цель в этой статье - объяснить эти различия и обсудить их последствия, как хорошие, так и плохие. На самом деле, хорошее и плохое - это неправильный способ выразить это, потому что более интересный вопрос «хорошо и плохо для чего?» Эта статья далеко не коротка. Но к концу этого я надеюсь, что читатели получат некоторое понимание различий в Corda и их последующих компромиссах. Corda важна, потому что ее дизайнерские решения приводят к резкому облегчению многих дилемм корпоративных цепочек блоков.
Еще одна вещь, прежде чем мы погрузимся. Как генеральный директор компании позади многоцепочечногопопулярная корпоративная блокчейн-платформа, почему я так подробно пишу о якобы конкурирующем продукте? Стандартная причина - спор о превосходстве MultiChain, но это не моя мотивация. На самом деле, я не вижу в Corda и MultiChain конкурентов, потому что они принципиально отличаются с точки зрения дизайна, архитектуры и аудитории. Corda и MultiChain конкурируют так же, как круизные лайнеры и водные мотоциклы - в то время как оба перевозят людей по морю, в реальной жизни практически нет ситуаций, в которых они могли бы использоваться.
Если говорить более лично, я многому научился у технического руководства Corda за последние несколько лет, будь то через встречи, переписку или их публичные публикации, большая часть которых произошла до того, как они присоединились к R3. Отчасти мой интерес к Corda проистекает из уважения к этой команде, которое я испытываю, и только по этой причине Corda стоит изучить для всех, кто ищет понимание области распределенной книги.
Представляем блокчейны
Чтобы понять Corda, полезно начать с обычных блокчейнов. Целью блокчейна является обеспечение прямого и безопасного совместного использования базы данных или бухгалтерской книги не доверяющими сторонами. Это отличается от централизованных баз данных, которые хранятся и контролируются одной организацией. Блокчейн имеет несколько «узлов», каждый из которых хранит копию базы данных и может принадлежать другой организации. Узлы соединяются друг с другом плотным одноранговым способом, используя «протокол сплетен», в котором каждый узел постоянно сообщает своим партнерам все, что он изучает. В результате любой узел может быстро передать сообщение всей сети по множеству альтернативных путей.
База данных, централизованная или с использованием цепочки блоков, начинается в пустом состоянии и обновляется с помощью «транзакций». Транзакция определяется как набор изменений базы данных, которые являются «атомарными», что означает, что они успешны или терпят неудачу в целом. Представьте себе базу данных, представляющую бухгалтерскую книгу, с одной строкой для каждой учетной записи. Транзакция, в которой Алиса выплачивает Бобу 10 долларов, состоит из трех этапов: (1) убедиться, что на счете Алисы содержится не менее 10 долларов, (2) вычесть 10 долларов из счета Алисы и (3) добавить 10 долларов на счет Боба. Как основное требование, любая платформа базы данных должна гарантировать, что никакая транзакция не мешает другой. Эта «изоляция» достигается путем блокировки строк как для Алисы, так и для Боба, пока идет оплата. Любая другая транзакция, включающая эти строки, должна дождаться завершения этой.
В блокчейне каждый узел независимо обрабатывает каждую транзакцию в своей собственной копии базы данных. Транзакции создаются в любом месте сети и автоматически распространяются на все остальные узлы. Так как организации, использующие узлы, могут иметь разные (или даже противоречивые) интересы, они не могут доверять друг другу в честной сделке. Поэтому блокчейнам нужны правила, которые определяют, является ли конкретная транзакция действительной. В общей финансовой книге эти правила не позволяют пользователям тратить деньги друг друга или изымать средства из ничего.
Наряду с правилами, определяющими действительность транзакций, блокчейны должны также определять порядок упорядочения транзакций, поскольку во многих случаях это упорядочение является критическим. Если у Алисы есть 15 долларов, и она пытается отправить 10 долларов и Бобу, и Чарли в двух отдельных транзакциях, только один из этих платежей может быть успешным. Хотя мы могли бы сказать, что первая транзакция имеет приоритет, одноранговая сеть не имеет объективного определения «первая», поскольку сообщения могут поступать на разные узлы в разных порядках.
Правила транзакции
В общем смысле информация в любой базе данных разделена на записи или «строки», и транзакция может делать три разные вещи: удалять строки, создавать строки и / или изменять строки. Их можно уменьшить до двух, поскольку изменение строки эквивалентно удалению этой строки и созданию новой вместо нее. Чтобы вернуться к выплате Алисы Бобу, ее строка, содержащая 15 долларов, удаляется, и создаются две новые строки: одна содержит 10 долларов для Боба, а другая - 5 долларов «Алиса» для Алисы.
Следуя терминологии биткойнов и корды, мы обозначаем строки, удаленные транзакцией, как ее «входные данные», а строки, созданные как ее «выходные данные». Любая строка, удаленная транзакцией, должна быть создана предыдущей транзакцией. Поэтому каждый вход транзакции потребляет (или «тратит») результат предыдущей транзакции. Обновленный контент базы данных определяется набором «неизрасходованных результатов транзакций» или «UTXO».
В блокчейне транзакция действительна, если она удовлетворяет следующим трем условиям:
- правильность, Транзакция должна представлять собой законное преобразование из входов в выходы. Например, в финансовой книге общее количество средств во входных данных должно совпадать с общим количеством в выходных данных, чтобы предотвратить магическое появление или исчезновение денег. Единственными исключениями являются специальные транзакции «выдача» или «выбытие», когда средства явно добавляются или удаляются.
- Авторизация, Транзакция должна быть авторизована владельцем каждого выхода, потребляемого его входами. В финансовой книге это не позволяет участникам тратить деньги друг друга без разрешения. Авторизация транзакции осуществляется с использованием асимметричной (или открытый-закрытый ключ) криптографии. Каждая строка имеет владельца, идентифицируемого открытым ключом, соответствующий закрытый ключ которого хранится в секрете. Для авторизации транзакция должна быть подписана цифровой подписью владельца каждого из ее входов. (Обратите внимание, что строки могут также иметь более сложных «мультисигнатурных» владельцев, например, когда любые две из трех сторон могут разрешить их использование.)
- Уникальность, Если транзакция потребляет определенный вывод, то никакая другая транзакция не может использовать этот вывод снова. Именно так мы не позволяем Алисе делать противоречивые платежи как Бобу, так и Чарли. Хотя транзакции для обоих этих платежей могут быть правильными и авторизованными, правило уникальности гарантирует, что база данных будет обрабатывать только одну из них.
В обычной цепочке блоков каждый узел проверяет каждую транзакцию в соответствии с этими тремя правилами. Позже мы увидим, как Корда по-разному распределяет эту ответственность.
Строительные блоки
Блокчейн - это буквально цепочка блоков, в которой каждый блок связывается с предыдущим через «хэш», который однозначно идентифицирует его содержимое. Каждый блок содержит упорядоченный набор транзакций, которые не должны конфликтовать друг с другом или с транзакциями в предыдущих блоках, а также отметку времени и некоторую другую информацию. Как и транзакции, блоки быстро распространяются по сети и независимо проверяются каждым узлом. Как только транзакция появляется в блоке, она «подтверждается», приводя узлы к отклонению любой конфликтующей транзакции.
Кто несет ответственность за создание этих блоков, и как мы можем быть уверены, что все узлы согласятся в официальной цепочке? Этот вопрос «согласованных алгоритмов» сам по себе является огромным предметом, заполненным такими удивительными аббревиатурами, как PoW (Proof of Work), PBFT (Практическая византийская устойчивость к сбоям) и DPoS (Делегированное подтверждение кола). Мы не будем вдаваться во все это здесь. Достаточно сказать, что разрешенные блокчейны для предприятий используют какую-то схему голосования, где голоса предоставляются «узлам валидатора», которые несут коллективную ответственность. Эта схема гарантирует, что до тех пор, пока значительное большинство узлов валидаторов функционируют правильно и честно, транзакции будут входить в цепочку в (близком к) справедливом порядке, временные метки будут (приблизительно) правильными, а подтвержденные транзакции впоследствии не будут отменены.
Прежде чем обсуждать некоторые проблемы блокчейнов, я хотел бы уточнить три дополнительных момента. Во-первых, в то время как я использую финансовую бухгалтерскую книгу в качестве примера на протяжении всего этого фрагмента, модель транзакций ввода-вывода поддерживает гораздо более широкий спектр вариантов использования. Каждая строка может содержать богатый объект данных (например, JSON), содержащий много разных типов информации - действительно, по этой причине Corda использует слово «состояние», а не «строка». Более богатые состояния ничего не меняют в правилах транзакций: корректность по-прежнему определяется в терминах входов и выходов, авторизация по-прежнему требуется для каждого ввода, а уникальность гарантирует, что каждый вывод может быть проведен только один раз.
Во-вторых, существует много вариантов использования цепочки блоков, в которых строки создаются только в базе данных и никогда не удаляются. Эти приложения относятся к общему хранению данных, меткам времени и нотариальному заверению, а не к ведению какого-либо регистра, который постоянно меняется. В этих приложениях только для данных транзакции добавляют данные в свои выходные данные, но не потребляют ни одного в своих входных данных, что позволяет упростить правила корректности, авторизации и уникальности. Несмотря на то, что варианты использования только данных все больше фокусируются на наших собственных разработках в MultiChain, я лишь упомяну их здесь, поскольку Corda явно не была разработана с учетом этих требований.
Наконец, стоит отметить, что некоторые платформы блокчейна не используют модель ввода-вывода. Ethereum представляет альтернативную парадигму, в которой цепочка управляет виртуальным компьютером с глобальным состоянием, управляемым «контрактами», и транзакции не связаны друг с другом явно. Обсуждение модели Эфириума в разрешенных блокчейнах здесь выходит за рамки наших возможностей, но посмотрите этой статье для подробного объяснения и критики. Одним из ключевых преимуществ парадигмы ввода-вывода является то, что большинство транзакций могут обрабатываться параллельно и независимо друг от друга. Это свойство имеет решающее значение для Корда, как мы увидим позже.
Блокчейн вызовы
Давайте представим, что банки мира создали общую бухгалтерскую книгу для представления прав собственности, передачи и обмена различными финансовыми активами. Теоретически это может быть реализовано на обычной цепочке блоков, как описано выше. Каждая строка будет содержать три столбца - идентификатор актива, такой как GOOG или USD, количество в собственности и открытый ключ владельца. Каждая транзакция будет переводить один или несколько активов из своих входов в свои выходы, с особыми случаями для выпуска и выбытия.
Каждый банк в сети будет иметь один или несколько узлов, которые подключаются к другим, распространяя и проверяя транзакции. Старшие члены будут выполнять функции валидаторов с коллективной ответственностью за подтверждение, упорядочение и отметку времени транзакций. Неправомерное поведение любого валидатора будет видно всем узлам сети, что приведет к осуждению, изгнанию и / или судебным разбирательствам. С учетом всего этого любой финансовый актив может быть перемещен по всему миру за считанные секунды, а правила правильности, авторизации и уникальности гарантируют целостность бухгалтерской книги.
Что не так с этой картиной? На самом деле, есть три проблемы: масштабируемость, конфиденциальность и совместимость. Вопрос масштабируемости достаточно прост. Предлагаемый нами межбанковский блокчейн потребует от каждого участника проверки, обработки и хранения каждой транзакции, осуществляемой каждым банком в мире. Даже если это будет технически осуществимо для крупнейших финансовых учреждений, стоимость вычислений и хранения создаст для многих значительный барьер. Конечно, мы бы предпочли систему, в которой участники видят только те транзакции, в которых они непосредственно участвуют.
Но давайте отложим масштабируемость, поскольку в конечном итоге ее можно решить с помощью дорогих компьютеров и умного проектирования. Более фундаментальным вопросом является конфиденциальность. Несмотря на то, что для каждой транзакции, которая может быть видна повсюду, может показаться утопическим, но в реальном мире такая радикальная прозрачность не является началом в плане конкуренции и регулирования. Если JP Morgan и HSBC обменяют пару активов, они вряд ли захотят, чтобы Citi и Банк Китая увидели, что они сделали. Если транзакция была проведена от имени клиентов этих банков, для них может быть незаконным разоблачать ее таким образом.
Одним из предложенных решений проблемы конфиденциальности являются «каналы», реализованные в Hyperledger Fabric. Каждый канал имеет определенных участников, которые являются подмножеством узлов в сети в целом. Транзакции канала видны только его членам, поэтому каждый канал фактически действует как отдельная цепочка блоков. Хотя это помогает с конфиденциальностью, это также подрывает весь смысл упражнения. Активы не могут быть перемещены из одного канала в другой без помощи доверенного посредника, который активен на обоих. Сложность этого подхода была недавно подчеркнута SWIFT подтверждение концепции примиренияПо оценкам, для производства потребуется более 100,000 100,000 каналов. Это XNUMX XNUMX островов, между которыми активы не могут быть перемещены напрямую.
В случаях использования только данных, когда транзакции не потребляют данные во входных данных, проблему конфиденциальности можно обойти, зашифровав или зашифровав данные в выходных данных и предоставив ключ дешифрования или не хэшированные данные за пределы цепочки. Но для транзакции, чьи входы потребляют выходные данные других транзакций, каждый узел должен видеть эти входы и выходы, чтобы подтвердить транзакцию. В то время как передовые криптографические методы, такие как конфиденциальные активы и доказательства с нулевым разглашением были разработаны для частичного или полного решения этой проблемы для финансовых регистров, они налагают значительное бремя производительности и / или не могут быть обобщены до какого-либо правила корректности.
Наконец, давайте поговорим о совместимости. В идеальном мире каждый банк сразу же присоединится к нашей глобальной цепочке блоков в день его запуска. В действительности, однако, различные группы банков будут использовать несколько блокчейнов, исходя из географии или ранее существовавших отношений. Со временем, член одной группы может начать транзакцию с членом другой, передав актив между цепочками. Как и в случае с каналами, это может быть достигнуто только с помощью доверенного посредника, побеждающего цель блокчейна.
Corda стремится решить эти взаимосвязанные проблемы масштабируемости, конфиденциальности и совместимости путем радикального переосмысления работы распределенных регистров.
Частичный вид корды
Принципиальное отличие Corda легко объяснить: каждый узел видит только некоторые, а не все транзакции, обработанные в сети. Хотя все эти транзакции определяют один логический и концептуальный регистр, ни один отдельный узел не видит этот регистр целиком. Чтобы провести сравнение, в любой момент времени каждая долларовая банкнота в мире находится в определенном месте, но никто не знает, где они все находятся.
Итак, какие транзакции видит узел Corda? Прежде всего, те, в которых он непосредственно участвует, потому что он владеет одним из входов или выходов этой транзакции. В бухгалтерской книге это включает каждую транзакцию, в которой узел отправляет или получает средства. Допустим, Алиса создает транзакцию, которая потребляет свои 15 долларов на входе и имеет два выхода: один с 10 долларами для меня, а другой с 5 долларами в «перемене» для нее. После того, как Алиса отправит мне эту транзакцию, я могу проверить ее на правильность и авторизацию, убедившись, что баланс входов и выходов и что Алиса подписала.
Однако этой транзакции самой по себе недостаточно. Мне также нужно убедиться, что состояние ввода Алисы действительно существует, и она не просто его придумала. Это означает, что мне нужно увидеть транзакцию, которая создала это состояние, а также проверить ее на корректность и авторизацию. Если эта предыдущая транзакция, которая отправила Алисе 15 долларов, имеет вход в 15 долларов, принадлежащий Дензелу, и еще один вход Эрика в 10 долларов, то я также должен проверить транзакции, которые их создали. И так далее, вплоть до первоначальной транзакции «выдачи», в которой был создан актив. Количество транзакций, которые мне нужно проверить, будет зависеть от того, сколько раз активы переходили из рук в руки и степени обратного ветвления.
Так как узлы Corda не видят автоматически каждую транзакцию, как они получают те, которые им нужны? Ответ от отправителя каждой новой транзакции. Прежде чем Алиса создаст транзакцию, потребляющую ее 15 долларов, она должна уже проверить транзакцию, в которой она ее получила. И поскольку Алиса должна была применить рекурсивный метод, описанный выше, она будет иметь копию каждой транзакции, необходимой для этой проверки. Боб просто запрашивает эти транзакции у Алисы как часть их взаимодействия. Если Алиса не отвечает должным образом, Боб приходит к выводу, что Алиса пытается его обмануть, и отклоняет входящий платеж. В случае, когда Бобу отправляется новая транзакция, входы которой имеют несколько владельцев, он может получить необходимые доказательства от каждой.
Представляем нотариусов
До сих пор мы объясняли, как Боб может проверять правильность и авторизацию входящей транзакции, в том числе рекурсивно возвращать источники своих входных данных. Но есть еще одно правило, о котором нам нужно подумать: уникальность. Допустим, Алиса злая. Она может сгенерировать одну транзакцию, в которой она платит 10 долларов Бобу, и другую, в которой она платит те же 10 долларов Чарли. Она может отправить эти транзакции Бобу и Чарли соответственно, вместе с полным доказательством правильности и авторизацией каждой из них. Хотя обе транзакции конфликтуют друг с другом, потребляя одно и то же состояние, Боб и Чарли не могут этого знать.
Обычные блокчейны решают эту проблему, поскольку каждый узел видит каждую транзакцию, что позволяет легко обнаруживать и отклонять конфликты. Так как же Corda с ее частичной видимостью транзакций решает ту же проблему? Ответ с помощью «нотариуса». Нотариус - это доверенная сторона (или стороны, работающие вместе), которая гарантирует, что определенное состояние потребляется только один раз. В каждом штате есть специальный нотариус, который должен подписать любую транзакцию, в которой это состояние используется. Как только нотариус сделал это, он не должен подписывать другую транзакцию для того же государства. Нотариусы являются сетевыми хранителями уникальности транзакций.
В то время как каждое состояние может иметь различного нотариуса, все состояния, используемые определенной транзакцией, должны быть назначены одной и той же. Это позволяет избежать проблем, связанных с взаимоблокировками и синхронизацией, которые должны быть знакомы тем, кто имеет опыт работы с распределенными базами данных. Допустим, Алиса и Боб соглашаются обменять Алису на 10 долларов на Боба на 7 фунтов. Сделка для этого обмена должна быть подписана нотариусами обоих государств, но какой из них идет первым? Если Алиса подписывает нотариус, но Боб по какой-то причине терпит неудачу, то Алиса останется с незавершенной транзакцией и никогда больше не сможет использовать свои 10 долларов. Если Боб сначала подписывается, то он также подвергается воздействию. Хотя нам, возможно, хотелось бы, чтобы нотариусы просто работали вместе, на практике это требует взаимного доверия и использования консенсусного протокола, осложнений, которых разработчики Corda решили избежать.
Если в качестве входных данных для одной транзакции требуются состояния с разными нотариусами, их владельцы сначала выполняют специальные транзакции «изменения нотариуса», которые перемещают состояние из одного нотариуса в другой, ничего не меняя. Поэтому, когда стороны строят транзакцию с несколькими входами, они должны сначала согласовать нотариуса, который будет использоваться, а затем выполнить необходимые нотариальные изменения. Хотя разработчик во мне почувствовал небольшой приступ боли, читая об этом обходном пути, нет никаких причин, почему он не будет работать, пока играют нотариусы.
Следует также уточнить, что, хотя каждый нотариус является единым логическим игроком с точки зрения подписания транзакций, он не обязательно должен находиться под контролем одной стороны. Группа организаций может управлять нотариусом коллективно, используя соответствующий консенсусный протокол, в котором большинство участников необходимо для создания действительной подписи. Это предотвратит подрыв любой уникальной злонамеренной стороны, подписав конфликтующие транзакции. Теоретически, мы могли бы даже позволить каждому узлу в сети участвовать в этом виде общего нотариального заверения, хотя в этом случае мы более или менее вернулись бы к обычной цепочке блоков.
Принимая счет
Давайте вспомним ключевые различия между Corda и обычными блокчейнами. В Corda нет единой цепочки блоков, которая содержит все подтвержденные транзакции. Узлы видят только те транзакции, в которых они непосредственно участвуют или от которых они исторически зависят. Узлы несут ответственность за проверку правильности транзакций и авторизацию, но для проверки уникальности используют доверенных нотариусов.
Конечно, у Corda есть гораздо больше, чем это: использование цифровых сертификатов для аутентификации личности, «сетевые карты», чтобы помочь узлам находить и доверять друг другу, «контракты» для каждого штата, которые определяют правильность с точки зрения каждого государства, детерминированная версия виртуальной машины Java, которая выполняет эти контракты, «потоки», которые автоматизируют согласование транзакций, «временные окна», которые ограничивают транзакции по времени, «оракулы», которые свидетельствуют о внешних фактах, и «CorDapps», которые объединяют многие вещи для легкого распространения , Хотя каждая из этих функций интересна, эквиваленты для всех можно найти на других платформах блокчейна. Моя цель в этой статье - сосредоточиться на том, что делает Corda уникальной.
Так что Корда выполняет свое обещание? Решает ли это проблемы масштабируемости, конфиденциальности и совместимости блокчейнов? И, делая свой особый выбор, сколько заплатит Корда?
Более масштабируемый, иногда
Давайте начнем с масштабируемости. Здесь преимущество Corda очевидно, поскольку узлы видят только некоторые транзакции в сети. В обычном блокчейне максимальная пропускная способность ограничена скоростью самого медленного узла при обработке транзакций. В отличие от этого, сеть Corda может обрабатывать миллион транзакций в секунду, в то время как каждый узел видит лишь небольшую часть этого. Масштабируемость распространяется и на нотариусов, поскольку задача подписания транзакций на уникальность может быть распределена между многими нотариусами, каждый из которых отвечает за небольшую долю состояний сети.
Сказав это, есть одна ситуация, в которой Corda работает намного хуже, чем блокчейн. Это происходит, когда узел получает новую транзакцию, которая зависит от многих других транзакций, которые он не видел раньше. Представьте себе высоколиквидный актив, который был выпущен 10 лет назад и передается каждые пять минут. Путь от любой новой транзакции до выдачи этого актива будет более миллиона транзакций. Когда узел получает этот актив в первый раз, он должен получить эти миллионы транзакций от отправителя и проверить каждую из них по очереди. При (довольно оптимистичном) уровне 1000 транзакций в секунду получатель может отправить актив на 17 минут - явно слишком долго для чего-то столь ликвидного.
Почему блокчейны не страдают от этой проблемы? Поскольку узлы видят и проверяют каждую транзакцию в том виде, в каком она происходит, они постоянно обновляют состояние бухгалтерской книги и точно знают, кому принадлежит каждый актив в настоящее время. Даже если узел никогда ранее не держал определенный актив, он может мгновенно проверить транзакцию, в которой он его получил, и сразу же отправить его дальше. Иными словами, узлы цепочки блоков должны проверять транзакции, которые могут быть не релевантными для них, но при этом они предварительно оплачивают стоимость проверки любой будущей транзакции, которая может прийти. Хотя узлы Corda в целом менее загружены, они запускают риск того, что придется сделать огромный объем работы в любой момент. В этом нет ничего масштабируемого.
Несколько более конфиденциально
Давайте перейдем к конфиденциальности. В Corda узлы видят только некоторые из сетевых транзакций, что, несомненно, означает лучшую конфиденциальность, чем обычные блокчейны. Тем не менее, Corda далека от решения проблемы конфиденциальности, поскольку узлы по-прежнему видят некоторые транзакции, которые не относятся к их бизнесу. В качестве простого примера: если Алиса платит Бобу 10 долларов, то Боб отправляет эти 10 долларов Чарли, и на узле Чарли должна быть показана транзакция между Алисой и Бобом, даже если это не касается его. В тот момент, когда Алиса заплатила Бобу, у нее не было возможности узнать, кто может увидеть эту транзакцию в будущем, и кто-нибудь может отправить ее в любое время.
Честно говоря, разработчики Corda знают об этой проблеме и обсуждают ее в главе 15 своих Техническая документация, В документе предлагаются простые стратегии, такие как использование нескольких открытых ключей на одну сущность или снижение прослеживаемости путем возврата активов эмитентам для повторного выпуска (аналогично криптовалютным «монетоприемникам»). В нем также упоминаются более продвинутые будущие возможности, такие как использование сетей анонимизации Tor-типа для сокрытия IP-адресов участников и использование доказательств с нулевым разглашением или информации Intel. безопасные анклавы проверять транзакции, не раскрывая их содержание. Хотя все эти предложения верны, они также могут быть применены к обычным цепочкам блоков с использованием модели ввода-вывода, и они действительно используются в криптовалютах, таких как Dash, Zcash и Verge. Таким образом, единственным уникальным преимуществом Corda с точки зрения конфиденциальности остается уменьшенная видимость транзакций - в лучшем случае неполное решение.
Все в разведении
Чтобы лучше понять преимущества масштабируемости и конфиденциальности Corda, мы должны отметить, как это зависит от плотности и перекрытия отношений между транзакциями. Представьте себе «семейное древо» транзакций, выполняемых в сети, в котором родители каждой транзакции являются предыдущими, от которых она напрямую зависит. В частности, когда выходные данные одной транзакции используются входными данными другой, мы рисуем стрелку, представляющую отношение от родителя к потомку. Транзакции могут иметь любое количество родителей и детей, хотя в большинстве случаев мы ожидаем всего несколько.
Учитывая это генеалогическое древо, мы определяем предков транзакции как ее родителей, бабушек и дедушек, прабабушек и дедушек и так далее. Наше дерево «Адам и Ева» - это транзакции по эмиссии, которые создали активы и не имеют собственных родителей. Как и в обычных родословных, две транзакции не могут быть предками друг друга. В формальных терминах информатики это направленный ациклический граф или DAG, в которой родословная определяется как транзитивное замыкание родительского отношения.
Напомним, что когда узел Corda обрабатывает транзакцию, он должен загрузить и проверить всех предков этой транзакции, кроме тех, которые он видел ранее. Таким образом, если семейное дерево глубокое, новые входящие транзакции могут иметь большое количество предков, которые должны быть проверены, что вызывает проблему масштабируемости Corda. Кроме того, если семейное дерево содержит высокую степень скрещивания, предки новой транзакции могут включать много или большинство прошлых транзакций в сети. В этом случае Corda предоставит небольшое преимущество с точки зрения конфиденциальности.
Напротив, если семейное древо транзакций невелико и содержит много отключенных островков, которые не взаимодействуют друг с другом, преимущества Corda выходят на первый план. Узлам никогда не потребуется проверять большое количество транзакций одновременно, и они могут оставаться в неведении относительно большинства транзакций, которые не связаны с их собственными. При использовании в качестве финансовой книги мы можем сказать, что Corda идеально подходит для сильно фрагментированных рынков, активы которых редко переходят из рук в руки.
Совместимость за победу
Вот одна область, в которой Корда действительно сияет. Представьте себе две отдельные сети Corda с разными наборами активов и участников. В какой-то момент участник одной сети хочет отправить актив кому-то в другой. В отличие от обычных цепочек блоков, не ожидается, что узел проверит все прошлые транзакции, поэтому узел, получающий этот новый актив, не будет испытывать ничего необычного. Когда транзакция приходит, она просто запрашивает и проверяет соответствующую историю, не зная, что это из «отдельной сети». Чтобы растянуть клише, мы могли бы сказать, что в Корде нет незнакомцев - просто друзья, которые еще не встретились.
В действительности все не так просто. Любой узел Corda однозначно решает, каким нотариусам доверять, так как ненадлежащее поведение нотариуса может привести к финансовым беспорядкам. Кроме того, узлам нужен «сертификат», выданный «швейцаром» для подключения к другим узлам в сети, поскольку мы не можем позволить случайным членам общественности начать подключаться к узлам и тратить их ресурсы. Поэтому, прежде чем узел в одной сети сможет начать запрашивать и проверять транзакции из другой сети, ему необходимо добавить в свой список доверенных нотариусов и получить соответствующий сертификат. Хотя это требует некоторой ручной настройки и администрирования, это минимум, который можно ожидать для системы такого рода. В целом справедливо сделать вывод, что совместимость - это большая победа Corda над обычными блокчейнами.
Реинтермедиация
Пришло время поговорить о дезинтермедиации, слоне в комнате Корды. В контексте блокчейнов дезинтермедиация означает, что каждый участник может проверить каждую транзакцию для себя, независимо от хорошего поведения третьих сторон. В мой взглядДезинтермедиация является основным преимуществом блокчейнов по сравнению с централизованными базами данных, в которых все участники полностью зависят от владельца этой базы данных. Если у участников сети есть посредник, на которого они могут положиться, и нет никаких коммерческих или нормативных оснований для дезинтермедиации, то есть Нет смысла в использовании блокчейна. Централизованные базы данных являются более быстрыми и эффективными и позволяют избежать проблемы конфиденциальности транзакций.
Так достигают ли участники сети Corda дезинтермедиации? Ну да, да и да, но нет. Для доставки транзакции Corda устанавливает флажок, так как узлы, участвующие в транзакции, общаются напрямую друг с другом. С точки зрения корректности и авторизации, он также находится в хорошем состоянии, поскольку каждый узел может самостоятельно проверять эти свойства. Однако, когда дело доходит до проверки уникальности транзакции, Corda не проходит тест дезинтермедиации. Узлы не могут подтвердить уникальность для себя, так как они не видят каждую транзакцию в сети, и задача передается сторонним нотариусам.
Участники Corda во многом зависят от нотариусов. Во-первых, нотариус может отказаться подписывать транзакцию, даже если его входные данные используют выходные данные, которые никогда не использовались ранее. В финансовой книге это не позволяет кому-либо отправлять или обменивать свои активы. Во-вторых, нотариус может подписать две конфликтующие транзакции, которые потребляют один и тот же результат, что заставляет две стороны полагать, что они получили одно и то же. Поскольку оба получателя дублирующего актива отправляют или обменивают его в дальнейших транзакциях, заражение распространяется, и целостность всей бухгалтерской книги может вскоре быть подорвана. Наконец, нотариус может отказаться подписывать транзакцию «с изменением нотариуса», чтобы передать состояние конкуренту, эффективно удерживая владельца актива в заложниках. Для транзакции с участием штатов с разными нотариусами далеко не ясно, что Corda вводит больше посредничества, чем централизованная база данныхпотому что несколько третьих сторон находятся под контролем.
Чтобы оценить этот риск в перспективе, стоит напомнить, что нотариусы Corda не должны контролироваться какой-либо одной организацией. Они также могут состоять из группы узлов, выполняющих согласованный алгоритм, который может терпеть плохих актеров. В этом случае нотариус будет работать нормально до тех пор, пока большинство его узлов-членов следуют правилам. На первый взгляд, это звучит скорее как блокчейн, который зависит от хорошего поведения валидаторов. Однако в Корде риски значительно выше. Худшее, что может сделать клика валидаторов блокчейнов, - это предотвратить подтверждение некоторых транзакций. Вредоносный нотариус Корда также может подписывать конфликтующие транзакции, отправляя бухгалтерскую книгу в непоследовательную пропасть.
Странное животное
Объединяя масштабируемость, конфиденциальность, совместимость и дезинтермедиацию, трудно прийти к простому вердикту об альтернативе Corda. В целом, с точки зрения разработчика этой блокчейн-платформы, это, кажется, хорошо… неотразимо, но странно. Решения Corda, разработанные для решения ключевых проблем масштабируемости и конфиденциальности, являются неполными и в значительной степени зависят от формы «семейного древа» транзакции. Однако для достижения этих частичных побед Corda теряет основное свойство блокчейнов - устранение посредников транзакций. В то время как Corda, несомненно, отличается превосходной совместимостью, достаточно ли этого?
Если бы мы хотели скептически относиться, мы могли бы сказать, что перед командой Корды была поставлена невыполнимая задача - разработать разновидность блокчейна, которая бы подходила банкам, финансирующим R3. Но ключевое преимущество блокчейнов перед централизованными базами данных - это дезинтермедиация, которая достигается ценой снижения конфиденциальности. Как этот компромисс может иметь смысл для финансовых учреждений, которые зарабатывают деньги, выступая в качестве посредников, и очень чувствительны к конфиденциальности? В этом свете можно было бы восхвалять Corda как героический, но в конечном итоге неудовлетворительный компромисс между желанием членов R3 сделать что-то блокчейн и коммерческими и нормативными ограничениями, при которых они существуют.
Хранитель 2.0
Но я предпочитаю придерживаться более позитивного подхода. Вместо того, чтобы концентрироваться на сравнении с блокчейнами, мы можем рассматривать Corda как серьезное техническое обновление до финансового положения. Просто замените слово «нотариус» на «хранитель», и все это становится довольно аккуратно. (A попечитель является финансовым учреждением, которое владеет активами от имени других.) Да, нотариусы являются посредниками, которые могут как блокировать транзакции, так и допускать конфликты, но это верно и для сегодняшних хранителей. «Операция по изменению нотариуса» может рассматриваться как передача активов от одного хранителя другому. И транзакции Corda подписываются только одним нотариусом по той же причине, по которой мы предпочитаем, чтобы обмен активами происходил в одном месте - чтобы ни одна из сторон не выходила из кармана.
Посмотрев на Corda таким образом, мы увидим, как она улучшает традиционную модель содержания под стражей:
- Он определяет стандартную вычислительную парадигму и формат для выражения финансовых активов и других договорных обязательств.
- Он предоставляет программное обеспечение с открытым исходным кодом для интерпретации и выполнения этих обязательств, гарантируя, что стороны и хранители договариваются о результатах каждой транзакции.
- Сложные многопартийные хранители, которые защищают от злоупотреблений, могут быть созданы (используя только программное обеспечение!), Используя отказоустойчивые консенсусные алгоритмы.
- Стандартный процесс («изменение нотариуса») определен для передачи активов между хранителями, и никому из хранителей не разрешается отказываться.
- Кастодианы не могут использовать актив, находящийся под их хранением, без согласия владельца, поскольку транзакции также должны быть подписаны владельцами их входных данных.
Я далеко не банкир, но для меня все это звучит довольно многообещающе. И, возможно, Corda с таким же успехом может применяться в других отраслях со сложной структурой хранения, таких как страхование или судоходство. Хотя дизайн Corda может и не обеспечивать полное устранение посредничества блокчейна, он предлагает мощное преобразование для отраслей, в которых посредники играют существенную роль.
Как только мы пойдем по этому пути мышления, неизбежно возникнет вопрос: если мы уже доверяем нотариусам всю свою жизнь, проверяя уникальность, почему бы не полагаться на них также на правильность и авторизацию? Corda уже имеет понятие «проверяющего нотариуса», который полностью проверяет транзакции перед добавлением своей подписи. Вместо обычных узлов Corda, загружающих и проверяющих предков своих транзакций, почему бы просто не спросить нотариуса? Это может помочь с масштабируемостью и конфиденциальностью, поскольку большинство узлов не видят никаких транзакций, кроме их собственных. Мы можем даже предположить, что нотариусы сети полностью доверяют друг другу, поэтому нет необходимости беспокоиться о предках. Нотариус каждого штата может ручаться за его действительность, проверяя только транзакцию, которая его создала, с помощью других нотариусов.
Пусть Корда будет Корда
Все это возвращает нас к тому, с чего мы начали: Corda на самом деле не является конкурентом обычных цепочек блоков, включая MultiChain. Corda - это Corda - интересный новый тип распределенной бухгалтерской книги, которая была оптимизирована для нужд тех, кто ее финансирует. Я понятия не имею, будет ли Corda в конечном итоге успешным или неудачным, потому что я не знаю его реальных затрат и выгод по сравнению с текущим способом ведения дел. Но независимо от того, что произойдет в будущем, это, безусловно, стоит изучать с точки зрения философии и дизайна.
Что касается MultiChain, мы придерживаемся другого подхода. Чтобы украсть линию от Западное крыломы полны решимости «позволить блокчейну быть блокчейном». Блокчейны - это то, чем они являются, и у нас нет планов превращать их во что-то другое. Как и инфраструктура данных для общего приложения, блокчейн представляет собой определенный компромисс по сравнению с централизованной базой данных - выигрыш в удалении посредников за счет снижения конфиденциальности. И мы прилагаем все усилия, чтобы сделать MultiChain 2.0 наилучшим из возможных блокчейн Платформа для разработчиков приложений для использования.
Пожалуйста, оставьте любые комментарии на LinkedIn.
Источник: https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- Учетная запись
- Сокращения
- активный
- дополнительный
- плюс
- алгоритм
- алгоритмы
- Применение
- Приложения
- архитектура
- ПЛОЩАДЬ
- гайд
- активы
- Активы
- аудитория
- разрешение
- Банка
- Банк Китая
- Банковское дело
- Банки
- ЛУЧШЕЕ
- Билл
- блокчейн
- Коробка
- Строительство
- Пакет
- бизнес
- случаев
- Вызывать
- Генеральный директор
- сертификат
- сертификаты
- изменение
- каналы
- контроль
- Проверки
- ребенок
- Дети
- Китай
- Citi
- закрытие
- Комментарии
- коммерческая
- Общий
- Компания
- конкурс
- конкурентов
- Информатика
- компьютеры
- конфликт
- Консенсус
- согласие
- потреблять
- содержание
- содержание
- контрактов
- Веревка
- Расходы
- Создающий
- круиз
- криптовалюты
- криптовалюта
- криптография
- Текущий
- Содержание под стражей
- Клиенты
- DAG
- Dash
- данным
- хранение данных
- База данных
- базы данных
- день
- сделка
- задерживать
- доставки
- поставка
- Проект
- Застройщик
- застройщиков
- Развитие
- DID
- Интернет
- Распределенная книга
- Доллар
- слон
- Проект и
- Предприятие
- Эфириума
- обмена
- Биржи
- Упражнение
- ткань
- ярмарка
- семья
- Фэшн
- Особенности
- в заключение
- финансовый
- Финансовые институты
- конец
- First
- Впервые
- Фокус
- формат
- полный
- финансирование
- средства
- будущее
- Общие
- Глобальный
- глобальная цепочка
- хорошо
- управление
- большой
- группы
- Рост
- здесь
- Спрятать
- High
- Выделенные
- история
- Как
- HTTPS
- огромный
- идея
- Личность
- нелегальный
- В том числе
- промышленности
- информация
- Инфраструктура
- учреждение
- учреждения
- страхование
- взаимодействие
- интерес
- Взаимодействие
- вовлеченный
- IP
- выдача
- вопросы
- IT
- Java
- работа
- присоединиться
- Основные
- ключи
- знания
- большой
- вести
- Наша команда
- ведущий
- узнали
- Ledger
- Юр. Информация
- уровень
- легкий
- линия
- жидкость
- Список
- Длинное
- основной
- Большинство
- Создание
- рынок
- Области применения:
- Совпадение
- заседаниях
- Участники
- упоминает
- миллиона
- модель
- деньги
- двигаться
- мультицепь
- сеть
- сетей
- сетей
- узлы
- понятие
- открытый
- с открытым исходным кодом
- заказ
- заказы
- Другие контрактные услуги
- Другое
- владелец
- Владельцы
- боль
- бумага & картон
- парадигма
- родители
- ОПЛАТИТЬ
- оплата
- платежи
- Люди
- производительность
- перспектива
- философия
- картина
- Платформа
- Платформы
- Популярное
- представить
- цена
- политикой конфиденциальности.
- частная
- Продукт
- Производство
- доказательство
- собственность
- для защиты
- что такое варган?
- R3
- читатели
- Reading
- Реальность
- резюме
- учет
- "Регулирование"
- Отношения
- помощь
- Требования
- Полезные ресурсы
- уход на пенсию
- обзоре
- Снижение
- условиями,
- Run
- Бег
- Масштабируемость
- Наука
- МОРЕ
- видит
- смысл
- набор
- общие
- Доставка и оплата
- Короткое
- Признаки
- просто
- небольшой
- So
- Software
- Решения
- РЕШАТЬ
- скорость
- Расходы
- распространение
- доля
- Начало
- и политические лидеры
- Область
- Области
- Статус:
- диск
- магазин
- магазины
- Поддержка
- Поверхность
- система
- Технический
- тестXNUMX
- Будущее
- мышление
- третье лицо
- время
- терпимость
- Прослеживаемость
- сделка
- Сделки
- трансформация
- Прозрачность
- перевозки
- Доверие
- Без хеширования
- us
- USD
- пользователей
- грань
- проверка
- Вид
- Виртуальный
- виртуальная машина
- видимость
- голосование
- ждать
- запад
- КТО
- Википедия.
- выиграть
- Работа
- Мир
- стоимость
- письмо
- лет
- Zcash
- нуль