
Gambar: Sumber: Bitcoin Magazine
Menemui Bitcoin Bahagian 6: Kontrak Digital
Dalam bahagian keenam siri 'Discovering Bitcoin' oleh Giacomo Zucco, beliau meneroka konsep pemilikan melalui tandatangan digital, skrip dan kontrak pintar, serta teknik privasi seperti CoinJoin.
- โขZucco meneroka konsep membuktikan pemilikan menggunakan tandatangan digital berdasarkan kriptografi asimetri โ kunci persendirian, kunci awam dan tandatangan yang menyediakan pengesahan, tidak boleh dinafikan dan integriti.
- โขSkrip dan kontrak pintar diperkenalkan sebagai cara untuk menjadikan wang 'boleh diprogramkan' dengan syarat berbilang tandatangan, kunci masa dan primitif lain tanpa pihak berpusat.
- โขMasalah 'Kegelapan' (privasi) timbul kerana wang beredar dan penerima perlu mengesahkan rantaian pemilikan ke belakang, membolehkan analisis forensik.
- โขModel UTXO (Unspent Transaction Outputs) dan CoinJoin diperkenalkan sebagai penyelesaian untuk meningkatkan privasi dan skalabiliti, dengan tandatangan linear (Schnorr) sebagai penambahbaikan lanjut.
Ini adalah bahagian keenam siri "Menemui Bitcoin: Satu Gambaran Keseluruhan Ringkas Dari Gua ke Rangkaian Lightning" oleh Giacomo Zucco. Baca Pengenalan kepada sirinya, Menemui Bitcoin Bahagian 1: Tentang Masa, Menemui Bitcoin Bahagian 2: Tentang Manusia, Menemui Bitcoin Bahagian 3: Memperkenalkan Wang, Menemui Bitcoin Bahagian 4: Jalan yang Salah (Rancangan Baru Diperlukan)! dan Menemui Bitcoin Bahagian 5: Kekurangan Digital.
Dalam Bahagian 6 siri "Menemui Bitcoin" ini, kita akan membina idea menggunakan teka-teki digital sebagai cara untuk menghasilkan semula kekurangan, dan kepentingan mekanisme kawalan bekalan untuk memberikan sedikit kekerasan kepada wang digital, untuk meneroka konsep membuktikan pemilikan melalui tandatangan dan skrip, serta teknik yang dikenali sebagai CoinJoin.
Membuktikan Pemilikan: Tandatangan
Plan โฟ kita untuk wang membawa kita, untuk kali kedua, untuk memberi tumpuan kepada topik manusia dan soalan "Siapa?"
Anda telah menetapkan syarat-syarat untuk penerbitan sats baru, tetapi bagaimana pula dengan pemindahannya? Siapa yang diberi kuasa untuk menukar data dalam kunci kira-kira bersama, memindahkan pemilikan?
Jika terdapat pihak berkuasa pusat yang bertanggungjawab untuk menetapkan semula sats, mengikut arahan oleh pemilik semasa (mungkin log masuk ke sistem dengan pendekatan nama pengguna dan kata laluan klasik, seperti dalam eksperimen e-gold anda sebelum ini), akan ada satu titik kegagalan tunggal yang terdedah kepada Mallory lagi: Mengapa perlu bersusah payah beralih daripada emas fizikal kepada "kekurangan digital" berasaskan PoW? Jika, sebaliknya, setiap pengguna mempunyai hak yang sama untuk menetapkan semula pemilikan, maka sistem anda tidak akan berfungsi langsung: Semua orang akan digalakkan untuk terus menetapkan sats orang lain kepada diri mereka sendiri. Anda memerlukan sejenis protokol penentu kuasa yang konsisten, yang boleh diperiksa oleh semua orang secara bebas.
Penyelesaiannya ialah teknik kriptografi yang dipanggil "tandatangan digital." Ia berfungsi seperti berikut: Pertama, Alice memilih nombor rawak yang dipanggil "kunci peribadi," yang akan dirahsiakan sepenuhnya. Kemudian, dia memasukkan nombor ini melalui fungsi matematik khas, mudah untuk diaplikasikan dalam satu arah tetapi secara praktikalnya mustahil untuk diterbalikkan. Hasilnya ialah nombor lain yang dipanggil "kunci awam," yang tidak dirahsiakan oleh Alice sama sekali: Sebaliknya, dia memastikan bahawa Bob mengetahuinya. Akhirnya, dia memasukkan kunci peribadi dan mesej melalui fungsi kedua, sekali lagi sukar untuk diterbalikkan, yang menghasilkan nombor yang sangat besar dipanggil "tandatangan." Fungsi matematik ketiga dan terakhir boleh digunakan oleh Bob pada mesej, tandatangan dan kunci awam Alice, menghasilkan pengesahan positif atau negatif. Jika hasilnya positif, dia boleh yakin bahawa Alice telah memberi kuasa kepada mesej tersebut ("pengesahan"), bahawa dia tidak akan dapat menafikan kebenaran itu kemudian ("tidak boleh dinafikan") dan bahawa mesej itu tidak diubah semasa penghantaran ("integriti").

Ilustrasi oleh @CryptoScamHub โ Proses tandatangan digital: kunci peribadi, kunci awam, tandatangan dan pengesahan
Secara analoginya, ia serupa dengan tandatangan tulisan tangan (oleh itu namanya), yang mudah untuk diperiksa oleh semua orang terhadap beberapa sampel awam, tetapi sukar untuk dihasilkan semula tanpa menjadi pemilik "tangan yang betul." Atau seperti meterai lilin: mudah untuk diperiksa oleh semua orang terhadap daftar meterai awam, tetapi sukar untuk dihasilkan semula tanpa stensil lilin yang betul.
Jadi, anda menukar protokol anda untuk menjadikan pecahan bukti kerja boleh digunakan semula secara bebas melalui tandatangan digital. Model pertama yang anda laksanakan adalah mudah: Setiap pengguna secara bebas menjana kunci peribadi dan mencipta "akaun" awam, dilabelkan dengan kunci awam yang sepadan. Apabila pengguna ingin memindahkan pemilikan, mereka mencipta mesej yang merangkumi akaun mereka, akaun penerima dan jumlah sats yang ingin mereka pindahkan. Kemudian, mereka menandatangani dan menyiarkan mesej tersebut secara digital, yang boleh disahkan oleh semua orang.
Menariknya, skim yang serupa boleh digunakan oleh ramai pembangun terkenal (mungkin menggunakan nama samaran) untuk menandatangani versi perisian anda yang berbeza supaya mereka bebas mengubah, menambah baik, membetulkan, mengemas kini, mengaudit dan menyemaknya, dan mana-mana pengguna akhir sistem anda boleh mengesahkan tandatangan tersebut secara bebas sebelum menjalankan versi pilihan mereka, memanfaatkan rangkaian kepercayaan yang diminimumkan dan terpecah, tanpa memerlukan satu pihak berkuasa untuk mengedarkan perisian secara berpusat. Proses ini membolehkan penyahpusatan kod yang sebenar.

Ilustrasi oleh @CryptoScamHub โ Penyahpusatan kod melalui tandatangan digital pembangun
Skrip dan "Kontrak Pintar"
Anda tidak mahu menghadkan syarat-syarat yang perlu diperiksa oleh setiap rakan sebaya, sebelum menerima sebarang perubahan dalam kunci kira-kira bersama, kepada hanya kesahan tandatangan digital, walau bagaimanapun.
Anda memutuskan bahawa setiap mesej juga boleh menyertakan "skrip": senarai arahan yang menerangkan syarat tambahan yang perlu dipenuhi oleh akaun penerima untuk berbelanja semula. Sebagai contoh, penghantar boleh memerlukan gabungan beberapa kunci rahsia (secara konjungsi atau disjungsi) atau masa menunggu tertentu sebelum berbelanja. Bermula daripada primitif yang sangat mudah (dan mudah untuk diaudit) ini, "kontrak pintar" yang kompleks boleh dibina, menjadikan wang benar-benar "boleh diprogramkan," walaupun tanpa kehadiran pihak berpusat.
Masalah Kegelapan (dan Skalabiliti)
Tidak seperti sistem pemesejan yang disulitkan (di mana jika Alice menghantar beberapa mesej kepada Bob, hanya Bob yang boleh membacanya), skim anda tidak begitu dioptimumkan untuk kegelapan (jika Alice menghantar sats kepada Bob, mesejnya perlu didedahkan di luar Bob โ sekurang-kurangnya kepada mereka yang akan menerima sats yang sama kemudian hari).
Wang beredar. Penerima tidak boleh mempercayai sebarang pemindahan wang, walaupun ditandatangani dengan betul, jika mereka tidak dapat mengesahkan bahawa sats yang dipindahkan itu sebenarnya telah dipindahkan kepada pembayar tertentu itu, dan seterusnya, ke belakang, kembali ke terbitan berasaskan PoW yang pertama. Dengan peredaran sats yang mencukupi, rakan sebaya yang aktif akan mengetahui sejumlah besar transaksi lepas, dan teknik analisis forensik boleh digunakan untuk menghubung kait secara statistik jumlah, masa, metadata dan akaun, dengan itu menyahidentiti banyak pengguna dan melucutkan keupayaan mereka untuk menafikan.
Ini bermasalah: Seperti yang dibincangkan dalam Bahagian 2, kegelapan adalah kualiti asas untuk wang, atas sebab-sebab ekonomi dan sosiologi.
Kontrak pintar menjadikan masalah ini lebih teruk, kerana syarat perbelanjaan tertentu boleh digunakan untuk mengenal pasti pelaksanaan perisian tertentu atau dasar organisasi tertentu.
Kekurangan kegelapan ini lebih serius daripada yang menjejaskan eksperimen e-gold anda sebelum ini: Memang benar bahawa, ketika itu, anda menyimpan kebanyakan metadata transaksi pada pelayan pusat anda, tetapi sekurang-kurangnya hanya anda, berbanding dengan sesiapa sahaja (termasuk ramai ejen Mallory), yang mempunyai akses! Selain itu, anda boleh melaksanakan beberapa strategi kriptografi yang lebih maju untuk menjadikan diri anda sekurang-kurangnya sebahagiannya "buta" terhadap apa yang sebenarnya berlaku antara pengguna anda.
Terdapat juga masalah skalabiliti kecil yang berkaitan dengan reka bentuk ini: Tandatangan digital agak besar, dan rantaian pemindahan yang perlu diterima oleh penerima untuk mengesahkan segala-galanya akan merangkumi banyak tandatangan, menjadikan pengesahan berpotensi lebih mahal. Selain itu, perubahan akaun agak sukar untuk disahkan secara selari.
Paradigma Baru: "CoinJoin"
Untuk mengurangkan masalah tersebut, anda memutuskan untuk menukar entiti asas model anda daripada "akaun" seperti bank kepada "Output Transaksi Yang Tidak Dibelanjakan" (UTXO).
Daripada arahan untuk memindahkan sats dari satu akaun ke akaun lain, setiap mesej kini merangkumi senarai UTXO lama, yang datang daripada transaksi lepas dan "digunakan" sebagai ramuan, dan senarai UTXO baru, "dihasilkan" sebagai produk dan sedia untuk transaksi masa depan. Daripada menerbitkan satu kunci awam statik untuk digunakan sebagai rujukan akaun umum (seperti IBAN bank atau alamat e-mel), Bob mesti menyediakan kunci awam baru guna tunggal untuk setiap pembayaran yang ingin diterimanya. Apabila Alice membayarnya, dia menandatangani mesej yang "membuka kunci" beberapa sats daripada UTXO yang telah dibuat sebelumnya, dan "menguncinya" semula ke dalam beberapa UTXO baru.

Ilustrasi oleh @CryptoScamHub โ Model UTXO: ramuan dan produk
Sama seperti wang tunai fizikal, wang kertas yang boleh dibelanjakan tidak selalu sepadan dengan permintaan pembayaran โ wang kembali sering diperlukan. Sebagai contoh, jika Alice mahu membayar 1,000 sats kepada Bob, tetapi dia hanya mengawal beberapa UTXO yang masing-masing mengunci 700 sats, dia akan menandatangani transaksi yang menggunakan dua UTXO 700-sats tersebut (membuka kunci sejumlah 1,400 sats) dan menjana dua UTXO baru: satu yang dikaitkan dengan kunci Bob, mengunci pembayaran (1,000 sats), dan satu lagi yang dikaitkan dengan kunci Alice, mengunci wang kembali (400 sats).
Dengan syarat bahawa orang tidak menggunakan semula kunci untuk pembayaran yang berbeza, reka bentuk ini meningkatkan kegelapan dengan sendirinya. Tetapi lebih-lebih lagi apabila pengguna anda mula menyedari bahawa UTXO yang digunakan dan dihasilkan oleh satu transaksi tidak semestinya datang daripada hanya dua entiti! Alice boleh mencipta mesej yang membelanjakan UTXO lama yang dia kawal dan menjana UTXO baru (dikaitkan dengan Bob), kemudian dia boleh menyerahkan mesej tersebut kepada Carol, yang hanya boleh menambah UTXO lama yang ingin dibelanjakannya dan UTXO baru (dikaitkan dengan Daniel) yang ingin diciptanya. Akhirnya, Alice dan Carol kedua-duanya menandatangani dan menyiarkan mesej komposit (membayar kedua-dua Bob dan Daniel).
Penggunaan khas model UTXO ini dipanggil "CoinJoin." (Amaran pencetus: Dalam sejarah Bitcoin sebenar, penggunaan ini bukanlah rasional reka bentuk Satoshi untuk model UTXO itu sendiri, tetapi ditemui sebagai potensi variasi pada reka bentuk tersebut oleh pembangun lain, bertahun-tahun selepas pelancaran.) Ia memecahkan kebolehkaitan statistik antara output, sambil mengekalkan apa yang dipanggil "keatoman": Transaksi sama ada sah sepenuhnya atau tidak sah, oleh itu Alice dan Carol tidak perlu mempercayai satu sama lain. (Jika salah seorang daripada mereka cuba mengubah mesej yang ditandatangani sebahagian sebelum menambah tandatangan mereka sendiri, tandatangan yang sedia ada menjadi tidak sah.)

Ilustrasi oleh @CryptoScamHub โ Proses CoinJoin: penggabungan transaksi oleh Alice dan Carol
Terdapat perubahan yang mungkin pada sistem anda yang sebenarnya boleh menambah baik keadaan dengan lebih ketara: skim tandatangan digital yang berbeza, alternatif kepada yang anda gunakan sekarang, yang "linear dalam tandatangan." Maksudnya: Dalam mengambil dua kunci peribadi (yang tidak lebih daripada dua nombor), menandatangani mesej yang sama dengan setiap satu dan menambah tandatangan yang terhasil (yang juga tidak lebih daripada dua nombor yang sangat besar), hasilnya kebetulan adalah tandatangan yang betul yang sepadan dengan jumlah dua kunci awam yang dikaitkan dengan dua kunci peribadi awal!
Ini kedengaran rumit, tetapi implikasinya mudah: Alice dan Carol, apabila melakukan CoinJoin, boleh menambah tandatangan individu mereka dan menyiarkan hanya jumlahnya, yang boleh disahkan oleh semua orang terhadap jumlah kunci awam mereka! Oleh kerana, seperti yang kita katakan, tandatangan adalah bahagian transaksi yang "paling berat," kemungkinan untuk menyiarkan hanya satu berbanding banyak akan menjimatkan banyak sumber. Pemerhati luaran akan akhirnya mengesyaki setiap transaksi sebagai CoinJoin, kerana ramai pengguna mungkin mengejar keuntungan kecekapan. Andaian ini akan memecahkan kebanyakan heuristik forensik.

Ilustrasi oleh @CryptoScamHub โ Tandatangan linear (Schnorr): menambah tandatangan untuk kecekapan
Walaupun tanpa penambahbaikan lanjut ini, model UTXO sudah meningkatkan skalabiliti: Tidak seperti perubahan keadaan dalam model akaun, ia membolehkan pengesahan dikumpulkan dan diselarikan dengan cekap.

Ilustrasi oleh @CryptoScamHub โ Skalabiliti model UTXO: pengesahan selari
Setakat ini, anda telah mempelajari:
- bahawa anda boleh menyahpusatkan pemilikan menggunakan tandatangan digital untuk pemindahan;
- bahawa anda boleh mengubah transaksi menjadi "kontrak" yang boleh diprogramkan dengan sistem skrip; dan
- bahawa paradigma yang lebih kompleks dipanggil CoinJoin boleh meningkatkan lagi kegelapan dan skalabiliti.
Tetapi sekarang setelah pengguna anda boleh menerbitkan sats dan memindahkannya secara terdesentralisasi sepenuhnya, bagaimana mereka boleh yakin bahawa kronologi tunggal diikuti, menghalang serangan perbelanjaan dua kali atau percubaan untuk mengusik jadual inflasi? Kami akan menjawabnya dalam bahagian akhir kami, "Menemui Bitcoin Bahagian 7: Bahagian yang Hilang."
Siri: Menemui Bitcoin: Satu Gambaran Keseluruhan Daripada Gua ke Rangkaian Lightning
Artikel ini adalah ringkasan dan analisis berdasarkan sumber-sumber asal. Bukan nasihat kewangan. Sila sahkan maklumat penting daripada sumber utama.