Bagian Ketiga: Cara Kerja Bitcoin – Aplikasi Script Bitcoin
Cara Kerja Bitcoin – Aplikasi Script Bitcoin. Kita telah mengetahui proses transaksi di bagian pertama. Pada bagian kedua kita juga mengetahui bagaimana script Bitcoin bekerja pada proses transaksinya. Sekarang, di pembahasan ketiga Cara Kerja Bitcoin, kita akan membicarakan bagaimana penerapan script bitcoin tersebut pada beberapa aplikasi transaksi Bitcoin.
Dalam bahasa script Bitcoin yang kita bahas sebelumnya, kita bisa melakukan banyak hal. Meski dengan kerumitan bahasa script Bitcoin yang tidak hanya untuk menentukan public key saja di bagian sebelumnya. Nah, di bahasan cara kerja Bitcoin – aplikasi script Bitcoin ini, lebih spesifik tentang pengaplikasian script Bitcoin tersebut pada beberapa jenis aplikasi transaksi yang ada di dalam Bitcoin.
Berikut adalah beberapa pengaplikasian script Bitcoin.
Transaksi Escrow
Transaksi Escrow umumnya adalah sebuah perjanjian transaksi terhadap sebuah barang, benda, ataupun juga uang. Sedangkan barang ataupun benda tersebut masih disimpan oleh pihak ketiga. Barang ataupun benda itu belum akan diberikan atau dikirim hingga keseluruhan proses perjanjiannya telah dipenuhi.
Untuk lebih jelasnya, mari kita lihat pada sebuah contoh berikut.
Nita dan Rudi ingin melakukan transaksi satu sama lain. Nita ingin membayar sejumlah Bitcoin kepada Rudi untuk mengirimkan beberapa barang. Sementara, ada sebuah masalah dalam transaksi antara Nita dan Rudi tersebut. Masalahnya adalah:
- Nita tidak ingin membayar Rudi jika ia belum menerima barangnya.
- Rudi tidak ingin mengirim barang, jika Nita belum membayar
Bagaimana cara untuk menyelesaikan permasalahan dalam transaksi ini? Bitcoin mempunyai sebuah solusi yang cukup cerdas dalam mengatasi masalah ini. Dalam hal ini, Bitcoin menggunakan sebuah pihak ketiga untuk bisa melakukan transaksi escrow.
Lantas seperti apa pihak ketiga Bitcoin untuk menyelesaikan masalah ini? Bitcoin menggunakan MULTISIG sebagai pihak ketiganya. Masih ingat bukan pembahasan tentang MULTISIG pada script Bitcoin sebelumnya?
Dengan menggunakan MULTISIG, Nita tidak mengirimkan uang secara langsung kepada Rudi. Namun Nita akan membuat transaksi MULTISIG yang membutuhkan dua dari tiga orang yang mendaftar untuk menebus koin tersebut. Tiga orang tersebut adalah Nita, Rudi, dan beberapa arbiter pihak ketiga. Katakanlah Anton sebagai salah satu pihak arbiter disini.
Jadi, Nita menciptakan 2 dari 3 transaksi MULTISIG dengan mengirimkan koin miliknya. Lalu menyebutkan bahwa koin itu bisa dibelanjakan jika dua orang dari Nita, Rudi, dan Anton telah menandatangani. Transaksi inipun juga dimasukkan ke dalam Blockchain.
Dari sini bisa dilihat bahwa koin milik Nita tersebut sudah terikat transaksi Escrow yang melibatkan Nita, Rudi, dan Anton. Sehingga, dua dari ketiga orang tersebut dapat menentukan kemana arah koin tersebut akan dibelanjakan.
Setelah Rudi mengetahui bahwa dengan cara ini akan aman baginya untuk mengirim barang kepada Nita, maka transaksinya pun bisa dilakukan dan diselesaikan. Setelah Nita menerima barang, kemudian Nita dan Rudi sama-sama menandatangani transaksi dengan menebus dana dari transaksi escrow tersebut. Lalu diakhiri dengan mengirim uangnya kepada Rudi.
Apakah sudah berakhir? Tunggu dulu, perhatikan Anton pada contoh tersebut. Lantas apa peran Anton disana? Ditambah lagi, kalau di contoh tersebut, antara Nita dan Rudi telah sama-sama bertindak secara jujur dalam transaksinya. Sehingga tidak akan ada permasalahan. Lalu bagaimana jika ternyata, misalnya Rudi tidak benar-benar mengirimkan barangnya? Atau bisa jadi ternyata barang yang dikirimkan Rudi tidak seperti barang yang diinginkan Nita?
Jika hal itu terjadi, Nita pada akhirnya tidak ingin untuk membayar Rudi, dan menginginkan uangnya kembali. Karena Nita merasa telah ditipu oleh Rudi. Nita pun tidak akan menandatangani pelepasan uang untuk Rudi. Sementara, Rudi bisa membuat penyangkalan telah melakukan kesalahan. Rudi pun bisa menolak menandatangani transaksi pengembalian uang kepada Nita.
Maka disinilah peran Anton untuk mengatasi permasalahan tersebut. Anton menjadi terlibat, untuk memutuskan orang manakah dari keduanya yang layak menerima uang tersebut. Jika Anton memutuskan bahwa Rudi yang telah melakukan penipuan, maka Anton bersedia menandatangani bersama dengan Nita. Lalu mengirimkan uang dari transaksi escrow kembali kepada Nita.
Sebaliknya, jika Anton berfikir bahwa Nita menolak kewajibannya untuk membayar Rudi, maka Anton bisa menandatangani transaksi itu besama dengan Rudi. Baru kemudian mengirimkan uang itu kepada Rudi. Sehingga peran Anton dalam masalah ini adalah memutuskan satu dari dua hasil kemungkinan yang akan terjadi seperti pada contoh ini. Yang perlu dicatat tentang peran Anton, hanya akan dibutuhkan, jika terjadi perselisihan dalam transaksi tersebut.
Sekarang anda telah mengetahui bentuk pertama pengaplikasian script Bitcoin pada bahasan Cara Kerja Bitcoin – Aplikasi Script Bitcoin. Selanjutnya kita akan melihat pengaplikasian script Bitcoin dalam bentuk aplikasi transaksi yang lain.
Green Address
Aplikasi menarik lainnya adalah sebuah aplikasi yang disebut dengan Green Address. Apa dan bagaimana Green Address ini? Mari kita tengok pada contoh berikut:
- Nita ingin melakukan pembayaran kepada Rudi.
- Rudi pada saat itu masih ofline / tidak terhubung ke Jaringan Bitcoin.
- Rudi tidak bisa mengecek transaksi karena masih ofline
- Rudi bisa mengecek transaksi jika telah online
- Rudi Online namun tidak punya banyak waktu menunggu konfirmasi transaksi
Karena Rudi ofline, maka Rudi tidak bisa mengecek dan melihat ke Blockchain apakah transaksi pengiriman Nita benar-benar telah dilakukan. Rudi baru bisa mengecek pengiriman Nita, jika ia telah kembali terhubung dan online. Selain itu, bisa juga meskipun Rudi telah online, namun Rudi tidak punya banyak waktu untuk memeriksa transaksi tersebut dan menunggu transaksi itu dikonfirmasi.
Mari kita mengingat lagi, bahwa biasanya kita menginginkan transaksi kita dimasukkan kedalam blockchain dan telah dikonfirmasi setidaknya pada enam blok. Prosesnya memakan waktu kurang lebih hingga satu jam. Jika belum, kadangkala kita masih belum mempercayai bahwa transaksi itu akan benar-benar telah berada dalam rantai blok.
Sementara, bagi beberapa merchant atau toko penjaja makanan misalnya, tentu tidak bisa menunggu selama itu baru memberikan makanannya kepada pelanggan. Apalagi jika ternyata toko atau penjualnya tidak punya koneksi internet atau koneksinya buruk. Sehingga kesulitan untuk bisa memeriksa transaksinya.
Untuk bisa mengatasinya, maka di butuhkan pihak ketiga yang bisa menjadi perantara pertukaran transaksi. Dalam hal ini, Nita selanjutnya menghubungi pihak ketiga tersebut dan menyatakan:
- Saya salah satu pelanggan anda
- Berikut nama dan identitas saya
- Saya ingin melakukan pembayaran kepada Rudi
- Apakah bisa dibantu?
Setelah mendengar pernyataan dari Nita, pihak perantara tersebut akan menjawab:
- Tentu saya bisa membantu
- Saya akan memotong uang dari akun anda
Lalu pihak ketiga tersebut akan menyusun sebuah transaksi dari akun green address Nita kepada Rudi.
Yang perlu diperhatikan dari proses ini, bahwa pembayaran transaksi tersebut akan datang dari pihak ketiga itu, baru kemudian dikirimkan kepada Rudi. Sehingga mungkin saja perubahan alamat nantinya akan kembali kepada pihak ketiga. Namun pada dasarnya, saat pihak ketiga tersebut membayar Rudi, alamat yang digunakan adalah alamat pihak ketiga. Atau yang disebut dengan green address.
Biasanya pihak ketiga tersebut akan berusaha meyakinkan bahwa dalam transaksinya tidak akan terjadi double spend. Jika kedua belah pihak dalam transaksi tersebut telah mempercayai pihak ketiga itu, maka uang tersebut akan menjadi miliknya setelah dikonfirmasi kedalam rantai blok.
Namun, cara seperti ini tentu tidak bisa menjadi sebuah jaminan bahwa sistem transaksi Bitcoin bisa ditegakkan. Karena ini menjadi sebuah jaminan di dunia riil. Yang diberikan oleh pihak ketiga tersebut. Begitupun dengan Rudi, ia pun harus bisa mempercayai peran pihak ketiga ini pada transaksinya. Tentang reputasi pihak ketiga tersebut, sekaligus kaitan dengan jaminan bahwa tidak akan ada double spend.
Karena kedua belah pihak dalam contoh transaksi ini saling mempercayakan peran pihak ketiga pemilik akun green address, maka antara Nita dan Rudi pun tidak harus saling percaya satu sama lain. Karena antara keduanya sudah mempercayakan kepada pihak ketiga tersebut. Sebaliknya, jika pihak ketiga tersebut bahkan pernah melakukan double spend, maka orang tidak akan lagi mempercayai pihak ketiga itu.
Ada dua layanan green address yang cukup menonjol sebelumnya. Yakni InstaWallet dan Mt.Gox. Namun pada akhirnya keduanya juga runtuh. Sehingga Green Address tidak banyak digunakan lagi. Padahal awalnya, ide tentang green address akan cukup banyak membantu agar pembayaran bisa berlangsung lebih cepat, tanpa harus mengakses rantai blok. Saat ini, orang sudah khawatir jika terlalu banyak menaruh kepercayaan pada peran pihak ketiga.
Micro-payment
Ketiga, kita akan coba melihat bagaimana pengaplikasian script Bitcoin pada sebuah transaksi micro-payment yang lebih efisien. Mari kita perhatikan dalam contoh berikut:
- Nita adalah salah satu pelanggan Rudi
- Rudi adalah penyedia layanan nirkabel
- Nita sering menggunakan layanan Rudi
- Nita harus membayar sejumlah biaya kecil untuk setiap menitnya saat berbicara di telepon
- Nita ingin bisa terus bertransaksi dengan Rudi
Untuk membuat transaksi Bitcoin pada setiap menit ketika Nita berbicara di telephon tentu tidak bisa berjalan. Karena transaksinya terlalu banyak, dan biaya transaksi pun akan bertambah bukan? Jika biaya transaksi itu dikenakan pada setiap transaksi, maka Nita akan banyak mengeluarkan biaya.
Maka yang bisa dilakukan adalah dengan cara menggabungkan semua transaksi kecil tersebut menjadi satu. Dan penggabungan tersebut dilakukan di akhir setelah semua transaksinya terhitung total secara keseluruhan. Sehingga hal ini bisa dilakukan.
Untuk memulainya, dilakukan terlebih dahulu dengan transaksi MULTISIG yang membayar jumlah maksimum yang dibutuhkan Nita. Selanjutnya, menjadikan jumlah nilai tersebut sebagai output yang membutuhkan tanda tangan Nita dan Rudi untuk bisa menebus koinnya.
Saat Nita menghabiskan satu menit pertamanya saat menggunakan layanan Rudi, Nita perlu membuat sebuah micropayment. Lalu menandatangani transaksi yang akan dikirim melalui address MULTISIG. Setelah itu mengirimkan satu unit pembayaran itu kepada Rudi, dan mengembalikan sisanya kepada Nita.
Pada menit berikutnya, Nita membuat transaksi lain. Kali ini Nita akan membayar dua unit, satu kepada Rudi, dan satunya lagi untuk dirinya sendiri. Pada transaksi ini, ditandatangani hanya oleh Nita. Sementara Rudi belum menandatanganinya. Selain itu, transaksinya juga belum dimasukkan kedalam rantai blok.
Di menit-menit selanjutnya, Nita akan terus mengirim transaksi kepada Rudi pada setiap menit saat ia menggunakan layanan itu. Ketika Nita menyelesaikan layanan tersebut, maka Nita bisa berkata kepada Rudi bahwa dia telah selesai, dan bisa memotong layanannya. Nita pun akan berhenti menandatangani transaksi tambahan lainnya. Selanjutnya Rudi mengambil transaksi terakhir lalu menandatangani dan memasukkannya kedalam rantai blok. Sedangkan jika ada sisa pembayaran yang dilakukan Nita kepada Rudi, akan dikembalikan setelahnya.
Sementara itu, semua transaksi yang ditandatangani sendiri oleh Nita, tidak dimasukkan kedalam blok. Rudi pun tidak harus menandatanganinya. Transaksi yang dibuat oleh Nita itu tidak dipergunakan lagi. Jadi secara teknis semua transaksi ini bisa dikatakan sebagai double-spend. Tidak seperti pada green address yang telah kita bahas sebelum ini. Pada protokol micro-payment ini ada potensi besar terjadi double-spend.
Dalam contoh tadi, kita melihat transaksi antara Rudi dan Nita berjalan secara normal dan jujur. Sehingga Rudi hanya menandatangani pada transaksi yang terakhir saja. Sedangkan di dalam rantai blok, tidak terlihat adanya upaya terjadi double-spend.
Lalu bagaimana jika Rudi bahkan tidak pernah menandatangani transaksi terakhir Nita dalam contoh tersebut? Sehingga uang Nita akan tetap berada di transaksi escrow selamanya. Dalam hal ini, meski uang Nita tersebut tidak bergerak dan berpindah, namun Nita menjadi kehilangan nilai uang tersebut sepenuhnya, meski ia telah membayarnya di awal.
Lalu bagaimana kita menyelesaikan masalah ini? Kita coba tengok kembali di pembahasan awal tentang seri Cara Kerja Bitcoin di bagian pertama. Pada penjelasan tentang struktur data transaksi Bitcoin di bagian metadata, telah disinggung tentang adanya Lock-Time. Menggunakan fitur lock_time inilah yang akan bisa mengatasi masalah ini.
Lock_time
Sebelum protokol micro-payment dimulai, Nita dan Rudi akan menandatangani transaksi yang akan mengembalikan semua uang Nita. Hanya saja, pengembalian dana tersebut akan dikunci sampai beberapa saat di waktu yang akan datang. Setelah Nita menandatanganinya, namun sebelum dia mempublis transaksi tersebut, transaksi MULTISIG pertama itu menempatkan dananya kedalam escrow. Sehingga Nita ingin mendapat pengembalian dana ini dari Rudi nantinya. Sehingga jika Rudi belum menandatangani salah satu transaksi kecil yang telah Nita buat, dia bisa mempublikasikan transaksi itu untuk bisa mendapat semua uangnya kembali.
Pada metadata transaksi Bitcoin, kita telah melihat ada sebuah parameter lock_time. Cara kerjanya jika anda telah menetapkan nilai lain selain “nol”, maka parameter tersebut akan memberitahu kepada para penambang untuk tidak mempublikasikan transaksinya sampai pada waktu tertentu.
Jika transaksi itu berusaha dimasukkan sebelum waktunya seperti yang dijelaskan dalam parameter lock_time, maka transaksinya akan menjadi tidak valid. Cara ini akan bisa bekerja dalam protokol micro-payment sebagai fungsi pengaman bagi Nita. Untuk berjaga-jaga jika Rudi tidak pernah memberikan tandatangannya. Sehingga dengan jalan ini Nita bisa mendapat uangnya kembali.
Kontrak Cerdas (Smart Contract)
Pada istilah kontrak secara umum, kita juga akan menjumpai istilah ini dalam Bitcoin. Lebih tepatnya sebutan yang paling memadai adalah Kontrak Cerdas, atau istilah aslinya adalah Smart Contract. Dalam Bitcoin, smart contract membutuhkan beberapa tingkatan penegakan teknis. Mengapa demikian? Karena jika dalam istilah secara umum, kontrak akan bisa ditegakkan melalui hukum ataupun pengadilan.
Sementara dalam Bitcoin, fitur ini bisa dilakukan dengan menggunakan script, melalui peran penambang, dan juga validasi transaksi yang bisa mewujudkan protokol escrow ataupun protokol micro-payment. Sehingga bisa dilakukan tanpa harus memerlukan otoritas terpusat.
Penelitian dalam smart contract sebenarnya telah melampaui aplikasi yang telah kita bicarakan di bagian ini. Ada beberapa jenis kontrak cerdas (smart contract) yang sebenarnya banyak diinginkan untuk bisa dipakai, namun tidak didukung dalam bahasa script Bitcoin.
Nick Szabo juga pernah menggagas dalam papernya yang berjudul, “Formalizing and Securing Relationships on Public Networks”. Halaman situs yang memuat paper Nick Szabo tersebut, dibuat oleh Mike Hearn.
Kini, secara keseluruhan kita telah menyelesaikan pembahasan pada seri Cara Kerja Bitcoin – Aplikasi Script Bitcoin di kesempatan kali ini. Kita akan melanjutkan lagi pada bahasan selanjutnya, yakni bagaimana Cara Kerja Bitcoin – Blok Bitcoin.