Sebagai salah satu prinsip desain inti Bitcoin, model UTXO telah menjadi paradigma teknis yang signifikan dalam domain blockchain sejak awal. Ini memainkan peran penting dalam memastikan keamanan dan ketertelusuran transaksi, menyediakan jalur alternatif di luar model saldo rekening tradisional. Dengan evolusi dan perluasan teknologi blockchain yang terus menerus dalam beberapa tahun terakhir, model UTXO itu sendiri telah mengalami evolusi dan perluasan yang konstan, seperti eUTXO, sel, daftar akses ketat, dan lainnya.
Artikel ini memperkenalkan model UTXO dalam bahasa yang sederhana, memberikan gambaran singkat tentang model UTXO dan metode implementasi BTC, Sui, Cardano, Nervos, dan Fuel.
Untuk mengilustrasikan model UTXO, kami menggunakan sebuah contoh:
Bayangkan dua orang, Alice dan Bob, masing-masing awalnya memiliki $5. Kemudian, muncul konflik, dan Alice dirampok $2 oleh Bob. Kepemilikan akhir untuk masing-masing adalah sebagai berikut:
Jelas bahwa Alice berakhir dengan $3, dan Bob akhirnya memegang $7. Metode akuntansi yang mirip aritmatika dasar ini biasanya terlihat dalam sistem perbankan dan disebut sebagai "model akun/saldo." Dalam model ini, saldo akun ada sebagai nilai numerik tunggal.
Jika kita menggunakan pendekatan yang berbeda dari model akun, seperti menggunakan UTXO untuk merepresentasikan transfer kekayaan antara Alice dan Bob, diagram ilustrasinya akan memiliki tampilan yang berbeda:
Pada titik ini, Alice masih memiliki $3, dan Bob masih memiliki $7, tetapi $7 ini tidak diwakili oleh satu nilai numerik. Sebagai gantinya, mereka dipecah menjadi "$5" dan "$2". Apakah pendekatan yang tidak konvensional ini terasa agak asing? Ini adalah metode akuntansi unik yang dikenal sebagai UTXO.
Akronim bahasa Inggris UTXO adalah singkatan dari Unspent Transaction Output. Di bawah pendekatan akuntansi ini, setiap transaksi on-chain dimanifestasikan sebagai perubahan dan transfer dalam UTXO. Sebagai contoh, dalam peristiwa transaksi yang disebutkan di atas, "$5" yang awalnya dimiliki Alice berfungsi sebagai parameter input, dilabeli sebagai UTXO_0, yang akan ditandai sebagai dibelanjakan; secara bersamaan, sistem menghasilkan "$2" (UTXO_1) dan "$3" (UTXO_2) sebagai parameter output. UTXO_1 akan ditransfer ke Bob, dan UTXO_2 akan dikembalikan ke Alice, sehingga menyelesaikan transfer kekayaan antara Alice dan Bob.
Dalam model UTXO, tidak ada konsep eksplisit tentang "akun" dan "saldo". UTXO berfungsi sebagai struktur data yang membantu eksekusi transaksi, mencatat informasi seperti jumlah yang diwakili dan indeks transaksi terkait. Setiap UTXO mewakili input transaksi yang belum digunakan, dengan pemilik yang ditunjuk. Ketika transaksi terjadi, UTXO tertentu dapat digunakan sebagai input, dan setelah penghancurannya, UTXO baru dihasilkan sebagai output transaksi.
Beginilah cara Bitcoin menyimpan akun: dengan setiap transaksi, UTXO lama dihancurkan, dan UTXO baru dibuat. Jumlah total UTXO yang dihancurkan sama dengan jumlah UTXO yang baru dibuat (dengan sebagian dialokasikan sebagai biaya transaksi untuk penambang). Hal ini memastikan bahwa dana tidak dapat ditingkatkan secara sewenang-wenang.
Misalkan sekelompok pengguna memulai sejumlah besar permintaan transaksi secara bersamaan. Bagaimana situasi ini ditangani dengan menggunakan model UTXO dibandingkan dengan model akun/saldo?
Dalam model akun/saldo, setiap pengguna memiliki akun dengan informasi saldo yang tercatat. Ketika transaksi terjadi, saldo akun terkait perlu diperbarui, yang melibatkan operasi "baca" dan "tulis". Namun, jika dua transaksi melibatkan akun yang sama, hal ini sering kali menyebabkan konflik baca-tulis, yang mengarah pada pertikaian negara, situasi yang harus dihindari.
Sistem basis data tradisional biasanya menangani pertentangan baca-tulis dengan mekanisme "penguncian". Dalam skenario seperti itu, transaksi yang menyebabkan perselisihan untuk data yang sama sering kali harus mengantri, mencegah eksekusi simultan dan mengurangi efisiensi pemrosesan transaksi. Ketika ada sejumlah besar transaksi yang menunggu untuk diproses, hal ini dapat menyebabkan kemacetan kinerja yang signifikan, dengan transaksi yang sedang dalam proses menghadapi waktu tunggu yang lama tanpa pemrosesan yang cepat.
Berbeda dengan model saldo akun, model UTXO Bitcoin lebih siap untuk menangani masalah pertikaian data. Dalam pendekatan ini, setiap entitas pemrosesan langsung dari setiap transaksi tidak lagi menjadi "akun" tertentu, melainkan UTXO yang berdiri sendiri. Karena UTXO yang berbeda tidak saling mengganggu satu sama lain, setiap transaksi dalam jaringan Bitcoin beroperasi secara independen. Sebagai hasilnya, node jaringan Bitcoin dapat memproses beberapa transaksi secara bersamaan tanpa perlu "mengunci", sehingga secara signifikan meningkatkan throughput sistem dan kinerja konkurensi.
Sebagai tambahan, pada model UTXO, dompet terenkripsi biasanya menghasilkan sebuah alamat baru untuk pengguna setelah melakukan transaksi. Pendekatan ini meningkatkan privasi, sehingga lebih sulit untuk mengaitkan transaksi dengan individu tertentu. Sebaliknya, model akun/saldo, yang menggunakan alamat tetap, lebih rentan terhadap analisis asosiasi.
Namun demikian, model UTXO memiliki keterbatasan. Pada awalnya, sistem ini dirancang untuk memfasilitasi transfer mata uang sederhana dan tidak cocok untuk menangani logika bisnis yang kompleks. Meskipun fungsi dasar seperti multi-tanda tangan dan time lock dapat diimplementasikan menggunakan bahasa skrip, informasi status minimal yang dapat direkam oleh UTXO Bitcoin membuatnya kurang mampu menangani operasi yang lebih rumit.
Keterbatasan UTXO Bitcoin secara tidak langsung berkontribusi pada kemunculan "Ethereum". Vitalik, salah satu kontributor awal Bitcoin Magazine, sangat menyadari kekurangan Bitcoin. Model akun/saldo, yang lebih mudah dipahami oleh kebanyakan orang, mengatasi tantangan yang dihadapi UTXO dalam menangani aplikasi negara kaya. Seperti yang dinyatakan Vitalik dalam whitepaper Ethereum:
UTXO dapat digunakan atau tidak digunakan; tidak ada peluang untuk kontrak multi-tahap atau skrip yang menyimpan status internal lainnya di luar itu. Hal ini menyulitkan untuk membuat kontrak opsi multi-tahap, penawaran pertukaran terdesentralisasi atau protokol komitmen kriptografi dua tahap (yang diperlukan untuk hadiah komputasi yang aman). Ini juga berarti bahwa UTXO hanya dapat digunakan untuk membangun kontrak sederhana dan sekali pakai dan bukan kontrak "stateful" yang lebih kompleks seperti organisasi yang terdesentralisasi, dan membuat meta-protokol sulit untuk diimplementasikan. Keadaan biner yang dikombinasikan dengan kebutaan nilai juga berarti bahwa aplikasi penting lainnya, batas penarikan, tidak mungkin dilakukan.
Sebelum mencermati berbagai aplikasi dan pengoptimalan model UTXO, mari kita menganalisis area yang perlu ditingkatkan sekaligus mempertahankan keunggulannya. Hal ini dapat diringkas sebagai berikut:
Mengabstraksikan makna dari status yang disimpan dalam UTXO.
Mengabstraksikan kepemilikan negara.
Menyelesaikan masalah perselisihan negara saat berbagi UTXO.
Dalam BTC, satu-satunya arti state adalah jumlah token, kepemilikan biasanya didefinisikan menggunakan kunci publik, dan pertikaian state tidak dibahas secara ekstensif karena BTC tidak dirancang untuk dApps.
Sui menyediakan dua jenis objek bagi para pengembang: OwnedObject dan SharedObject. Yang pertama mirip dengan UTXO (khususnya versi yang disempurnakan), sedangkan yang terakhir sebanding dengan model akun/saldo. Keduanya dapat digunakan secara bersamaan.
Sebuah Objek dapat dibagikan, yang berarti siapa pun dapat membaca atau menulis ke Objek tersebut. Tidak seperti OwnedObject yang dapat diubah (dengan hanya satu penulis), SharedObject membutuhkan konsensus untuk memerintahkan pembacaan dan penulisan.
Di blockchain lain, setiap Objek dibagikan. Namun, pengembang Sui biasanya dapat memilih untuk menggunakan OwnedObject, SharedObject, atau kombinasi keduanya untuk mengimplementasikan kasus penggunaan tertentu. Pilihan ini dapat berdampak pada kinerja, keamanan, dan kompleksitas implementasi.
Di Sui, Owned Objects mirip dengan UTXO, dan hanya pemiliknya yang dapat mengoperasikannya. Objek juga memiliki nomor versi, dan sebuah versi objek hanya dapat digunakan oleh pemiliknya sekali saja. Oleh karena itu, versi objek pada dasarnya sesuai dengan UTXO.
Mengenai masalah pertikaian negara, Sui mengatasinya melalui penanganan khusus (pemesanan lokal, mirip dengan Fuel) di SharedObjects.
Cardano menggunakan model UTXO yang diperluas yang dikenal sebagai eUTXO. eUTXO mendukung peningkatan kemampuan pemrograman dengan tetap mempertahankan keunggulan model Bitcoin UTXO.
Di Cardano, makna negara diperluas lebih jauh melalui skrip, dan kepemilikan negara didefinisikan dengan cara yang lebih umum. Set UTXO digunakan untuk meminimalkan masalah pertikaian negara. Secara khusus, eUTXO disempurnakan dalam dua aspek:
Model eUTXO mencakup alamat yang lebih umum. Alamat-alamat ini tidak hanya didasarkan pada hash kunci publik tetapi dapat didefinisikan berdasarkan logika apa pun yang menentukan kondisi di mana eUTXO dapat digunakan, sehingga memungkinkan pemrograman kepemilikan negara.
Selain alamat dan nilai, output dapat membawa (hampir) semua data, sehingga memungkinkan pemrograman makna status melalui skrip.
Lebih khusus lagi, eUTXO memungkinkan pengguna untuk menambahkan data arbitrer dalam format seperti JSON ke UTXO, yang disebut sebagai Datum. Datum memungkinkan pengembang untuk menyediakan fungsionalitas seperti state untuk skrip, yang terkait dengan UTXO tertentu.
Selain itu, transaksi di Cardano dapat membawa parameter yang terkait dengan pengguna tertentu, yang dikenal sebagai penukar. Penebus memungkinkan pemrakarsa transaksi untuk menentukan bagaimana UTXO digunakan dan dapat digunakan oleh pengembang dApp untuk berbagai tujuan.
Ketika sebuah transaksi divalidasi, skrip validasi beroperasi menggunakan Datum, Penebus, dan konteks yang berisi data transaksi. Skrip ini mencakup logika untuk menggunakan UTXO ketika kondisi terpenuhi.
Perlu dicatat bahwa eUTXO masih mencapai tugas ekstensi melalui skrip dan berbeda secara signifikan dari gagasan tradisional tentang "kontrak pintar" (Charles Hoskinson, sang pendiri, menyarankan untuk menyebutnya sebagai "validator yang dapat diprogram", tetapi istilah "kontrak pintar" lebih diterima secara luas di pasar).
Dalam Nervos (CKB), arti dari state diabstraksikan oleh TypeScript, dan kepemilikan dari state diabstraksikan oleh sebuah lockscript. Model pengoptimalan UTXO sederhana dalam bentuk kode sel adalah sebagai berikut:
pub struct CellOutput {
kapasitas pub: Kapasitas,
data pub: Vec<u8>,
kunci pub: Skrip,
pub type_: Pilihan<Script>,
}
Mengenai masalah pertikaian negara, CKB saat ini sedang memajukan penelitian tentang Transaksi Terbuka, di mana pengguna dapat mengajukan UTXO parsial yang menentukan tujuan transaksi, dan kemudian para mak comblang menggabungkannya menjadi transaksi lengkap.
Model sel Nervos adalah versi "umum" dari UTXO, dan Jan memberikan penjelasan rinci pada forum Nervos:
Fokus Layer1 adalah pada state, dan dengan Layer1 sebagai target desain, CKB secara alami berfokus pada state.
Ethereum memisahkan riwayat transaksi dan riwayat state menjadi dua dimensi, di mana blok dan transaksi mewakili peristiwa yang memicu transisi state daripada state itu sendiri. Sebaliknya, protokol Bitcoin menggabungkan transaksi dan status ke dalam satu dimensi-transaksi adalah status, dan status adalah transaksi. Ini adalah arsitektur yang berpusat di sekitar negara bagian.
Pada saat yang sama, CKB bertujuan untuk memverifikasi dan melestarikan tidak hanya nValue sebagai negara tetapi juga semua data yang dianggap berharga dan disetujui oleh konsensus untuk dilestarikan dalam jangka panjang. Struktur keluaran transaksi Bitcoin tidak memadai untuk tujuan ini, tetapi telah memberikan kita banyak inspirasi. Dengan menggeneralisasi nValue dan mengubahnya dari ruang yang menyimpan bilangan bulat menjadi ruang yang mampu menampung data apa pun, kita mendapatkan "CTxOut" atau Cell yang lebih umum.
Dalam Sel, nValue menjadi dua bidang: kapasitas dan data. Bidang-bidang ini bersama-sama mewakili ruang penyimpanan, di mana kapasitas adalah bilangan bulat yang menunjukkan ukuran ruang dalam byte, dan data adalah tempat penyimpanan status dan dapat mengakomodasi urutan byte apa pun. ScriptPubKey menjadi kunci, hanya sebuah perubahan nama, yang menyatakan siapa pemilik ruang konsensus ini-hanya orang yang dapat memberikan parameter (seperti tanda tangan) untuk membuat skrip kunci berhasil dieksekusi yang dapat "memperbarui" status di Sel ini. Jumlah total byte yang ditempati oleh seluruh CellOutput harus kurang dari atau sama dengan kapasitas. CKB memiliki banyak Sel, dan koleksinya membentuk kondisi lengkap CKB saat ini, menyimpan pengetahuan bersama, bukan hanya mata uang digital tertentu.
Transaksi masih mewakili perubahan/migrasi status. Perubahan status atau "pembaruan" konten sel sebenarnya dicapai melalui penghancuran dan penciptaan (bukan dengan mengubah konten sel asli secara langsung). Setiap transaksi secara efektif menghancurkan sekumpulan sel sekaligus membuat sekumpulan sel baru. Sel yang baru dibuat memiliki pemilik baru dan menyimpan data baru, tetapi total kapasitas yang dihancurkan selalu lebih besar atau sama dengan total kapasitas yang dibuat, sehingga memastikan bahwa tidak ada yang bisa menambah kapasitas secara sewenang-wenang. Karena kapasitas dapat ditransfer tetapi tidak dapat ditingkatkan secara sewenang-wenang, memiliki kapasitas setara dengan memiliki jumlah ruang negara konsensus yang sesuai. Kapasitas adalah aset asli dalam jaringan CKB. Penghancuran sebuah sel hanya menandainya sebagai "hancur," mirip dengan bagaimana UTXO Bitcoin yang tidak terpakai menjadi terpakai dan tidak secara fisik dihapus dari blockchain. Setiap Cell hanya dapat dihancurkan sekali, sama seperti setiap UTXO hanya dapat dihabiskan sekali.
Karakteristik model ini adalah:
Negara adalah hal yang sangat penting.
Kepemilikan adalah atribut dari state, dengan setiap state memiliki satu pemilik.
Negara terus menerus dihancurkan dan diciptakan.
Oleh karena itu, sel adalah versi umum dari UTXO.
Fuel mengadopsi model Strict Access List, yang merupakan pengoptimalan UTXO berdasarkan konsep Contract UTXO.
Seperti yang diperkenalkan sebelumnya, UTXO tradisional di BTC hanya memiliki dua atribut: jumlah koin dan pemilik. Sebaliknya, Kontrak UTXO menyediakan properti fundamental tambahan, termasuk jumlah koin, ID kontrak, hash kode kontrak, dan root penyimpanan.
Jika menggunakan model eksekusi tanpa status, hanya Kontrak UTXO yang membutuhkan hash kode kontrak dan root penyimpanan. Dalam model eksekusi stateful, bidang-bidang ini dapat dihilangkan dalam Contract UTXO, tetapi diperlukan tipe Storage Element UTXO yang terpisah. ID UTXO, pengenal unik untuk setiap UTXO yang berfungsi sebagai kunci dalam basis data penyimpanan nilai kunci, dihasilkan dari titik keluaran UTXO atau variannya (mis., hash titik keluaran dan bidangnya).
Dalam model ini, Kontrak UTXO, mirip dengan kontrak pintar, dapat dipanggil oleh siapa saja.
Sangat penting untuk dicatat bahwa Fuel menyediakan fungsi yang lebih dekat dengan kontrak pintar daripada skrip. Keterbatasan model UTXO itu sendiri membuat pengembangan aplikasi dengan VM menjadi menantang, terutama dalam menangani masalah pertikaian UTXO. Secara umum ada tiga solusi: pertama, proses off-chain, seperti dalam rollup; kedua, pekerjaan tambahan pra-pengurutan, yang digunakan oleh Fuel; ketiga, Transaksi Terbuka yang disebutkan di atas di CKB, di mana setiap pengguna dapat mengusulkan transaksi parsial, dan mak comblang (mirip dengan sequencer) menggabungkannya menjadi transaksi lengkap. Solusi yang sesuai dalam BTC adalah PBST.
Kesimpulan
Dari artikel ini, kita telah memperoleh pemahaman tentang prinsip-prinsip dasar UTXO, mengenali kekuatan dan kelemahan modelnya dibandingkan dengan model akun/saldo Ethereum, dan memperoleh wawasan yang lebih jelas tentang konsep UTXO dan ekstensi terkait.
Sebagai salah satu prinsip desain inti Bitcoin, model UTXO memainkan peran penting dalam memastikan keamanan dan ketertelusuran transaksi. Dengan evolusi dan perluasan teknologi blockchain yang terus menerus, model UTXO telah berkembang (seperti EUTXO, sel, Daftar Akses Ketat), memberikan lebih banyak kemungkinan untuk transaksi dan pengelolaan aset digital. Melalui penelitian dan pemahaman mendalam tentang konsep UTXO dan ekstensi terkait, kita dapat lebih memahami esensi teknologi blockchain, meletakkan fondasi yang lebih kuat untuk inovasi dan aplikasi di masa depan.
Sebagai salah satu prinsip desain inti Bitcoin, model UTXO telah menjadi paradigma teknis yang signifikan dalam domain blockchain sejak awal. Ini memainkan peran penting dalam memastikan keamanan dan ketertelusuran transaksi, menyediakan jalur alternatif di luar model saldo rekening tradisional. Dengan evolusi dan perluasan teknologi blockchain yang terus menerus dalam beberapa tahun terakhir, model UTXO itu sendiri telah mengalami evolusi dan perluasan yang konstan, seperti eUTXO, sel, daftar akses ketat, dan lainnya.
Artikel ini memperkenalkan model UTXO dalam bahasa yang sederhana, memberikan gambaran singkat tentang model UTXO dan metode implementasi BTC, Sui, Cardano, Nervos, dan Fuel.
Untuk mengilustrasikan model UTXO, kami menggunakan sebuah contoh:
Bayangkan dua orang, Alice dan Bob, masing-masing awalnya memiliki $5. Kemudian, muncul konflik, dan Alice dirampok $2 oleh Bob. Kepemilikan akhir untuk masing-masing adalah sebagai berikut:
Jelas bahwa Alice berakhir dengan $3, dan Bob akhirnya memegang $7. Metode akuntansi yang mirip aritmatika dasar ini biasanya terlihat dalam sistem perbankan dan disebut sebagai "model akun/saldo." Dalam model ini, saldo akun ada sebagai nilai numerik tunggal.
Jika kita menggunakan pendekatan yang berbeda dari model akun, seperti menggunakan UTXO untuk merepresentasikan transfer kekayaan antara Alice dan Bob, diagram ilustrasinya akan memiliki tampilan yang berbeda:
Pada titik ini, Alice masih memiliki $3, dan Bob masih memiliki $7, tetapi $7 ini tidak diwakili oleh satu nilai numerik. Sebagai gantinya, mereka dipecah menjadi "$5" dan "$2". Apakah pendekatan yang tidak konvensional ini terasa agak asing? Ini adalah metode akuntansi unik yang dikenal sebagai UTXO.
Akronim bahasa Inggris UTXO adalah singkatan dari Unspent Transaction Output. Di bawah pendekatan akuntansi ini, setiap transaksi on-chain dimanifestasikan sebagai perubahan dan transfer dalam UTXO. Sebagai contoh, dalam peristiwa transaksi yang disebutkan di atas, "$5" yang awalnya dimiliki Alice berfungsi sebagai parameter input, dilabeli sebagai UTXO_0, yang akan ditandai sebagai dibelanjakan; secara bersamaan, sistem menghasilkan "$2" (UTXO_1) dan "$3" (UTXO_2) sebagai parameter output. UTXO_1 akan ditransfer ke Bob, dan UTXO_2 akan dikembalikan ke Alice, sehingga menyelesaikan transfer kekayaan antara Alice dan Bob.
Dalam model UTXO, tidak ada konsep eksplisit tentang "akun" dan "saldo". UTXO berfungsi sebagai struktur data yang membantu eksekusi transaksi, mencatat informasi seperti jumlah yang diwakili dan indeks transaksi terkait. Setiap UTXO mewakili input transaksi yang belum digunakan, dengan pemilik yang ditunjuk. Ketika transaksi terjadi, UTXO tertentu dapat digunakan sebagai input, dan setelah penghancurannya, UTXO baru dihasilkan sebagai output transaksi.
Beginilah cara Bitcoin menyimpan akun: dengan setiap transaksi, UTXO lama dihancurkan, dan UTXO baru dibuat. Jumlah total UTXO yang dihancurkan sama dengan jumlah UTXO yang baru dibuat (dengan sebagian dialokasikan sebagai biaya transaksi untuk penambang). Hal ini memastikan bahwa dana tidak dapat ditingkatkan secara sewenang-wenang.
Misalkan sekelompok pengguna memulai sejumlah besar permintaan transaksi secara bersamaan. Bagaimana situasi ini ditangani dengan menggunakan model UTXO dibandingkan dengan model akun/saldo?
Dalam model akun/saldo, setiap pengguna memiliki akun dengan informasi saldo yang tercatat. Ketika transaksi terjadi, saldo akun terkait perlu diperbarui, yang melibatkan operasi "baca" dan "tulis". Namun, jika dua transaksi melibatkan akun yang sama, hal ini sering kali menyebabkan konflik baca-tulis, yang mengarah pada pertikaian negara, situasi yang harus dihindari.
Sistem basis data tradisional biasanya menangani pertentangan baca-tulis dengan mekanisme "penguncian". Dalam skenario seperti itu, transaksi yang menyebabkan perselisihan untuk data yang sama sering kali harus mengantri, mencegah eksekusi simultan dan mengurangi efisiensi pemrosesan transaksi. Ketika ada sejumlah besar transaksi yang menunggu untuk diproses, hal ini dapat menyebabkan kemacetan kinerja yang signifikan, dengan transaksi yang sedang dalam proses menghadapi waktu tunggu yang lama tanpa pemrosesan yang cepat.
Berbeda dengan model saldo akun, model UTXO Bitcoin lebih siap untuk menangani masalah pertikaian data. Dalam pendekatan ini, setiap entitas pemrosesan langsung dari setiap transaksi tidak lagi menjadi "akun" tertentu, melainkan UTXO yang berdiri sendiri. Karena UTXO yang berbeda tidak saling mengganggu satu sama lain, setiap transaksi dalam jaringan Bitcoin beroperasi secara independen. Sebagai hasilnya, node jaringan Bitcoin dapat memproses beberapa transaksi secara bersamaan tanpa perlu "mengunci", sehingga secara signifikan meningkatkan throughput sistem dan kinerja konkurensi.
Sebagai tambahan, pada model UTXO, dompet terenkripsi biasanya menghasilkan sebuah alamat baru untuk pengguna setelah melakukan transaksi. Pendekatan ini meningkatkan privasi, sehingga lebih sulit untuk mengaitkan transaksi dengan individu tertentu. Sebaliknya, model akun/saldo, yang menggunakan alamat tetap, lebih rentan terhadap analisis asosiasi.
Namun demikian, model UTXO memiliki keterbatasan. Pada awalnya, sistem ini dirancang untuk memfasilitasi transfer mata uang sederhana dan tidak cocok untuk menangani logika bisnis yang kompleks. Meskipun fungsi dasar seperti multi-tanda tangan dan time lock dapat diimplementasikan menggunakan bahasa skrip, informasi status minimal yang dapat direkam oleh UTXO Bitcoin membuatnya kurang mampu menangani operasi yang lebih rumit.
Keterbatasan UTXO Bitcoin secara tidak langsung berkontribusi pada kemunculan "Ethereum". Vitalik, salah satu kontributor awal Bitcoin Magazine, sangat menyadari kekurangan Bitcoin. Model akun/saldo, yang lebih mudah dipahami oleh kebanyakan orang, mengatasi tantangan yang dihadapi UTXO dalam menangani aplikasi negara kaya. Seperti yang dinyatakan Vitalik dalam whitepaper Ethereum:
UTXO dapat digunakan atau tidak digunakan; tidak ada peluang untuk kontrak multi-tahap atau skrip yang menyimpan status internal lainnya di luar itu. Hal ini menyulitkan untuk membuat kontrak opsi multi-tahap, penawaran pertukaran terdesentralisasi atau protokol komitmen kriptografi dua tahap (yang diperlukan untuk hadiah komputasi yang aman). Ini juga berarti bahwa UTXO hanya dapat digunakan untuk membangun kontrak sederhana dan sekali pakai dan bukan kontrak "stateful" yang lebih kompleks seperti organisasi yang terdesentralisasi, dan membuat meta-protokol sulit untuk diimplementasikan. Keadaan biner yang dikombinasikan dengan kebutaan nilai juga berarti bahwa aplikasi penting lainnya, batas penarikan, tidak mungkin dilakukan.
Sebelum mencermati berbagai aplikasi dan pengoptimalan model UTXO, mari kita menganalisis area yang perlu ditingkatkan sekaligus mempertahankan keunggulannya. Hal ini dapat diringkas sebagai berikut:
Mengabstraksikan makna dari status yang disimpan dalam UTXO.
Mengabstraksikan kepemilikan negara.
Menyelesaikan masalah perselisihan negara saat berbagi UTXO.
Dalam BTC, satu-satunya arti state adalah jumlah token, kepemilikan biasanya didefinisikan menggunakan kunci publik, dan pertikaian state tidak dibahas secara ekstensif karena BTC tidak dirancang untuk dApps.
Sui menyediakan dua jenis objek bagi para pengembang: OwnedObject dan SharedObject. Yang pertama mirip dengan UTXO (khususnya versi yang disempurnakan), sedangkan yang terakhir sebanding dengan model akun/saldo. Keduanya dapat digunakan secara bersamaan.
Sebuah Objek dapat dibagikan, yang berarti siapa pun dapat membaca atau menulis ke Objek tersebut. Tidak seperti OwnedObject yang dapat diubah (dengan hanya satu penulis), SharedObject membutuhkan konsensus untuk memerintahkan pembacaan dan penulisan.
Di blockchain lain, setiap Objek dibagikan. Namun, pengembang Sui biasanya dapat memilih untuk menggunakan OwnedObject, SharedObject, atau kombinasi keduanya untuk mengimplementasikan kasus penggunaan tertentu. Pilihan ini dapat berdampak pada kinerja, keamanan, dan kompleksitas implementasi.
Di Sui, Owned Objects mirip dengan UTXO, dan hanya pemiliknya yang dapat mengoperasikannya. Objek juga memiliki nomor versi, dan sebuah versi objek hanya dapat digunakan oleh pemiliknya sekali saja. Oleh karena itu, versi objek pada dasarnya sesuai dengan UTXO.
Mengenai masalah pertikaian negara, Sui mengatasinya melalui penanganan khusus (pemesanan lokal, mirip dengan Fuel) di SharedObjects.
Cardano menggunakan model UTXO yang diperluas yang dikenal sebagai eUTXO. eUTXO mendukung peningkatan kemampuan pemrograman dengan tetap mempertahankan keunggulan model Bitcoin UTXO.
Di Cardano, makna negara diperluas lebih jauh melalui skrip, dan kepemilikan negara didefinisikan dengan cara yang lebih umum. Set UTXO digunakan untuk meminimalkan masalah pertikaian negara. Secara khusus, eUTXO disempurnakan dalam dua aspek:
Model eUTXO mencakup alamat yang lebih umum. Alamat-alamat ini tidak hanya didasarkan pada hash kunci publik tetapi dapat didefinisikan berdasarkan logika apa pun yang menentukan kondisi di mana eUTXO dapat digunakan, sehingga memungkinkan pemrograman kepemilikan negara.
Selain alamat dan nilai, output dapat membawa (hampir) semua data, sehingga memungkinkan pemrograman makna status melalui skrip.
Lebih khusus lagi, eUTXO memungkinkan pengguna untuk menambahkan data arbitrer dalam format seperti JSON ke UTXO, yang disebut sebagai Datum. Datum memungkinkan pengembang untuk menyediakan fungsionalitas seperti state untuk skrip, yang terkait dengan UTXO tertentu.
Selain itu, transaksi di Cardano dapat membawa parameter yang terkait dengan pengguna tertentu, yang dikenal sebagai penukar. Penebus memungkinkan pemrakarsa transaksi untuk menentukan bagaimana UTXO digunakan dan dapat digunakan oleh pengembang dApp untuk berbagai tujuan.
Ketika sebuah transaksi divalidasi, skrip validasi beroperasi menggunakan Datum, Penebus, dan konteks yang berisi data transaksi. Skrip ini mencakup logika untuk menggunakan UTXO ketika kondisi terpenuhi.
Perlu dicatat bahwa eUTXO masih mencapai tugas ekstensi melalui skrip dan berbeda secara signifikan dari gagasan tradisional tentang "kontrak pintar" (Charles Hoskinson, sang pendiri, menyarankan untuk menyebutnya sebagai "validator yang dapat diprogram", tetapi istilah "kontrak pintar" lebih diterima secara luas di pasar).
Dalam Nervos (CKB), arti dari state diabstraksikan oleh TypeScript, dan kepemilikan dari state diabstraksikan oleh sebuah lockscript. Model pengoptimalan UTXO sederhana dalam bentuk kode sel adalah sebagai berikut:
pub struct CellOutput {
kapasitas pub: Kapasitas,
data pub: Vec<u8>,
kunci pub: Skrip,
pub type_: Pilihan<Script>,
}
Mengenai masalah pertikaian negara, CKB saat ini sedang memajukan penelitian tentang Transaksi Terbuka, di mana pengguna dapat mengajukan UTXO parsial yang menentukan tujuan transaksi, dan kemudian para mak comblang menggabungkannya menjadi transaksi lengkap.
Model sel Nervos adalah versi "umum" dari UTXO, dan Jan memberikan penjelasan rinci pada forum Nervos:
Fokus Layer1 adalah pada state, dan dengan Layer1 sebagai target desain, CKB secara alami berfokus pada state.
Ethereum memisahkan riwayat transaksi dan riwayat state menjadi dua dimensi, di mana blok dan transaksi mewakili peristiwa yang memicu transisi state daripada state itu sendiri. Sebaliknya, protokol Bitcoin menggabungkan transaksi dan status ke dalam satu dimensi-transaksi adalah status, dan status adalah transaksi. Ini adalah arsitektur yang berpusat di sekitar negara bagian.
Pada saat yang sama, CKB bertujuan untuk memverifikasi dan melestarikan tidak hanya nValue sebagai negara tetapi juga semua data yang dianggap berharga dan disetujui oleh konsensus untuk dilestarikan dalam jangka panjang. Struktur keluaran transaksi Bitcoin tidak memadai untuk tujuan ini, tetapi telah memberikan kita banyak inspirasi. Dengan menggeneralisasi nValue dan mengubahnya dari ruang yang menyimpan bilangan bulat menjadi ruang yang mampu menampung data apa pun, kita mendapatkan "CTxOut" atau Cell yang lebih umum.
Dalam Sel, nValue menjadi dua bidang: kapasitas dan data. Bidang-bidang ini bersama-sama mewakili ruang penyimpanan, di mana kapasitas adalah bilangan bulat yang menunjukkan ukuran ruang dalam byte, dan data adalah tempat penyimpanan status dan dapat mengakomodasi urutan byte apa pun. ScriptPubKey menjadi kunci, hanya sebuah perubahan nama, yang menyatakan siapa pemilik ruang konsensus ini-hanya orang yang dapat memberikan parameter (seperti tanda tangan) untuk membuat skrip kunci berhasil dieksekusi yang dapat "memperbarui" status di Sel ini. Jumlah total byte yang ditempati oleh seluruh CellOutput harus kurang dari atau sama dengan kapasitas. CKB memiliki banyak Sel, dan koleksinya membentuk kondisi lengkap CKB saat ini, menyimpan pengetahuan bersama, bukan hanya mata uang digital tertentu.
Transaksi masih mewakili perubahan/migrasi status. Perubahan status atau "pembaruan" konten sel sebenarnya dicapai melalui penghancuran dan penciptaan (bukan dengan mengubah konten sel asli secara langsung). Setiap transaksi secara efektif menghancurkan sekumpulan sel sekaligus membuat sekumpulan sel baru. Sel yang baru dibuat memiliki pemilik baru dan menyimpan data baru, tetapi total kapasitas yang dihancurkan selalu lebih besar atau sama dengan total kapasitas yang dibuat, sehingga memastikan bahwa tidak ada yang bisa menambah kapasitas secara sewenang-wenang. Karena kapasitas dapat ditransfer tetapi tidak dapat ditingkatkan secara sewenang-wenang, memiliki kapasitas setara dengan memiliki jumlah ruang negara konsensus yang sesuai. Kapasitas adalah aset asli dalam jaringan CKB. Penghancuran sebuah sel hanya menandainya sebagai "hancur," mirip dengan bagaimana UTXO Bitcoin yang tidak terpakai menjadi terpakai dan tidak secara fisik dihapus dari blockchain. Setiap Cell hanya dapat dihancurkan sekali, sama seperti setiap UTXO hanya dapat dihabiskan sekali.
Karakteristik model ini adalah:
Negara adalah hal yang sangat penting.
Kepemilikan adalah atribut dari state, dengan setiap state memiliki satu pemilik.
Negara terus menerus dihancurkan dan diciptakan.
Oleh karena itu, sel adalah versi umum dari UTXO.
Fuel mengadopsi model Strict Access List, yang merupakan pengoptimalan UTXO berdasarkan konsep Contract UTXO.
Seperti yang diperkenalkan sebelumnya, UTXO tradisional di BTC hanya memiliki dua atribut: jumlah koin dan pemilik. Sebaliknya, Kontrak UTXO menyediakan properti fundamental tambahan, termasuk jumlah koin, ID kontrak, hash kode kontrak, dan root penyimpanan.
Jika menggunakan model eksekusi tanpa status, hanya Kontrak UTXO yang membutuhkan hash kode kontrak dan root penyimpanan. Dalam model eksekusi stateful, bidang-bidang ini dapat dihilangkan dalam Contract UTXO, tetapi diperlukan tipe Storage Element UTXO yang terpisah. ID UTXO, pengenal unik untuk setiap UTXO yang berfungsi sebagai kunci dalam basis data penyimpanan nilai kunci, dihasilkan dari titik keluaran UTXO atau variannya (mis., hash titik keluaran dan bidangnya).
Dalam model ini, Kontrak UTXO, mirip dengan kontrak pintar, dapat dipanggil oleh siapa saja.
Sangat penting untuk dicatat bahwa Fuel menyediakan fungsi yang lebih dekat dengan kontrak pintar daripada skrip. Keterbatasan model UTXO itu sendiri membuat pengembangan aplikasi dengan VM menjadi menantang, terutama dalam menangani masalah pertikaian UTXO. Secara umum ada tiga solusi: pertama, proses off-chain, seperti dalam rollup; kedua, pekerjaan tambahan pra-pengurutan, yang digunakan oleh Fuel; ketiga, Transaksi Terbuka yang disebutkan di atas di CKB, di mana setiap pengguna dapat mengusulkan transaksi parsial, dan mak comblang (mirip dengan sequencer) menggabungkannya menjadi transaksi lengkap. Solusi yang sesuai dalam BTC adalah PBST.
Kesimpulan
Dari artikel ini, kita telah memperoleh pemahaman tentang prinsip-prinsip dasar UTXO, mengenali kekuatan dan kelemahan modelnya dibandingkan dengan model akun/saldo Ethereum, dan memperoleh wawasan yang lebih jelas tentang konsep UTXO dan ekstensi terkait.
Sebagai salah satu prinsip desain inti Bitcoin, model UTXO memainkan peran penting dalam memastikan keamanan dan ketertelusuran transaksi. Dengan evolusi dan perluasan teknologi blockchain yang terus menerus, model UTXO telah berkembang (seperti EUTXO, sel, Daftar Akses Ketat), memberikan lebih banyak kemungkinan untuk transaksi dan pengelolaan aset digital. Melalui penelitian dan pemahaman mendalam tentang konsep UTXO dan ekstensi terkait, kita dapat lebih memahami esensi teknologi blockchain, meletakkan fondasi yang lebih kuat untuk inovasi dan aplikasi di masa depan.