30 ноября консорциум R3 выложил в открытый доступ код платформы Corda. Разработка прототипа Corda продолжалась более года. В консорциум входят более 70 ведущих мировых банков и финансовых организаций. Недавно несколько крупнейших банков, в частности Goldman Sachs, Santander и Morgan Stanley, покинули консорциум, но эти шаги в большей степени связаны с политикой и деньгами, нежели с технологиями.
После опубликования кода, сообществу потребовалось некоторое время для того, чтобы оценить новую платформу. Конечно, потребуется не меньше нескольких месяцев для полноценного тестирования, однако первые впечатления уже есть.
Что такое Corda?
Corda – частная платформа распределенного реестра с ограниченным доступом, в которой выполняются смарт-контракты на основе Виртуальной Машины Java (JVM). В отличие от других платформ смарт-контрактов, таких как Эфириум, или Lisk, Corda предназначена только для специализированных финансовых приложений. Платформа представляет собой распределенный реестр совместно с децентрализованной базой данных.
Основные свойства
Corda – это не блокчейн. Платформа использует специальные "нотариальные" узлы для проверки и подписания транзакций (т. е., для достижения консенсуса), и в пределах одной и той же сети могут использоваться различные алгоритмы консенсуса. Особо нужно отметить, что в Corda не используется PoW, а также отсутствует концепция майнинга.
Из существующих аналогов, Corda удобнее всего сравнивать с платформой BigchainDB, точно так же BigchainDB иногда ошибочно называют блокчейном.
Отсутствие майнинга + Приватность = Масштабируемость
Ограниченный доступ в контексте Corda означает, что транзакции по умолчанию транслируются не во всех узлах сети. Это не шардинг, а функция приватности:
Записи, обрабатываемые системой, доступны только тем участникам, которые имеют подтвержденные и легитимные интересы в транслируемых активах и контрактах.
Такая приватность означает наличие в Corda специальных идентификационных сервисов:
Это предполагает наличие идентификационной инфраструктуры между участниками сети, но в каждом случае уровень защиты может быть различным.
Результат отсутствия майнинга и ограничений доступа – отличная масштабируемость:
Узлы/ноды получают только те транзакции, которые имеют к ним отношение, или если транзакции являются производными транзакций, которые имеют к ним отношение. Такой механизм гибких связей означает, что большинство узлов никогда не «увидят» бОльшую часть графа транзакций, следовательно не будут тратить ресурсы на их обработку.
Поскольку единый блокчейн отсутствует, становится возможным соединение двух независимых сетей посредством простой двусторонней связи между их узлами. В этом случае, потребуется установление каждой стороной уровня доверия к нотариальным узлам партнера и взаимная верификация идентификационных сертификатов.
Технология
Что такое нотариат?
Это децентрализованный сервис, который выполняет ту же функцию, которую в других системах блокчейна выполняют майнеры: нотариальные узлы подтверждают, что только одна транзакция может поглотить любой данный выход. Распределенный нотариальный сервис Биткойна – это его блокчейн. Кроме того, нотариат используется для проставления отметок времени (timestamps).
Corda – единственная платформа Распределенного Реестра, поддерживающая множественные провайдеры консенсуса, которые используют разные алгоритмы консенсуса в одной и той же сети, обеспечивая взаимное соответствие между разными системами.
В чем сходство Corda и Эфириума?
- Тьюринг-полные смарт-контракты
- Наличие Оракулов (встроенный механизм)
В чем отличие Corda от Эфириума?
- Не используется PoW и майнинг
- Смарт-контракты Corda более декларативные, чем в Эфириуме (чистые функции). Их сокращенное название CorDapp вместо Dapp в Эфириуме.
- Консенсус требуется только для нотариальных узлов (в настоящее время Алгоритм Raft или Византийский Консенсус)
- Консенсус по поводу валидности транзакции выполняется сторонами только в случае разногласий между ними. Поэтому, обмен данными происходит только между сторонами с авторизованным доступом. Другие платформы обычно достигают консенсуса на уровне реестра. Эфириуму для масштабирования нужен шардинг.
Смарт-контракты
- JVM – основа смарт-контрактов в Corda. Контракты написаны на Java/Kotlin. Corda использует новый тип песочницы JVM. В нем применяется статический анализ байткода, а патч JVM позволяет песочнице контролировать поведение генерации хэшкода.
- В транзакцию может быть включен произвольный zip файл, который можно использовать из кода контракта.
- Контракты могу т включать как машинный код, так и официальный текст контракта (официальный юридический контракт)
- Способ записи контрактов подразумевает, что они не могут быть изменены без согласия всех участвующих нотариальных узлов.
- Точные метки времени (вместо меток по номерам блоков). Временные окна и сервис меток времени.
- Сообщения передаются аналогично e-mail: записываются на диск, и транслируются в ближайшем сеансе. Учитывается то, что некоторые узлы могут быть отключены. Администраторы могут удалять зависшие сообщения, если срок ожидания отправки превышен.
- Встроенный механизм мультиподписей.
Пример смарт-контракта на Java
Заключение
Платформа R3 Corda не является технологией, основанной на блокчейне. Для оценки ее производительности потребуется время, однако из предварительных оценок непонятно, какие преимущество может дать ее применение по сравнению с теми методами, которые банки используют в настоящее время.
В то же время, смарт-контракты Corda могут стать полезным нововведением в мире финансов.