Corda - open source blockchain untuk bisnis

Corda adalah buku besar yang didistribusikan untuk menyimpan, mengelola, dan menyinkronkan kewajiban keuangan antara berbagai lembaga keuangan.

Corda memiliki dokumentasi yang cukup bagus dengan ceramah video, yang dapat ditemukan di sini . Saya akan mencoba menjelaskan secara singkat bagaimana Corda dibangun di dalam.

Pertimbangkan fitur utama Corda dan keunikannya di antara blockchain lainnya:

  • Corda tidak memiliki cryptocurrency sendiri.
  • Corda tidak menggunakan konsep penambangan dan sistem Bukti Kerja.
  • Transfer data hanya terjadi antara peserta transaksi / kontrak. Tidak ada siaran global ke semua node jaringan.
  • Tidak ada pengendali pusat yang mengelola semua transaksi.
  • Corda mendukung berbagai mekanisme konsensus.
  • Konsensus dicapai antara peserta di tingkat perjanjian / kontrak terpisah, dan bukan di tingkat seluruh sistem.
  • Suatu transaksi dikonfirmasi hanya oleh para peserta yang terkait dengannya.
  • Corda menawarkan tautan langsung antara bahasa hukum manusia formal dan kode kontrak pintar.

Buku besar


Konsep buku besar dalam Corda adalah subyektif. Tidak ada gudang data pusat tunggal. Alih-alih, setiap node menyimpan basis data terpisah dari fakta yang diketahui.

Sebagai contoh, bayangkan sebuah jaringan 5 node, di mana lingkaran adalah fakta yang diketahui node.



Seperti yang bisa kita lihat, Ed, Carl dan Demi tahu tentang fakta 3, dan Alice dan Bob bahkan tidak mencurigainya. Corda menjamin pelestarian fakta-fakta umum dalam basis data setiap simpul, dan datanya akan sama.

Serikat


Status adalah objek yang tidak dapat diubah , yang merupakan fakta yang diketahui oleh satu atau lebih node jaringan pada titik waktu tertentu.

Negara dapat menyimpan data sewenang-wenang, misalnya, saham, obligasi, pinjaman, informasi identifikasi.

Misalnya, status berikut adalah IOU - perjanjian bahwa Alice berutang Bob sejumlah X:


Siklus kehidupan suatu fakta dari waktu ke waktu diwakili oleh suatu urutan keadaan. Saat diperlukan untuk memperbarui kondisi saat ini, kami membuat yang baru, dan menandai yang sekarang sebagai historis.



Transaksi


Transaksi adalah saran untuk memperbarui buku besar-a. Mereka tidak disiarkan ke semua peserta buku besar dan hanya tersedia bagi anggota jaringan yang memiliki hak hukum untuk melihat dan mengelola mereka.

Transaksi akan ditambahkan ke buku besar jika:

  • kontrak berlaku
  • ditandatangani oleh semua peserta yang diperlukan
  • tidak mengandung limbah ganda (doble-spend)

Corda menggunakan model UTXO (keluaran transaksi yang tidak dibelanjakan), di mana setiap status buku besar tidak berubah.

Ketika transaksi dibuat, keadaan input dari transaksi sebelumnya (dengan hash dan indeks) ditransmisikan ke input.


Siklus Hidup Transaksi:

  • Pembuatan (Saat ini, transaksi hanyalah proposal untuk meningkatkan buku besar-a)
  • Pengumpulan tanda tangan (Peserta yang diwajibkan dalam transaksi menyetujui proposal pembaruan dengan menambahkan tanda tangan pada transaksi)
  • Mengirimkan komit dalam buku besar

Setelah menambahkan transaksi ke buku besar, status input ditandai sebagai historis dan tidak dapat digunakan dalam transaksi di masa depan.


Selain status input dan output, transaksi dapat berisi:

  • Perintah (parameter transaksi yang menunjukkan tujuan transaksi)
  • Lampiran (kalender liburan, konverter mata uang)
  • Jendela sementara (masa berlaku)
  • Notaris (Notaris, anggota jaringan khusus, memvalidasi transaksi)


Kontrak


Ketika kita berbicara tentang validitas transaksi, yang kami maksud bukan hanya ketersediaan tanda tangan yang diperlukan, tetapi juga validitas kontrak. Setiap transaksi dikaitkan dengan kontrak yang menerimanya dan memvalidasi status input dan output. Suatu transaksi dianggap sah hanya jika semua statusnya valid.

Kontrak dalam Corda ditulis dalam bahasa JVM apa saja (misalnya, Jawa, Kotlin).

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

Anda harus mewarisi dari kelas Kontrak dan mengganti metode verifikasi . Dalam hal validasi tidak valid, pengecualian dilemparkan.

Vadidasi transaksi harus bersifat deterministik, mis. Kontrak harus selalu menerima atau menolak transaksi. Sehubungan dengan ini, validitas transaksi tidak dapat bergantung pada waktu, angka acak, file host, dll.

Di Corda, kontrak dieksekusi di kotak pasir yang disebut, JVM yang sedikit dimodifikasi yang menjamin pelaksanaan kontrak secara deterministik.

Streaming


Untuk mengotomatiskan komunikasi host, utas telah ditambahkan.

Aliran adalah urutan langkah-langkah yang memberi tahu simpul cara melakukan pembaruan buku besar tertentu, pada titik mana perlu untuk menandatangani dan memvalidasi transaksi.



Terkadang butuh berjam-jam, berhari-hari sampai transaksi ditandatangani oleh semua pihak dan berakhir di buku besar. Apa yang terjadi jika Anda memutuskan simpul yang terlibat dalam transaksi? Streaming memiliki breakpoint di mana keadaan aliran ditulis ke basis data node. Ketika mengembalikan sebuah simpul dalam jaringan, ia akan melanjutkan dari tempat di mana ia berhenti.

Konsensus


Untuk masuk ke buku besar, transaksi harus mencapai 2 konsensus: tentang validitas dan keunikan.

Keputusan tentang validitas transaksi dibuat hanya oleh pihak-pihak yang terlibat langsung.

Simpul notaris memverifikasi transaksi untuk keunikan, mencegah pengeluaran ganda.

Misalkan Bob memiliki $ 100, dan ia ingin mentransfer $ 80 ke Charlie dan $ 70 ke Dan, menggunakan status input yang sama.



Trik seperti itu Corda tidak akan membiarkan engkol. Meskipun transaksi akan melewati pemeriksaan validasi, pemeriksaan keunikan akan gagal.

Kesimpulan


Platform Corda, yang dikembangkan oleh konsorsium blockchain R3, bukan contoh murni dari penggunaan teknologi blockchain. Corda adalah alat yang sangat khusus untuk lembaga keuangan.

Source: https://habr.com/ru/post/id452258/


All Articles