Bitcoin: Sistem Uang Elektronik Peer-to-Peer

Satoshi Nakamoto

satoshin@gmx.com

www.bitcoin.org


Abstrak . Versi uang elektronik murni peer-to-peer akan memungkinkan pembayaran online dikirim langsung dari satu pihak ke pihak lain tanpa melalui lembaga keuangan. Tanda tangan digital memberikan sebagian dari solusi, tetapi manfaat utamanya akan hilang jika pihak ketiga yang tepercaya masih diperlukan untuk mencegah pembelanjaan ganda. Kami mengusulkan solusi untuk masalah pengeluaran ganda menggunakan jaringan peer-to-peer. Jaringan stempel waktu transaksi dengan melakukan hashing ke dalam rangkaian bukti kerja berbasis hash yang berkelanjutan, membentuk catatan yang tidak dapat diubah tanpa mengulangi bukti kerja. Rantai terpanjang tidak hanya berfungsi sebagai bukti urutan peristiwa yang disaksikan, tetapi juga bukti bahwa itu berasal dari kumpulan daya CPU terbesar. Selama mayoritas daya CPU dikendalikan oleh node yang tidak bekerja sama untuk menyerang jaringan, mereka akan menghasilkan rantai terpanjang dan melebihi penyerang. Jaringan itu sendiri membutuhkan struktur minimal. Pesan disiarkan berdasarkan upaya terbaik, dan node dapat keluar dan bergabung kembali dengan jaringan sesuka hati, menerima rantai bukti kerja terpanjang sebagai bukti dari apa yang terjadi saat mereka pergi.

 

1. Perkenalan

Perdagangan di Internet hampir secara eksklusif bergantung pada lembaga keuangan yang berfungsi sebagai pihak ketiga tepercaya untuk memproses pembayaran elektronik. Meskipun sistem bekerja cukup baik untuk sebagian besar transaksi, sistem ini masih memiliki kelemahan yang melekat pada model berbasis kepercayaan. Transaksi yang sepenuhnya tidak dapat dibatalkan tidak mungkin dilakukan, karena lembaga keuangan tidak dapat menghindari perselisihan mediasi. Biaya mediasi meningkatkan biaya transaksi, membatasi ukuran transaksi praktis minimum dan memotong kemungkinan untuk transaksi kasual kecil, dan ada biaya yang lebih luas dalam hilangnya kemampuan untuk melakukan pembayaran non-reversibel untuk layanan non-reversibel. Dengan kemungkinan pembalikan, kebutuhan akan kepercayaan menyebar. Pedagang harus mewaspadai pelanggan mereka, mengganggu mereka untuk mendapatkan lebih banyak informasi daripada yang seharusnya mereka butuhkan. Persentase tertentu dari penipuan diterima sebagai tidak dapat dihindari. Biaya dan ketidakpastian pembayaran ini dapat dihindari secara pribadi dengan menggunakan mata uang fisik, tetapi tidak ada mekanisme untuk melakukan pembayaran melalui saluran komunikasi tanpa pihak tepercaya.

Yang dibutuhkan adalah sistem pembayaran elektronik berdasarkan bukti kriptografi, bukan kepercayaan, yang memungkinkan dua pihak yang ingin bertransaksi secara langsung satu sama lain tanpa memerlukan pihak ketiga yang tepercaya. Transaksi yang secara komputasi tidak praktis untuk dibalik akan melindungi penjual dari penipuan, dan mekanisme escrow rutin dapat dengan mudah diterapkan untuk melindungi pembeli. Dalam makalah ini, kami mengusulkan solusi untuk masalah pengeluaran ganda menggunakan server timestamp terdistribusi peer-to-peer untuk menghasilkan bukti komputasi dari urutan kronologis transaksi. Sistem ini aman selama node yang jujur secara kolektif mengontrol lebih banyak daya CPU daripada kelompok node penyerang yang bekerja sama.

2. Transaksi

Kami mendefinisikan koin elektronik sebagai rangkaian tanda tangan digital. Setiap pemilik mentransfer koin ke pemilik berikutnya dengan secara digital menandatangani hash dari transaksi sebelumnya dan kunci publik dari pemilik berikutnya dan menambahkannya ke akhir koin. Penerima pembayaran dapat memverifikasi tanda tangan untuk memverifikasi rantai kepemilikan.

Masalahnya tentu saja penerima pembayaran tidak dapat memverifikasi bahwa salah satu pemilik tidak membelanjakan koin dua kali. Solusi umum adalah memperkenalkan otoritas pusat tepercaya, atau mint, yang memeriksa setiap transaksi untuk pengeluaran ganda. Setelah setiap transaksi, koin harus dikembalikan ke percetakan untuk mengeluarkan koin baru, dan hanya koin yang dikeluarkan langsung dari percetakan yang dipercaya untuk tidak dibelanjakan dua kali. Masalah dengan solusi ini adalah nasib seluruh sistem uang tergantung pada perusahaan yang menjalankan mint, dengan setiap transaksi harus melalui mereka, seperti bank.

Kami memerlukan cara agar penerima pembayaran mengetahui bahwa pemilik sebelumnya tidak menandatangani transaksi sebelumnya. Untuk tujuan kami, transaksi paling awal adalah yang diperhitungkan, jadi kami tidak peduli dengan upaya selanjutnya untuk melakukan pembelanjaan ganda. Satu-satunya cara untuk mengkonfirmasi tidak adanya transaksi adalah dengan mengetahui semua transaksi. Dalam model berbasis mint, mint mengetahui semua transaksi dan memutuskan mana yang datang lebih dulu. Untuk mencapai hal ini tanpa pihak tepercaya, transaksi harus diumumkan secara publik [1], dan kami membutuhkan sistem bagi peserta untuk menyepakati satu sejarah urutan penerimaannya. Penerima pembayaran memerlukan bukti bahwa pada setiap transaksi, mayoritas node setuju bahwa itu adalah yang pertama kali diterima.

3. Server Stempel Waktu

Solusi yang kami usulkan dimulai dengan server stempel waktu. Server timestamp bekerja dengan mengambil hash dari sebuah blok item yang akan diberi cap waktu dan menerbitkan hash tersebut secara luas, seperti di surat kabar atau posting Usenet [2-5]. Stempel waktu membuktikan bahwa data pasti ada pada saat itu, tentu saja, untuk masuk ke hash. Setiap stempel waktu menyertakan stempel waktu sebelumnya dalam hashnya, membentuk rantai, dengan setiap stempel waktu tambahan memperkuat stempel sebelumnya.

4. Bukti Kerja

Untuk mengimplementasikan server timestamp terdistribusi berbasis peer-to-peer, kita perlu menggunakan sistem proof-of-work yang mirip dengan Hashcash Adam Back [6], daripada surat kabar atau posting Usenet. Proof-of-work melibatkan pemindaian untuk nilai yang ketika di-hash, seperti dengan SHA-256, hash dimulai dengan sejumlah bit nol. Pekerjaan rata-rata yang diperlukan adalah eksponensial dalam jumlah bit nol yang diperlukan dan dapat diverifikasi dengan menjalankan hash tunggal.

Untuk jaringan stempel waktu kami, kami menerapkan bukti kerja dengan menambah nonce di blok sampai nilai ditemukan yang memberikan hash blok nol bit yang diperlukan. Setelah upaya CPU dikeluarkan untuk membuatnya memenuhi bukti kerja, blok tidak dapat diubah tanpa mengulang pekerjaan. Karena blok selanjutnya dirantai setelahnya, pekerjaan untuk mengubah blok akan mencakup mengulang semua blok setelahnya.

Proof-of-work juga memecahkan masalah penentuan perwakilan dalam pengambilan keputusan mayoritas. Jika mayoritas didasarkan pada satu-alamat-IP-satu-suara, itu dapat ditumbangkan oleh siapa pun yang dapat mengalokasikan banyak IP. Proof-of-work pada dasarnya adalah satu-CPU-satu-suara. Keputusan mayoritas diwakili oleh rantai terpanjang, yang memiliki upaya pembuktian kerja terbesar yang diinvestasikan di dalamnya. Jika mayoritas daya CPU dikendalikan oleh node yang jujur, rantai yang jujur akan tumbuh paling cepat dan melampaui rantai pesaing mana pun. Untuk memodifikasi blok sebelumnya, penyerang harus mengulang bukti kerja blok dan semua blok setelahnya dan kemudian mengejar dan melampaui pekerjaan node yang jujur. Kami akan menunjukkan nanti bahwa kemungkinan penyerang yang lebih lambat mengejar berkurang secara eksponensial saat blok berikutnya ditambahkan.

Untuk mengimbangi peningkatan kecepatan perangkat keras dan beragam minat dalam menjalankan node dari waktu ke waktu, kesulitan bukti kerja ditentukan oleh rata-rata pergerakan yang menargetkan jumlah rata-rata blok per jam. Jika mereka dibuat terlalu cepat, kesulitannya meningkat.

5. Jaringan

Langkah-langkah untuk menjalankan jaringan adalah sebagai berikut:

1)    Transaksi baru disiarkan ke semua node.

2)    Setiap node mengumpulkan transaksi baru ke dalam satu blok.

3)    Setiap node bekerja untuk menemukan proof-of-work yang sulit untuk bloknya.

4)    Ketika sebuah node menemukan proof-of-work, ia menyiarkan blok tersebut ke semua node.

5)    Node menerima blok hanya jika semua transaksi di dalamnya valid dan belum dihabiskan.

6)    Node mengungkapkan penerimaan mereka terhadap blok dengan bekerja membuat blok berikutnya dalam rantai, menggunakan hash dari blok yang diterima sebagai hash sebelumnya.

Node selalu menganggap rantai terpanjang sebagai yang benar dan akan terus bekerja untuk memperpanjangnya. Jika dua node menyiarkan versi yang berbeda dari blok berikutnya secara bersamaan, beberapa node mungkin menerima salah satunya terlebih dahulu. Dalam hal ini, mereka mengerjakan yang pertama yang mereka terima, tetapi menyimpan cabang lainnya jika menjadi lebih lama. Dasi akan putus ketika proof-of-work berikutnya ditemukan dan satu cabang menjadi lebih panjang; node yang bekerja di cabang lain kemudian akan beralih ke cabang yang lebih panjang.

Siaran transaksi baru tidak perlu menjangkau semua node. Selama mereka mencapai banyak node, mereka akan segera masuk ke blok. Siaran blok juga toleran terhadap pesan yang dijatuhkan. Jika sebuah node tidak menerima sebuah blok, ia akan memintanya ketika ia menerima blok berikutnya dan menyadari bahwa ia melewatkan satu blok.

6. Insentif

Berdasarkan konvensi, transaksi pertama dalam sebuah blok adalah transaksi khusus yang memulai koin baru yang dimiliki oleh pembuat blok tersebut. Ini menambah insentif bagi node untuk mendukung jaringan, dan menyediakan cara untuk mendistribusikan koin pada awalnya ke dalam sirkulasi, karena tidak ada otoritas pusat yang menerbitkannya. Penambahan konstan jumlah koin baru yang konstan dianalogikan dengan penambang emas yang mengeluarkan sumber daya untuk menambahkan emas ke sirkulasi. Dalam kasus kami, waktu CPU dan listrik yang dihabiskan.

Insentif juga dapat didanai dengan biaya transaksi. Jika nilai output dari suatu transaksi lebih kecil dari nilai inputnya, selisihnya adalah biaya transaksi yang ditambahkan ke nilai insentif dari blok yang berisi transaksi tersebut. Setelah jumlah koin yang telah ditentukan memasuki sirkulasi, insentif dapat sepenuhnya beralih ke biaya transaksi dan sepenuhnya bebas inflasi.

Insentif dapat membantu mendorong node untuk tetap jujur. Jika penyerang rakus mampu mengumpulkan lebih banyak daya CPU daripada semua node jujur, dia harus memilih antara menggunakannya untuk menipu orang dengan mencuri kembali pembayarannya, atau menggunakannya untuk menghasilkan koin baru. Dia harus merasa lebih menguntungkan untuk bermain sesuai aturan, aturan seperti itu yang menguntungkannya dengan lebih banyak koin baru daripada gabungan semua orang, daripada merusak sistem dan validitas kekayaannya sendiri.

7. Mengklaim Kembali Ruang Disk

Setelah transaksi terakhir dalam koin terkubur di bawah blok yang cukup, transaksi yang dihabiskan sebelumnya dapat dibuang untuk menghemat ruang disk. Untuk memfasilitasi ini tanpa merusak hash blok, transaksi di-hash dalam Merkle Tree [7][2][5], dengan hanya root yang disertakan dalam hash blok. Balok-balok tua kemudian dapat dipadatkan dengan memotong dahan-dahan pohon. Hash interior tidak perlu disimpan.

Header blok tanpa transaksi berukuran sekitar 80 byte. Jika kita mengira blok dihasilkan setiap 10 menit, 80 byte * 6 * 24 * 365 = 4,2MB per tahun. Dengan sistem komputer yang biasanya dijual dengan RAM 2GB pada tahun 2008, dan Hukum Moore memprediksi pertumbuhan saat ini

1,2GB per tahun, penyimpanan seharusnya tidak menjadi masalah meskipun header blok harus disimpan di memori.

8. Verifikasi Pembayaran Sederhana

Dimungkinkan untuk memverifikasi pembayaran tanpa menjalankan node jaringan penuh. Seorang pengguna hanya perlu menyimpan salinan header blok dari rantai bukti kerja terpanjang, yang bisa dia dapatkan dengan menanyakan node jaringan sampai dia yakin dia memiliki rantai terpanjang, dan mendapatkan cabang Merkle yang menghubungkan transaksi ke blok itu diberi stempel waktu. Dia tidak dapat memeriksa transaksi untuk dirinya sendiri, tetapi dengan menautkannya ke suatu tempat di rantai, dia dapat melihat bahwa simpul jaringan telah menerimanya, dan memblokir ditambahkan setelah konfirmasi lebih lanjut bahwa jaringan telah menerimanya.

Dengan demikian, verifikasi dapat diandalkan selama node yang jujur mengontrol jaringan, tetapi lebih rentan jika jaringan dikuasai oleh penyerang. Sementara node jaringan dapat memverifikasi transaksi untuk diri mereka sendiri, metode yang disederhanakan dapat dikelabui oleh transaksi buatan penyerang selama penyerang dapat terus menguasai jaringan. Salah satu strategi untuk melindungi dari hal ini adalah menerima peringatan dari node jaringan ketika mereka mendeteksi blok yang tidak valid, mendorong perangkat lunak pengguna untuk mengunduh blok penuh dan mengingatkan transaksi untuk mengonfirmasi ketidakkonsistenan. Bisnis yang sering menerima pembayaran mungkin masih ingin menjalankan node mereka sendiri untuk keamanan yang lebih mandiri dan verifikasi yang lebih cepat.

9. Menggabungkan dan Memisahkan Nilai

Meskipun dimungkinkan untuk menangani koin satu per satu, akan sulit untuk melakukan transaksi terpisah untuk setiap sen dalam transfer. Untuk memungkinkan nilai dibagi dan digabungkan, transaksi mengandung beberapa input dan output. Biasanya akan ada satu input dari transaksi sebelumnya yang lebih besar atau beberapa input yang menggabungkan jumlah yang lebih kecil, dan paling banyak dua output: satu untuk pembayaran, dan satu mengembalikan kembalian, jika ada, kembali ke pengirim.

Perlu dicatat bahwa fan-out, di mana transaksi bergantung pada beberapa transaksi, dan transaksi tersebut bergantung pada lebih banyak lagi, tidak menjadi masalah di sini. Tidak perlu mengekstrak salinan lengkap riwayat transaksi yang berdiri sendiri.

10. Privasi

Model perbankan tradisional mencapai tingkat privasi dengan membatasi akses informasi kepada pihak-pihak yang terlibat dan pihak ketiga yang dipercaya. Kebutuhan untuk mengumumkan semua transaksi secara publik menghalangi metode ini, tetapi privasi masih dapat dipertahankan dengan memutus arus informasi di tempat lain: dengan menjaga anonimitas kunci publik. Publik dapat melihat bahwa seseorang mengirimkan sejumlah uang kepada orang lain, tetapi tanpa informasi yang mengaitkan transaksi tersebut kepada siapa pun. Ini mirip dengan tingkat informasi yang dirilis oleh bursa efek, di mana waktu dan ukuran perdagangan individu, "rekaman", dipublikasikan, tetapi tanpa memberi tahu siapa pihak-pihaknya.

Sebagai firewall tambahan, pasangan kunci baru harus digunakan untuk setiap transaksi agar tidak ditautkan ke pemilik bersama. Beberapa penautan masih tidak dapat dihindari dengan transaksi multi-input, yang dengan sendirinya mengungkapkan bahwa input mereka dimiliki oleh pemilik yang sama. Risikonya adalah jika pemilik kunci terungkap, penautan dapat mengungkap transaksi lain yang dimiliki oleh pemilik yang sama.

11. Perhitungan

Kami mempertimbangkan skenario penyerang yang mencoba membuat rantai alternatif lebih cepat daripada rantai jujur. Bahkan jika ini tercapai, itu tidak membuat sistem terbuka untuk perubahan sewenang-wenang, seperti menciptakan nilai dari kehampaan atau mengambil uang yang tidak pernah menjadi milik penyerang. Node tidak akan menerima transaksi yang tidak valid sebagai pembayaran, dan node yang jujur tidak akan pernah menerima blok yang berisi transaksi tersebut. Penyerang hanya dapat mencoba mengubah salah satu transaksinya sendiri untuk mengambil kembali uang yang baru saja dia belanjakan.

Perlombaan antara rantai yang jujur dan rantai penyerang dapat dicirikan sebagai Binomial Random Walk. Acara sukses adalah rantai jujur diperpanjang satu blok, meningkatkan kepemimpinannya dengan +1, dan acara kegagalan adalah rantai penyerang diperpanjang satu blok, mengurangi celah dengan -1.

Probabilitas seorang penyerang mengejar ketertinggalan yang diberikan dapat dianalogikan dengan masalah Gambler's Ruin. Misalkan seorang penjudi dengan kredit tak terbatas memulai dengan defisit dan berpotensi memainkan percobaan dalam jumlah tak terbatas untuk mencoba mencapai titik impas.

Mengingat asumsi kami bahwa p > q, probabilitas turun secara eksponensial karena jumlah blok yang harus dikejar penyerang meningkat. Dengan peluang melawannya, jika dia tidak melakukan serangan yang beruntung sejak awal, peluangnya menjadi semakin kecil saat dia semakin tertinggal.

Kami sekarang mempertimbangkan berapa lama penerima transaksi baru harus menunggu sebelum cukup yakin bahwa pengirim tidak dapat mengubah transaksi. Kami menganggap pengirim adalah penyerang yang ingin membuat penerima percaya bahwa dia membayarnya untuk sementara waktu, lalu mengalihkannya untuk membayar kembali ke dirinya sendiri setelah beberapa waktu berlalu. Penerima akan diberi tahu saat itu terjadi, tetapi pengirim berharap sudah terlambat.

Penerima menghasilkan pasangan kunci baru dan memberikan kunci publik kepada pengirim sesaat sebelum ditandatangani. Hal ini mencegah pengirim mempersiapkan rantai blok sebelumnya dengan mengerjakannya terus menerus sampai dia cukup beruntung untuk maju cukup jauh, kemudian mengeksekusi transaksi pada saat itu. Setelah transaksi terkirim, pengirim yang tidak jujur mulai bekerja secara rahasia pada rantai paralel yang berisi versi alternatif dari transaksinya.

Penerima menunggu sampai transaksi ditambahkan ke blok dan z blok telah ditautkan setelahnya. Dia tidak tahu jumlah pasti kemajuan yang telah dibuat penyerang, tetapi dengan asumsi blok yang jujur mengambil rata-rata waktu yang diharapkan per blok, potensi kemajuan penyerang akan menjadi distribusi Poisson.

12. Kesimpulan

Kami telah mengusulkan sistem transaksi elektronik tanpa mengandalkan kepercayaan. Kami mulai dengan kerangka koin biasa yang terbuat dari tanda tangan digital, yang memberikan kontrol kepemilikan yang kuat, tetapi tidak lengkap tanpa cara untuk mencegah pembelanjaan ganda. Untuk mengatasi ini, kami mengusulkan jaringan peer-to-peer menggunakan proof-of-work untuk merekam riwayat transaksi publik yang dengan cepat menjadi tidak praktis secara komputasi untuk diubah oleh penyerang jika node yang jujur mengontrol mayoritas daya CPU. Jaringan kuat dalam kesederhanaannya yang tidak terstruktur. Node bekerja sekaligus dengan sedikit koordinasi. Mereka tidak perlu diidentifikasi, karena pesan tidak diarahkan ke tempat tertentu dan hanya perlu disampaikan dengan upaya terbaik. Node dapat keluar dan bergabung kembali dengan jaringan sesuka hati, menerima rantai bukti kerja sebagai bukti dari apa yang terjadi saat mereka pergi. Mereka memilih dengan kekuatan CPU mereka, menyatakan penerimaan mereka atas blok yang valid dengan bekerja untuk memperpanjangnya dan menolak blok yang tidak valid dengan menolak untuk mengerjakannya. Aturan dan insentif apa pun yang diperlukan dapat ditegakkan dengan mekanisme konsensus ini.

 

Referensi[1]            W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.[2]H. Massias , XS Avila, dan J.-J. Quisquater , "Design of a secure timestamping service with minimal trust requirements," Dalam Simposium ke-20 tentang Teori Informasi di Benelux, Mei 1999.[3]              S. Haber, WS Stornetta , "How to time-stamp a digital document," Dalam Journal of Cryptology, vol 3, no 2, halaman 99-111, 1991.[4]        D. Bayer, S. Haber, WS Stornetta , "Meningkatkan efisiensi dan keandalan stempel waktu digital," Dalam Urutan II: Metode dalam Komunikasi, Keamanan, dan Ilmu Komputer, halaman 329-334, 1993.[5]      S. Haber, WS Stornetta , "Secure name for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, halaman 28-35, April 1997.[6]          A. Kembali, " Hashcash - tindakan balasan penolakan layanan," http://www.hashcash.org/papers/hashcash.pdf, 2002.[7]              RC Merkle, "Protokol untuk kriptosistem kunci publik," Dalam Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, halaman 122-133, April 1980.[8]W. Feller, "Pengantar teori probabilitas dan aplikasinya," 1957.

Membeli Bitcoin

Anda dapat membeli Bitcoin di sini .