Bagaimana protokol Bitcoin berfungsi (di bawah)

Penulis:Mimpi kecil, Dicipta: 2017-01-19 18:30:04, Dikemas kini:

Bagaimana protokol Bitcoin berfungsi (di bawah)

  • Bitcoin

    Sekarang, mari kita tinggalkan Infocoin dan beralih kepada protokol Bitcoin yang sebenar. Bitcoin tidak jauh berbeza dengan Infocoin yang baru sahaja kami bina secara beransur-ansur, kecuali satu perubahan yang jelas.

    Untuk menggunakan Bitcoin, pertama anda perlu memasang dompet di komputer anda. Untuk pemahaman yang lebih baik, gambar di bawah adalah skrin dompet yang dipanggil Multibit. Anda dapat melihat baki Bitcoin di sudut kiri atas adalah 0.06555555 Bitcoin, dengan harga perdagangan pada masa itu pada gambar hampir $ 70. Gambar di sebelah kanan menunjukkan dua transaksi terkini, mereka menyimpan 0.06555555 Bitcoin.

    img

    Katakan anda seorang peniaga, anda telah menyediakan sebuah kedai dalam talian, dan anda memutuskan untuk membenarkan pelanggan membayar dengan Bitcoin. Yang perlu anda lakukan ialah membuat alamat Bitcoin baru dengan program dompet anda. Ia akan secara automatik menghasilkan sepasang kunci awam dan peribadi, dan kemudian hash kunci awam anda untuk membentuk alamat Bitcoin anda.

    img

    Kemudian anda menghantar alamat Bitcoin anda kepada orang yang akan membayar anda. Anda boleh menggunakan kotak e-mel, atau meletakkan secara langsung ke laman web anda. Ini selamat kerana alamat anda hanyalah kunci awam yang telah di-hash, dan anda boleh dengan yakin mendedahkan kepada sesiapa sahaja (tidak ada yang dapat mendapatkan kunci peribadi anda melalui itu). Saya akan menerangkan di kemudian hari mengapa alamat Bitcoin menggunakan nilai hash kunci awam dan bukan kunci awam itu sendiri.

    Sekarang, orang yang bersedia membayar perlu membuat transaksi baru. Jom lihat data transaksi yang benar-benar disalurkan ke 0.319 Bitcoin. Di bawah ini, ini hampir data asli, dengan tiga perubahan di sini: 1) data tidak berturut-turut; 2) nombor baris ditambah untuk pemahaman yang lebih baik; 3) menjauhi siri panjang nombor data hash, hanya menyimpan 6 digit pertama.

    1.  {"hash":"7c4025...",
    2.  "ver":1,
    3.  "vin_sz":1,
    4.  "vout_sz":1,
    5.  "lock_time":0,
    6.  "size":224,
    7.  "in":[
    8.    {"prev_out":
    9.      {"hash":"2007ae...",
    10.      "n":0},
    11.    "scriptSig":"304502... 042b2d..."}],
    12. "out":[
    13.   {"value":"0.31900000",
    14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Mari kita jelaskan secara terperinci.

      Barisan 1, nilai hash transaksi ((16 dalam sistem), dia adalah satu-satunya tanda yang digunakan untuk mewakili transaksi ini.

      Barisan 2, memberitahu kita bahawa transaksi ini menggunakan versi pertama protokol Bitcoin.

      Barisan 3, 4, memberitahu kita bahawa transaksi ini mempunyai satu input dan satu output.

      Baris ke-5, adalah masa kunci (lock_time) yang boleh digunakan untuk mengawal bila transaksi ini selesai. Sekarang kebanyakan transaksi Bitcoin mempunyai masa kunci 0, iaitu transaksi selesai dengan segera.

      Baris ke-6, memberitahu kita berapa banyak byte saiz transaksi ini, perhatikan, ini bukan wang transaksi.

      Baris 7 hingga 11, yang menentukan bahagian input dari transaksi ini, tepatnya, baris 8 hingga 10 memberitahu kita bahawa nilai input ini untuk memindahkan wang adalah wang yang berasal dari nilai output transaksi sebelumnya. Itu adalah 2007ae... iaitu hash 16 yang digunakan untuk menunjukkan satu transaksi ke atas. n = 0 mengatakan bahawa ia adalah output pertama dalam transaksi sebelumnya, dan kita akan melihat beberapa input dan output seperti apa dalam masa yang singkat, jadi sekarang tidak perlu risau.

      Perhatikan bahawa bahagian input di sini tidak mengatakan berapa banyak Bitcoin dalam transaksi sebelumnya akan dipindahkan ke yang berikutnya. Sebenarnya, semua Bitcoin dalam output n = 0 dalam transaksi sebelumnya telah dipindahkan. Sebagai contoh, jika output pertama n = 0 dalam transaksi sebelumnya mempunyai 2 Bitcoin, maka kedua-dua Bitcoin itu akan dibelanjakan dalam transaksi baru ini.

      Baris 12 hingga 14, ayat ini menentukan output transaksi tersebut. Secara khusus, baris 13 memberitahu kita jumlah wang yang dikeluarkan, iaitu 0.319 bitcoin. Baris 14 agak rumit, dan perlu diperhatikan bahawa baris a7db6f... adalah alamat yang akan dikenakan bitcoin.

      Sekarang, anda boleh melihat bagaimana Bitcoin menyelesaikan masalah dari mana nombor siri Bitcoin datang. Pertama, Bitcoin bukan satu senar koin yang terpisah, tetapi satu rangkaian transaksi yang wujud di dalam blockchain. Kedua, dengan cara ini, kita tidak memerlukan badan pusat untuk mengeluarkan nombor siri.

      Kita boleh teruskan melalui rantaian transaksi. Pada akhirnya, terdapat dua kemungkinan. Pertama, anda mungkin akan sampai ke transaksi Bitcoin pertama, yang wujud dalam blok, yang kami sebut blok ini sebagai blok Genesis. Ini adalah transaksi khas, yang tidak mempunyai input, hanya 50 Bitcoin yang dikeluarkan.

      Hasil kedua yang anda lihat berulang-ulang dalam rantaian transaksi mungkin ialah anda sampai pada transaksi yang dikenali sebagai kerucut Coinbase. Selain daripada blok Genesis, setiap blok bermula dengan transaksi Coinbase khas. Perdagangan ini digunakan untuk memberi ganjaran kepada pelombong yang mengesahkan transaksi di blok ini. Ia menggunakan bentuk data yang serupa dengan yang disebutkan di atas, tetapi tidak terperinci, jika anda berminat dengan transaksi Coinbase boleh lihat di sini.

      Perkataan di atas tidak jelas mengenai apa yang ditandatangani secara digital dalam 11 baris. Cara yang paling jelas adalah dengan meminta pembayar menandatangani secara digital keseluruhan transaksi. Untuk masa ini, ia tidak dilakukan, dan beberapa transaksi diabaikan. Ini menjadikan sebahagian transaksi dapat disesuaikan, iaitu mereka boleh diubah pada masa akan datang.

  • Terdapat banyak transaksi masuk dan keluar

    Dalam bahagian sebelumnya, kita bercakap tentang data transaksi yang hanya mempunyai satu input dan satu output. Sebenarnya, kebanyakan transaksi Bitcoin mempunyai banyak input atau banyak output. Mari kita lihat data mentah transaksi ini terlebih dahulu.

    1. {"hash":"993830...",
    2. "ver":1,
    3. "vin_sz":3,
    4.  "vout_sz":2,
    5.  "lock_time":0,
    6.  "size":552,
    7.  "in":[
    8.    {"prev_out":{
    9.      "hash":"3beabc...",
    10.        "n":0},
    11.     "scriptSig":"304402... 04c7d2..."},
    12.    {"prev_out":{
    13.        "hash":"fdae9b...",
    14.        "n":0},
    15.      "scriptSig":"304502... 026e15..."},
    16.    {"prev_out":{
    17.        "hash":"20c86b...",
    18.        "n":1},
    19.      "scriptSig":"304402... 038a52..."}],
    20.  "out":[
    21.    {"value":"0.01068000",
    22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
    23.    {"value":"4.00000000",
    24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
    
    • Seperti sebelum ini, kami menerangkan satu baris, sebahagian besarnya sama seperti yang baru-baru ini.

      Barisan 1, nilai hash transaksi, digunakan sebagai penanda tunggal transaksi tersebut.

      Barisan 2, versi protokol Bitcoin, edisi pertama.

      Barisan 3, 4, adalah bahawa ada 3 input dan 2 output dalam transaksi ini.

      Barisan 5, waktu penguncian ((sama seperti sebelum ini) ).

      Barisan 6, saiz byte transaksi.

      Baris ke-7 hingga ke-19, yang mentakrifkan semua input, yang masing-masing sepadan dengan output transaksi sebelumnya. Input pertama adalah baris ke-8 hingga ke-11; bentuk isinya sama seperti sebelumnya. Input kedua adalah baris ke-12 hingga ke-15, dan ketiga adalah baris ke-16 hingga ke-19.

      Baris 20 hingga 24, yang mentakrifkan semua output, output pertama adalah baris 21 dan 22, dan seperti sebelumnya, baris 21 mengatakan bahawa terdapat 0.01068 bitcoin di dalamnya. Baris 22 adalah bahasa skrip Bitcoin. String e8c30622... adalah alamat penerima. Output kedua adalah baris 23 dan 24, formatnya sama.

      Kelihatannya agak pelik, walaupun setiap output mencatat jumlah Bitcoin, tetapi tidak ada input. Sudah tentu berapa banyak Bitcoin yang boleh diperoleh dari setiap input dari transaksi sebelumnya. Dalam transaksi Bitcoin biasa, jumlah nilai semua input lebih besar daripada jumlah output yang ada (kecuali untuk transaksi Genesis block dan Coinbase yang baru-baru ini), jika jumlah input lebih besar daripada output, maka bitcoin yang berlebihan akan diberikan sebagai bayaran transaksi kepada pelombong blok di mana urus niaga ini berlaku.

      Beberapa input dan output berfungsi untuk mencari sifar. Misalkan saya ingin memberikan anda 0.15 bitcoin. Saya boleh menghabiskan 0.2 bitcoin yang saya terima sebelum ini. Sudah tentu, saya tidak mahu memberikan anda semua 0.2, jadi solusinya adalah, saya menghantar 0.15 bitcoin kepada anda, dan kemudian menghantar 0.05 bitcoin kepada alamat bitcoin lain saya sendiri.

  • Perkataan akhir

    Konsep asas di sebalik Bitcoin telah dijelaskan. Sudah tentu, saya juga mengabaikan banyak butiran. Ini bukan panduan rasmi. Tetapi saya ingin menggambarkan konsep di sebalik Bitcoin yang biasa digunakan.

    Walaupun peraturan di sebalik Bitcoin adalah mudah dan mudah difahami, ini tidak bermakna semua kemungkinan akibatnya juga mudah difahami. Banyak lagi yang boleh dikatakan mengenai Bitcoin, dan saya akan menerangkannya dalam artikel seterusnya.

    Seberapa anonimnya Bitcoin? Ramai yang mengatakan bahawa Bitcoin boleh digunakan secara anonim. Saya akan terkejut jika dalam masa terdekat, identiti kebanyakan pengguna Bitcoin tidak dapat dikenal pasti dengan keyakinan yang agak tinggi. Pengiktirafan tidak semestinya dapat disahkan sepenuhnya, tetapi cukup memberi peluang untuk mencapai matlamat yang cukup besar. Selain itu, identiti alat akan menjadi menarik. Selain itu, orang yang menjual dadah pada tahun 2011 di Silk Road mungkin masih dapat mencari pengguna yang tidak dikenali di badan kewangan awam, termasuk blockchain.

    Adakah anda boleh menjadi kaya dengan Bitcoin? Mungkin, Tim O'Reilly pernah berkata, membuat wang adalah seperti tanki minyak di dalam kereta yang anda perlu perhatikan, jika tidak, anda akan terjebak di pinggir jalan tetapi hidup tidak berputar di sekitar stesen minyak! Wow, kebanyakan minat terhadap Bitcoin nampaknya berasal dari orang yang matlamat hidup mereka hanyalah mencari stesen minyak yang besar. Saya harus mengakui, ini membingungkan. Saya percaya lebih menarik, lebih menikmati melihat Bitcoin atau mata wang digital lain sebagai alat kerjasama manusia yang membentuk.

    Rincian yang saya abaikan: Walaupun artikel ini menerangkan konsep utama di sebalik Bitcoin, terdapat banyak perincian yang tidak saya sebutkan. Salah satunya adalah teknik penjimatan ruang yang hebat dalam protokol, berdasarkan struktur data yang dipanggil pokok Merkle. Ini adalah perincian, tetapi ia adalah perincian yang sangat menarik, jika anda menyukai struktur data, ia adalah bernilai melihat. Anda boleh mengetahui lebih lanjut melalui kertas putih Bitcoin. Kedua, saya hampir tidak menyebut beberapa isu seperti bagaimana rangkaian ini menangani serangan pelayan yang ditolak, titik bagaimana untuk menyertai dan meninggalkan rangkaian, dan sebagainya. Ini adalah topik yang menarik, tetapi juga mengandungi banyak topik terperinci, jadi saya abaikan di sini.

    Skrip Bitcoin: Dalam artikel ini, saya menerangkan Bitcoin sebagai mata wang elektronik dalam talian. Tetapi ini hanya sebahagian kecil daripada cerita yang lebih besar dan menarik. Seperti yang kita lihat, setiap transaksi Bitcoin mempunyai skrip Bitcoin. Skrip ini disederhanakan dalam artikel ini menjadi sesuatu yang serupa dengan berkata, "Aku akan memberi Alice 10 Bitcoin untuk Bob". Tetapi bahasa skrip ini juga boleh digunakan untuk menggambarkan transaksi yang lebih kompleks.

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

    Selamat datang untuk mengikuti microblog penerjemah:?? 1015 Jika ada masalah, sila maafkan

Artikel-artikel ini diambil dari buku The Young Ones


Lebih lanjut