Bagaimana protokol Bitcoin berfungsi?

Penulis:Mimpi kecil, Dicipta: 2017-01-19 18:04:02, Dikemas kini: 2017-01-19 18:11:24

Bagaimana protokol Bitcoin berfungsi?

Pada tahun lalu, saya menulis 5 idea tentang Bitcoin di sini, yang nampaknya merupakan artikel pertama saya mengenai Bitcoin, hari ini saya akan membincangkan protokol Bitcoin.

Artikel ini diterjemahkan oleh Michael Nielsen mengenai protokol Bitcoin, artikel yang menurut penerjemah adalah yang paling jelas yang ditulis oleh penerjemah mengenai bagaimana protokol Bitcoin berfungsi. Michael Nielsen adalah seorang saintis, penulis, dan pengaturcara terdahulu yang mengkaji pengiraan kuantum. Rincian boleh dilihat dalam perkenalan beliau sendiri. Terjemahan artikel ini adalah kerana penerjemah berpendapat bahawa banyak, banyak argumen yang disokong oleh artikel dan perbincangan mengenai Bitcoin. Tetapi kebanyakan berhenti pada pemikiran konsep, harga, dan subjektif.

Hanya membiarkan orang tahu apa itu, di mana ia sesuai ke dalam ruang wang elektronik, bukan cuba meyakinkan mereka bahawa ia baik. Kata semulajadi beliau ialah If you don't believe me or don't get it, I don't have time to try to convince you, sorry.

  • Berikut adalah teks rasmi:

    Beribu-ribu artikel telah cuba menjelaskan Bitcoin, mata wang "peer-to-peer" dalam talian. Kebanyakan artikel telah membentangkan protokol yang mendasari, meninggalkan banyak butiran. Malah artikel yang mendalam juga terjebak di tempat penting. Tujuan artikel ini adalah untuk menerangkan perkara di sebalik protokol Bitcoin dengan cara yang jelas dan mudah difahami.

    Memahami protokol ini dengan mendalam adalah sukar kerana mudah untuk mengambil Bitcoin sebagai sesuatu yang diberikan, dan memikirkan bagaimana anda boleh menggunakan Bitcoin untuk membuat wang spekulatif, berfikir sama ada ia gelembung atau tidak, berfikir sama ada Bitcoin bermaksud akhir untuk cukai, dan sebagainya. Ini menarik untuk difikirkan, tetapi idea-idea ini sangat mengehadkan pemahaman anda. Memahami protokol Bitcoin itu sendiri akan membuka perspektif yang tidak dapat dicapai oleh saluran lain. Sebagai contoh, protokol ini adalah asas bahasa skrip terbina dalam Bitcoin, bahasa skrip yang membolehkan anda membuat alat kewangan baru dengan Bitcoin, seperti kontrak pintar.

    Saya akan menerangkan skrip Bitcoin dan kontrak pintar dalam artikel seterusnya. Saya akan memberi tumpuan kepada perincian spesifik mengenai protokol Bitcoin. Untuk memahami artikel ini, anda mungkin memerlukan pengetahuan mengenai kata laluan kunci awam dan tandatangan digital yang berkaitan, dan anda mungkin juga mempunyai pengetahuan mengenai fungsi hash (mengubah input panjang yang dikehendaki menjadi output panjang tetap).

    Pengasas Bitcoin adalah kriptografi, yang mungkin mengejutkan anda, bukankah Bitcoin adalah mata wang? Adakah ia adalah cara untuk menghantar mesej rahsia? Sebenarnya, kebanyakan masalah yang ingin diselesaikan oleh Bitcoin adalah tentang perlindungan transaksi yang ketat untuk memastikan orang tidak mencuri barang orang lain atau meniru orang lain, dan sebagainya. Di dunia fizikal yang terdiri daripada atom, kita memastikan keselamatan dengan kunci, tandatangan, insurans bank, dan sebagainya. Di dunia maklumat, kita memastikan keselamatan dengan kriptografi. Itulah sebabnya protokol kriptografi teras Bitcoin.

    Strategi dalam artikel ini adalah satu lapisan untuk membina Bitcoin. Kami akan mulakan dengan mata wang digital yang sangat mudah, kami akan menamakannya untuk sementara Infocoin, untuk membezakan dari Bitcoin. Sudah tentu versi pertama kami Infocoin akan mempunyai banyak kelemahan, jadi kami akan melalui beberapa iterasi, setiap iterasi akan memperkenalkan satu atau dua konsep baru.

    Cara ini agak lambat daripada menerangkan Bitcoin secara langsung dari awal. Tetapi walaupun anda dapat memahami prinsip Bitcoin, anda akan sukar memahami mengapa Bitcoin dirancang sedemikian rupa. Manfaat menerangkan Bitcoin secara bertahap adalah kerana ia memberi anda pemahaman yang lebih jelas tentang setiap elemen Bitcoin.

    Akhirnya, saya harus mengatakan bahawa saya adalah orang yang agak baru dalam dunia Bitcoin. Saya mempunyai perhatian kasar pada tahun 2011, tetapi saya benar-benar mengambil berat tentang perinciannya pada awal tahun 2013. Saya mengalu-alukan sesiapa sahaja untuk membetulkan bahagian yang salah.

  • Langkah 1: Tandatangani Surat Keinginan

    • Bagaimana untuk merancang mata wang?

      Dari pandangan luar, mata wang digital tidak mungkin wujud. Misalkan seseorang yang kita namakan Alice mempunyai mata wang digital yang ingin dibelanjakan. Jika Alice boleh menggunakan satu senar sebagai wang, bagaimana kita boleh menghalang dia daripada menggunakan senar yang sama berulang kali?

      Ini hanya dua daripada banyak masalah yang akan diselesaikan dengan menggunakan maklumat sebagai wang. Dalam versi pertama Infocoin, kami cuba untuk mendapatkan Alice untuk memberikan satu senar sebagai wang, dan mencari cara untuk melindungi ia daripada dipalsukan. Katakan Alice akan memberikan satu infocoin kepada orang lain, Bob. Alice perlu menulis mesej berikut: "Saya mahu Alice memberikan Bob satu infocoin". Dia kemudian menandatangani mesej ini dengan kunci peribadi (kunci peribadi ini adalah 64 nombor yang dihasilkan secara rawak) dengan cara tandatangan digital.

      Cara ini tidak begitu terkenal, tetapi masih mempunyai beberapa kelebihan. Seseorang di dunia boleh menggunakan kunci awam Alice untuk mengesahkan bahawa Alice adalah orang yang menandatangani. Tiada siapa yang lain yang dapat menghasilkan hasil tandatangan itu. (Tandatangan ini hanya boleh dihasilkan dari kunci peribadi yang dimiliki oleh Alice, prinsipnya lihat tandatangan digital yang disebutkan di atas), jadi Alice tidak boleh berkata tidak, saya tidak memberi Bob infocoin. Oleh itu, protokol ini memberikan bukti bahawa Alice benar-benar bermaksud untuk memberikan Bob infocoin.

      Saya belum mengatakan apa sebenarnya wang dalam protokol ini. Yang jelas: wang sebenarnya adalah mesej itu sendiri. Maksudnya, tanda tangan yang ditandatangani mewakili watak yang akan diberikan oleh ibu saya, Alice, kepada Bob. Protokol seterusnya akan serupa dalam hal ini, iaitu semua mata wang digital hanyalah watak mesej yang semakin terperinci.

  • Untuk memberikan identiti yang unik kepada mata wang dengan nombor siri

    Masalah dengan versi pertama Infocoin kami ialah Alice boleh menghantar mesej yang sama yang ditandatangani berulang kali kepada Bob. Misalkan Bob menerima 10 mesej seperti "Saya, Alice, ingin memberikan satu Infocoin kepada Bob". Adakah ini tentang Alice yang memberikan 10 Infocoin yang berbeza kepada Bob?

    Kami mahu infocoin mempunyai logo yang unik. Ia memerlukan tag atau nombor siri. Alice boleh menandatangani infocoin dengan nombor siri 8740348 untuk Bob dalam mesej. Kemudian jika Alice menandatangani infocoin dengan nombor siri 8770431 dalam mesej lain, Alice akan memberikan infocoin dengan nombor siri 8770431 kepada Bob, supaya Bob dan orang lain tahu bahawa ini adalah dua infocoin yang berbeza.

    Untuk membuat rancangan ini berkesan, kita perlu mempunyai sumber nombor siri yang boleh dipercayai. Salah satu cara untuk menghasilkan nombor siri adalah dengan menubuhkan sebuah institusi seperti bank. Bank ini akan menghasilkan nombor siri untuk infocoin, mencatat siapa yang memiliki infocoin, dan mengesahkan keaslian transaksi.

    Lebih terperinci lagi, mari kita katakan Alice pergi ke bank dan berkata, "Saya akan mengambil satu infocoin dari akaun saya". Bank itu mengurangkan satu infocoin dari akaunnya, dan kemudian memberikan nombor siri baru yang tidak pernah digunakan, katakanlah 1234567". Kemudian, apabila Alice ingin menghantar satu infocoin kepada Bob, dia menandatangani mesej baru itu.

  • Buat semua orang menjadi bank

    Penyelesaian di atas nampaknya mempunyai potensi besar. Tetapi, kita boleh melakukan sesuatu yang lebih bercita-cita tinggi. Kita boleh membuang bank dari perjanjian ini. Ini mengubah sifat mata wang itu sendiri dengan ketara. Ini bermakna tidak akan ada organisasi yang berasingan yang bertanggungjawab atas mata wang itu.

    Cara ini adalah untuk menjadikan semua orang bekerjasama menjadi bank. Khususnya, kita menganggap setiap orang yang menggunakan infocoin menyimpan rekod lengkap, termasuk rekod yang mana infocoin milik siapa. Anda boleh membayangkan ia sebagai buku ledger awam yang dikongsi, buku ledger ini merakam semua rekod transaksi infocoin.

    Sekarang, anggaplah Alice akan memberikan infocoin kepada Bob. Dia akan memberi tanda tangan kepada Alice untuk memberi tanda tangan kepada Bob pada infocoin yang mempunyai nombor siri 1234567. Dan ia akan mengeluarkan mesej yang ditandatangani kepada Bob, dan Bob boleh memeriksa dengan rantaian bloknya sendiri. OK, memang itu adalah infocoin yang diberikan Alice kepada saya.

    Kami masih mempunyai masalah dari mana nombor siri itu datang, tetapi perkara ini sebenarnya mudah diselesaikan, jadi saya akan menerangkannya kemudian. Masalah yang lebih sukar adalah bahawa protokol ini membenarkan Alice berulang kali menghabiskan infocoin-nya. Dia boleh mengeluarkan mesej yang ditandatangani oleh Alice untuk memberi Bob nombor siri 1234567. Dia juga boleh mengeluarkan mesej yang ditandatangani oleh Alice untuk memberi Charlie nombor siri 1234567. Bob dan Charlie berdua menggunakan blockchain mereka sendiri untuk memeriksa bahawa infocoin itu benar-benar berasal dari Alice.

    Kami menamakan masalah ini sebagai masalah double spending (yang kemudian dikenali sebagai double spending), dan pada pandangan pertama, dua bunga seperti itu nampaknya sukar untuk berjaya. Lagipun, jika Alice menghantar mesej kepada Bob terlebih dahulu, maka Bob menghantar mesej kepada semua orang lain (termasuk Charlie), dan orang lain mengemas kini blockchain mereka. Pada masa ini, Charlie tidak akan ditipu oleh Alice. Oleh itu, nampaknya perbelanjaan berganda hanya mungkin dalam jangka masa yang singkat.

    Bagaimana untuk menyelesaikan masalah ini? Cara yang paling mudah ialah apabila Alice menghantar infocoin kepada Bob, Bob tidak perlu memeriksa urus niaga itu sendiri. Sebaliknya, dia harus mengumumkan urus niaga yang sedang menunggu ini ke seluruh rangkaian infocoin dan membiarkan orang lain membantu menilai sama ada urusniaga itu sah. Jika mereka bersama-sama memutuskan bahawa urusniaga itu sah, maka Bob boleh menerima infocoin itu, dan kemudian semua orang mengemas kini blockchain mereka. Protokol semacam ini dapat mencegah kembang ganda, kerana jika Alice ingin menghantar infocoin yang sama kepada Bob dan Charlie pada masa yang sama, orang lain di rangkaian akan melihat dan memberitahu Bob dan Charlie bahawa urusniaga itu tidak baik, maka urusniaga itu tidak dibenarkan lulus.

    Lebih khusus lagi, katakanlah Alice ingin memberikan Bob sebuah infocoin. Seperti yang berlaku sebelum ini, dia memberi tanda tangan kepada mesej, dan Alice akan memberikan Bob satu token infocoin dengan nombor siri 1234567, dan akan memberi tanda tangan kepada mesej yang baik kepada Bob. Seperti yang berlaku sebelum ini, Bob menggunakan blockchain sendiri untuk membuat pemeriksaan, dan koin itu memang milik Alice. Tetapi protokolnya berbeza, Bob tidak menerima ini secara langsung, tetapi mengumumkan mesej Alice ke seluruh rangkaian rangkaian.

    Protokol ini kini masih mempunyai banyak faktor yang tidak pasti. Sebagai contoh, apakah yang dimaksudkan dengan berita ini apabila cukup ramai orang menerbitkan berita ini, berapa ramai yang cukup? Tidak mungkin seluruh rangkaian infocoin kerana kita tidak tahu terlebih dahulu siapa yang berada di rangkaian infocoin. Juga, tidak boleh menjadi sebahagian pengguna tetap. Kami tidak tergesa-gesa untuk mencari masalah ini sekarang. Di sini saya akan menunjukkan satu masalah serius dengan rancangan transaksi ini, dan penyelesaian masalah yang akan membantu menyelesaikan masalah di atas pada masa yang sama.

  • Bukti kerja Bukti kerja

    Katakanlah Alice mahu berganda dalam protokol di atas, dia perlu mengawal keseluruhan rangkaian infocoin. Katakanlah dia menggunakan sistem automatik untuk membuat banyak akaun dengan identiti yang berbeza di rangkaian infocoin, katakanlah ada satu bilion. Seperti sebelumnya, dia cuba melakukan berganda, memberikan infocoin yang sama kepada Bob dan Charlie, tetapi apabila Bob dan Charlie meminta rangkaian infocoin untuk memeriksa urus niaga ini, kuda-kuda Alice membanjiri seluruh rangkaian, memberitahu Bob dan Charlie bahawa mereka boleh melalui urus niaga ini, dan mungkin menipu salah seorang daripada mereka atau kedua-duanya menerima urusniaga ini.

    Terdapat satu cara yang bijak, dengan menggunakan kaedah yang dipanggil Proof-of-work yang digunakan untuk mengesahkan transaksi. Cara ini tidak intuitif dan memerlukan gabungan dua konsep, 1) membuat proses pemeriksaan transaksi secara buatan yang memerlukan perbelanjaan pengiraan yang lebih besar; 2) memberi ganjaran kepada mereka yang membantu mengesahkan transaksi tersebut. Menggunakan kaedah ganjaran untuk memberi insentif kepada orang dalam rangkaian untuk mengesahkan urus niaga.

    Ini adalah titik utama dari bukti kerja. Tetapi untuk memahami bukti kerja yang sebenarnya, kita perlu masuk ke dalam butiran yang lebih spesifik.

    Katakanlah Alice akan menghantar mesej kepada seluruh rangkaian. Katakanlah Alice akan menghantar mesej infocoin dengan nombor siri 1234567 kepada Bob. Apabila orang lain di rangkaian mendengar mesej ini, semua orang akan memasukkan ia ke dalam senarai urus niaga yang belum diluluskan oleh seluruh rangkaian. Katakanlah seseorang di rangkaian bernama David mungkin mempunyai senarai urus niaga berikut:

    img

    David memeriksa blockchainnya sendiri dan melihat bahawa transaksi tersebut adalah sah. Dia ingin membantu menyebarkan mesej pengesahan ini ke seluruh rangkaian. Tetapi, sebelum itu, protokol pengesahan transaksi memerlukan David untuk menyelesaikan satu masalah yang sukar dikira, iaitu bukti kerja. Jika dia tidak mendapat jawapan kepada masalah tersebut, ahli lain di rangkaian tidak akan menerima pengesahan dia.

    Untuk menerangkan ini, kita menggunakan fungsi hash yang diketahui oleh semua orang di rangkaian untuk memasukkannya ke dalam protokol itu sendiri. Bitcoin menggunakan fungsi hash SHA-256 yang terkenal, tetapi apa-apa fungsi hash kriptografi boleh digunakan di sini. Kami memberikan satu tanda kepada sekumpulan transaksi yang menunggu, L, untuk rujukan kemudian. Kumpulan transaksi yang menunggu ini juga setara dengan blok di dalam blockchain.

    img

    Masalah yang akan diselesaikan oleh David ialah mencari bilangan x secara rawak, apabila kita menambah x ini ke L dan hash ini, hasilnya bermula dengan beberapa permulaan sifar. Kesulitan masalah ini dapat disesuaikan dengan penyesuaian bilangan permulaan sifar. Sebuah pembuktian kerja yang sederhana memerlukan hanya 3 atau 4 permulaan sifar untuk hash, dan pembuktian kerja yang sukar mungkin memerlukan lebih banyak permulaan sifar, seperti 15 sifar berturut-turut. Dalam kes di atas, hash yang mencapai x = 0 tidak berjaya kerana hasilnya tidak bermula dengan 0.

    Jadi kita boleh lihat bahawa x adalah sama dengan 1.

    img

    Kemudian kita cuba x = 2, kemudian x = 3, 4, 5... dan akhirnya, apabila kita mendapati x = 4350, kita akan mendapat

    img

    Bilangan x secara rawak ini memberi kita hasil empat hash yang bermula dengan sifar. Ini sudah cukup untuk menyelesaikan satu masalah sederhana untuk membuktikan hash.

    Yang membuat masalah ini tidak mudah diselesaikan ialah hasil fungsi hash kodnya sentiasa rawak, sebarang perubahan kecil pada nilai input akan mengubah hasil output keseluruhan fungsi hash sehingga sukar untuk diprediksi. Jadi jika kita memerlukan hasil output yang mesti bermula dari 10 sifar, maka David akan memerlukan purata 1610 ≈ 1012 x yang berbeza untuk mencari nilai yang sesuai. Ini adalah tugas yang sangat mencabar dan memerlukan banyak daya pengiraan.

    Jelas sekali, kita boleh mengawal kesukaran kesukaran bukti kerja dengan menetapkan berapa banyak sifar yang diperlukan. Sebenarnya, protokol Bitcoin mempunyai kawalan yang lebih baik terhadap kesukaran kesukaran dengan mengubah sedikit bukti kerja di atas. Bukan lagi menetapkan berapa banyak sifar yang diperlukan untuk memulakan blok, tetapi menetapkan hasil hash output yang kurang daripada atau sama dengan nilai sasaran, nilai sasaran ini disesuaikan secara automatik untuk memastikan setiap blok Bitcoin (blok) mengambil masa 10 minit purata untuk menyelesaikan.

    Baiklah, mari kita anggap David bertuah dan menemui x yang sesuai, tahniah kepada dia! (dia akan diberi ganjaran untuk mencari jawapan ini). Dia akan mengumumkan bahawa dia telah membuktikan bahawa transaksi di dalam blok itu adalah sah, dan pada masa yang sama menerbitkan nilai x yang dia dapati, peserta lain di infocoin boleh membuktikan bahawa pembuktian kerja x adalah sah. Kemudian mereka mengemas kini blockchain mereka sendiri untuk memasukkan transaksi yang diterbitkan oleh David.

    Untuk membuktikan bahawa program ini berfungsi, peserta rangkaian perlu mempunyai insentif untuk membantu mengesahkan transaksi. Tanpa insentif, tiada siapa yang bersedia menghabiskan tenaga komputer mereka untuk membantu mengesahkan transaksi. Jika peserta rangkaian tidak bersedia untuk menggunakan tenaga pengiraan, sistem tidak akan berfungsi. Oleh itu, kita boleh memberi ganjaran kepada sesiapa yang berjaya mengesahkan transaksi dengan memberi mereka beberapa cara infocoin. Jika memberi mereka ganjaran infocoin yang cukup, mereka boleh mendapat insentif untuk mengambil bahagian dalam pengesahan.

    Dalam protokol Bitcoin, proses pengesahan ini dikenali sebagai penggalian tambang. Pada masa itu, ganjaran penggalian yang berjaya akan dikurangkan kepada 10-8 bitcoin. Pada mulanya, ganjaran adalah 50 bitcoin. Tetapi setiap 210,000 blok yang disahkan (atau kira-kira setiap 4 tahun), ganjaran akan berkurang separuh. Setakat ini, ini hanya berlaku sekali, iaitu sekarang, ganjaran yang diperoleh oleh pengesahan blok adalah 25 bitcoin. Proses pengurangan separuh akan berterusan sehingga kira-kira 2140; pada masa itu, ganjaran penggalian akan dikurangkan kepada 10-8 bitcoin.

    Anda boleh menganggap bukti kerja sebagai proses transaksi pengesahan yang bersaing. Setiap peserta akan menghabiskan sebahagian daripada kuasa pengkomputeran. Peluang seorang pelombong untuk menang mungkin sama dengan nisbah saiz kuasa pengkomputeran yang mereka kawal terhadap kuasa pengkomputeran keseluruhan rangkaian. Sebagai contoh, jika seorang pelombong menguasai satu peratus kuasa pengkomputeran keseluruhan rangkaian, maka kebarangkalian kemenangannya mungkin satu peratus. Oleh itu, menyediakan banyak kuasa pengkomputeran adalah faktor yang menyokong daya saing, dan pelombong yang tidak jujur mempunyai sedikit peluang untuk merosakkan proses pengesahan kecuali mereka menghabiskan sumber komputer yang besar.

    Sudah tentu, walaupun peluang kecil bagi pelombong yang tidak jujur untuk merosakkan keseluruhan blockchain, kita tidak cukup yakin untuk menggunakannya sebagai mata wang.

    Saya akan segera mengkaji masalah bunga dua, tetapi sebelum itu, saya ingin menambah satu butiran penting dalam konsep Infocoin. Secara ideal, kami berharap rangkaian Infocoin dapat menyamakan urutan transaksi yang berlaku. Jika kita tidak mempunyai urutan yang seragam, maka tidak jelas siapa yang mempunyai infocoin pada masa tertentu. Untuk membantu menyelesaikan ini.

    img

    Dalam kes kebetulan, sebuah blockchain akan menghasilkan cawangan. Ini berlaku kerana kadang-kadang dua pelombong mengesahkan transaksi blok hampir pada masa yang sama. Mereka diterbitkan ke rangkaian pada masa yang sama, ada yang mengemas kini blockchain mereka dengan satu cara, dan ada yang mengemas kini blockchain mereka dengan cara yang lain.

    img

    Ini menyebabkan situasi yang kita ingin elakkan. Dalam keadaan seperti ini, urutan transaksi tidak jelas, dan siapa yang mempunyai infocoin tidak jelas. Nasib baik, ada cara mudah untuk memindahkan cawangan. Aturan adalah: jika keadaan cawangan berlaku, orang di rangkaian akan terus menyimpan dua cawangan, dan dalam apa jua keadaan, pelombong hanya bekerja pada blokchain yang paling panjang.

    Katakan kita mempunyai satu cawangan, beberapa pelombong menerima blok A terlebih dahulu, dan beberapa pelombong lain menerima blok B terlebih dahulu. Mereka yang menerima blok A akan terus menggali di sepanjang cawangan mereka, sementara yang lain menggali di sepanjang cawangan B. Katakanlah pelombong di cabang B berjaya menggali blok seterusnya:

    img

    Apabila mereka menerima mesej ini, orang di cawangan A akan melihat bahawa sekarang cawangan B adalah yang terpanjang, jadi mereka akan beralih ke cawangan B. Pekerjaan di cawangan A akan berhenti dengan cepat, sehingga semua orang akan bekerja di blokchain yang sama. Kemudian blok A akan diabaikan. Sudah tentu, semua urus niaga yang terhad di blok A akan kekal terhad, dan kemudian akan dimasukkan ke blok baru di cawangan B, sehingga semua urus niaga akhirnya akan disahkan.

    Dengan cara yang sama, jika pelombong di cawangan A menggali blok seterusnya terlebih dahulu, orang yang bekerja di cawangan B berhenti dan beralih ke cawangan A.

    Walau apa pun hasilnya, proses ini memastikan bahawa blockchain mempunyai urutan yang seragam. Dalam Bitcoin, transaksi tidak boleh dikira sebagai pengesahan sehingga 1) ia berada di blok yang paling panjang di cabang, dan 2) sekurang-kurangnya 5 blok yang disahkan di belakangnya disahkan. Dalam kes ini, kita mengatakan bahawa transaksi ini mempunyai 6 pengesahan.

    Sekarang kita memahami urutan masa, maka kita kembali memikirkan apa yang akan berlaku jika seseorang yang tidak jujur ingin menghabiskan wang dua kali ganda. Misalkan Alice akan memberikan Bob dan Charlie urus niaga yang sama pada masa yang sama. Satu kemungkinan adalah meminta dia untuk mengesahkan satu blok dengan dua urus niaga pada masa yang sama. Misalkan dia mempunyai satu peratus kemahiran pengiraan, maka dia mungkin lebih bernasib baik untuk mengesahkan satu blok. Malangnya, perbelanjaan dua kali ini akan segera dijumpai dan ditolak oleh orang lain, walaupun dia menyelesaikan masalah yang sukar dalam pembuktian kerja. Jadi kemungkinan ini tidak perlu kita risaukan.

    Tetapi kemungkinan lain adalah bahawa dia cuba mendedahkan dua transaksi secara berasingan. Dia mungkin mendedahkan satu transaksi kepada satu kumpulan pelombong dan satu lagi kepada kumpulan pelombong yang lain, dan dia berharap kedua-dua transaksi itu disahkan.

    Satu lagi kemungkinan ialah, Alice = Bob, iaitu Alice cuba memberikan satu duit syiling kepada Charlie, dan pada masa yang sama dia memberikan duit syiling itu kepada dirinya sendiri, kerana dia sendiri boleh mempunyai beberapa akaun. Dalam kes ini, strategi Alice adalah menunggu sehingga Charlie menerima Infocoin, iaitu mungkin selepas transaksi disahkan sebanyak 6 kali dalam blockchain terpanjang. Dia cuba lagi untuk menyelesaikan cabang blok lain yang mempunyai transaksi yang dia hantar kepadanya.

    img

    Malangnya, pada masa ini, Alice sudah 6 langkah lebih lambat daripada blokchain terpanjang. Dia sukar untuk mengikuti cabang terpanjang. Para pelombong lain tidak akan membantunya kerana mereka semua perlu bekerja di cabang terpanjang untuk mendapat ganjaran. Kecuali Alice dapat menggabungkan lebih cepat daripada orang lain di rangkaian ketika menyelesaikan bukti kerja (iaitu dia mungkin mempunyai lebih daripada 50% keupayaan pengiraan keseluruhan rangkaian).

    Sudah tentu, ini tidak terlalu ketat untuk mengatakan bahawa Alice pasti tidak boleh menggandakan bunga. Ini hanya kesimpulan yang munasabah. Tulisan putih Bitcoin sebenarnya tidak melakukan analisis keselamatan yang ketat, tetapi hanya kesimpulan tidak rasmi yang serupa dengan saya di sini.

    Ini adalah bahagian pertama, dan bagi bahagian kedua, penulis Michael meninggalkan konsep Infocoin untuk menerangkan protokol Bitcoin dengan lebih terperinci melalui pandangan perdagangan Bitcoin. Jika anda melihat di sini, anda boleh mengikuti microblog saya, dan blog.

    Selain itu, jika anda merasa membantu, saya cadangkan anda memberi tip kepada penulis asal artikel ini, Michael Nielsen, di alamat 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, anda juga boleh mengikuti beliau di Twitter.

Artikel-artikel ini diambil dari buku The Young Ones


Lebih lanjut