-->
ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00

BLANTERWISDOM105

Definisi Smart Contracts dan Chaincode dalam Blockchain

12/15/2019
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.
  1. Get biasanya mereprensentasikan query untuk mengambil informasi tentang keadaan saat ini dari objek bisnis.
  2. Put biasanya menciptakan objek bisnis baru atau memodifikasi yang sudah ada di Ledger World State.
  3. 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.


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)));

}

Inti dari Smart Contract adalah serangkaian definisi transaksi. Misalnya, fabcar.js adalah transaksi smart contract yang membuat mobil baru:
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