Model Kepercayaan dalam Sistem – Part 2: Kepercayaan Mufakat (Consensus Trust)

Meetings by Friends of the Earth International

Pada artikel sebelumnya, gue membahas tentang chain-of-trus. Chain-of-trust ini adalah salah satu bentuk trust-model yang bersifat centralized atau tersentralisasi. Dia punya kelebihan tersendiri yaitu konsisten dan mudah dikontrol, tetapi dia juga punya dampak mistrust karena ada sosok otoritas di sana. Walaupun argumen konspirasi root-of-trust itu omong kosong, banyak kasus-kasus lainnya yang kita tidak bisa mempercayai entitas terpusat karena ditakutkan memiliki motif-motif tertentu atau karena kekurangan dari sistem tersentralisasi tersebut. Salah satu kekurangannya ya seperti yang sudah gue bahas yaitu: single point of failure. Oleh karena itu, ada bentuk trust-model yang dikenal berikutnya yang makin populer di dunia perkomputeran saat ini.

Kepercayaan Mufakat (Consensus Trust)

Ada kalanya kita tidak memiliki otoritas tunggal yang dapat memberikan informasi yang dipercaya. Misalnya masing-masing pihak memilik informasinya masing-masing. Dan setiap pihak merasa memiliki informasi yang bernilai kebenaran (truth). Lantas, bagaimanakah kita menetapkan informasi yang paling benar dari sekelompok informasi tersebut?

Boleh kita memberi contoh dari sisi agama Islam ya, soalnya ini yang paling mudah bagi gue untuk menjelaskan contohnya :). Untuk yang beragama Nasrani, sepertinya juga bisa dianalogikan yang sama dengan konsili Nikea serta Konklaf Kardinal.

Di agama Islam, kita mengetahui perawi Al-Hadist ada banyak orang dan dari berbagai macam kalangan dan latar belakang. Mereka memiliki banyak informasi tentang As-Sunnah yang diwariskan dari Rasulullah. Tapi banyak informasi tersebut yang saling beririsan, dan tak jarang juga yang saling bertolak belakang. Nah, bagaimana para ulama menentukan mana Al-Hadist yang kuat dan mana yang lemah? Pertama-tama mereka melakukannya melalui trace masing-masing sanad (sumber) dari hadist tersebut hingga ke root-of-trustnya, yaitu Rasulullah. Sampai sini prosesnya, hadist menggunakan mekanisme yang serupa dengan chain-of-trust.

Namun terdapat permasalahan dari chain-of-trust tersebut: verifikasi keabsahan infromasinya bergantung dari kelemahan manusia. Manusia memiliki daya ingat yang rendah, serta rentang waktu dari zaman Rasulullah hingga zaman perawi hadist terpaut ratusan tahun. Sehingga belum tentu informasi yang berasal dari Rasulullah bisa utuh turun temurun dari Rasulullah hingga ke perawi hadist. Oleh karena itu, perawi hadist memberikan tingkatan dari masing-masing hadist, dari sahih hingga dhaif berdasarkan pertimbangan akademis mereka.

Nah di masa sekarang, para ulama selalu berdiskusi untuk memecahkan problematika kehidupan modern berlandaskan azas-azas Islam. Acuannya tentu saja dari Kitab Suci dan As-Sunnah tersebut. Karena banyak kepala, banyak pemahaman pada saat yang bersamaan, persepsi tentang kebenaran itu bisa berbeda-beda. Kitab Suci Al-Qur’an saja memiliki berbagai macam pendapat tafsir yang berbeda-beda. Oleh karena itu, ketika para ulama melakukan ijtihad (proses musyawarah antar ulama membahas permasalahan agama), ulama melakukannya dengan cara musyawarah dan saling berbagi pendapat, pengetahuan, dan argumen masing-masing. Musyawarah tersebut tujuannya untuk menemukan mufakat dan menyetujui hasil dari permusyawarahan tersebut dan membentuk konsensus atas kebenaran.

Mendapatkan Kebenaran Melalui Musyawarah

Musyawarah ini sudah jadi bahasan yang sangat umum dalam kehidupan sehari-hari. Bahkan, pelajaran PPKn zaman sekolah dulu saja bolak-balik mengajarkan pentingnya musyawarah. Musyawarah adalah salah satu bentuk mekanisme untuk mendapatkan kebenaran dari sekumpulan informasi yang ada. Singkatnya, musyawarah itu adalah proses dari menemukan kebenaran.

Di kehidupan sehari-hari, proses musyawarah berlangsung dari hal-hal sederhana, seperti menentukan “mau makan di mana?” ketika sedang jalan-jalan di mall bersama keluarga atau teman-teman. Proses musyawarah juga terjadi dalam tatanan negara melalui proses legislatif. Dalam dunia akademis, proses review dalam jurnal-jurnal ilmiah juga merupakan salah satu bentuk musyawarah.

Pihak-pihak yang terlibat dalam musyawarah biasanya adalah pihak-pihak yang berkepentingan dan memiliki pengetahuan atas permasalahan yang dibahas. Masing-masing pihak memiliki argumen dan pemahamannya masing-masing. Setiap pihak memiliki kesempatan yang sama untuk mengutarakan argumen miliknya dan berkontribusi terhadap hasil musyawarah itu. Sehingga, semua informasi yang dimiliki oleh pihak yang terlibat dalam musyawarah akan menjadi pertimbangan dalam menentukan hasilnya.

Proses musyawarah dilakukan dengan cara berdiskusi dan membandingkan argumen dari masing-masing pihak. Perbandingan argumen dilakukan seobyektif mungkin dengan mempertimbangkan kaidah-kaidah berpikir yang padu. Ini dimaksudkan agar hasil musyawarah yang dihasilkan memiliki landasan yang kuat tanpa bias dari pihak manapun. Tahapan diskusi ini biasanya diberikan suatu batasan atau parameter acuan untuk menentukan kapan diskusi bisa dianggap selesai dan keputusan bisa diambil. Ini untuk mencegah proses diskusi yang tidak selesai dan tidak membuahkan hasil apa-apa (seperti layaknya musyawarah yang dilakukan di Senayan, ups).

Setelah musyawarah selesai, para pihak yang terlibat akan mencapai mufakat dan menerima hasil musyawarah tersebut sebagai kebenaran. Pihak-pihak tersebut kemudian bisa mengaplikasikan hasil dari musyawarah tersebut untuk kepentingannya mereka masing-masing. Setelah semua pihak menerima hasilnya, proses musyawarah ditutup. Ketika diperlukan kembali untuk memperoleh kebenaran dari informasi-informasi yang baru, proses musyawarah akan diulangi kembali dari awal.

Kebenaran Yang Ditetapkan vs. Kebenaran Yang Diterima

Pada mekanisme rantai kepercayaan atau chain of trust, kebenaran yang berlaku adalah kebenaran yang ditetapkan. Terdapat otoritas terpusat yang menetapkan kebenaran tersebut. Pemilik root of trust menjadi otoritas yang menetapkan kebenaran tersebut dan menjadikan kebenaran tersebut absolut.

Pada mekanisme kepercayaan mufakat, tidak ada kebenaran absolut. Tidak ada otoritas tertinggi yang menetapkan suatu kebenaran. Setiap pihak yang terlibat dalam proses musyawarah merupakan pihak yang kurang lebih setara. Sehingga, kebenaran yang diperoleh dari proses mufakat adalah kebenaran yang diterima oleh para pihak yang terlibat dalam musyawarah tersebut.

Kebenaran yang diterima bersifat relatif bergantung pada pemahaman masing-masing pihak yang terlibat dalam permusyawaratannya. Oleh karena itu, semakin baik pengetahuan pihak-pihaknya, maka semakin baik pula kualitas kebenaran yang dihasilkan. Dalam proses musyawarahnya, diberikan batasan-batasan jenis informasi yang dapat dijadikan pertimbangan. Ini untuk membantu membandingkan kualitas informasi satu sama lain, sehingga perbandingannya obyektif, dalam kata lain, apple to apple.

Setelah seluruh pihak menerima kebenaran tersebut, seluruh pihak dapat melaksanakan dampak dari kebenaran tersebut. Sebagai contoh, dalam kasus wabah saat ini, fatwa yang ditetapkan oleh para ulama terkait kegiatan shalat berjamaah dijadikan dasar acuan untuk menunda kegiatan berjamaah di seluruh masjid selama wabah terjadi. Walaupun elemen-elemen terdampak bisa jadi berada di luar dari proses musyawarah tersebut, elemen tersebut menjadikan hasil musyawarah sebagai dasar acuan karena kepercayaan atau trust terhadap proses musyawarah tersebut.

Komputasi Dalam Musyawarah

Musyawarah merupakan suatu konsep abstrak. Banyak variabel dan alur yang tidak terstruktur dalam musyawarah di kehidupan manusia. Agar sistem komputer dapat mengimplementasikan konsep musyawarah ini, kita memerlukan pemodelan matematis dari proses musyawarah. Ini yang menjadikan dasar dari dibuatnya algoritma konsensus. Algoritma konsensus adalah suatu algoritma yang memodelkan terbentuknya suatu konsensus dari sekumpulan subyek yang terpisah.

Algoritma konsensus banyak digunakan dalam kasus ilmu komputer yang melibatkan banyak pihak, seperti sistem terdistribusi. Dalam sistem terdistribusi, dikenal konsep CAP Theorem. CAP merupakan singkatan dari Consistent (konsisten), Available (tersedia), dan Partition Tolerant (tahan terhadap partisi). Dari tiga elemen tersebut, kita hanya memungkinkan untuk mempertahankan dua elemen. Sistem terdistribusi pada dasarnya harus selalu tahan terhadap partisi, yang artinya adalah dia tidak boleh terdampak oleh permasalahan jaringan yang menghubungkan antar sistem terdistribusi tersebut. Oleh karena itu, kita harus memilih salah satu apakah sistem kita harus konsisten atau harus tersedia jika terjadi permasalahan jaringan komunikasi antar komponen sistem terdistribusi tersebut.

Sistem terdistribusi yang memerlukan konsistensi total harus mengorbankan ketersediaannya untuk menjaga konsistensi sistem mereka. Biasanya sistem perbankan memiliki kebutuhan seperti ini. Sistem perbankan sangat tidak mengizinkan terjadinya inkonsistensi dalam sistem mereka, sehingga sistemnya mengorbankan ketersediaannya selama partisi jaringan terjadi. Namun, banyak sistem terdistribusi tidak perlu konsistensi total terhadap data-data dalam sistem mereka. Banyak sistem yang menerima inkonsistensi dalam derajat tertentu selama terjadinya partisi jaringan. Namun inkonsistensi tersebut harus diperbaiki ketika seluruh sistem kembali terhubung. Ini yang disebut eventual consistency, atau bahasa kasarnya, ujung-ujungnya konsisten.

Untuk mencapai konsistensi dari sistem yang berada dalam fase inkonsisten, sistem harus dapat membuat keputusan atas mana data yang akan dijadikan sebagai kebenaran. Sistem harus dapat melakukan ini secara otomatis menggunakan proses musyawarah dari semua pihak yang terlibat dalam sistem tersebut. Kita dapat menyebut juga proses ini adalah proses sinkronisasi atau penyelarasan. Di dalam proses tersebut, terdapat algoritma konsensus yang bekerja untuk menentukan kebenaran mana yang akan dipakai.

Algoritma Paxos: Model Musyawarah Dengan Pemimpin Rapat

Ada banyak algoritma konsensus yang digunakan. Masing-masing memiliki keunggulan dan kekurangannya sendiri. Salah satu yang umum digunakan di sistem terdistribusi adalah Algoritma Paxos. Algoritma Paxos memodelkan suatu proses musyawarah yang seolah-olah memiliki suatu koordinator atau pemimpin rapat pada proses permusyawaratan itu berlangsung. Karena proses diasumsikan tidak berlangsung pada satu ruangan yang sama, setiap pihak dapat mengajukan dirinya sebagai koordinator tersebut, sehingga bisa jadi ada lebih dari satu koordinator ketika proses berlangsung. Walaupun begitu, hanya satu koordinator yang pada akhirnya mengambil keputusan setelah proses Paxos tersebut selesai.

Setiap pihak yang tidak menjadi koordinator, mengajukan informasi atau pengetahuan mereka kepada koordinator untuk dikoordinasikan. Koordinator yang memperoleh konfirmasi dari seluruh partisipan musyawarah itulah yang akhirnya akan membentuk konsensus. Koordinator paralel lainnya yang tidak mencapai tersebut akan mengikuti keputusan yang diambil oleh koordinator yang berhasil.

Karena algoritma Paxos memerlukan pihak yang berinisiatif menjadi pemimpin musyawarah, mekanisme ini tidak dapat bekerja dengan efisien untuk konsensus yang melibatkan banyak pihak. Ini dikarenakan pihak yang menjadi pemimpin musyawarah tetap berkewajiban untuk dapat terhubung ke semua pihak. Jika pemimpin tidak mendapatkan konfirmasi dari setiap pihak yang terlibat, maka algoritma Paxos tidak akan mencapai konsensus.

Algoritma Paxos ini banyak digunakan pada sistem-sistem basis data terdistribusi. Basis data besar mesin pencari seperti milik Google menggunakan algoritma berbasis Paxos untuk memastikan konsistensi antar sistem basis data mereka yang tersebar lintas mesin bahkan lintas geografis. Karena data mesin pencari umumnya tidak diperlukan untuk strictly consistent sepanjang waktu, eventual consistency melalui mekanisme konsensus ini menjadi pilihan tepat untuk memastikan mesin pencari Google dapat beroperasi sepanjang waktu walaupun terdapat masalah atau jeda sinkronisasi antar basis data mereka.

Proof-of-Work: Konsensus Dengan Pembuktian Diri

Untuk kebutuhan sistem terdistribusi yang terdiri dari banyak pihak, diperlukan mekanisme yang lebih sederhana dibandingkan algoritma Paxos. Ini dimaksudkan untuk meminimalisir terjadinya stall atau kebuntuan dalam mencapai konsensus. Di dunia nyata kita mengenal sistem voting. Voting merupakan mekanisme mencapai konsensus melalui keberpihakan. Suatu pihak dapat mengajukan diri menjadi pemilik dari kebenaran dan para pihak lainnya dapat menentukan apakah kebenaran tersebut dapat diterima atau tidak.

Pihak-pihak yang berhak melakukan voting tersebut dapat mempertimbangkan berbagai faktor dalam menentukan pihak mana yang akan dijadikan sebagai acuan kebenaran. Pihak yang mengajukan diri harus dapat membuktikan bahwa informasi dialah yang berhak dijadikan kebenaran. Pembuktian ini dilakukan berdasarkan ketetapan yang telah ditentukan dalam proses voting tersebut. Karena pihak-pihak yang memberi voting tidak bisa menilai kebenaran yang diajukan, voting tidak bisa didasarkan pada informasi kebenaran yang diajukan tersebut. Pemberi voting hanya dapat mengasumsikan bahwa informasi kebenaran yang dibawa selalu benar. Oleh karena itu, diperlukan suatu mekanisme lain untuk membuktikan “siapa yang paling benar” dari semua yang mengajukan diri tersebut.

Dalam proses komputasi, pembuktian ini tentu saja dilakukan dengan proses yang melibatkan perhitungan matematika. Misalnya, voting akan diberikan kepada pihak yang menemukan suatu bilangan a yang jika dikalikan dengan 7 menghasilkan bilangan dengan angka 5 sebanyak dua digit terlebih dahulu. Semua pihak yang ingin menjadi acuan kebenaran harus melakukan “perlombaan” tersebut untuk membuktikan bahwa dia bisa menemukan angka tersebut terlebih dahulu sebelum informasi yang dia ajukan dapat diterima sebagai kebenaran. Mekanisme ini disebut sebagai proof-of-work.

Kuis Matematika sebagai Proof-of-Work

Proof-of-work pada dasarnya adalah proses membuktikan bahwa kita telah mengerjakan suatu “tugas” yang diberikan kepada kita. Biasanya tugas tersebut berkaitan dengan informasi yang akan kita ajukan, tetapi tidak serta merta bagian dari informasi tersebut. Proof-of-work menjadi sebuah komplemen yang disandingkan oleh pengaju dalam mengajukan informasi mereka kepada pemberi voting. Mekanisme proof-of-work harus merupakan mekanisme yang mudah untuk dibuktikan kebenarannya, tetapi sulit untuk dicari.

Dari contoh sebelumnya, untuk mencari sebuah bilangan a yang jika dikalikan dengan 7 menghasilkan sebuah bilangan dengan angka 5 sebanyak dua digit memerlukan kita untuk mencoba setiap kemungkinan bilangan satu per satu. Salah satu bilangan yang ditemukan adalah 54.651. Untuk membuktikan bahwa dia punya dua digit angka 5, kita cukup mengalikannya dengan angka 7 yang menghasilkan 382.557. Dengan begitu, bilangan 54.651 adalah proof-of-work-nya dan pengaju dapat mengajukan informasi mereka kepada pemberi voting. Pemberi voting akan secara otomatis menerima inforasi yang diajukan tersebut sebagai kebenaran selama belum ada pihak pengaju lainnya yang telah menemukan proof-of-work terlebih dahulu.

Konflik dalam Penetapan Kebenaran

Alasan kenapa proof-of-work perlu dipersulit untuk dicari adalah untuk meminimalisir terjadinya banyak pihak yang mengajukan informasi pada saat yang bersamaan. Namun begitu, tidak mungkin untuk mengeliminir sepenuhnya penemuan proof-of-work pada saat yang bersamaan dalam sistem yang melibatkan banyak pihak. Proof-of-work juga tidak dijamin sebagai suatu bukti tunggal. Dapat terdapat lebih dari satu solusi untuk satu proof-of-work yang sama, misalnya, 382.557 dan 818.545 sama-sama akan menghasilkan dua digit angka 5 ketika dikalikan dengan 7.

Dalam kasus seperti ini, dapat dimungkinkan dalam suatu waktu terdapat dua kebenaran yang diakui. Ini dapat terjadi apabila dua pihak yang berhasil menemukan proof-of-work terpisah jauh secara lokasi. Informasi penetapan kebenaran membutuhkan waktu untuk diketahui oleh semua pihak yang berkepentingan. Karena perbedaan jarak inilah sehingga informasi kebenarannya tidak dapat “menggema” kepada seluruh peserta voting secara sempurna, dan dapat timbul cluster-cluster yang memiliki pengakuan kebenaran yang berbeda.

Namun kita tahu bahwa mekanisme konsensus memerlukan sebuah konsistensi. Kebenaran yang konsisten haruslah tunggal. Dengan mekanisme voting ini, kebenaran yang diakui oleh lebih banyak pihak akan menjadi kebenaran tunggal yang diakui. Walaupun dalam prosesnya dapat timbul cluster-cluster konflik, mekanisme konsensus melalui proof-of-work ini dapat mencapai eventual consistency setelah voting selesai dan cluster terbesar menjadi kebenaran yang diterima.

Proof-of-Work di Cryptocurrency

Penggunaan mekanisme konsensus menggunakan proof-of-work ini sangat erat disandingkan dengan teknologi blockchain dan cryptocurrency (Mata uang Kriptografi). Teknologi blockchain yang umumnya merupakan teknologi terdistribusi yang melibatkan banyak pihak menggunakan mekanisme konsensus berbasis proof-of-work. Proof-of-work digunakan dalam menentukan pengakuan terhadap informasi yang diajukan ke dalam rantai informasi pada blockchain tersebut. Blockchain mengorganisasi informasinya dalam sebuah blok-blok yang “dikunci” dengan rantai kriptografi. Rantai kriptografi ini yang membuat informasi dalam blockchain akan selamanya berada di dalam blockchain dan tidak dapat dihapus kembali. Semua pihak yang terlibat dapat mengajukan sebuah transaksi baru untuk didaftarkan di dalam blockchain. Namun, agar blockchain tersebut dapat “dikunci” dan diakui oleh seluruh peserta blockchain, miner sebagai pihak yang mengakumulasikan transaksi perlu mencari sebuah proof-of-work yang akan menjadi pengunci dari daftar transaksi yang dikumpulkan tersebut.

Mekanisme proof-of-work yang digunakan dalam sistem blockchain menggunakan cryptographic hash function. Fungsi hash adalah fungsi yang mudah untuk dihitung hasilnya, tetapi sangat sulit untuk mencari inverse dari fungsinya. Fungsi hash menghasilkan sebuah nilai di mana miner harus mencari suatu nilai dengan karakteristik tertentu. Pada umumnya nilai hash ditulis dalam format bilangan hexadecimal (bilangan dengan 16 kombinasi angka, 0-9 dan A-F). Proof-of-work yang dilakukan seperti: mencari nilai suatu bilangan acak dengan nilai hash dengan fungsi hash MD5 yang memiliki delapan digit pertama dengan angka 0. Contoh hasilnya: angka 119.243.110.116.202 memiliki nilai hash 0000000018e6137ac2caab16074784a6. Tentu saja proof-of-work dalam sistem blockchain seperti Bitcoin tidak sesederhana yang disebutkan di sini. Bitcoin menggunakan fungsi hash yang lebih kompleks yaitu SHA-256. Fungsi hash yang kompleks ini membutuhkan waktu yang lebih lama sehingga semakin meminimalisir terjadinya penemuan beberapa proof-of-work pada waktu yang bersamaan.

Dalam teknologi blockchain, konflik karena penemuan proof-of-work pada saat bersamaan akan terselesaikan setelah blok-blok baru ditemukan. Setiap miner akan mengasumsikan penemuan proof-of-work yang pertama kali sebagai kebenaran, dan akan melanjutkan rantainya menggunakan block tersebut. Namun jika di kemudian waktu blok pada cluster lainnya memiliki rantai yang lebih panjang karena lebih dulu menemukan proof-of-work untuk blok-blok berikutnya, blok yang lebih pendek akan “ditenggelamkan” oleh blok yang lebih panjang ini. Pihak-pihak yang sebelumnya menggunakan blok dengan proof-of-work yang kalah tersebut akan mengadopsi blok yang lebih panjang tersebut. Di sinilah tercapainya kebenaran yang diterima dalam konsesus blockchain ini.

Karena sistem inilah setiap transaksi pada blockchain membutuhkan waktu tertentu sebelum transaksi tersebut dianggap settle atau confirmed (terkonfirmasi). Dalam sistem Bitcoin, transaksi dianggap terkonfirmasi setelah kurang lebih 10 menit. Waktu 10 menit ini tidak selamanya konstan, karena banyak faktor yang mempengaruhi kecepatan konfirmasi suatu blok. Selain itu, untuk setiap koin baru yang “ditambang” oleh miner, koin dapat digunakan setelah blok yang ditambang mencapai tingkat “kematangan” atau maturity yang ditentukan. Dalam sistem Bitcoin, blok dianggap matang jika sudah ada 100 blok di di belakang blok tersebut. Ini untuk mencegah terjadinya penggunaan koin saat terjadinya konflik penemuan proof-of-work yang dapat menyebabkan percabangan dalam rantai blockchain.

(Pada artikel selanjutnya, gue akan membahas mengenai kelebihan dan kekurangan sistem chain-of-trust dan sistem konsensus, serta beberapa contoh kasus lainnya yang relevan dalam pemodelan kepercayaan ini)

Mungkin Anda juga menyukai

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *