Corda - open source блокчейн для бізнесу

Corda – це розподілений Ledger для зберігання, управління та синхронізації фінансових зобов'язань між різними фінансовими організаціями.
Corda - open source блокчейн для бізнесу
У Corda досить хороша документація з відеолекціями, яку можна знайти тут. Я постараюся коротко описати як влаштований Corda всередині.

Розглянемо основні особливості Corda та унікальність його серед інших блокчейнів:

  • Corda не має власної криптовалюти.
  • Corda не використовує концепцію майнінгу та систему Proof-of-Work.
  • Передача даних відбувається лише між учасниками транзанкції/контракту. Тут немає глобального броадкастингу всім вузлам мережі.
  • Немає центрального контролера, який керує всіма транзакціями.
  • Corda підтримує різні механізми консенсусу.
  • Консенсус досягається між учасниками на рівні окремої угоди/контракту, а не на всій системі.
  • Транзакція підтверджується лише учасниками, які належать до неї.
  • Corda пропонує прямий зв'язок між формальною людською юридичною мовою та кодом смарт-контрактів.

Книга

Концепція ledger в Corda суб'єктивно. Немає єдиного центрального сховища даних. Натомість кожен вузол підтримує окрему базу даних відомих йому фактів.

Наприклад, уявіть мережу з 5 вузлів, де коло – це відомий вузлу факт.

Corda - open source блокчейн для бізнесу

Як ми бачимо, Ed, Carl та Demi знають про факт 3, а Alice та Bob про нього навіть не підозрює. Corda гарантує збереження загальних фактів до бази кожного вузла, причому дані будуть ідентичними.

стану

Стан - це незмінний об'єкт, що є фактом, відомий одному або декільком вузлам мережі в певний момент часу.

Стани можуть зберігати довільні дані, наприклад, акції, облігації, кредити, ідентифікаційну інформацію.

Наприклад, наступний стан являє собою IOU — угоду про те, що Аліса заборгувала Бобу суму X:

Corda - open source блокчейн для бізнесу
Життєвий цикл факту з часом представлений послідовністю станів. Коли потрібно оновити поточний стан, ми створюємо новий, а поточний позначаємо як історичний (historic).

Corda - open source блокчейн для бізнесу

Транзакції

Транзакції – це пропозиції щодо оновлення ledger-a. Вони не транслюються всім учасникам ledger-a і доступні лише тим учасникам мережі, які мають законне право на їх перегляд та управління.

Транзакція буде додана до ledger, якщо вона:

  • контрактно валідна
  • підписано всіма необхідними учасниками
  • не містить подвійних витрат (doble-spends)

Corda використовує модель UTXO (unspent transaction output), в якій кожен стан ledger є незмінним.

При створенні транзакції на вхід передається output стан попередньої транзакції (по хешу та індексу).

Corda - open source блокчейн для бізнесу
Життєвий цикл транзакції:

  • Створення (На даний момент транзакція лише пропозиція з оновлення ledger-a)
  • Збір підписів (Необхідні учасники транзакції схвалюють пропозицію щодо оновлення шляхом додавання підпису до транзакції)
  • Коміт транзакції в ledger

Після додавання транзакції в ledger вхідні стани позначаються як історичні і не можуть використовуватись у майбутніх транзакціях.

Corda - open source блокчейн для бізнесу
Крім вхідних та вихідних станів, транзакція може містити:

  • Команди (параметр транзакції, що вказує на мету транзакції)
  • Вкладення (календар свят, конвертер валют)
  • Тимчасові вікна (термін дії)
  • Нотаріус (Notary, особливі учасники мережі, що валідують транзакції)

Corda - open source блокчейн для бізнесу

контракти

Коли ми говоримо про валідність транзакції, то маємо на увазі не лише наявність необхідних підписів, а й валідність за контрактом. Кожна транзакція пов'язана з контрактом, який приймає її та валідує вхідні та вихідні стани. Транзакція вважається валідною, тільки якщо всі її стани валідні.

Контракти в Corda пишуться будь-якою JVM мовою (наприклад, Java, Kotlin).

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

Необхідно успадковуватись від класу Контракт та перевизначити метод перевірити. У разі невалідності транзації викинеться виняток.

Вадидація транзакцій має бути детермінованою, тобто. Договор завжди повинен або прийняти, або відхилити транзакцію. У зв'язку з цим валідність транзакції неспроможна залежати від часу, випадкових чисел, файлів вузла мережі та інших.

У Corda контракти виконуються в так званій пісочниці — трохи зміненій JVM, що гарантує виконання контрактів.

потоки

Щоб автоматизувати спілкування вузлів мережі, було додано потоки.

Потік - це послідовність кроків, яка повідомляє вузлу, як виконати конкретне оновлення ledger-a, коли необхідно підписати і провалідувати транзакцію.

Corda - open source блокчейн для бізнесу

Іноді потрібний годинник, дні поки транзакція підпишеться всіма сторонами і потрапить у ledger. Що ж станеться, якщо відключити вузол, який бере участь у транзакції? Потоки мають контрольні точки, в яких стан потоку записується в базу даних вузла. При відновленні вузла в мережі він продовжить з місця, де зупинився.

консенсус

Щоб потрапити в ledger, транзакція має досягти 2 консенсусу: на валідність та на унікальність.

Рішення про валідність транзакції приймається лише сторонами, залученими до неї безпосередньо.

Нотаріальні ноди проводять перевірку транзакції на унікальність, запобігають подвійним витратам.

Уявімо, що у Bob-a є 100 $, і він хоче перекласти 80 $ Charlie і 70 $ Dan-у, використовуючи один і той же вхідний стан.

Corda - open source блокчейн для бізнесу

Такий трюк Corda не дозволить провернути. Хоч транзакція пройде перевірку на валідність, перевірка на унікальність провалиться.

Висновок

Платформа Corda, розроблена блокчейн-консорціум R3, не є чистим прикладом використання технології блокчейн. Corda - це достатньо вузькоспеціалізований засіб для фінансових організацій.

Джерело: habr.com

Додати коментар або відгук