avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Cara Kerja Protokol Bitcoin (Bagian 1)

Dibuat di: 2017-01-19 18:04:02, diperbarui pada: 2017-01-19 18:11:24
comments   0
hits   1625

Cara Kerja Protokol Bitcoin (Bagian 1)

Tahun lalu saya menulis 5 ide tentang Bitcoin di sini, dan ini mungkin artikel pertama tentang Bitcoin di sini, hari ini saya akan membahas tentang protokol Bitcoin.

Artikel ini adalah terjemahan dari artikel Michael Nielsen tentang protokol Bitcoin, yang menurut penerjemah adalah artikel yang paling jelas tentang Bitcoin yang pernah ditulis. Michael Nielsen adalah seorang ilmuwan, penulis, dan programmer yang memelopori penelitian komputasi kuantum, untuk detailnya lihat pengantarnya sendiri. Terjemahan dari artikel ini adalah karena penerjemah berpendapat bahwa artikel dan diskusi tentang Bitcoin memiliki banyak, banyak dukungan dan banyak keberatan. Tetapi sebagian besar berhenti pada pemikiran konseptual, harga, dan subjektif.

Hanya membiarkan orang tahu apa itu, di mana itu cocok ke ruang uang elektronik, tidak mencoba untuk meyakinkan mereka bahwa itu bagus. Jika Anda tidak percaya saya atau tidak mendapatkannya, saya tidak punya waktu untuk mencoba untuk meyakinkan Anda, maaf.

  • ### Berikut adalah teks aslinya:

Ribuan artikel mencoba menjelaskan Bitcoin, sebuah mata uang online, peer-to-peer. Sebagian besar artikel membahas protokol yang mendasari, tetapi tidak memberikan rincian yang cukup. Bahkan artikel-artikel yang sangat mendalam pun terlewatkan di tempat-tempat penting.

Pemahaman yang mendalam tentang protokol ini sulit, karena mudah untuk menganggap bitcoin sebagai sesuatu yang sudah ada dan berpikir bagaimana memanfaatkan spekulasi lain untuk mendapatkan uang, berpikir apakah itu gelembung, berpikir apakah bitcoin berarti akhir dari pajak, dan sebagainya. Berpikir tentang hal-hal ini sangat menyenangkan, tetapi ide-ide ini sangat membatasi pemahaman Anda.

Saya akan menjelaskan tentang skrip Bitcoin dan kontrak pintar di artikel selanjutnya. Untuk artikel ini saya akan fokus pada detail spesifik dari protokol Bitcoin. Untuk memahami artikel ini Anda mungkin perlu membiasakan diri dengan kata kunci publik dan tanda tangan digital yang terkait dengannya.

Bitcoin didasarkan pada kriptografi, dan ini mungkin membuat Anda bertanya-tanya, bukankah bitcoin adalah mata uang? Apakah itu cara untuk mengirim pesan rahasia? Sebenarnya, sebagian besar masalah yang ingin diselesaikan oleh bitcoin adalah tentang melindungi transaksi, memastikan bahwa orang tidak dapat mencuri sesuatu dari orang lain atau menyamar sebagai orang lain, dan sebagainya. Di dunia fisik yang terdiri dari atom, kita menjamin keamanan dengan kunci, tanda tangan, brankas bank, dan sebagainya.

Strategi dalam artikel ini adalah membangun Bitcoin satu tingkat demi satu tingkat. Kita akan mulai dengan sebuah mata uang digital yang sangat sederhana, kita akan menyebutnya sebagai Infocoin Lite untuk sementara waktu, untuk membedakannya dari Bitcoin. Tentu saja, versi pertama Infocoin kita akan memiliki banyak kekurangan, jadi kita akan melalui beberapa iterasi, dan setiap iterasi akan memperkenalkan satu atau dua konsep baru. Setelah beberapa kali, kita akan mendapatkan protokol Bitcoin yang lengkap.

Cara ini sedikit lebih lambat daripada menjelaskan Bitcoin secara langsung di awal. Tetapi bahkan jika Anda dapat memahami prinsip Bitcoin, Anda akan sulit untuk memahami mengapa Bitcoin dirancang seperti ini. Sedangkan penjelasan aljabar langkah demi langkah yang lambat, memiliki keuntungan karena dapat memberikan pemahaman yang lebih jelas tentang setiap elemen Bitcoin.

Akhirnya saya harus mengatakan bahwa saya adalah orang yang relatif baru di dunia Bitcoin. Saya memiliki sedikit perhatian pada tahun 2011, tetapi untuk benar-benar serius mempelajari detailnya adalah awal tahun 2013.

  • Langkah 1: Menandatangani Surat Niat

    • #### Bagaimana cara mendesain mata uang?

    Dari sudut pandang pertama, sebuah mata uang digital mungkin terdengar mustahil. Misalkan seseorang, mari kita sebut dia Alice, memiliki beberapa mata uang digital yang ingin ia belanjakan. Jika Alice dapat menggunakan string yang sama sebagai uang, bagaimana kita bisa mencegahnya menggunakan string yang sama berulang kali? Jika kita bisa menyelesaikan masalah ini, bagaimana kita bisa mencegah orang lain untuk memalsukan string dan mencuri dari Alice?

    Ini hanya dua dari banyak masalah yang harus diselesaikan dengan menggunakan informasi sebagai mata uang. Pada Infocoin versi pertama, kami menemukan cara untuk membuat Alice memberikan sebuah string sebagai uang, dan menemukan cara untuk melindunginya dari pemalsuan. Misalkan Alice ingin memberikan infocoin kepada orang lain, Bob.

    Metode ini tidak begitu menonjol, tetapi ada beberapa kelebihan. Siapa pun di dunia dapat menggunakan kunci publik Alice untuk memverifikasi bahwa Alice adalah orang yang menandatangani. Tidak ada orang lain yang dapat menghasilkan hasil dari tanda tangan itu. Tanda tangan ini hanya dapat dihasilkan dari kunci pribadi yang dimiliki Alice.

    Saya belum mengatakan apa sebenarnya uang dalam perjanjian ini. Yang jelas adalah: uang sebenarnya adalah pesan itu sendiri. Artinya, bahwa seri yang ditandatangani mewakili karakter yang membuat saya Alice ingin memberi Bob sebuah infocoin.

  • Menggunakan nomor seri untuk memberikan identifikasi unik pada mata uang

Masalah dengan Infocoin edisi pertama kami adalah bahwa Alice dapat berulang kali mengirim pesan dengan tanda tangan yang sama kepada Bob. Misalkan Bob menerima 10 pesan seperti itu. Saya bertanya-tanya, Alice, untuk memberi Bob satu infocoin. Apakah itu berarti Alice memberi Bob 10 infocoin yang berbeda?

Kita ingin infocoin memiliki identitas yang unik. Ini membutuhkan sebuah label atau nomor urut. Alice bisa menandatangani infocoin dengan nomor urut 8740348 di pesan. Kemudian Alice akan menandatangani infocoin dengan nomor urut 8770431 di pesan lain, sehingga Bob dan orang lain akan tahu bahwa ini adalah infocoin yang berbeda.

Untuk membuat rencana ini berjalan, kita harus memiliki sumber nomor seri yang dapat dipercaya. Salah satu cara untuk menghasilkan nomor seri adalah dengan mendirikan lembaga seperti bank. Bank akan menghasilkan nomor seri untuk infocoin, mencatat siapa yang memiliki infocoin, dan memverifikasi keaslian transaksi.

Lebih rinci lagi, mari kita misalkan Alice pergi ke sebuah bank dan berkata, “Saya ingin mengambil infocoin dari rekening saya”. Bank tersebut mengurangi satu infocoin dari rekeningnya, lalu memberinya nomor seri baru yang tidak pernah digunakan, misalkan 1234567. Kemudian, ketika Alice ingin mengirim infocoin kepada Bob, dia memberi tanda tangan pada pesan baru tersebut.

  • ### Mari kita semua menjadi bank.

Solusi di atas terlihat sangat potensial. Namun, kita bisa melakukan sesuatu yang lebih ambisius. Kita bisa menyingkirkan bank dari protokol ini. Ini secara dramatis mengubah sifat mata uang itu sendiri.

Metode ini adalah membuat setiap orang bekerja sama menjadi sebuah bank. Khususnya, kita asumsikan bahwa setiap orang yang menggunakan infocoin menyimpan catatan lengkap, yang mencakup siapa yang memiliki infocoin. Anda dapat membayangkan ini sebagai buku catatan publik yang dibagikan, yang mencatat semua transaksi infocoin.

Sekarang, mari kita asumsikan bahwa Alice akan memberikan infocoin kepada Bob. Dia akan memberi saya tanda tangan pada kotak infocoin dengan nomor seri 1234567 di kotak pesan. Dan akan memberikan Bob hasil pesan yang ditandatangani.

Kita masih memiliki masalah dari mana nomor seri yang berasal, tetapi itu sebenarnya mudah untuk dipecahkan, jadi saya akan menjelaskan lebih lanjut. Masalah yang lebih sulit adalah bahwa protokol ini memungkinkan Alice untuk berulang kali menghabiskan infocoin-nya. Dia dapat memposting pesan yang ditandatangani bahwa Alice akan memberikan nomor seri 1234567 kepada Bob, dan dia juga dapat memposting pesan yang ditandatangani bahwa Alice akan memberikan nomor seri 1234567 kepada Charlie. Bob dan Charlie menggunakan blockchain mereka sendiri untuk memeriksa apakah infocoin itu benar-benar berasal dari Alice.

Kami menyebut masalah ini sebagai double spending puzzle, dan pada pandangan pertama, hal ini tampaknya sangat sulit untuk berhasil. Setelah semua, jika Alice mengirim pesan ke Bob dan kemudian Bob mengirim pesan ke semua orang lain (termasuk Charlie), orang lain memperbarui blockchain mereka. Pada saat ini, Charlie tidak akan ditipu oleh Alice. Jadi double spending tampaknya hanya mungkin untuk waktu yang singkat. Namun, bahkan jika waktu yang sangat singkat, ada masalah ini juga tidak dapat dihindari.

Cara yang paling sederhana adalah ketika Alice mengirim infocoin kepada Bob, Bob tidak harus memeriksa transaksi itu sendiri. Sebaliknya, ia harus mempublikasikan transaksi yang akan datang ke seluruh jaringan infocoin, sehingga orang lain dapat membantu menilai apakah transaksi itu masuk akal. Jika mereka bersama-sama memutuskan bahwa transaksi itu masuk akal, maka Bob dapat menerima infocoin itu, dan kemudian semua orang memperbarui blockchain mereka.

Lebih khusus lagi, misalkan Alice ingin memberikan infocoin kepada Bob. Seperti sebelumnya, dia memberi tanda tangan pada sebuah pesan, dan Alice memberi Bob sebuah infocoin bernomor seri 1234567, dan akan menandatangani pesan dengan nama baik untuk Bob. Sama seperti sebelumnya, Bob melakukan pemeriksaan dengan blockchain sendiri, dan koin itu memang milik Alice. Namun, tidak seperti sebelumnya, Bob tidak langsung menerima ini, tetapi mempublikasikan pesan Alice ke seluruh jaringan.

Protokol ini sekarang masih banyak faktor yang tidak pasti. Misalnya, jika ada cukup banyak orang yang mempublikasikan berita ini, berapa banyak orang yang cukup? Tidak mungkin seluruh jaringan infocoin, karena kita tidak tahu sebelumnya siapa yang ada di jaringan infocoin.

  • ### Bukti pekerjaan Proof-of-work

Misalkan Alice ingin melakukan duplikasi dalam perjanjian di atas, dia perlu menguasai seluruh jaringan infocoin. Misalkan dia menggunakan sistem otomatis untuk membuat banyak akun dengan identitas yang berbeda di jaringan infocoin, misalkan ada 1 miliar. Seperti sebelumnya, dia mencoba melakukan duplikasi, memberikan infocoin yang sama kepada Bob dan Charlie, tetapi ketika Bob dan Charlie meminta jaringan infocoin untuk memeriksa transaksi ini, aspal Alice membanjiri seluruh jaringan, memberi tahu Bob dan Charlie bahwa mereka dapat melewati transaksi ini, dan mungkin menipu salah satu dari mereka atau keduanya untuk menerima transaksi ini.

Ada cara yang cerdas untuk melakukan verifikasi dengan menggunakan metode yang disebut Proof-of-work. Metode ini tidak intuitif dan membutuhkan kombinasi dari dua konsep, yaitu 1) membuat proses verifikasi transaksi secara manual dengan biaya komputasi yang lebih tinggi; 2) memberi hadiah kepada mereka yang membantu dalam verifikasi transaksi tersebut. Menggunakan cara pemberian hadiah untuk mendorong orang-orang di jaringan tersebut untuk melakukan verifikasi transaksi.

Itulah inti dari sertifikat pekerjaan. Namun, untuk benar-benar memahami sertifikat pekerjaan, kita perlu mempelajari lebih lanjut.

Misalkan Alice memberikan pesan kepada seluruh jaringan, misalkan Alice memberikan infocoin dengan nomor seri 1234567 kepada Bob. Ketika orang lain di jaringan mendengar berita ini, setiap orang menambahkannya ke dalam barisan transaksi yang belum disetujui oleh seluruh jaringan. Misalkan seseorang di jaringan yang bernama David mungkin memiliki barisan transaksi yang belum disetujui sebagai berikut:

Cara Kerja Protokol Bitcoin (Bagian 1)

David memeriksa blockchain-nya sendiri dan melihat bahwa transaksi-transaksi tersebut masuk akal. Ia ingin membantu mempublikasikan pesan verifikasi ini ke seluruh jaringan. Namun, sebelum itu, perjanjian verifikasi transaksi mengharuskan David untuk memecahkan teka-teki perhitungan yang disebut proof-of-work.

Jadi, apa yang harus David selesaikan? Untuk menjelaskannya, kita gunakan fungsi hash yang sudah pasti dan sudah diketahui semua orang di jaringan untuk dimasukkan ke dalam protokol tersebut. Bitcoin menggunakan fungsi hash SHA-256 yang sudah terkenal, tetapi fungsi hash kriptografi apa pun bisa digunakan di sini. Kita berikan David satu tanda transaksi yang sedang menunggu, yaitu tanda L, agar dapat digunakan untuk referensi selanjutnya.

Cara Kerja Protokol Bitcoin (Bagian 1)

Masalah yang akan David selesaikan adalah mencari suatu bilangan x yang acak, dan ketika kita tambahkan x ini ke belakang L dan hash kombinasi ini, hasilnya akan dimulai dengan beberapa nol. Kesulitan dari masalah ini dapat disesuaikan dengan menyesuaikan angka yang dimulai dengan nol. Sebuah masalah yang sederhana untuk membuktikan bahwa sebuah hash hanya membutuhkan 3 atau 4 nol awal, dan masalah yang sulit untuk membuktikan bahwa sebuah hash mungkin membutuhkan lebih banyak nol awal, misalnya 15 nol berturut-turut. Dalam kasus di atas, hash x = 0 tidak berhasil, karena hasilnya tidak dimulai dengan nol.

Jadi kita bisa melihat bahwa ini tidak berlaku jika x = 1.

Cara Kerja Protokol Bitcoin (Bagian 1)

Kemudian kita coba x = 2, kemudian kita coba x = 3, 4, 5…. dan akhirnya kita menemukan bahwa x = 4350, kita mendapatkan

Cara Kerja Protokol Bitcoin (Bagian 1)

Bilangan acak x ini memberi kita hasil yang berupa empat hash yang dimulai dengan nol.

Hal yang membuat masalah ini sulit untuk dipecahkan adalah bahwa hasil dari fungsi hash kode selalu acak, dan setiap perubahan kecil pada nilai input akan sangat berbeda dengan hasil output dari seluruh fungsi hash, sehingga sangat sulit untuk diprediksi. Jadi jika kita perlu hasil output harus dimulai dari 10 angka 0, maka David akan membutuhkan rata-rata 1610 ≈ 1012 x yang berbeda untuk menemukan nilai yang sesuai. Ini adalah tugas yang sangat menantang dan membutuhkan banyak kemampuan komputasi.

Jelas, kita dapat mengontrol tingkat kesulitan proof-of-work dengan menetapkan berapa banyak nol yang dibutuhkan. Sebenarnya, protokol Bitcoin dapat memiliki kontrol yang lebih baik atas tingkat kesulitan proof-of-work dengan sedikit modifikasi terhadap proof-of-work yang disebutkan di atas. Tidak lagi menetapkan berapa banyak nol awal yang diperlukan, tetapi menetapkan hasil hash blok yang kurang dari atau sama dengan nilai target, yang merupakan nilai target yang disesuaikan secara otomatis untuk memastikan bahwa setiap blok Bitcoin (blok) akan memakan waktu rata-rata 10 menit untuk dipecahkan.

Baiklah, mari kita anggap David beruntung menemukan sebuah nonce x yang tepat, selamat untuknya! Dia akan mendapatkan hadiah untuk menemukan jawabannya. Dia akan mengumumkan bahwa dia telah membuktikan bahwa transaksi di dalam blok ini masuk akal, dan pada saat yang sama mempublikasikan nilai x yang dia temukan, para peserta lainnya di infocoin dapat membuktikan bahwa x adalah solusi yang bekerja.

Untuk membuktikan bahwa program ini bekerja, peserta jaringan harus memiliki insentif untuk membantu memverifikasi transaksi. Tanpa insentif, tidak ada yang mau menghabiskan tenaga komputasi mereka sendiri untuk membantu memverifikasi transaksi. Jika peserta jaringan tidak mau menghabiskan tenaga komputasi, maka seluruh sistem tidak akan berfungsi. Oleh karena itu, kita dapat memberi penghargaan kepada siapa pun yang berhasil memverifikasi transaksi dengan memberi mereka beberapa infocoin.

Dalam protokol Bitcoin, proses verifikasi ini disebut mining. Setiap verifikasi yang berhasil dari setiap blok transaksi akan menerima bitcoin sebagai hadiah. Pada awalnya, itu adalah 50 bitcoin. Namun, untuk setiap 210.000 verifikasi blok (atau sekitar setiap 4 tahun), hadiah akan berkurang setengah.

Anda dapat melihat bukti-of-work sebagai proses verifikasi transaksi yang bersaing. Setiap peserta akan menghabiskan sebagian dari kekuatan komputasi. Kemungkinan seorang miner untuk menang kira-kira sama dengan ukuran kekuatan komputasi yang mereka kendalikan dan proporsi kekuatan komputasi dari seluruh jaringan.

Tentu saja, bahkan jika penambang yang tidak jujur memiliki peluang kecil untuk merusak seluruh blockchain, kita tidak cukup percaya diri untuk menganggapnya sebagai mata uang.

Saya akan segera menganalisis masalah biner, tetapi sebelum itu, saya ingin menambahkan detail penting dalam konsep Infocoin. Idealnya, kami berharap jaringan Infocoin dapat menyusun urutan transaksi secara seragam. Jika kami tidak memiliki urutan yang seragam, maka tidak akan jelas siapa yang memiliki infocoin pada waktu tertentu. Untuk membantu menyelesaikan hal ini.

Cara Kerja Protokol Bitcoin (Bagian 1)

Dalam kasus yang tidak disengaja, sebuah blockchain akan menghasilkan cabang. Hal ini terjadi karena, kadang-kadang, dua penambang memverifikasi transaksi pada satu blok hampir pada saat bersamaan. Mereka mempublikasikan ke jaringan pada saat yang sama, beberapa orang memperbarui blockchain mereka dengan satu metode, dan yang lain memperbarui blockchain mereka dengan metode lain.

Cara Kerja Protokol Bitcoin (Bagian 1)

Ini menciptakan situasi yang ingin kita hindari, di mana urutan transaksi tidak jelas dan tidak jelas siapa yang memiliki infocoin mana. Untungnya, ada cara sederhana untuk memindahkan cabang. Aturan adalah: jika terjadi perpecahan, orang-orang di jaringan terus mempertahankan dua cabang, dan dalam hal apa pun, penambang hanya bekerja pada blockchain terpanjang.

Misalkan kita memiliki sebuah cabang, di mana beberapa penambang menerima blok A terlebih dahulu, sementara yang lainnya menerima blok B. Para penambang yang menerima blok A akan terus menambang di cabang mereka, sementara yang lain akan menambang di cabang dari blok B. Misalkan penambang di cabang B berhasil menambang ke blok berikutnya:

Cara Kerja Protokol Bitcoin (Bagian 1)

Ketika mereka menerima pesan ini, orang-orang di cabang A akan memperhatikan bahwa cabang B sekarang adalah yang terpanjang dan akan beralih ke cabang B. Pekerjaan di cabang A akan berhenti dengan cepat, sehingga semua orang akan bekerja pada blockchain dengan urutan yang sama. Kemudian blok A akan diabaikan.

Demikian pula, jika seorang miner di cabang A menggali blok berikutnya, maka orang yang bekerja di cabang B akan berhenti dan beralih ke cabang A.

Apa pun hasilnya, proses ini menjamin bahwa blockchain memiliki urutan yang seragam. Dalam Bitcoin, sebuah transaksi tidak dapat dianggap sebagai konfirmasi sampai 1) itu ada di blok dalam cabang terpanjang, dan 2) setidaknya ada 5 blok yang telah diverifikasi yang diverifikasi di belakangnya. Dalam hal ini, kita mengatakan bahwa transaksi ini memiliki 6 blok konfirmasi.

Sekarang kita memahami urutan waktu, mari kita kembali berpikir tentang apa yang akan terjadi jika seseorang yang tidak jujur ingin membayar dua kali lipat. Misalkan Alice ingin memberikan transaksi yang sama kepada Bob dan Charlie pada saat yang sama. Salah satu kemungkinan adalah meminta dia untuk memverifikasi satu blok dengan dua transaksi pada saat yang sama.

Tetapi kemungkinan lain adalah bahwa dia mencoba untuk mempublikasikan dua transaksi secara terpisah. Dia mungkin mempublikasikan satu transaksi kepada sebagian penambang, dan yang lain kepada sebagian penambang, dan dia ingin kedua transaksi tersebut diverifikasi. Untungnya, dalam kasus ini, seperti yang kita katakan sebelumnya, jaringan akhirnya hanya mengkonfirmasi salah satu dari mereka.

Atau, Alice = Bob, yang berarti Alice mencoba untuk memberikan satu koin kepada Charlie, dan dia juga memberikan koin itu kepada dirinya sendiri, karena dia sendiri dapat memiliki lebih dari satu akun. Dalam hal ini, strategi Alice adalah menunggu sampai Charlie menerima Infocoin, yaitu sekitar 6 kali setelah transaksi dikonfirmasi dalam blockchain terpanjang.

Cara Kerja Protokol Bitcoin (Bagian 1)

Sayangnya, pada saat ini Alice sudah 6 langkah terlambat dari blockchain terpanjang. Dia mengalami kesulitan untuk mengikuti cabang terpanjang. Miner lain tidak akan membantunya karena mereka semua perlu bekerja pada cabang terpanjang untuk mendapatkan hadiah. Kecuali jika Alice dapat menggabungkan bukti kerja lebih cepat daripada orang lain di jaringan dalam menyelesaikan proof of work (yang berarti dia mungkin memiliki lebih dari 50% kekuatan komputasi dari seluruh jaringan).

Tentu saja, ini bukan pernyataan yang sangat ketat bahwa Alice pasti tidak bisa berbohong. Ini hanya kesimpulan yang masuk akal. Buku putih Bitcoin tidak melakukan analisis keamanan yang ketat, hanya kesimpulan informal yang mirip dengan saya.

Michael meninggalkan konsep Infocoin dan menjelaskan lebih detail tentang protokol Bitcoin dengan melihat transaksi Bitcoin. Jika Anda melihat di sini, Anda dapat mengikuti saya di Weibo, dan blog.

Selain itu, jika Anda merasa berguna, saya sarankan Anda untuk memberi tip kepada penulis artikel ini, Michael Nielsen, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, yang dapat Anda ikuti di Twitter, atau membaca bab pertama dari buku baru tentang jaringan saraf dan pembelajaran mendalam yang akan diterbitkan.

Artikel ini disutradarai oleh Jean-Luc Godard.