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

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

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

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

The ledger

Паняцце 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

Дадаць каментар