Dari
perspektif pengembangan aplikasi, smart contract dan ledger merupakan jantung
dari sistem Hyperledger Fabric pada blockchain. Sedangkan ledger menyimpan
fakta tentang kondisi dan histori dari satu objek bisnis. Smart Contract
mendefinisikan logika yang dapat dieksekusi yang menghasilkan fakta baru yang
akan ditambahkan ke Ledger. Sebuah chainnode secara khusus digunakan oleh
Administrator pada group smart contract terkait untuk melakukan deployment.
Tetapi juga dapat digunakan low level system programming of Fabric. Pada
artikel kali ini, kita akan fokus mengapa diperlukan Smart Contract dan
Codechain dan bagaimana dan kapan menggunakannya?
Deployment adalah kegiatan yang bertujuan untuk menyebarkan aplikasi yang telah dikerjakan oleh para pengembang
Apa Itu Smart Contract?
Sebelum
bisnis dapat saling bertransaksi, mereka harus menetapkan serangkaian kontrak bersama
yang mencakup istilah umum, data, aturan dan definsi konsep, dan proses. Kontrak-kontrak
ini menjabarkan model bisnis yang mengatur semua interaksi antara pihak-pihak
yang saling bertransaksi.
Smart
Contract mendefinisikan aturan antara berbagai organisasi dalam kode yang dapat
dieksekusi (executable code). Aplikasi (Applications invoke) meminta smart
contract untuk menghasilkan transaksi yang dicatat pada ledger.
Dengan
menggunakan jaringan blockchain, kita dapat mengubah kontrak ini menjadi program
yang dapat dieksekusi yang biasa disebut Smart Contract. Smart Contract ini
digunakan untuk dapat membuka berbagai kemungkinan baru karena smart contract
dapat menerapkan aturan tata kelola yang ditegakkan untuk semua jenis objek
bisnis secara otomatis ketika smart contract dijalankan.
Misalnya,
smart contract mungkin akan memastikan bahwa pengiriman mobil baru dilakukan
dalam jangka waktu tertentu atau bahwa dana dapat dicairkan sesuai dengan
persyaratan yang telah diatur sebelumnya. Namun yang paling penting dalam
pelaksanaan smart contract ini adalah proses bisnis akan menjadi lebih efisien
dan efektif daripada menggunakan proses bisnis secara manual.
Pada
diagram di atas, kita dapat melihat bagaimana dua Organisasi yaitu ORG1 dan
ORG2 mempunyai Query Car Smart Contract untuk mentransfer dan update Cars.
Aplikasi dari organisasi ini meminta smart contract untuk melakukan langkah
kesepakatan proses bisnis misalnya untuk mentransfer kepemilikan mobil dari
ORG1 ke ORG2.
Terminologi
User
Fabric Hyperledger sering menggunakan istilah smart contract dan chaincode
secara bergantian. Secara umum, smart contract mendefinisikan logika transaksi
yang mengendalikan siklus hidup suatu objek bisnis yang terdapat di world state.
Ini kemudian dikemas ke dalam chaincode yang kemudian di-deploy untuk jaringan
blockchain. Anggap saja smart contract sebagai transaksi yang mengatur,
sedangkan chaincode mengatur bagaimana smart contract dikemas untuk deployment.
Smart
Contract didefinisikan dalam chaincode. Beberapa smart contract dapat
didefinisikan dalam chaincode yang sama. Ketika chaincode di-deploy, semua
smart contract di dalamnya dibuat tersedia untuk aplikasi.
Dalam
diagram, kita dapat melihat chaincode kendaraan yang berisi tiga smart
contract: mobil, kapal, dan truk. Kita juga dapat melihat chaincode
asuransi yang berisi empat smart contract: kebijakan, kewajiban, sindikasi,
dan sekuritisasi. Dalam kedua kasus kontrak ini mencakup aspek-aspek kunci
dari proses bisnis yang berkaitan dengan kendaraan dan asuransi. Dalam topik
ini, kita akan menggunakan kontrak mobil sebagai contoh. Kita dapat melihat
bahwa smart contract adalah program khusus domain yang terkait dengan proses
bisnis tertentu, sedangkan chaincode adalah wadah teknis dari sekelompok smart
contract terkait untuk pemasangan dan Instansiasi.
Instansiasi adalah proses untuk membuat objek dari sebuah class dalam pemograman. Membuat instan Objek dari sebuah class dilakukan dengan menggunakan kata kunci new
Smart Contract dan Ledger
Pada
tingkat yang paling sederhana, blockchain secara immutably (tidak dapat diubah)
mencatat transaksi pembaharuan status dalam ledger. Smart Contract secara
program mengakses dua bagian yang berbeda dari ledger pada sebuah blockchain,
yang secara immutably mencatat sejarah semua transaksi, dan word state akan
menyimpan cache dari nilaii status-status tersebut.
Smart
Contract terutama status put, get and delete pada world state, dan juga dapat
meminta catatan transaksi blockchain yang immutable.
- Get biasanya mereprensentasikan query untuk mengambil informasi tentang keadaan saat ini dari objek bisnis.
- Put biasanya menciptakan objek bisnis baru atau memodifikasi yang sudah ada di Ledger World State.
- Delete biasanya mereprensentasikan penghapusan objek bisnis status ledger saat ini, tetapi bukan riwayatnya.
Development
Smart
Contract hanya fokus pada pengembangan aplikasi dan seperti yang kita lihat,
satu atau beberapa smart contract dapat didefinisikan dalam chaincode tunggal.
Deploy chainode ke dalam jaringan membuat semua smart contract tersedia untuk
organisasi yang terlibat pada jaringan. Ini berarti bahwa, hanya administrator
yang butuh mengkhawatirkan tentang chainnpde, yang lain berpikir terms of smart
contracts.
Inti
dari Smart Contract adalah serangkaian definisi transaksi. Misalnya, fabcar.js
adalah transaksi smart contract yang membuat mobil baru:
async BuatCar(ctx,
CarNumber, buat, model, warna, pemilik){
const car = {
warna,
docType: 'car',
buat,
model,
pemilik,
};
await ctx.stub.putState(carNumber,
Buffer.from(JSON.stringify(car)));
}
Smart
contract dapat menggambarkan hampir semua kasus bisnis yang berkaitkan dengan
data yang immutability pada multi-organisasi dalam membuat keputusan. Tugas pengembang
smart contract adalah mengatur proses bisnis yang sudah ada sebelumnya seperti
mengatur harga finansial atau kondisi pengiriman dengan menggunakan Bahasa pemrograman
seperti JavaScript, GOLANG atau Java.
Endorsement
Terkait
dengan setiap chaincode adalah kebijakan dukungan (endorsement policy) yang
berlaku untuk semua smart contract yang ditentukan di dalamnya. Kebijakan
pengesahan sangat penting; itu menunjukkan organisasi mana dalam jaringan
blockchain yang harus menandatangani transaksi yang dihasilkan oleh smart
contract yang diberikan agar transaksi tersebut dinyatakan valid.
Setiap
smart contract memiliki endorsement policy yang terkait dengannya. Kebijakan
pengesahan ini mengidentifikasi organisasi mana yang harus menyetujui transaksi
yang dihasilkan oleh smart contract sebelum transaksi tersebut dapat
diidentifikasi sebagai valid.
Contoh
endorsement policy mungkin menentukan bahwa tiga dari empat organisasi yang
berpartisipasi dalam jaringan blockchain harus menandatangani transaksi sebelum
dianggap valid. Semua transaksi, apakah valid atau tidak valid ditambahkan ke ledger
terdistribusi.
Jika endorsement
policy menetapkan bahwa lebih dari satu organisasi harus menandatangani
transaksi, maka smart contract harus dijalankan oleh sekumpulan organisasi yang
ada agar transaksi yang valid dapat dihasilkan. Dalam contoh di atas, transaksi
smart contract untuk transfer mobil perlu dilakukan dan ditandatangani oleh
ORG1 dan ORG2 agar valid.
Kebijakan
pengesahan adalah apa yang membuat Hyperledger Fabric berbeda dari blockchain
lainnya seperti Ethereum atau Bitcoin. Dalam sistem ini transaksi yang valid dapat
dihasilkan oleh setiap node di jaringan. Hyperledger Fabric lebih realistis
memodelkan untuk saat ini, transaksi harus divalidasi oleh organisasi terpercaya
dalam jaringan. Misalnya, organisasi pemerintah harus menandatangani transaksi
IssIdentity valid, atau pembeli dan penjual mobil harus menandatangani
transaksi transfer mobil. Kebijakan pengesahan dirancang untuk memungkinkan
Hyperledger Fabric memodelkan jenis interaksi dengan lebih baik.
Akhirnya,
kebijakan pengesahan hanyalah salah satu contoh kebijakan di Hyperledger
Fabric. Kebijakan lain dapat didefinisikan untuk mengidentifikasi siapa yang
dapat memperbarui buku besar, atau menambah atau menghapus peserta dari
jaringan. Secara umum, kebijakan harus disetujui terlebih dahulu oleh
konsorsium organisasi dalam jaringan blockchain, meskipun tidak ditetapkan
secara jelas.
Valid transactions
Ketika
sebuah smart contract dieksekusi maka smart contract running pada peer node
yang dimiliki oleh suatu organisasi di jaringan blockchain. Kontrak mengambil
seperangkat parameter input yang disebut proposal transaksi dan
menggunakannya dalam kombinasi dengan logika programnya untuk membaca dan
menulis buku besar.
Perubahan
pada world state di-capture sebagai respons proposal transaksi berisi set read-write
dengan kedua status yang telah dibaca, dan status baru yang akan ditulis jika
transaksi tersebut valid. Perhatikan bahwa world state tidak diperbarui ketika smart
contract dieksekusi!
Semua
transaksi memiliki pengidentifikasi, proposal, dan respons yang ditandatangani
oleh serangkaian organisasi. Semua transaksi dicatat di blockchain, apakah
valid atau tidak valid, tetapi hanya transaksi yang valid yang berkontribusi terhadap
world state.
Periksa
transaksinya. Anda dapat melihat Transaksi_3 untuk transfer mobil antara ORG1 dan
ORG2. Lihat bagaimana transaksi memiliki input (CAR1, ORG1, ORG2) dan output
(CAR1.pemilik = ORG1, CAR1.pemilik = ORG2), merepresentasikan perubahan pemilik
dari ORG1 menjadi ORG2. Perhatikan bagaimana input ditandatangani oleh
organisasi aplikasi ORG1 dan output ditandatangani oleh kedua organisasi yang
diidentifikasi oleh kebijakan pengesahan yaitu ORG1 dan ORG2. Tanda tangan ini
dihasilkan dengan menggunakan masing-masing private key peserta, ini berarti
bahwa siapa pun dalam jaringan dapat memverifikasi bahwa semua peserta dalam
jaringan sepakat tentang perincian transaksi.
Transaksi
yang didistribusikan ke semua peer node dalam jaringan divalidasi dalam dua
fase. Pertama, transaksi diperiksa untuk memastikan telah ditandatangani oleh
organisasi yang cukup sesuai dengan kebijakan pengesahan. Kedua, itu diperiksa
untuk memastikan bahwa nilai saat ini dari world state cocok dengan set
transaksi yang sudah dibaca ketika ditandatangani oleh peer node; bahwa belum
ada intermediate update. Jika suatu transaksi
melewati kedua fase ini maka transaksi dianggap valid. Semua transaksi
ditambahkan ke riwayat blockchain, apakah valid atau tidak valid, tetapi hanya
transaksi yang valid yang menghasilkan update pada world state.
Dalam
contoh, transaksi_3 adalah transaksi yang valid, sehingga pemilik CAR1 telah di-update
ke ORG2. Namun, transaksi_4 (tidak ditampilkan) adalah transaksi yang tidak
valid, jadi sementara itu dicatat dalam ledger, world state tidak diperbarui,
dan CAR2 tetap dimiliki oleh ORG2.
Share This :
0 Comments