Blockchain: Solusi P2P Networking Economy (Blockchain Seri-2)

By Togar Alam Napitupulu

Pada Blockchain Seri-1 kita telah menghipotesiskan bahwa Blockchain ini menjadi solusi Distributed Peer-to-peer (P2P) networking economy.  Pada bagian ini akqn dicoba dijelaskan bagaimana Blockchain secara teksin computer dapat menjasi  solusi P2P Netwotking Economy tersebut.

Dari sudut pandang implementasi (software engineering), blockchain tidak lain dan tidak bukan adalah rangkaian blocks yang berkaitan satu sama lain. Dalam jargon structure data blockchain bisa dikatakan sama dengan linked list, yaitu linked list of blocks; dimana blok-blok ini dikaitkan satu dengan yang lain melalui alamat blok sebelumnya yang ada pada blok sesudahnya. Adapun block nya sendiri merupakan data (secara ekonomi, data ini merupakan transaksi); record misalnya. Perhatikan gambar berikut:

Dalam blockchain ini terdapat dua blok di mana B1 adalah alamat dari Block 1, sedangkan B2 adalah alamat dari blok 2. Pada blok 1 terapat dua record (data) yang mencatat transaksi, yaitu transaksi 1 dan transaksi 2. Setiap blok ada header-nya. Dalam header ini terdapat alamat kerdua transaksi, yaitu R12, dimana masing-masing transaksi punya alamat sendiri-sendiri yaitu R1 dan R2. Demikian pula dengan blok 2 memiliki dua record atau transaksi dengan masing-masing alamat; sedangkan alamat gabungan transaksi blok2 adalah R34. Segera kita lihat dari mana nama blockchain tersebut berasal, yaitu rantai (chain)-blok. Catatan: R12 dan R34 disebut Merkle Tree.

Yang menjadi kunci yang membedakan blockchain ini dengan struktur data linked list biasa adalah, semua alamat dari block tertentu merupakan HASH (encripsi) dari semua yang ada pada blok sebelumnya; demikian pula dengan alamat dari merkel tree dibawahnya (cabang-cabangnya) merupakan HASH dari semua cabang itu; dan seterusnya alamat dari transaksi tertentu dalam cabang merupakan HASH dari transaksi tersebut.

Sebagai contoh, B1 misalnya merupakan HASH dari semua informasi (dalam bentuk digit termasuk alamat2 atau hasil HASH) dari block1; B2 merupakan HASH dari block 2; R12 merupakan HASH dari semua yang ada dibawahnya; R1 merupakan HASH dari Transaksi 1; R2 merupakan HASH dari Transaksi 2; dst. HASH ini merupakan fungsi irreversible yaitu bahwa data awal tidak bisa kita generate dari output HASH. Kedua, fungsi HASH ini bersifat collision free; artinya HASH dari satu input tidak akan sama dengan HASH dari input yang berbeda; artinya unik.

Untuk lebih memahami algorithma HASH-256 misalnya anda dipersilakan mencobanya dengan link berikut:        https://emn178.github.io/online-tools/sha256.html.

Kalau ada blok baru, tinggal di-append saja pada awal dari blockchain. Secara teknis, bisa saja di-insert diantara blok 1 dan blok 2. Tapi untuk blockchain technology, yang dilakukan adalah append, untuk mejamin immutability.  Selanjutnya apabila setiap Node dalam network memiliki copy dari setiap blockchain, maka transparansi dan trust juga akan terjamin.

Kedua, blockchain ini, sebenarnya bagi orang yang familiar dengan akunting, mirip dengan ledger transaksi.

Secara teknis software engineering ada tujuh “Task” yang harus dilakukan dalam merancang blockchain seperti diuraikan ringkas di bawah ini, untuk menjamin masalah-masalah yang mungkin terjadi dalam peer-to-peer-distributed system (blockchain Seri-1) dapat diatasi. Tujuh “Task” itu adalah:

  1. Describing Ownership: Through history of transaction data

Dalam blockchain, transaksi berperan dalam mengclarifikasi kepemilikan. Dalam data transaksi terdapat informasi tentang  (1) identitas dari akun yang meng-inisiasi transaksi dan akan mentransfer kepemilikan kepada akun yang lain, (2) identitas dari akun yang akan menerima transfer kepemilikan, (3) jumlah yang akan di transfer, (4) waktu transaksi, (5) fee yang akan dibayarkan kepada system untuk eksekusi transaksi, (6) tanda bukti bahwa pemilik akun yang akan mentransfer kepemilikan setuju dengan transfer tersebut, (7) data transaksi historis yang dapat diaudit sebagai bukti bagaimana pelaku mendapatkan dan memindahkan kepemilikan, (8) setiap transaksi yang tidak terdapat pada data trnasaksi historis tersebut dianggap tidak pernah terjadi, (9) eksekusi transaksi dilakukan dengan menambahkannya ke data transaksi historis dan memungkinkan aggregasi hasil transaksi, (10) urutan penambahan  transaksi pada transaksi historis harus dipertahankan agar menghasilkan hasil yang sama pada saat proses agregasi, (11) agar integritas dapat terpelihara, hanya transaksi yang memenuhi kriteria ini lah yang ditambahkan ke struktur-data-blockchain, i.e., benar secara formal, benar secara semantic, dan memiliki otorisasi.

 

  1. Protecting Ownership: Through Digital Signature

Sama seperti tandatangan tertulis yang harus unik, yang menunjukkan bahwa penandatangan setuju dengan isi dari dokumen serta setuju dengan implementasinya, maka tandatangan digital merupakan equivalen dari tandatangan tertulis tsb. Tanda tangan digital memiliki dua manfaat, yaitu, (1) secara unik meng-identifikasi pemiliknya dan (2) menyatakan persetujuan pemilik akan isi dari dokumen dan meng-otorisasi eksekusinya. Dalam blockchain, tanda tangan digital dari suatu transaksi adalah nilai cryptographic hash dari data transaksi yang dienkripsi dengan private key dari akun yang menyerahkan kepemilikan. Tanda tangan digital ini dapat dilacak kembali secara unik ke satu private key tertentu dan ke satu transaksi tertentu dalam satu proses.

  1. Storing Transaction Data: Through Blockchain-Data-Structure

 

Berikut ini adalah tahapan-thapan yang harus dilakukan dalam menambahkan data transaksi baru kedalam struktur data blockchain: (1) ciptakan Merkle tree yang baru yang berisikan semua transaksi yang akan ditambahkan kedalam blockchain, (2) ciptakan header dari blok yang baru yang berisikan hash reference ke header sebelumnya, dan root dari Merkle tree yang berisikan data transaksi yang baru, (3) ciptakan hash reference ke blok header yang baru, yang sekarang menjadi head saat ini dari stukture-data blockchain, (4) perubahan data pada suatu struktur data blockchain membutuhkan pembaharuan semua hash references  mulai dari yang menunjuk pada data yang sedang dimanipulasi dan berakhir pada head dari stuktur-data-blockchain keseluruhan termasuk semua hash references diantaranya, (5) pendekatan pada perubahan data dalam struktur-data-blockchain mengikuti all-or-nothing filosofi, yaitu merubah semua struktur data mulai dari titik dimana terjadi perubahan sampai dengan head dari semua rantai (chain), atau tidak merubah struktur data sama sekali.

 

  1. Preparing Ledger for Being Distributed: Through Immutability

Blockchain memproteksi data transaksi historis dari manipullasi dan pemalsuan dengan cara menyimpan data dalam penyimpanan data yang tidak dapat dirubah-rubah (immutable). Transaksi historis ini dibuat menjadi immutable dengan dua cara, yaitu (1) menyimpan data transaksi dalam struktur-data-blockchain yang sensitive terhadap perubahan, di mana bila terjadi perubahan maka dibutuhkan menulis kembali struktur data dari titik dimana terjadi perubahan sampai head dari keseluruhan rantai, (2) memerlukan solusi dari suatu teka-teki untuk menulis, menulis kembali, dan menambah setiap block header kedalam struktur-data-blockcahin.

Teka-teki hash (hash puzzle) ini adalah unik untuk setiap block header sebab ia tergantung pada keunikan isi dari block tersebut. Selanjutnya kebutuhan untuk menulis kembali data-stucktur-blockchain, mana kala terjadi perubahan dibandingkan dengan biaya melakukannya membuat keinginan memanipulasi histori dari transaksi menjadi tidak menarik sama sekali. Dengan syarat bahwa teka-teki hash harus diselesaikan manakala ingin menulis, menulis kembali, atau menambahkan block headers ke dalam stuktur-data-blockchain membuatnya menjadi hanya menempelkan perubahan data tersebut pada awal dari stuktur data (append only).

Setiap  block header mengandung paling tidak data berikut: (1) hash reference (pointer) ke block sebelumnya (lihat gambar di atas), (2) akar dari Merkle tree dimana data disimpan, (3) tingkat kesulitan dari teka-teki hash (hash puzzle), (4) waktu saat pemecahan teka-teki dimulai, (5) nonce pada saat mana teka-teki di pecahkan.

 

  1. Distributing Ledger: Through Information Forwarding in Network

 

Komputer-komputer dalam sistem peer-to-peer (P2P) berkomunikasi satu sama lain melalui network digital. Karena internet sudah hadir dimana-mana, maka sebaiknya distributed P2P diciptakan dengan menghubungkan semua individu melalui internet. Sistem P2P yang menggunakan internet sebagai medium komunikasi dicirikan oleh fakta berikut: (1) semua computer terkoneksi satu sama lain via internet, (2) setiap computer dikenal dengan alamat yang unik, (3) setiap computer dapat di-disconnect  atau re-conect dengan system setiap saat, (4) setiap computer memiliki daftar peers dengan siapa dia terkoneksi dan berkomunikasi, (5) komunikasi antara computers atau nodes menggunakan system messages (pesan), (6) pesan dikirim dari satu node ke node lainnya melalui internet dengan mengunakan alamat masing-masing yang unik.

Karena hakekat dari jaringan internet yang bebas maka berdampak pula tehadap komunikasi antar individu yang dicirikan oleh fakta berikut: (1) pesan tidak dijamin sampai ke alamat yang dituju, sebaliknya bisa saja hilang, (2) pesan bisa saja tiba di alamat lebih dari satu kali, (3) pesan bisa saja tiba di alamat dengan urutan yang berbeda dengan urutan pengiriman.

Masallah-masalah komunikasi pada jaringan yang tidak terandalkan seperti di atas di selesaikan oleh blockchain dengan cara-cara berikut: (1) pesan disebarkan ke semua nodes dengan pola gossip, Setiap node yang menerima pesan akan memforward-nya ke peers yang berkomunikasi dengan dia, yang selanjutnya mengkomunikasikan pesan ini dengan cara yang sama kepada yang lain, (2) duplikat dari transaksi atau block dikenali dan difilter berdasarkan nilai dari hash cryptographic nya, (3) setiap node dapat mengurut informasi yang diterima karena data transaksi dan blok mengadung waktu transaksi (time stamp).

Komunikasi antara computer atau nodes yang membentuk system P2P berperan melakukan manfaat-manfaat berikut : (1) menjamin koneksi saat ini tetap berjalan, (2) menciptakan koneksi yang baru, (3) mendistribusikan informasi baru.

.

  1. Adding New Transation: Through Blockchain Algorithm

 

Algoritma blockchain merupakan rangkaian instruksi atau aturan-aturan yang mengelola bagaimana transaksi diproses dan ditambahkan ke rantai blockchain. Tantangan yang diselesaikan oleh algoritma ini adalah memastikan system tetap terbuka kepada semua individu, dan pada waktu yang sama memastikan hanya transaksi yang valid dan diotorisasi lah yang dapat ditambahkan ke rantai blockchain.

Algoritma blockchain itu sendiri menerapkan prisip carrot-and-stick dikombinasikan dengan persaingan dan control peer. Ide dasarnya adalah memberikan kesempatan bagi anggota atau nodes dalam system untuk berperan sebagai supervisor dari peer-peer mereka, dan memberikan reward bagi yang menambahkan transaksi yang valid dan yang diberi otorisasi dan juga untuk menemukan error dalam pekerjaan peers yang lainnya. Sebagai dampaknya algoritma ini memberi insentive bagi semua nodes dalam system untuk mensupervise dan menemukan kesalahan yang dilakukan oleh peer-peer lainnya.

Pada prinsipnya algoritma ini didasarkan pada konsep berikut: (1) adanya validation rules untuk data transaksi dan headders dari blok, (2) reward apabila memasukkan blok yang valid serta punishment bagi yang melanggar integritas dari system, (3) persaingan diantara peers untuk mendapatkan reward berdasarkan kecepatan process dan kualitas, (4) control dari sesama peers.

Aturan persaingan dilakukan dengan dua step ritme yang mengatur hasil pekerjaan dari semua nodes dalam jaringan. Pada setiap titik dalam rentang waktu, semua nodes dalam system akan berada pada salah satu dari dua fase ini: (1) mengevaluasi blok baru yang diciptakan oleh peserta lainnya, dan (2) mencoba sedapat mungkin menjadi node berikutnya yang menciptakan blok baru yang harus dievaluasi oleh nodes lainnya.

Ritme dari kerja persaingan ini ditentukan oleh kedatangan pesan pada masing-masing nodes.  Mayoritas nodes yang jujur dan keinginan keras mereka untuk mendapatkan reward akan mengalahkan nodes yang tidak jujur dan berniat dalam upaya melanggar intergritas dari system.

 

  1. Deciding Which Ledger Represent the Truth: Through Distributed Consensus

Delay dalam pegiriman block baru kepada semua anggota jaringan atau dua nodes sama-sama menciptakan blok yang baru pada waktu yang bersamaan atau sangat bersamaan, akan menyebabkan struktur-data-blockchain bertumbuh menjadi seperti pohon dimana cabang-cabang akan bertumbuh dari pokok yang sama yang membuat terjadinya versi dari histori transaksi yang conflicting. Oleh karena itu, dalam memilih versi histori transaksi yang identik adalah merupakan permasalahan pengambilan keputusan kolektif dari semua anggota dalam sebuah system yang purely distributed P2P.

Pengambilan keputusan kolektif dalam blockchain dicirikan oleh fakta-fakta berikut: (1) semua nodes beroperasi pada lingkungan yang identik yang terdiri dari jaringan (network), nodes yang memiliki dan memelihara salinan dari struktur-data blockchain itu sendiri dan algoritma-blockchain yang mengatur perilaku dari setiap nodes, (2) problem pengambilan keputusan adalah memilih transaksi historis yang identik pada semua nodes, (3) semua nodes berupaya memaksimumkan pendapatan masing-masing dari reward atas keberhasilan menambahkan blok baru yang valid ke dalam stuktur-data-blockchain, (4) untuk mencapai tujuan mereka, semua nodes mengirim blok baru mereka kepada semua peers mereka untuk dievaluasi dan diteliti serta diterima. Sebagai akibatnya, semua nodes akan meninggalkan jejak masing-masing dalam lingkungannya, yaitu stuktur-data-blockchain yang secara kolektif dipelihara bersama, (5) semua nodes menggunakan kriteria menseleksi data transaksi historis yang identik. Kriteria the-longest-chain mengatakan bahwa setiap node secara independen memilih jalur dari tree-shaped stuktur-data-blockchain yang memiliki blok-blok yang terbanyak; sedangkan the-heaviest-chain-criterion mengatakan bahwa setiap node secara independen memilih jalur dari tree-shaped stuktur-data-blockchain yang memiliki kesulitan secara agregat tertinggi.

 

References

  1. Drescher, Daniel (2017). Blockchain Basics: A Non-Technical Introduction in 25 Steps. Frankfurt, Germany.
  2. Mukhopadhyay, Mayukh (2018). Ethereum Smart Contract Development: Building Blockchain-based decentralized Applications using Solidity. Packt Publishing, UK.