Diposting ulang dari: yuppie tua
Kandidat presiden AS Mitt Romney mengingatkan kita bahwa korporasi terdiri dari individu. Apakah Anda setuju dengannya atau tidak, ada banyak kebenaran dalam pernyataan itu. Lagi pula, mengapa disebut perusahaan dan bukan sekelompok orang yang bekerja bersama di bawah aturan tertentu? Ketika sebuah korporasi memiliki properti, kontrak hukum menyatakan bahwa properti tersebut hanya dapat berada di bawah kendali dewan direksi. Jika suatu perusahaan melakukan sesuatu, itu karena dewan direksinya telah setuju bahwa hal itu harus dilakukan. Jika sebuah perusahaan mempekerjakan seorang karyawan, itu berarti bahwa karyawan tersebut setuju untuk memberikan layanan kepada klien perusahaan sesuai dengan seperangkat aturan tertentu, terutama ketika melibatkan pembayaran. Ketika sebuah perusahaan memiliki tanggung jawab terbatas, itu berarti orang-orang tertentu diberikan hak istimewa tambahan untuk bertindak, mengurangi ketakutan akan tuntutan hukum oleh pemerintah — sekelompok orang memiliki lebih banyak hak daripada rata-rata orang yang bertindak sendiri, tetapi pada akhirnya individu. Bagaimanapun, itu tidak lebih dari orang dan kontrak sepenuhnya.
Namun, muncul pertanyaan yang sangat menarik di sini: apakah kita benar-benar membutuhkan orang? Di satu sisi, jawabannya adalah ya: sementara di beberapa mesin masa depan pasca-singularitas akan dapat bertahan hidup sendiri, untuk masa mendatang perilaku manusia dan interaksi dengan dunia fisik akan diperlukan. Namun di sisi lain, selama 200 tahun terakhir, jawaban atas pertanyaan ini semakin menjadi tidak. Revolusi Industri memungkinkan kita untuk menggantikan tenaga manusia dengan mesin dalam skala besar untuk pertama kalinya, dan sekarang kita memiliki pabrik digital canggih dan lengan robot yang dapat memproduksi sendiri barang-barang kompleks seperti mobil. Tapi itu hanya otomatisasi di bagian bawah pangkalan. Hilangkan kebutuhan akan tenaga kerja manual biasa dan gunakan segelintir profesional untuk merawat robot sementara manajemen perusahaan tetap sama. Pertanyaan sebenarnya adalah, bisakah kita mendekati masalah ini dari arah lain? Sekalipun kita masih membutuhkan manusia untuk melakukan tugas-tugas khusus tertentu, dapatkah kita menghilangkan manajemen dari persamaan?
Sebagian besar perusahaan memiliki semacam pernyataan misi; biasanya untuk menghasilkan uang bagi pemegang saham; di lain waktu termasuk beberapa kewajiban etis terkait dengan produk, dan tujuan lain seperti kadang-kadang membantu komunitas terlibat, setidaknya dalam teori. Saat ini, pernyataan misi tersebut ada hanya jika ditafsirkan oleh dewan direksi dan akhirnya pemegang saham. Tetapi bagaimana jika, dengan kekuatan teknologi informasi modern, kita dapat menyandikan pernyataan misi kita ke dalam kode? Yaitu, membuat kontrak yang tidak dapat diganggu gugat yang menghasilkan pendapatan, membayar orang untuk melakukan fungsi tertentu, dan menemukan sendiri perangkat keras untuk dijalankan, semuanya tanpa arahan manusia dari atas ke bawah?
Seperti yang ditunjukkan oleh Daniel Larmier dari Let's Talk Bitcoin dalam eksplorasi konsepnya sendiri, Bitcoin sendiri dapat dianggap sebagai prototipe awal dari hal semacam itu. Ada 21 juta saham di Bitcoin, yang dimiliki oleh pemegang saham Bitcoin. Itu memiliki karyawan, dan memiliki kesepakatan untuk membayar mereka: 25 bitcoin untuk karyawan acak kira-kira setiap sepuluh menit. Bahkan memiliki departemen pemasaran sendiri, sebagian besar dikelola oleh pemegang saham sendiri. Namun, itu juga sangat terbatas, ia hampir tidak tahu apa-apa tentang dunia, ia tidak dapat mengubah aspek apa pun dari fungsinya selain kesulitan, dan ia tidak benar-benar memiliki apa pun dalam dirinya sendiri; ia hanya ada, dan dibiarkan begitu saja. dunia untuk mengenalinya. Pertanyaannya adalah: bisakah kita berbuat lebih baik?
menghitung
Tantangan pertama sudah jelas: bagaimana perusahaan seperti itu benar-benar membuat keputusan? Sangat mudah untuk menulis kode yang, mengingat lingkungan yang dapat diprediksi, menerima masukan tertentu dan menghitung tindakan yang akan diambil. Tapi siapa yang akan menjalankan kodenya? Jika kode hanya ada sebagai program komputer pada mesin tertentu, apa yang mencegah pemilik mesin itu mematikan seluruh perangkat, atau bahkan memodifikasi kode untuk mengirim semua dana ke dirinya sendiri? Hanya ada satu jawaban yang valid untuk pertanyaan ini: komputasi terdistribusi.
Namun, komputasi terdistribusi yang kami cari di sini tidak sama dengan proyek seperti SETI@home dan Folding@home; dalam kasus ini masih ada server pusat yang mengumpulkan data dari node terdistribusi dan mengirimkan permintaan. Sebagai gantinya, kita memerlukan jenis komputasi terdistribusi yang kita lihat di Bitcoin: seperangkat aturan untuk komputasi yang terdesentralisasi dan memvalidasi sendiri. Di Bitcoin, ini dilakukan dengan pemungutan suara mayoritas sederhana: jika Anda tidak berkontribusi untuk menghitung blockchain dengan kekuatan jaringan mayoritas, blokir Anda akan dibuang dan Anda tidak akan menerima hadiah blok apa pun. Teorinya adalah bahwa tidak ada satu pun penyerang yang memiliki kekuatan komputasi yang cukup untuk merusak mekanisme ini, jadi satu-satunya strategi yang layak adalah "mengikuti arus" dan bertindak jujur untuk membantu mendukung jaringan dan mendapatkan hadiah blok seseorang.
Jadi bisakah kita menerapkan mekanisme ini pada komputasi terdesentralisasi? Artinya, dapatkah kita meminta setiap komputer dalam jaringan untuk mengevaluasi sebuah program, dan hanya memberi penghargaan kepada mereka yang jawabannya cocok dengan suara terbanyak? Sayangnya, jawabannya adalah tidak. Bitcoin adalah kasus khusus karena Bitcoin sederhana: itu hanyalah mata uang yang tidak membawa properti atau data pribadinya sendiri. Di sisi lain, perusahaan virtual mungkin perlu menyimpan kunci pribadi ke dalam dompet bitcoin mereka — data yang seharusnya tidak tersedia sepenuhnya untuk siapa pun , juga tidak tersedia untuk semua orang seperti transaksi bitcoin. Tapi, tentu saja, private key harus tetap tersedia. Oleh karena itu, kami memerlukan beberapa sistem tanda tangan transaksi yang dapat dihitung secara desentralisasi, dan bahkan menghasilkan alamat bitcoin. Untungnya, Bitcoin memungkinkan kita melakukan hal itu.
Solusi pertama yang langsung terlintas dalam pikiran adalah alamat multi-tanda tangan. Diberikan seribu komputer, komputer-komputer itu mungkin terus mendukung perusahaan, membuat masing-masing dari mereka membuat kunci pribadi, dan menghasilkan alamat multi-tanda tangan 501-dari-1000 di antara mereka. Untuk membelanjakan dana ini, cukup buat transaksi dengan tanda tangan dari 501 node mana saja dan siarkan ke blockchain. Masalahnya di sini jelas: volume transaksi terlalu besar. Setiap tanda tangan berisi sekitar 70 byte, jadi 501 di antaranya akan menjadi 35 KB transaksi - yang sangat sulit diterima oleh jaringan, karena bitcoind menolak transaksi apa pun dengan skrip yang lebih besar dari 10.000 byte secara default. mata uang bit; jika perusahaan ingin menyimpan data pribadi untuk tujuan non-keuangan, skrip multi-tanda tangan tidak berguna.
Alamat multi-tanda tangan berfungsi karena ada jaringan bitcoin yang mengevaluasinya, dan berdasarkan keberhasilan evaluasi, transaksi dimasukkan ke dalam blockchain. Dalam kasus data pribadi, solusi serupa pada dasarnya memerlukan beberapa otoritas terdesentralisasi untuk menyimpan data dan hanya mengirimkannya sesuai kebutuhan jika permintaan memiliki 501 tanda tangan dari 1000 - kembali ke awal Tempat.
Namun, solusi lain masih menjanjikan; nama umum yang diberikan oleh kriptografer adalah "perhitungan multi-pihak yang aman." Dalam Komputasi Multipartai Aman, input ke program (atau, lebih tepatnya, input ke "sirkuit" yang disimulasikan, karena Komputasi Multipartai Aman tidak dapat menangani pernyataan "jika" dan loop bersyarat) dibagi menggunakan algoritme yang disebut berbagi rahasia Shamir, Dan sepotong informasi diberikan kepada setiap peserta. Pembagian rahasia Shamir dapat digunakan untuk membagi data apa pun menjadi N bagian sedemikian rupa sehingga setiap K di antaranya (tetapi tidak ada K-1) yang cukup untuk memulihkan data asli - Anda memilih apa K dan N saat Anda menjalankan algoritme. 2-dari-3, 5-dari-10 dan 501-dari-1000 semuanya memungkinkan. Fragmen data kemudian dapat dievaluasi dengan cara terdesentralisasi, sehingga pada akhir komputasi setiap orang memiliki fragmen dari hasil komputasi, tetapi selama komputasi tidak ada yang melihat sedikit pun apa yang sedang terjadi.
Akhirnya, potongan-potongan itu disatukan untuk menunjukkan hasilnya. Waktu berjalan algoritma adalah O(n3), yang berarti bahwa jumlah langkah perhitungan yang diperlukan untuk perhitungan evaluasi kira-kira sebanding dengan pangkat tiga dari jumlah peserta; pada 10 node, 1000 langkah perhitungan, pada 1000 node, 1 miliar langkah. Di laptop saya sendiri, loop C++ miliar langkah sederhana membutuhkan waktu sekitar 20 detik, sementara server dapat melakukannya dalam sepersekian detik, jadi 1000 node secara kasar berada pada batas kepraktisan komputasi saat ini.
Ternyata perhitungan multi-pihak yang aman dapat digunakan untuk menghasilkan alamat Bitcoin dan menandatangani transaksi. Untuk pembuatan alamat, protokolnya sederhana:
Setiap orang menghasilkan nomor acak sebagai kunci pribadi.
Setiap orang menghitung kunci publik yang sesuai dengan kunci privat.
Setiap orang mengungkapkan kunci publik mereka dan menggunakan algoritme pembagian rahasia Shamir untuk menghitung kunci publik yang dapat direkonstruksi dari 501 dari seribu kunci publik yang diungkapkan.
Alamat dihasilkan dari kunci publik ini.
Karena kunci publik dapat ditambahkan, dikurangi, dikalikan, dan bahkan dibagi dengan bilangan bulat, secara mengejutkan, algoritme ini berfungsi persis seperti yang Anda harapkan. Jika setiap orang mengumpulkan kunci pribadi 501-dari-1000 dengan cara yang sama, kunci pribadi itu akan dapat mengirim uang ke alamat yang dihasilkan dengan menerapkan algoritme 501-dari-1000 ke pembelanjaan kunci publik yang sesuai. Ini berfungsi karena pembagian rahasia Shamir sebenarnya hanyalah rumus aljabar — yaitu, hanya menggunakan penjumlahan, pengurangan, perkalian, dan pembagian, dan dapat dihitung "dengan" kunci publik semudah alamat; Jadi tidak peduli apakah konversi kunci privat ke kunci publik dilakukan sebelum atau sesudah aljabar. Menandatangani transaksi dapat dilakukan dengan cara yang sama, meskipun prosesnya sedikit lebih rumit.
Keindahan perhitungan multi-pihak yang aman adalah tidak terbatas pada Bitcoin; ini dapat dengan mudah digunakan untuk menjalankan algoritme kecerdasan buatan yang diandalkan perusahaan untuk dijalankan. Apa yang disebut "pembelajaran mesin" adalah nama generik untuk sekumpulan algoritme yang mendeteksi pola dalam data dunia nyata dan memungkinkan komputer memodelkannya tanpa campur tangan manusia, dan digunakan dalam hal-hal seperti filter spam dan mobil tanpa pengemudi. di lapangan. "Hanya aljabar", juga dapat diimplementasikan dalam perhitungan multi-pihak yang aman. Faktanya, perhitungan apa pun dapat dilakukan, jika perhitungan tersebut dipecah menjadi sirkuit pada masing-masing bit input. Secara alami ada beberapa batasan untuk kompleksitas yang mungkin terjadi. Mengonversi algoritme kompleks menjadi sirkuit sering menimbulkan kerumitan tambahan, dan seperti disebutkan di atas, Berbagi Rahasia Shamir sendiri menjadi mahal. Dengan demikian, seharusnya hanya benar-benar digunakan untuk mengimplementasikan "inti" dari algoritme; tugas berpikir tingkat tinggi yang lebih kompleks paling baik ditangani oleh kontraktor eksternal.
Oleh Vitalik Buterin 19 September 2013