Детальний погляд на блокчейн, що не є блокчейном
Із часом світ блокчейнів розділяється на дві окремі частини. З одного боку, публічні блокчейни з пов'язаними з ними криптовалютами нещодавно отримали надзвичайне повернення, карбуючи багатьох мультимільйонерів. З іншого боку, використання дозволених або корпоративних блокчейнів зростало тихо, але неухильно, побачивши свої перші активні розгортання протягом багатьох галузей протягом 2017 року.
Одне цікаве питання, яке слід розглянути, - це відповідний рівень подібності між цими двома типами ланцюгів. Обидва реалізують спільну базу даних, використовуючи однорангові мережі, криптографію з відкритим та приватним ключами, правила транзакцій та механізми консенсусу, які можуть пережити зловмисних акторів. Це велика спільна річ. Тим не менше, державні та приватні блокчейни мають різні вимоги щодо конфіденційності, масштабованості та управління. Можливо, ці відмінності вказують на необхідність кардинально розбіжних конструкцій.
Команда Corda платформа, розроблена R3 банківський консорціум, займає чітку позицію з цього питання. Хоча деякі аспекти були натхненні публічними блокчейнами, Corda була розроблена з нуля на основі потреб членів R3. Дійсно, хоча R3 все ще використовує слово "блокчейн" широко щоб допомогти продавати свою продукцію, у Corda взагалі немає ланцюжка блоків. Більше, ніж будь-яка інша платформа "розподіленого реєстру", про яку я знаю, Corda радикально відходить від архітектури звичайних блокчейнів.
Моя мета в цій статті - пояснити ці відмінності та обговорити їх наслідки як для хороших, так і для поганих. Насправді, добре і погано - це неправильний спосіб висловитись, тому що цікавіше запитання: "Добре і погано для чого?" Ця стаття далеко не коротка. Але до кінця цього, я сподіваюся, що читачі зрозуміють трохи відмінностей у Corda та їхніх компромісів. Corda важлива, оскільки її дизайнерські рішення різко полегшують багато дилем корпоративних блокчейнів.
Останнє перед тим, як зануритися. Як генеральний директор компанії, що відстає MultiChain, популярна корпоративна платформа блокчейнів, чому я так детально пишу про нібито конкуруючий продукт? Стандартною причиною було б аргументувати перевагу MultiChain, але це не моя мотивація тут. Насправді я не бачу Corda та MultiChain конкурентами, оскільки вони принципово відрізняються за дизайном, архітектурою та аудиторією. Corda та MultiChain конкурують так само, як круїзні лайнери та гідроцикли - в той час як обидва вони перевозять людей морем, практично немає ситуацій у реальному світі, в яких можна було б використовувати обидва.
Щодо більш особистого зауваження, я багато чого навчився від технічного керівництва Corda за останні кілька років, чи то через зустрічі, листування чи їх публічні роботи, більшість з яких відбувалися до того, як вони приєдналися до R3. Деякий мій інтерес до Corda випливає з поваги, яку я маю до цієї команди, і лише з цієї причини Corda варто вивчити для тих, хто шукає розуміння розподіленого поля книги.
Представляємо блокчейни
Щоб зрозуміти Corda, корисно почати зі звичайних блокчейнів. Призначення блокчейну полягає в тому, щоб забезпечити прямий та безпечний доступ до бази даних або книги невіруючими сторонами. Це контрастує з централізованими базами даних, які зберігаються та контролюються однією організацією. Блокчейн має кілька «вузлів», кожен з яких зберігає копію бази даних і може належати іншій організації. Вузли з'єднуються між собою щільно однорангово, використовуючи "протокол пліток", в якому кожен вузол постійно розповідає своїм одноліткам про все, чому він навчився. Як результат, будь-який вузол може швидко транслювати повідомлення по всій мережі за допомогою безлічі альтернативних шляхів.
База даних, централізована чи на блокчейні, починається у порожньому стані та оновлюється за допомогою “транзакцій”. Транзакція визначається як сукупність змін бази даних, які є «атомними», тобто вони успішні або невдалі в цілому. Уявіть базу даних, що представляє фінансову книгу, з одним рядком на рахунок. Транзакція, в якій Аліса платить Бобу 10 доларів, має три кроки: (1) перевірте, чи містить рахунок Аліси принаймні 10 доларів, (2) відніміть 10 доларів з рахунку Аліси та (3) додайте 10 доларів на рахунок Боба. Як основна вимога, будь-яка платформа баз даних повинна гарантувати, що жодна транзакція не заважає іншій. Ця "ізоляція" досягається блокуванням рядків як для Аліси, так і для Боба, поки здійснюється оплата. Будь-яка інша транзакція, що включає ці рядки, повинна зачекати, поки ця не буде закінчена.
У блокчейні кожен вузол самостійно обробляє кожну транзакцію на власній копії бази даних. Транзакції створюються в будь-якому місці мережі і автоматично розповсюджуються на всі інші вузли. Оскільки організації, що працюють на вузлах, можуть мати різні (або навіть суперечливі) інтереси, вони не можуть довіряти один одному чесні транзакції. Тому блокчейнам потрібні правила, які визначають, чи є певна транзакція дійсною. У спільній фінансовій книзі ці правила не дозволяють споживачам витрачати гроші один одного або створювати кошти з повітря.
Поряд з правилами, що визначають дійсність транзакцій, блокчейни також повинні визначати порядок упорядкування транзакцій, оскільки в багатьох випадках це упорядкування є критичним. Якщо Аліса має 15 доларів і намагається надіслати 10 доларів Бобу і Чарлі в двох окремих транзакціях, лише один із цих платежів може бути успішним. Хоча ми могли б сказати, що перша транзакція має пріоритет, однорангова мережа не має об'єктивного визначення поняття "перша", оскільки повідомлення можуть надходити на різні вузли в різних порядках.
Правила операцій
У загальному розумінні інформація в будь-якій базі даних розділяється на записи або «рядки», і транзакція може робити три різні дії: видаляти рядки, створювати рядки та / або змінювати рядки. Їх можна зменшити до двох, оскільки зміна рядка еквівалентна видаленню цього рядка та створенню нового на його місці. Щоб повернутися до платежу Аліси Бобу, її рядок, що містить 15 доларів, видаляється, і створюються два нові рядки - один містить 10 доларів для Боба, а інший із 5 доларами на «зміну» для Аліси.
Дотримуючись термінології біткойнів та Корди, ми позначаємо рядки, видалені транзакцією, як «вхідні дані», а ті, що створені як «виходи». Будь-який рядок, видалений транзакцією, повинен бути створений попередньою транзакцією. Тому кожна вхідна транзакція споживає (або “витрачає”) результат попередньої транзакції. Сучасний вміст бази даних визначається набором “невитрачених виходів транзакцій” або “UTXO”.
У блокчейні транзакція є дійсною, якщо вона відповідає наступним трьом умовам:
- Правильність. Транзакція повинна представляти правомірне перетворення від вхідних даних до вихідних. Наприклад, у фінансовій книзі загальна кількість коштів на вкладах повинна відповідати загальній сумі випусків, щоб запобігти магічному появі чи зникненню грошей. Єдиними винятками є спеціальні операції “випуску” або “виходу на пенсію”, в яких явно додаються або вилучаються кошти.
- авторизація. Транзакція повинна бути санкціонована власником кожного виходу, споживаного його входами. У фінансовій книзі це заважає учасникам витрачати гроші один одного без дозволу. Авторизація транзакцій управляється за допомогою асиметричної (або відкрито-приватного ключа) криптографії. Кожен рядок має власника, ідентифікованого відкритим ключем, відповідний закритий ключ якого тримається в секреті. Для того, щоб бути авторизованою, транзакція повинна бути цифровим підписом власника кожного з її входів. (Зверніть увагу, що рядки можуть мати і більш складних власників "багатозначного підпису", наприклад, коли будь-які дві з трьох сторін можуть дозволити їх використання.)
- Унікальність. Якщо транзакція споживає певний результат, жодна інша транзакція не може споживати цей результат знову. Ось як ми заважаємо Алісі робити суперечливі платежі як Бобу, так і Чарлі. Хоча транзакції обох цих платежів можуть бути правильними та санкціонованими, правило унікальності гарантує, що база даних оброблятиме лише один.
У звичайному блокчейні кожен вузол перевіряє кожну транзакцію з точки зору цих трьох правил. Пізніше ми побачимо, як Корда розподіляє цю відповідальність по-різному.
Будівельні блоки
Блокчейн - це буквально ланцюжок блоків, у якому кожен блок зв’язується з попереднім через “хеш”, який однозначно ідентифікує його вміст. Кожен блок містить упорядкований набір транзакцій, які не повинні суперечити між собою або з попередніми блоками, а також мітку часу та деяку іншу інформацію. Як і транзакції, блоки швидко поширюються по мережі і незалежно перевіряються кожним вузлом. Як тільки транзакція з'являється в блоці, вона "підтверджується", приводячи вузли до відхилення будь-якої суперечливої транзакції.
Хто відповідає за створення цих блоків, і як ми можемо бути впевнені, що всі вузли домовляться про авторитетний ланцюжок? Це питання про «алгоритми консенсусу» саме по собі є величезною темою, наповненою чудовими абревіатурами, такими як PoW (Доказ роботи), 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 доларів, що належать Дензелу, і ще 5 доларів Еріка, то я також повинен перевірити транзакції, які їх створили. І так далі, аж до початкової операції “емісії”, в якій був створений актив. Кількість транзакцій, які мені потрібно перевірити, буде залежати від того, скільки разів активи змінювали власників, і від масштабу зворотного розгалуження.
Оскільки вузли Corda не бачать автоматично кожну транзакцію, як вони отримують потрібні? Відповідь - від відправника кожної нової транзакції. Перш ніж Аліса створить транзакцію, яка споживає 15 доларів, вона вже повинна підтвердити транзакцію, в якій її отримала. І оскільки Аліса, напевно, застосовувала рекурсивний прийом вище, вона матиме копію кожної транзакції, необхідної для цієї перевірки. Боб просто запитує ці транзакції у Аліси як частину їх взаємодії. Якщо Аліса не реагує належним чином, Боб приходить до висновку, що Аліса намагається його обдурити, і відхиляє вхідний платіж. У випадку, коли Бобу надсилається нова транзакція, дані якої мають кілька власників, він може отримати необхідні докази у кожного.
Представляємо нотаріусів
Поки що ми пояснювали, як Боб може перевірити правильність та авторизацію вхідної транзакції, включаючи рекурсивне відстеження походження її вхідних даних. Але є ще одне правило, над яким ми повинні подумати: унікальність. Скажімо, Аліса шкідлива. Вона може створити одну транзакцію, в якій вона платить 10 доларів Бобу, та іншу, в якій вона виплачує ті ж 10 доларів Чарлі. Вона може надіслати ці транзакції відповідно Бобу та Чарлі разом з повним доказом правильності та дозволу кожного. Хоча обидві транзакції конфліктують між собою, споживаючи один і той же стан, Боб і Чарлі не можуть це знати.
Звичайні блокчейни вирішують цю проблему кожним вузлом, бачачи кожну транзакцію, завдяки чому конфлікти легко виявляти та відкидати. То як Corda, з її частковою видимістю транзакцій, вирішує ту саму проблему? Відповідь - за допомогою «нотаріуса». Нотаріус - це довірена сторона (або сторони, що працюють разом), яка гарантує, що певна держава споживається лише один раз. Кожна держава має конкретного нотаріуса, який повинен підписати будь-яку операцію, в якій ця держава споживається. Після того, як нотаріус зробив це, він не повинен підписувати іншу угоду для тієї ж держави. Нотаріуси - це охоронці унікальності транзакцій.
Хоча кожна держава може мати різного нотаріуса, усі держави, споживані певною операцією, повинні бути віднесені до одного і того ж. Це дозволяє уникнути проблем, пов’язаних із тупиковими ситуаціями та синхронізацією, які повинні бути знайомі тим, хто має досвід розподіленої бази даних. Скажімо, Аліса і Боб домовляються обміняти 10 доларів Аліси на 7 фунтів Боба. Угода для цієї біржі повинна бути підписана нотаріусами обох штатів, але яка з них йде першою? Якщо нотаріус Аліси підпише, але Боб з якихось причин зазнає невдачі, то Аліса залишиться з неповною операцією і більше ніколи не зможе використати свої 10 доларів. Якщо Боб ознаки спочатку, тоді він виявляється подібним чином. Хоча ми можемо хотіти, щоб нотаріуси просто працювали разом, на практиці це вимагає взаємної довіри та використання консенсусного протоколу, ускладнень, яких дизайнери Corda вирішили уникнути.
Якщо держави з різними нотаріусами потрібні як вхідні дані для однієї транзакції, їх власники спочатку виконують спеціальні операції «зміни нотаріуса», які переміщують стан від одного нотаріуса до іншого, не змінюючи нічого іншого. Отже, коли сторони будують операцію з кількома входами, вони спочатку повинні домовитись про використання нотаріуса, а потім виконати необхідні нотаріальні зміни. Незважаючи на те, що розробник у мені відчув невеликий набряк болю, коли читав про це обхідне рішення, немає жодної причини, чому це не спрацює, поки нотаріуси будуть грати.
Слід також пояснити, що, хоча кожен нотаріус є єдиним логічним актором з точки зору підписання операцій, він не повинен знаходитися під контролем однієї сторони. Група організацій могла б керувати нотаріусом колективно, використовуючи відповідний консенсус-протокол, у якому більшість учасників потребують отримання дійсного підпису. Це завадило б будь-якій зловмисній стороні підірвати унікальність, підписуючи транзакції, що конфліктують. Теоретично ми могли б навіть дозволити кожному вузлу в мережі брати участь у такому загальному нотаріальному посвідченні, хоча в такому випадку ми б більш-менш повернулися до звичайного блокчейну.
Підсумок балів
Давайте підсумуємо ключові відмінності між Corda та звичайними блокчейнами. У Corda не існує єдиного блокчейну, який містив би всі підтверджені транзакції. Вузли бачать лише ті транзакції, в яких вони беруть безпосередню участь, або від яких вони історично залежать. Вузли відповідають за перевірку коректності транзакцій та авторизацію, але для перевірки унікальності покладаються на перевірених нотаріусів.
Звичайно, у Corda є набагато більше, ніж це: використання цифрових сертифікатів для автентифікації ідентифікаційних даних, «мережеві карти», які допомагають вузлам знаходити один одного та довіряти один одному, «контракти» для кожного штату, які визначають правильність з точки зору кожної держави, детермінована версія віртуальної машини Java, яка виконує ці контракти, "потоки", що автоматизують переговори про транзакції, "часові вікна", які обмежують транзакції за часом, "оракули", що засвідчують зовнішні факти, та "CorDapps", які об'єднують багато речей для зручності розподілу . Хоча кожна з цих функцій цікава, еквіваленти для всіх можна знайти на інших платформах блокчейну. Моя мета в цій статті - зосередитись на тому, що робить Corda унікальним.
Тож чи виконує Корда свою обіцянку? Чи вирішує це проблеми масштабованості, конфіденційності та сумісності блокчейнів? І, роблячи свій конкретний вибір, скільки ціни платить 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, безсумнівно, перевершує сумісність, чи справді цього достатньо?
Якби ми хотіли бути скептичними, ми могли б сказати, що перед командою Корди було поставлено неможливе завдання - розробити аромат блокчейну, який би відповідав банкам, що фінансують R3. Але ключовою перевагою блокчейнів перед централізованими базами даних є дезінтермедіація, яка коштує зниженою конфіденційністю. Як цей компроміс міг би мати сенс для фінансових установ, які заробляють гроші, виступаючи посередниками, і дуже чутливі до конфіденційності? Якщо розглядати його в такому світлі, можна назвати хвалою Корду героїчним, але в кінцевому рахунку незадовільним компромісом між бажанням членів R3 зробити щось блокчейн і комерційними та регуляторними обмеженнями, за яких вони існують.
Зберігач 2.0
Але я вважаю за краще застосовувати більш позитивний підхід. Замість того, щоб зосередитись на порівнянні з блокчейнами, ми можемо розглядати Corda як серйозне технічне оновлення фінансового стану. Просто замініть слово «нотаріус» на «зберігач», і все це досить акуратно встає на свої місця. (A зберігач є фінансовою установою, яка тримає активи від імені інших.) Так, нотаріуси є посередниками, які можуть як блокувати операції, так і дозволяти конфлікти, але це стосується і сьогоднішніх зберігачів. „Операція зміни нотаріуса” може розглядатися як передача активів від одного зберігача до іншого. А транзакції Corda підписує лише один нотаріус з тієї самої причини, що ми хочемо, щоб обмін активами відбувався в одному місці - для запобігання будь-якій із сторін.
Дивлячись на Корду таким чином, ми можемо побачити, як вона покращує традиційну модель зберігання:
- Він визначає стандартну обчислювальну парадигму та формат для вираження фінансових активів та інших договірних зобов'язань.
- Він надає програмне забезпечення з відкритим кодом для інтерпретації та виконання цих зобов'язань, гарантуючи, що сторони, що домовляються, та зберігачі домовляються про результат кожної операції.
- Складні багатосторонні зберігачі, які захищають від зловживань, можуть бути створені (лише за допомогою програмного забезпечення!), Використовуючи алгоритми консенсусу, стійкі до відмов.
- Визначено стандартний процес («зміна нотаріуса») для передачі активів між зберігачами, і жоден зберігач не може відмовити.
- Зберігачі не можуть використовувати актив, який знаходиться під їх опікою, без згоди власника, оскільки транзакції також повинні бути підписані власниками їх матеріалів.
Я далеко не банкір, але для мене все це звучить досить перспективно. І, можливо, Corda можна однаково добре застосовувати і в інших галузях зі складною структурою зберігання, таких як страхування або судноплавство. Незважаючи на те, що дизайн Corda може не передбачати повного розподілу блокчейну, він пропонує потужну трансформацію для галузей, в яких посередники відіграють важливу роль.
Після того, як ми підемо цим шляхом думок, неминуче виникає запитання: якщо ми вже довіряємо нотаріусам завдання на все життя і смерть перевірити унікальність, чому б їм також не покладатися на правильність та дозвіл? Corda вже має поняття "нотаріуса, що перевіряє", який повністю перевіряє операції перед додаванням свого підпису. Замість того, щоб звичайні вузли Corda завантажувати та перевіряти предків своїх транзакцій, чому б просто не запитати нотаріуса? Це може допомогти у масштабованості та конфіденційності, оскільки більшість вузлів не бачать жодних транзакцій, крім власних. Ми можемо навіть припустити, що нотаріуси мережі повністю довіряють один одному, тому не потрібно турбуватися про предків. Нотаріус кожного штату міг поручитися за його дійсність, перевіряючи лише операцію, яка його створила, за допомогою інших нотаріусів.
Нехай Корда буде Кордою
Все це повертає нас до того, з чого ми почали: Corda насправді не є конкурентом звичайних блокчейнів, включаючи MultiChain. Corda - це Corda - цікавий новий тип розподіленої книги, яка оптимізована для потреб тих, хто її фінансує. Я не маю уявлення, чи вдасться Corda врешті досягти успіху чи не, тому що я не знаю її реальних витрат та переваг порівняно з нинішнім способом дій. Але що б не відбувалося в майбутньому, безумовно, варто вивчити з точки зору філософії та дизайну.
Що стосується MultiChain, ми застосовуємо інший підхід. Вкрасти рядок у Західне крило, ми твердо вирішили "дозволити блокчейну бути блокчейном". Блокчейни - це те, що вони є, і ми не плануємо перетворювати їх на щось інше. Як інфраструктура даних для спільного додатка, блокчейн являє собою конкретний компроміс у порівнянні з централізованою базою даних - виграш у дезінтермедіації за рахунок зменшення конфіденційності. І ми наполегливо працюємо над тим, щоб зробити MultiChain 2.0 найкращим із можливих blockchain платформа для використання розробниками додатків.
Будь ласка, залишайте будь-які коментарі на LinkedIn.
Джерело: https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- рахунки
- Скорочення
- активний
- Додатковий
- Перевага
- алгоритм
- алгоритми
- додаток
- застосування
- архітектура
- ПЛОЩА
- стаття
- активи
- Активи
- аудиторія
- авторизації
- Банк
- Банк Китаю
- Banking
- Банки
- КРАЩЕ
- Білл
- blockchain
- Box
- Створюємо
- Пакет
- бізнес
- випадків
- Викликати
- Генеральний директор
- сертифікат
- сертифікати
- зміна
- канали
- контроль
- Перевірки
- дитина
- діти
- Китай
- Citi
- закриття
- коментарі
- комерційний
- загальний
- компанія
- конкурс
- конкурентів
- Інформатика
- комп'ютери
- конфлікт
- Консенсус
- згода
- споживати
- зміст
- зміст
- контрактів
- Corda
- витрати
- створення
- круїз
- cryptocurrencies
- криптовалюта
- криптографія
- Поточний
- Зберігання
- Клієнти
- DAG
- Тире
- дані
- зберігання даних
- Database
- базами даних
- день
- угода
- затримка
- надання
- доставка
- дизайн
- Розробник
- розробників
- розробка
- DID
- цифровий
- Розподілена книга
- Долар
- слон
- Машинобудування
- підприємство
- Ефіріума
- обмін
- Біржі
- Здійснювати
- тканину
- ярмарок
- сім'я
- мода
- риси
- в кінці кінців
- фінансовий
- Фінансові установи
- кінець
- Перший
- перший раз
- Сфокусувати
- формат
- Повний
- фінансування
- засоби
- майбутнє
- Загальне
- Глобальний
- глобальний блокчай
- добре
- управління
- великий
- Group
- Зростання
- тут
- приховувати
- Високий
- Виділено
- історія
- Як
- HTTPS
- величезний
- ідея
- Особистість
- незаконний
- У тому числі
- промисловості
- інформація
- Інфраструктура
- Установа
- установи
- страхування
- взаємодія
- інтерес
- Взаємодія
- залучений
- IP
- видачі
- питання
- IT
- Java
- робота
- приєднатися
- ключ
- ключі
- знання
- великий
- вести
- Керівництво
- провідний
- вчений
- Гросбух
- легальний
- рівень
- світло
- Лінія
- Рідина
- список
- Довго
- основний
- Більшість
- Робить
- ринок
- ринки
- матч
- зустрічі
- члени
- згадує
- мільйона
- модель
- гроші
- рухатися
- багатоланцюговий
- мережу
- мережа
- мереж
- вузли
- поняття
- відкрити
- з відкритим вихідним кодом
- порядок
- замовлень
- Інше
- інші
- власник
- Власники
- Біль
- Папір
- парадигма
- батьки
- Платити
- оплата
- платежі
- Люди
- продуктивність
- перспектива
- філософія
- картина
- платформа
- Платформи
- популярний
- представити
- price
- недоторканність приватного життя
- приватний
- Product
- Production
- доказ
- власність
- захист
- громадськість
- R3
- читачі
- читання
- Реальність
- Короткий огляд
- облік
- Регулювання
- Відносини
- допомога
- Вимога
- ресурси
- вихід на пенсію
- огляд
- Risk
- Правила
- прогін
- біг
- масштабованість
- наука
- SEA
- бачить
- сенс
- комплект
- загальні
- Доставка
- Короткий
- Ознаки
- простий
- невеликий
- So
- Софтвер
- Рішення
- ВИРІШИТИ
- швидкість
- Витрати
- поширення
- частка
- старт
- почалася
- стан
- Штати
- Статус
- зберігання
- зберігати
- магазинів
- Опори
- поверхню
- система
- технічний
- тест
- Майбутнє
- Мислення
- треті сторони
- час
- терпимість
- Простежуваність
- угода
- Transactions
- Перетворення
- прозорість
- перевезення
- Довіряйте
- Нехеш
- us
- USD
- користувачі
- грань
- перевірка
- вид
- Віртуальний
- віртуальна машина
- видимість
- Голосування
- чекати
- West
- ВООЗ
- Вікіпедія
- виграти
- Work
- світ
- вартість
- лист
- років
- Zcash
- нуль