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

Cara Kerja Protokol Bitcoin (Bagian 2)

Dibuat di: 2017-01-19 18:30:04, diperbarui pada:
comments   0
hits   1831

Cara Kerja Protokol Bitcoin (Bagian 2)

  • #### Bitcoin

Sekarang, mari kita beralih dari Infocoin ke protokol Bitcoin yang sebenarnya. Tidak ada banyak perbedaan antara Bitcoin dan Infocoin yang baru saja kami bangun selangkah demi selangkah, kecuali satu perubahan yang jelas.

Untuk menggunakan bitcoin, pertama-tama Anda harus menginstal dompet di komputer Anda. Untuk memberi Anda pemahaman yang lebih baik, gambar di bawah ini adalah cuplikan dari dompet yang disebut Multibit. Anda dapat melihat saldo bitcoin di sudut kiri atas dengan nilai 0.06555555 bitcoin, atau hampir $ 70 berdasarkan harga transaksi saat itu.

Cara Kerja Protokol Bitcoin (Bagian 2)

Katakanlah Anda seorang pedagang, Anda telah menyiapkan sebuah toko online, dan Anda memutuskan untuk mengizinkan pelanggan membayar dengan bitcoin. Yang perlu Anda lakukan adalah menggunakan program dompet Anda untuk menghasilkan alamat bitcoin yang baru.

Cara Kerja Protokol Bitcoin (Bagian 2)

Anda kemudian mengirim alamat bitcoin Anda kepada orang yang akan membayar Anda. Anda dapat mengirimkannya ke kotak surat, atau langsung ke halaman web Anda. Ini aman, karena alamat Anda hanyalah kunci publik yang di-hash, dan Anda dapat dengan aman mempublikasikannya kepada siapa pun (tidak ada yang bisa mendapatkan kunci pribadi Anda melalui itu). Saya akan menjelaskan mengapa alamat bitcoin menggunakan nilai hash kunci publik dan bukan kunci publik itu sendiri.

Sekarang orang yang bersedia membayar perlu membuat transaksi baru. Mari kita lihat data transaksi yang sebenarnya ditransfer ke 0.319 bitcoin. Di bawah ini adalah data yang hampir asli, dengan tiga perubahan di sini: 1) data tidak bersekutu; 2) menambahkan nomor baris, untuk pemahaman yang lebih baik; 3) menghilangkan serangkaian angka panjang dari 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 satu per satu.

    Baris pertama, hash transaksi ((16 iterasi), adalah satu-satunya token yang digunakan untuk mewakili transaksi tersebut.

    Baris kedua, menunjukkan bahwa transaksi ini menggunakan versi pertama dari protokol Bitcoin.

    Baris 3 dan 4 menunjukkan bahwa transaksi ini memiliki satu input dan satu output.

    Baris ke-5 adalah waktu penguncian (lock_time) yang dapat digunakan untuk mengontrol kapan transaksi dilakukan. Saat ini, sebagian besar transaksi bitcoin memiliki waktu penguncian 0, yang berarti transaksi selesai segera.

    Baris 6, memberi tahu kita berapa banyak byte dalam ukuran transaksi ini, perhatikan bahwa ini bukan uang transaksi.

    Baris 7 sampai 11, ini adalah bagian yang mendefinisikan input dari transaksi ini, tepatnya, baris 8 sampai 10 memberitahu kita bahwa nilai input dari uang yang akan ditransfer adalah uang yang berasal dari nilai output dari transaksi sebelumnya. 2007ae… adalah hash dari 16 digit dari transaksi sebelumnya, yang digunakan untuk menunjuk ke atas satu transaksi.

    Bagian input yang perlu diperhatikan di sini adalah bahwa tidak ada yang mengatakan berapa banyak bitcoin dari transaksi sebelumnya yang akan ditransfer ke transaksi berikutnya. Sebenarnya, semua bitcoin dalam output n = 0 dari transaksi sebelumnya telah ditransfer. Misalnya, jika output pertama dari transaksi sebelumnya (n = 0) berisi 2 bitcoin, maka kedua bitcoin tersebut akan dihabiskan dalam transaksi baru ini.

    Baris 12 sampai 14, ini adalah bagian yang mendefinisikan output dari transaksi tersebut. Secara khusus, baris 13 memberi tahu kita jumlah uang yang dikeluarkan, yaitu 0.319 bitcoin. Baris 14 lebih rumit, perlu dicatat bahwa string a7db6f… adalah alamat untuk menerima bitcoin.

    Sekarang, Anda dapat melihat bagaimana Bitcoin memecahkan masalah dari mana nomor seri dari bitcoins yang kami sebutkan sebelumnya berasal. Pertama, Bitcoin bukanlah sebuah token yang terpisah, melainkan sebuah rangkaian panjang transaksi yang ada di dalam blockchain.

    Kita bisa terus menelusuri sepanjang rantai transaksi. Pada akhirnya, ada dua kemungkinan, pertama, Anda mungkin akan pergi ke transaksi Bitcoin pertama, transaksi ini ada di dalam sebuah blok, kita sebut blok ini sebagai blok Genesis. Ini adalah transaksi khusus, tidak ada input, hanya 50 bitcoin yang keluar.

    Hasil kedua yang bisa Anda dapatkan dari menelusuri rantai transaksi adalah Anda akan menemukan transaksi yang disebut dengan “coinbase” . Setiap blok, kecuali blok Genesis, dimulai dengan transaksi coinbase khusus. Transaksi ini digunakan untuk memberi hadiah kepada penambang yang memverifikasi transaksi di blok tersebut.

    Tidak jelas apa yang ditandatangani secara digital pada baris 11 di atas. Yang paling jelas adalah bahwa cara yang paling jelas adalah untuk membuat pembayar menandatangani seluruh transaksi secara digital. Untuk saat ini tidak demikian, beberapa transaksi diabaikan. Ini membuat sebagian dari transaksi memiliki plastisitas, yang berarti mereka dapat diubah di kemudian hari.

  • Ada beberapa transaksi input dan output

Pada paragraf sebelumnya kita telah membahas tentang sebuah transaksi yang hanya memiliki satu input dan satu output. Sebenarnya, kebanyakan transaksi bitcoin memiliki beberapa input atau beberapa output.

  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 sebelumnya, kami menjelaskan secara berurutan, sebagian besar sama seperti sebelumnya.

    Baris 1, hash dari transaksi, digunakan sebagai satu-satunya tanda transaksi tersebut.

    Baris 2, versi protokol Bitcoin, edisi pertama.

    Baris ketiga dan keempat, berarti ada tiga masukan dan dua output dalam transaksi ini.

    Baris 5, waktu penguncian ((dan sama seperti sebelumnya)

    Baris 6, ukuran byte transaksi.

    Baris 7 sampai 19, mendefinisikan semua input, yang masing-masing sesuai dengan output dari transaksi sebelumnya. Input pertama adalah baris 8 sampai 11. Format isinya sama dengan sebelumnya.

    Baris 20-24 mendefinisikan semua output, output pertama adalah baris 21 dan 22, dan seperti sebelumnya, baris 21 mengatakan bahwa ada 0,01068 bitcoin di dalamnya. Baris 22 adalah bahasa skrip untuk bitcoin. String e8c30622… adalah alamat penerima.

    Yang tampak agak aneh adalah, meskipun setiap output memiliki jumlah bitcoin yang tercatat, input tidak. Tentu saja, berapa banyak bitcoin yang dapat diperoleh setiap input dari transaksi sebelumnya. Dalam transaksi bitcoin biasa, jumlah nilai semua input lebih besar dari jumlah output (kecuali transaksi blok Genesis dan coinbase yang baru saja disebutkan), dan jika jumlah input lebih besar dari output, maka bitcoin tambahan akan diberikan sebagai biaya transaksi kepada penambang blok tempat transaksi tersebut.

    Jika saya ingin memberi Anda 0,15 bitcoin. Saya bisa menghabiskan 0,2 bitcoin yang saya terima sebelumnya. Tentu saja, saya tidak ingin memberi Anda semua 0,2 bitcoin, jadi solusinya adalah, saya mengirim 0,15 bitcoin kepada Anda, dan kemudian mengirim 0,05 bitcoin ke alamat bitcoin saya sendiri. Jadi, 0,05 adalah untuk memberi saya nol.

  • Kesimpulan

Konsep dasar di balik Bitcoin sudah dijelaskan. Tentu saja, saya juga mengabaikan banyak detail, karena ini bukan panduan resmi. Tapi saya ingin menjelaskan konsep di balik Bitcoin yang biasa digunakan.

Meskipun aturan-aturan di balik Bitcoin sederhana dan mudah dipahami, itu tidak berarti bahwa semua kemungkinan hasil yang dihasilkan oleh aturan-aturan tersebut juga mudah dipahami. Ada banyak hal yang bisa dikatakan tentang Bitcoin, yang akan saya jelaskan di artikel berikutnya.

Banyak orang mengatakan bahwa bitcoin dapat digunakan secara anonim. Pernyataan ini muncul di pasar gelap seperti Silk Road. Namun, pernyataan ini tidak benar. Blockchain bersifat publik, yang berarti bahwa siapa pun dapat melihat semua transaksi bitcoin. Meskipun alamat bitcoin tidak secara langsung sesuai dengan identitas seseorang di dunia nyata, para ilmuwan komputer telah melakukan banyak pekerjaan untuk memecahkan misteri anonimitas jaringan sosial.

Apakah Anda bisa menjadi kaya dengan Bitcoin? Mungkin, Tim O’Reilly pernah mengatakan bahwa menghasilkan uang seperti sebuah tangki bensin di dalam mobil yang perlu Anda perhatikan, atau Anda akan terjebak di pinggir jalan tetapi hidup tidak berputar-putar di sekitar pom bensin! Oh, sebagian besar minat pada Bitcoin tampaknya berasal dari orang-orang yang tujuan hidup mereka hanya untuk menemukan sebuah pom bensin besar.

Detail yang saya lewatkan: Meskipun artikel ini menjelaskan konsep utama di balik Bitcoin, ada banyak detail yang tidak saya sebutkan. Salah satunya adalah teknik penghematan ruang yang hebat dalam protokol, berdasarkan struktur data yang disebut pohon Merkle. Ini adalah detail, tetapi ini adalah detail yang sangat bagus, dan jika Anda menyukai struktur data, ini layak untuk dilihat.

Bitcoin Script: Dalam artikel ini, saya menjelaskan Bitcoin sebagai mata uang elektronik online. Tetapi ini hanya bagian kecil dari cerita yang lebih besar dan lebih menarik. Seperti yang kita lihat, setiap transaksi Bitcoin memiliki beberapa bahasa skrip Bitcoin.

Jika Anda merasa hal ini membantu, saya sarankan Anda memberi tip kepada penulis artikel ini, Michael Nielsen, di 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, atau Anda dapat mengikuti dia di Twitter. Atau ikuti bab pertama dari bukunya yang akan diterbitkan tentang jaringan saraf dan pembelajaran mendalam.

Jika ada yang tidak beres, mohon maaf

Artikel ini disutradarai oleh Jean-Luc Godard.