Tautan asli bahasa Inggris: https://medium.com/nervosnetwork/my-comparison-between-the-utxo-and-account-model-821eb46691b2
Di dunia blockchain saat ini, ada dua metode pencatatan utama, model UTXO (Output Transaksi Tak Terpakai) dan model Akun. Bitcoin menggunakan model UTXO, dan Ethereum menggunakan model Akun.
Bitcoin pada awalnya dirancang sebagai sistem uang elektronik peer-to-peer. Dalam Bitcoin, setiap transaksi menggunakan UTXO yang dihasilkan oleh transaksi sebelumnya dan kemudian menghasilkan UTXO baru. Saldo akun adalah kumpulan semua UTXO yang belum terpakai milik alamat. Keadaan global Bitcoin adalah kumpulan semua UTXO yang saat ini belum terpakai. Ethereum bermaksud untuk membuat protokol yang lebih umum yang mendukung bahasa pemrograman lengkap Turing, di mana pengguna dapat menulis kontrak pintar dan membuat berbagai aplikasi terdesentralisasi. Karena kekurangan model UTXO dalam pelestarian negara dan kemampuan program, Ethereum memperkenalkan model Akun.
Di bawah ini kami akan menjelaskan lebih lanjut kelebihan dan kekurangan kedua model tersebut.
model UTXO
Dalam model UTXO, transaksi hanya mewakili perubahan pada koleksi UTXO. Konsep akun dan saldo merupakan abstraksi yang lebih tinggi pada koleksi UTXO, dan konsep nomor akun dan saldo hanya ada di dompet.
keuntungan:
Perhitungannya bersifat off-chain, dan transaksi itu sendiri adalah hasil sekaligus buktinya. Node hanya perlu melakukan verifikasi, tidak perlu melakukan perhitungan tambahan pada transaksi, dan tidak ada penyimpanan negara tambahan. Perhitungan output UTXO dari transaksi itu sendiri diselesaikan di dompet, sehingga beban perhitungan transaksi sepenuhnya ditanggung oleh dompet, yang mengurangi beban rantai sampai batas tertentu.
Kecuali untuk transaksi Coinbase, input transaksi selalu ditautkan di belakang UTXO. Transaksi tidak dapat diputar ulang, urutan dan ketergantungan transaksi dapat diverifikasi dengan mudah, dan apakah transaksi telah digunakan juga dapat dibuktikan dengan mudah.
Model UTXO tidak memiliki kewarganegaraan dan lebih mudah diproses secara bersamaan.
Privasi yang lebih baik untuk transaksi jenis P2SH. Masukan dalam transaksi tidak terkait satu sama lain, dan teknologi seperti CoinJoin dapat digunakan untuk meningkatkan privasi pada tingkat tertentu.
kekurangan:
Ia tidak mampu mengimplementasikan logika yang lebih kompleks dan memiliki kemampuan program yang buruk. Untuk logika kompleks atau kontrak yang memerlukan pelestarian negara, implementasinya sulit dan pemanfaatan ruang negara relatif rendah.
Makin banyak masukannya, maka naskah saksinya juga akan bertambah. Tanda tangan itu sendiri menghabiskan lebih banyak CPU dan ruang penyimpanan.
Model akun
Untuk model Akun, model Akun menyimpan status dunia, dan status rantai umumnya disepakati dalam bentuk StateRoot dan ReceiptRoot di blok. Transaksi tersebut hanyalah peristiwa itu sendiri dan tidak memuat akibat. Konsensus transaksi dan konsensus negara pada hakikatnya dapat dipisahkan.
keuntungan:
Kontrak disimpan di Akun dalam bentuk kode, dan Akun memiliki statusnya sendiri. Model ini memiliki kemampuan program yang lebih baik, lebih mudah dipahami oleh pengembang, dan memiliki skenario yang lebih luas.
Transaksi massal lebih murah. Bayangkan kumpulan penambangan membayar biaya penanganan kepada penambang di UTXO, karena setiap Input dan Keluar memerlukan skrip Saksi atau skrip Penguncian yang terpisah, transaksi itu sendiri akan sangat besar, dan verifikasi tanda tangan serta penyimpanan transaksi akan menghabiskan sumber daya berharga di rantai. . Model Akun dapat sangat mengurangi biaya melalui kontrak.
kekurangan:
Tidak ada ketergantungan antara transaksi model Akun dan masalah pemutaran ulang perlu diselesaikan.
Untuk implementasi Lightning Network/Thunder Network, Plasma, dll., bukti pengguna memerlukan mekanisme pembuktian yang lebih kompleks, dan migrasi status sub-rantai ke rantai utama memerlukan protokol yang lebih kompleks.
UTXO VS Akun
Mari kita lakukan analisa dan perbandingan kelebihan dan kekurangan di atas.
Pertama, mengenai masalah perhitungan
Transaksi UTXO sendiri tidak memiliki perhitungan yang rumit untuk blockchain. Sederhananya, ada dua alasan. Pertama, sebagian besar transaksi Bitcoin adalah P2SH, dan skrip Witness tidak lengkap dan tidak lengkap ada. Untuk model Akun, seperti Ethereum, karena sebagian besar penghitungan dilakukan pada rantai dan Turing selesai, penghitungan umumnya lebih rumit, dan keamanan kontrak dapat dengan mudah menjadi masalah yang relatif besar. Tentu saja, lengkap atau tidaknya Turing tidak memiliki pengaruh langsung terhadap apakah itu model akun. Namun setelah model akun diperkenalkan, kontrak dapat berdiri sebagai entitas independen yang tidak dikendalikan oleh siapa pun, dan hal ini sangat penting.
Kedua, mengenai masalah UTXO yang lebih mudah untuk dilakukan secara konkurensi
Dalam model UTXO, keadaan dunia adalah kumpulan UTXO. Untuk memverifikasi transaksi lebih cepat, node perlu menyimpan indeks semua UTXO di memori, sehingga UTXO sangat mahal. UTXO yang tidak dikonsumsi dalam waktu lama akan selalu menempati memori node. Oleh karena itu, untuk model ini, pengguna secara teori harus didorong untuk memproduksi lebih sedikit UTXO dan mengonsumsi lebih banyak UTXO. Namun, jika Anda ingin menggunakan UTXO untuk transaksi paralel, Anda memerlukan lebih banyak UTXO sebagai input, dan pada saat yang sama, Anda perlu menghasilkan lebih banyak UTXO untuk memastikan konkurensi. Ini pada dasarnya adalah serangan debu pada jaringan. Dan karena transaksi dibangun di dalam dompet, diperlukan desain dompet yang lebih kompleks. Melihat kembali model Akun, setiap akun dapat dianggap sebagai mesin negara terpisah yang tidak saling mempengaruhi, dan akun berkomunikasi melalui pesan. Oleh karena itu, secara teori, ketika pengguna memulai beberapa transaksi, dan transaksi ini tidak saling memanggil Akun yang sama, transaksi tersebut dapat dieksekusi secara bersamaan.
Ketiga, mengenai masalah replay transaksi model Akun
Ethereum menggunakan metode penambahan nonce di Akun. Setiap transaksi sesuai dengan nonce, dan nonce bertambah setiap kali. Meskipun metode ini dimaksudkan untuk menyelesaikan masalah replay, metode ini juga menimbulkan masalah berurutan dan membuat transaksi tidak dapat diparalelkan. Misalnya, di Ethereum, pengguna mengirimkan beberapa transaksi. Jika transaksi pertama gagal dikemas, transaksi berikutnya tidak akan berhasil dikemas. Di CITA, kami menggunakan skema nonce acak, sehingga tidak ada ketergantungan berurutan antar transaksi pengguna, sehingga tidak menyebabkan kegagalan serial, dan juga memungkinkan transaksi diproses secara paralel.
Keempat, masalah penyimpanan
Karena pada model UTXO, negara hanya bisa disimpan dalam transaksi. Status model Akun disimpan di node dan disimpan menggunakan MPT di Ethereum. Di Blok, hanya diperlukan konsensus StateRoot. Dengan cara ini, untuk data on-chain, model Akun sebenarnya lebih kecil, dan jumlah transmisi jaringan lebih kecil, pada saat yang sama, status disimpan secara lokal di node menggunakan MPT, yang lebih efisien dalam penggunaan ruang. Misalnya, jika A mentransfer uang ke B, jika ada 2 Input dan 2 Output di UTXO, diperlukan 2 skrip Saksi dan 2 skrip Pengunci; dalam model Akun, hanya diperlukan satu tanda tangan, dan konten transaksi hanya berisi jumlahnya . Setelah penerapan Segregated Witness terbaru, jumlah data transaksi Bitcoin juga telah sangat berkurang, namun kenyataannya, node verifikasi dan node penuh masih perlu mengirimkan dan memverifikasi skrip Witness.
Kelima, agar light node mendapatkan status alamat tertentu, UTXO lebih rumit
Misalnya, dalam dompet, Anda perlu meminta semua UTXO tentang alamat tertentu dari node penuh. Node penuh dapat mengirim beberapa UTXO. Sulit bagi dompet untuk memverifikasi apakah UTXO telah digunakan, dan sulit untuk melakukannya dompet untuk membuktikan bahwa UTXO adalah set lengkap dan bukan koleksi sebagian. Model Akun jauh lebih sederhana. Negara bagian yang sesuai ditemukan berdasarkan alamat. Bukti Negara dari negara bagian saat ini dapat membuktikan keaslian data kontrak. Tentu saja, untuk UTXO, root UTXO juga dapat diverifikasi di setiap blok. Hal ini terkait dengan implementasi Bitcoin saat ini dan bukan merupakan fitur UTXO.
sebagai kesimpulan
Singkatnya, model Akun memiliki keunggulan lebih dalam hal kemampuan program dan fleksibilitas; dalam bisnis sederhana dan lintas rantai, UTXO memiliki keunggulan yang sangat unik dan inovatif. Model mana yang dipilih harus didasarkan pada skenario bisnis tertentu.