1. Latar belakang Bitcoin

Bitcoin mengadopsi model transaksi seperti uang tunai (sistem tunai), dan metode pembayarannya didasarkan pada model yang disebut UTXO, yang berbeda dari model berbasis saldo akun tradisional.

图片

Misalnya: Dalam proses model akuntansi rekening bank, ketika A mentransfer 100 yuan ke B, bank akan mencatat tiga langkah yang merupakan proses transaksi. Langkah pertama adalah mengurangi 100 yuan dari akun A. ID catatan dari langkah ini adalah tid1. Langkah kedua adalah menyetor 100 yuan ke akun B. ID catatan dari langkah ini adalah tid2. Langkah ketiga adalah mencatat catatan transfer, yang menghubungkan tid1 dan tid2, yang menunjukkan bahwa akun A berkurang 100 yuan dan akun B bertambah 100 yuan.

Dengan cara ini, hubungan transfer antara A dan B dicatat dan dapat ditanyakan serta dilacak di masa mendatang. Sekarang kami akan menjelaskan metode pembayaran Bitcoin melalui pengenalan UTXO dan model pembayaran.

UTXO

Di blockchain Bitcoin, semua saldo disimpan dalam daftar yang disebut "Output Transaksi yang Belum Dibelanjakan" (UTXO). Setiap UTXO berisi sejumlah Bitcoin, informasi pemilik, dan status ketersediaan, mirip dengan cek dengan nama pemegangnya. Cek ini dapat ditandatangani dan ditransfer ke orang lain.

Saldo suatu alamat sama dengan jumlah semua UTXO-nya. Saldo saat ini dari setiap alamat dapat diperoleh dengan menelusuri daftar UTXO, dan jumlah UTXO ini mewakili total pasokan semua Bitcoin saat ini.

图片

Dalam struktur transaksi Bitcoin, setiap transaksi berisi masukan dan keluaran. Setiap masukan adalah referensi ke UTXO yang ada, dan setiap keluaran menentukan alamat dan jumlah penerima baru. Setelah transaksi dibuat, UTXO yang terkait dengan input dikunci sementara untuk mencegah penggunaan kembali, dan status UTXO terkait hanya akan berubah setelah berhasil dikemas dan dikonfirmasi oleh penambang.

Secara khusus, masukan UTXO dihapus, dan keluarannya menghasilkan UTXO baru dan menambahkannya ke daftar. Hal ini mirip dengan pembuatan cek baru setelah cek lama habis masa berlakunya, dengan kepemilikan cek baru dialihkan ke nama pemegang baru.

Perlu ditekankan bahwa setiap UTXO hanya dapat digunakan satu kali dalam suatu transaksi. Setelah digunakan, UTXO akan dihapus secara permanen, dan keluaran baru dibuat dan ditambahkan ke daftar UTXO. Daftar UTXO terus diperbarui seiring dengan pembuatan blok baru. Dengan menganalisis riwayat transaksi, status daftar UTXO pada suatu waktu tertentu dapat direkonstruksi.

Selain itu, jumlah total input suatu transaksi biasanya sedikit melebihi jumlah total output, dan selisih ini menjadi biaya transaksi dan berfungsi sebagai insentif bagi K pekerja. Biaya transaksi sebanding dengan kompleksitas transaksi, sehingga transaksi dengan input dan output lebih banyak umumnya memerlukan biaya jaringan yang lebih tinggi.

图片

Untuk memahami struktur transaksi Bitcoin lebih jelas, kita dapat mempelajari lebih lanjut melalui contoh berikut, di mana “vin” mewakili input transaksi dan “vout” mewakili output transaksi. Transaksi Bitcoin menggunakan pendekatan input dan output daripada model saldo akun tradisional.

图片

Kita dapat secara acak memilih catatan transaksi di blockchain.com untuk dianalisis. Gambar berikut menunjukkan ID Hashnya

Transaksi 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Ini berisi satu masukan dan dua keluaran.

图片

Dengan menggunakan perintah bitcoin-cli getrawtransaction dan decoderawtransaction, kita dapat memeriksa struktur dasar transaksi di atas:

图片

Dalam jaringan Bitcoin, keluaran setiap transaksi berisi dua informasi penting: alamat (hash kunci publik) dan jumlahnya (dalam Bitcoin).

Jika keluaran suatu transaksi belum digunakan dalam masukan transaksi lain, maka keluaran tersebut disebut keluaran transaksi yang tidak terpakai (UTXO). Siapapun yang memiliki kunci privat yang sesuai dengan kunci publik di UTXO berhak menggunakan (yaitu membelanjakan) UTXO ini.

Mari kita lihat informasi dalam "vin" pada kode di atas. Ini menunjukkan bahwa UTXO yang dikeluarkan oleh transaksi ini berasal dari keluaran ke-0 (suatu transaksi dapat memiliki banyak keluaran, indeks) dari transaksi lain (ID-nya adalah 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). dari 0).

Kita bisa mengetahui jumlah UTXO ini (misalnya 0,1 Bitcoin) dari riwayat transaksi. Oleh karena itu, dalam transaksi ini, pengguna ini menghabiskan 0,1 Bitcoin, dan nilai 0,1 tidak perlu ditulis secara eksplisit dalam transaksi, tetapi diperoleh dengan menanyakan informasi UTXO.

"Vout" dari transaksi ini berisi dua output, yang mewakili dua UTXO baru, sesuai dengan saldo dan pemilik baru. UTXO baru ini akan tetap ada hingga transaksi lain menggunakannya sebagai input.

图片

Model pembayaran

Untuk lebih memahami model pembayaran jaringan Bitcoin, kami menggunakan contoh untuk memperkenalkan proses pembayaran sejumlah n Bitcoin yang dibayarkan oleh A ke B. Gambar di bawah menunjukkan proses pengguna A mengirimkan 3 Bitcoin ke pengguna B.

图片

Untuk pengguna A, pertama-tama, perlu menentukan kumpulan semua UTXO yang dimilikinya, yaitu semua Bitcoin yang dapat dikontrol oleh pengguna A;

A memilih satu atau lebih UTXO dari kumpulan ini sebagai masukan transaksi. Jumlah jumlah masukan ini adalah m (2+0,8+0,5=3,3 BTC), yang lebih besar dari jumlah n (3 BTC) yang dibutuhkan. untuk dibayar;

Pengguna A menetapkan dua output untuk transaksi, satu output dibayarkan ke alamat B, jumlahnya n (3 BTC), dan output lainnya dibayarkan ke alamat perubahan A sendiri, jumlahnya adalah mn-fee (3,3-3- 0,001 =0,299BTC). Dompet pengguna biasanya terdiri dari beberapa alamat. Umumnya, setiap alamat hanya digunakan satu kali, dan perubahannya dikembalikan ke alamat baru secara default;

Setelah pekerja K mengemas dan mengonfirmasi transaksi di blockchain, penerima B akan dapat memperoleh informasi tentang transaksi tersebut.

图片

Karena ukuran setiap blok terbatas (biasanya sekitar 1 MB), pekerja K memprioritaskan transaksi dengan tingkat transaksi tinggi (fee_rate=fee/size) untuk mendapatkan pengembalian biaya tertinggi.

Kita dapat memeriksa tingkat transaksi penambangan K secara real time di kumpulan transaksi (mempool) yang belum dikonfirmasi. Jika kita ingin mendapatkan konfirmasi secepatnya pada saat proses transfer, kita dapat memilih Prioritas Tinggi atau menyesuaikan rate transaksi yang sesuai.

图片

2. Penomoran dan pelacakan kong

Total pasokan Bitcoin adalah 21 juta, dan setiap Bitcoin berisi 10^8 Satoshi (Sabtu). Jadi, di jaringan Bitcoin, kami memiliki total 21 juta * 10^8 satoshi.

Protokol Ordinals menggunakan cara unik untuk memberi nomor pada setiap Satoshi untuk memastikan keunikannya dan kemampuan untuk melacak akun miliknya secara akurat. Selain itu, klasifikasi kelangkaan satoshi akan disederhanakan.

nomor Satoshi

Menurut protokol Ordinals, satoshi diberi nomor sesuai dengan urutan penambangannya. Gambar di bawah menunjukkan representasi Satoshi ke-0 yang ditambang di blok ke-0.

图片

Ada banyak cara untuk mengekspresikan Satoshi:

Simbol bilangan bulat: Misalnya, 2099994106992659, yang mewakili nomor seri yang ditetapkan ke satoshi sesuai dengan urutan penambangan.

Notasi desimal: Misalnya, 3891094.16797, digit pertama menunjukkan ketinggian blok tempat Satoshi ditambang, dan digit kedua menunjukkan nomor Satoshi di blok tersebut.

Simbol derajat: Misalnya, 3°111094′214″16797‴, digit pertama adalah periode, diberi nomor mulai dari 0, digit kedua adalah indeks blok dari masa halving, dan digit ketiga adalah indeks blok selama tingkat kesulitan periode penyesuaian, digit terakhir adalah indeks sat di blok.

Simbol persen: Misalnya, 99.99971949060254% menunjukkan posisi Satoshi dalam pasokan Bitcoin, yang dinyatakan dalam persentase.

Nama: Misalnya Satoshi. Nama yang mengkodekan nomor urut menggunakan karakter a sampai z.

图片

Mari kita ambil contoh untuk menjelaskan cara memberi nomor pada Bitcoin yang baru ditambang. Mengamati blok ke-795952 dari blockchain Bitcoin, itu berisi transaksi bernama "Tx 3a1f...b177", yang mencatat imbalan pekerja K (transaksi coinbase). Transaksi ini mencakup Bitcoin yang baru ditambang, yang digunakan sebagai hadiah bagi pekerja K, serta biaya penanganan yang dibayarkan oleh pemrakarsa transaksi kepada pekerja K.

Dengan melihat bagian inputnya, kita dapat melihat ID UTXO yang terdiri dari rangkaian angka nol dan tinggi balok. Dan di bagian keluaran, kita dapat melihat alamat yang menerima hadiah dan biaya tersebut, serta jumlah totalnya.

图片

Jika kita memeriksa lebih lanjut bagian output ke pekerja K, kita dapat melihat distribusi alamat, jumlah, dan satoshi yang terkandung. Seperti disebutkan sebelumnya, ini termasuk imbalan penambangan K dan biaya penanganan.

Diantaranya, informasi nomor sats hijau 1941220000000000–1941220625000000 adalah satoshi baru yang dihasilkan dengan menambang hadiah K, dan 712 catatan satoshi yang tersisa sesuai dengan semua biaya penanganan di blok tersebut.

图片

Kami dapat memverifikasi nomor Sat 1941220000000000.

Nomor bloknya adalah 795952, dan notasi desimal (desimal) adalah 795952.0, yang berarti tinggi blok penambangan Satoshi ini adalah 795952, jumlah Satoshi dalam blok ini adalah 0, dan kelangkaan berikutnya ditandai sebagai tidak biasa, kami akan memperkenalkannya secara rinci di bagian berikut.

图片

Peredaran Cong

Model transaksi Bitcoin menggunakan model Unspent Transaction Output (UTXO), yang berarti setiap Bitcoin (BTC) dapat ditelusuri ke sumbernya. Mari kita ilustrasikan proses ini dengan sebuah contoh:

Asumsikan pengguna A menerima hadiah dengan menambang K, yang berisi Bitcoin dari Satoshi ke-100 hingga Satoshi ke-110. Semua Bitcoin ini disimpan dalam UTXO (Output Transaksi Tak Terpakai) yang sama.

Sekarang, ketika pengguna A ingin membayar 5 satoshi kepada pengguna B, dia memilih untuk menggunakan UTXO dengan ID abc123 sebagai input transaksi. Transaksi ini akan mengirimkan 5 satoshi ke pengguna B dan mengembalikan 5 satoshi sebagai perubahan ke pengguna A.

Kedua 5 satoshi ini akan menjadi satu kesatuan, tetapi akan disimpan di dua UTXO yang berbeda, seperti abc456 dan abc789.

Id UTXO di atas dan jumlah satoshi hanya ditampilkan sebagai contoh. Dalam situasi sebenarnya, jumlah minimum satoshi yang dikirim dibatasi hingga 546 dan id UTXO tidak dinyatakan dalam formulir ini.

图片

Pada transaksi di atas, jalur peredaran 10 satoshi pengguna A adalah:

Menambang K menghasilkan 10 satoshi, bernomor [100, 110). Artinya satoshi ke-100 hingga ke-109 disimpan di UTXO dengan id abc123, dan pemiliknya adalah pengguna A.

Saat A melakukan transfer, 10 satoshi tersebut dibagi menjadi dua bagian yang masing-masing berjumlah 5 satoshi. Prinsip "masuk pertama, keluar pertama" diterapkan di sini, yaitu urutan nomor Satoshi ditentukan berdasarkan indeksnya dalam keluaran transaksi.

Dengan asumsi urutan keluaran adalah pengguna A terlebih dahulu, kemudian pengguna B, maka nomor urut dari sisa 5 satoshi pengguna A adalah [100, 105), yang disimpan di UTXO dengan id abc456, dan 5 satoshi pengguna B adalah Urutannya nomornya adalah [105, 110) dan disimpan di UTXO dengan id abc789.

图片

Kelangkaan (Satoshi Langka)

Sebagai spin-off dari protokol Ordinals, kelangkaan satoshi dapat ditentukan berdasarkan urutan penambangannya. Hal ini akan menghasilkan beberapa satoshi khusus yang memiliki kelangkaan berbeda. Berikut adalah tingkat kelangkaan Satoshi yang berbeda:

umum Tingkat umum: satoshi apa pun kecuali satoshi pertama di blok tersebut (total pasokan adalah 2100 triliun)

tingkat Luar Biasa yang tidak biasa: satoshi pertama dari setiap blok (total pasokan adalah 6929999)

langka: Satoshi pertama dari setiap periode penyesuaian kesulitan (total persediaan adalah 3437)

epic: Satoshi pertama setelah setiap halving (total pasokan adalah 32)

legendaris: satoshi pertama setiap siklus (total persediaan 5)

mitis: Satoshi pertama di blok genesis (total pasokan adalah 1)

Konsep satoshi langka ini dapat menambah minat dan nilai lebih pada ekosistem Bitcoin. Satoshi dengan kelangkaan berbeda mungkin memiliki nilai berbeda di pasar, sehingga menarik kolektor dan investor.

图片

3. Metode prasasti

Salah satu perbedaan signifikan antara Ordinal dan NFT rantai non-Bitcoin lainnya adalah metadatanya tidak disimpan di lokasi tertentu.

Sebaliknya, metadata ini tertanam dalam data saksi (bidang saksi) transaksi, itulah sebabnya kami menyebutnya “prasasti” karena data tersebut “diukir” ke dalam bit-bit seperti prasasti pada bagian tertentu dari transaksi koin , data ini dilampirkan ke Satoshi tertentu.

Proses prasasti ini diterapkan melalui Segregated Witness (SegWit) dan Pay-to-Taproot (P2TR). Ini mencakup dua tahap: melakukan dan mengungkapkan segala bentuk konten (seperti teks, gambar, atau video) pada Satoshi yang ditunjuk.

Selanjutnya, kami akan merinci metode penyimpanan lain yang lebih langsung, OP_RETURN, dan menjelaskan mengapa metode ini tidak berfungsi dengan prasasti. Pada saat yang sama, kita akan mengeksplorasi konsep Segwit dan Pay-to-Taproot, serta perannya dalam Prasasti. Terakhir, kita akan mempelajari metode penulisan.

图片

OP_RETURE

Pada klien Bitcoin Core versi 0.9, kompromi akhirnya dicapai menggunakan operator RETURN. RETURN memungkinkan pengembang untuk menambahkan 80 byte data non-pembayaran ke output transaksi. Berbeda dengan pembayaran semu, RETURN menghasilkan keluaran yang dapat diverifikasi secara eksplisit namun tidak dapat dibelanjakan dan tidak perlu disimpan dalam koleksi UTXO (Output Transaksi Tak Terpakai).​

Output RETURN dicatat pada blockchain, yang akan memakan ruang disk dan menyebabkan ukuran blockchain meningkat, namun tidak akan mengambil koleksi UTXO dan oleh karena itu tidak akan menyebabkan koleksi UTXO membengkak, juga tidak akan meningkatkan biaya memori yang mahal dari simpul penuh.

Meskipun OP_RETURN adalah metode menyimpan informasi langsung di blockchain Bitcoin, metode ini juga menghadirkan beberapa tantangan. Pertama-tama, OP_RETURN hanya dapat menyimpan 80 byte data, yang jelas tidak cukup untuk situasi di mana lebih banyak data perlu disimpan.

Kedua, data OP_RETURN disimpan dalam output transaksi. Meskipun tidak menempati koleksi UTXO, data tersebut akan menempati ruang penyimpanan blockchain, menyebabkan ukuran blockchain meningkat.

Terakhir, penggunaan OP_RETURN meningkatkan biaya transaksi karena memerlukan pembayaran lebih untuk memposting transaksi ini.

图片

Saksi Terpisah

Dibandingkan dengan metode sebelumnya, SegWit memberikan solusi baru yang dapat menyelesaikan permasalahan di atas.

SegWit adalah peningkatan protokol utama untuk Bitcoin. Ini pertama kali diusulkan oleh pengembang inti Bitcoin Pieter Wuille pada tahun 2015 dan akhirnya secara resmi diadopsi dalam versi 0.16.0 pada tahun 2017.

Kata "Segregated" dalam Segregated Witness (SegWit) berarti pemisahan atau isolasi, sedangkan "Witness" melibatkan data tanda tangan yang terkait dengan transaksi. Oleh karena itu, konsep inti SegWit adalah memisahkan data tanda tangan transaksi tertentu (disebut juga data saksi) dari data transaksi sebenarnya.

Manfaat utama memisahkan data tanda tangan dari data transaksi adalah mengurangi ukuran data yang disimpan dalam blok Bitcoin. Hal ini menghasilkan lebih banyak kapasitas yang tersedia per blok untuk menampung lebih banyak transaksi, yang juga berarti jaringan mampu memproses lebih banyak transaksi dan pengguna membayar biaya transaksi lebih rendah.

Secara teknis, ini berarti memindahkan data tanda tangan skrip (scriptSig) yang awalnya terdapat dalam struktur blok dasar ke dalam struktur data baru. Node validasi dan pekerja K juga akan memverifikasi tanda tangan skrip dalam struktur data baru ini untuk memastikan validitas transaksi.

图片

Peningkatan SegWit juga memperkenalkan bidang data saksi baru untuk meningkatkan privasi dan efisiensi. Meskipun data saksi tidak dirancang khusus untuk menyimpan data transaksi teks biasa, hal ini sebenarnya memberi kita peluang untuk menyimpan hal-hal seperti metadata prasasti.

Kami menggunakan gambar berikut untuk memahami Segregated Witness dengan lebih jelas:

图片

Akar tunggang

P2TR adalah jenis keluaran transaksi Bitcoin yang diperkenalkan pada peningkatan Taproot tahun 2021, yang memungkinkan berbagai kondisi transaksi disimpan di blockchain dengan lebih pribadi.

Dalam arsitektur ini, P2TR memainkan peran penting dalam penulisan data Ordinal. Prasasti sebenarnya menyematkan data tertentu ke dalam transaksi Bitcoin, dan peningkatan Taproot, khususnya P2TR, menjadikan penyematan data ini lebih fleksibel dan ekonomis.

Pertama-tama, karena metode penyimpanan kode perintah Taproot, kita dapat menyimpan data prasasti di jalur perintah Taproot, dan kode perintah ini hampir tidak memiliki batasan konten. membuatnya relatif ekonomis untuk menyimpan data prasasti.

Namun, karena penggunaan instruksi Taproot hanya dapat berasal dari keluaran Taproot yang ada, penyimpanan prasasti mengadopsi proses komit/pengungkapan dua tahap. Pertama, dalam transaksi komit, keluaran Taproot dibuat yang menjanjikan berisi data prasasti.

图片

Kemudian, dalam transaksi pengungkapan, keluaran yang dibuat oleh transaksi komit dikonsumsi, sehingga mengungkapkan konten prasasti pada rantai.

Pendekatan ini secara signifikan mengurangi penggunaan sumber daya. Jika P2TR tidak digunakan, data saksi akan disimpan dalam keluaran transaksi. Selama keluaran ini tidak digunakan, data saksi akan selalu ada di set UTXO.

Sebaliknya, jika P2TR digunakan, data saksi tidak akan muncul dalam transaksi yang dihasilkan selama fase penerapan dan oleh karena itu tidak akan ditulis ke set UTXO. Hanya ketika UTXO ini digunakan, data saksi akan muncul di input transaksi selama fase pengungkapan.

P2TR memungkinkan data asli ditulis ke blockchain Bitcoin, namun tidak selalu menempati ruang yang terkonsentrasi di UTXO. Karena memelihara/memodifikasi kumpulan UTXO memerlukan lebih banyak sumber daya, metode ini dapat menghemat sumber daya secara signifikan.

图片

prasasti

Protokol Ordinals memperluas batas ukuran tulis pada jaringan Bitcoin dengan menggunakan SegWit untuk menyimpan konten teks biasa di saksi, memungkinkan penyimpanan metadata hingga 4MB.

Taproot menyederhanakan proses penyimpanan data saksi sewenang-wenang dalam transaksi Bitcoin, memungkinkan pengembang Ordinals Casey Rodarmor menggunakan kembali opcode lama (OP_FALSE, OP_IF, OP_PUSH) untuk membuat apa yang disebut "amplop" untuk menyimpan apa yang disebut " "Prasasti" informasi apa pun.

Proses pengecoran prasasti terdiri dari dua tahap sebagai berikut:

Pertama, dalam transaksi komit, Anda perlu membuat janji yang menunjuk ke keluaran Taproot yang berisi konten prasasti. Format penyimpanan ini adalah Taproot, output dari transaksi sebelumnya harus P2TR (Bayar-Ke-Taproot), dan konten format tertentu tertanam dalam skrip saksi Taproot.

Pertama, string "ordn" dimasukkan ke tumpukan untuk memperjelas tujuan prasasti. Kemudian, gunakan OP_PUSH 1 untuk menunjukkan bahwa dorongan berikutnya berisi tipe konten, dan OP_PUSH 0 untuk menunjukkan bahwa dorongan data berikutnya berisi konten itu sendiri.

Karena salah satu keterbatasan Taproot adalah satu data push tidak boleh melebihi 520 byte, beberapa data push diperlukan untuk menyimpan prasasti yang besar. Saat ini, data prasasti telah dikaitkan dengan keluaran transaksi yang belum terpakai (UTXO) dari keluaran transaksi, namun belum dipublikasikan.

图片

Kedua, dalam transaksi pengungkapan, output yang dihasilkan perlu dikonsumsi. Pada tahap ini, transaksi dimulai dengan mengambil input UTXO yang sesuai dengan prasasti. Saat ini, konten prasasti yang terkait dengan UTXO akan diekspos ke seluruh jaringan.

Melalui dua langkah di atas, konten prasasti telah dikaitkan dengan UTXO tertentu. Menurut metode penentuan posisi Satoshi (UTXO) yang diperkenalkan sebelumnya, prasasti tersebut diukir pada Satoshi pertama yang sesuai dengan input UTXO-nya, dan konten prasasti tersebut disertakan dalam input yang menunjukkan transaksi.

Berdasarkan peredaran dan pelacakan Satoshi (UTXO) yang disebutkan di atas, Satoshi yang berisi konten khusus ini dapat ditransfer, dibeli, dijual, hilang, dan dipulihkan. Perlu dicatat bahwa prasasti tersebut tidak dapat diulang, jika tidak, prasasti berikutnya akan menjadi tidak sah.

Untuk menjelaskan proses ini secara lebih rinci, mari kita lihat contoh yang menunjukkan cara menuliskan gambar kecil dari Bitcoin NFT. Proses ini mencakup dua fase penerapan dan pengungkapan yang disebutkan sebelumnya.

Pertama, kita dapat melihat bahwa ID hash dari transaksi pertama adalah 2ddf9...f585c. Perlu dicatat bahwa keluaran transaksi ini tidak memuat data saksi, dan tidak ada informasi prasasti yang relevan di halaman web.

图片

Selanjutnya kita cek record tahap kedua yang Hash ID-nya e7454…7c0e1. Di sini kita dapat melihat keterangan Prasasti Penahbisan yang merupakan isi prasasti kesaksian.

Alamat masukan dari transaksi ini adalah alamat keluaran dari transaksi sebelumnya, dan keluaran 0,00000546BTC (546 Satoshi) adalah untuk mentransfer NFT ini ke alamatnya sendiri. Pada saat yang sama, kita juga dapat menemukan satoshi di mana prasasti ini terletak pada Sat 1893640468329373.

图片图片

Di dompet Bitcoin, kita bisa melihat aset ini. Jika kita ingin memperdagangkan NFT ini, kita bisa langsung mentransfernya ke alamat orang lain yaitu mentransfer UTXO sehingga menyelesaikan transfer prasasti.

图片

4. Dompet Bitcoin

Setelah kita memahami apa itu ekologi Ordinals, peredaran satoshi, dan ilmu terkait prasasti, saat ini banyak sekali skenario penerapannya, baik itu munculnya BRC-20, ORC-20, BRC-721, GBRC-721 dan protokol turunan terkait lainnya, yang mengharuskan Kami memiliki dompet yang sesuai untuk mendukung dan menampilkan informasi token atau gambar kecil NFT.

Pada bagian ini kami akan memperkenalkan konsep dan karakteristik berbagai alamat dompet Bitcoin.

Alamat Bitcoin biasanya dimulai dengan 1, 3, atau bc1 dan, seperti alamat email, dapat dibagikan dengan pengguna Bitcoin lainnya untuk mentransfer Bitcoin langsung ke dompet Anda.

Dari sudut pandang keamanan, alamat Bitcoin tidak mengandung informasi sensitif dan oleh karena itu dapat dibagikan ke publik kapan saja tanpa membahayakan keamanan akun Anda. Tidak seperti alamat email, Anda dapat membuat alamat Bitcoin baru sesuai kebutuhan, dan semuanya menyetor dana langsung ke dompet Anda.

图片

Faktanya, banyak dompet modern secara otomatis membuat alamat baru untuk setiap transaksi guna memaksimalkan privasi. Dompet hanyalah kumpulan alamat dan kunci yang membuka kunci dana di dalamnya. Pertama kita perlu mengetahui bagaimana alamat dompet Bitcoin dihasilkan.

Kunci pribadi dan publik Bitcoin

Bitcoin menggunakan kurva elips Secp256k1. "Kunci pribadi" adalah angka acak antara 1 dan n-1. n adalah angka yang sangat besar (256 bit) dinyatakan dalam notasi ilmiah sebagai:

图片

Kisaran ini sangat luas dan membuat hampir tidak mungkin untuk memecahkan kunci pribadi orang lain. Kunci pribadi ini adalah bilangan bulat acak, biasanya diwakili oleh 256 bit biner, dan dapat dikodekan dalam berbagai cara. Kunci pribadi yang menggunakan WIF (Wallet Import Format) atau format terkompresi WIF tidak terenkripsi dan dapat didekodekan langsung menjadi bilangan bulat acak mentah.

Metode lainnya adalah BIP38 (Bitcoin Improvement Proposal 38), yang merekomendasikan penggunaan algoritma AES untuk mengenkripsi kunci pribadi. Kunci pribadi yang dihasilkan oleh skema ini dimulai dengan karakter 6P, dan kata sandi harus dimasukkan untuk mengimpornya ke berbagai dompet Bitcoin. Ini adalah cara yang biasa kita gunakan untuk melindungi kunci pribadi.

Selanjutnya, kita menggunakan rumus kurva elips K = kG, di mana k adalah kunci privat dan G adalah Titik Dasar, yang merupakan argumen dari kurva elips secp256k1.

Melalui rumus tersebut kita bisa mendapatkan dua koordinat K yang merupakan dua ekspresi kunci publik yaitu "Format tidak terkompresi" dan "Format terkompresi".

图片

Bentuk Uncompressednya adalah dengan menghubungkan langsung dua koordinat x dan y, lalu menambahkan awalan 0x04 di depannya;

Bentuk ringkasnya, bila y bilangan genap maka kodenya adalah 02 x, dan bila y bilangan ganjil maka kodenya adalah 03 x;

alamat bitcoin

Berbagai jenis alamat Bitcoin ditunjukkan pada gambar di bawah ini. Ada empat metode representasi:

图片

1. Format Warisan (P2PKH).

Contoh: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u

Alamatnya dimulai dengan "1", yang merupakan format alamat asli Bitcoin dan masih digunakan sampai sekarang. Diperoleh dengan perhitungan Hash dari kunci publik disebut juga P2PKH yang merupakan singkatan dari Pay To PubKey Hash (pembayaran ke hash kunci publik).

2. Format SegWit (P2SH) Bersarang

Contoh: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

Alamat dimulai dengan "3". P2SH adalah singkatan dari Pay To Script Hash, yang mendukung fungsi yang lebih kompleks daripada alamat Legacy. P2SH Bersarang, memperoleh alamat P2SH yang ada (dimulai dengan "3") dan merangkumnya bersama dengan alamat SegWit.

图片

3. Format SegWit (Bech32) asli

Contoh: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

BIP0173 memperkenalkan format alamat yang dimulai dengan "bc1", yang merupakan alamat yang digunakan untuk Segregated Witness (SegWit) asli. Format alamat ini menggunakan pengkodean Bech32 dan dirancang khusus untuk SegWit. Alamat dalam format Bech32 ditentukan di BIP173 pada akhir tahun 2017. Salah satu fitur utamanya adalah tidak peka huruf besar-kecil, sehingga lebih mudah menghindari kebingungan saat memasukkan, dan juga lebih mudah dibaca.

Dibandingkan dengan pengkodean Base58 tradisional, Bech32 menggunakan pengkodean Base32, sehingga lebih sedikit karakter yang diperlukan dalam alamat, penghitungan lebih efisien, dan dapat disimpan lebih ringkas dalam kode QR.

Selain itu, Bech32 menawarkan keamanan yang lebih baik dan deteksi kesalahan checksum yang lebih optimal, sehingga meminimalkan risiko alamat tidak valid.

Alamat Bech32 sendiri kompatibel dengan SegWit. Tidak diperlukan spasi tambahan untuk memasukkan alamat SegWit ke dalam alamat P2SH, sehingga dengan menggunakan alamat format Bech32, biaya penanganannya akan lebih rendah.

Secara keseluruhan, alamat Bech32 memiliki beberapa keunggulan dibandingkan alamat Base58 tradisional: kode QR yang dihasilkan lebih kecil, lebih anti kesalahan, lebih aman, peka huruf besar-kecil, dan hanya berisi huruf kecil, sehingga lebih mudah dibaca, diketik, dan lebih mudah. untuk mengerti.

图片

4. Format akar tunggang (P2TR)

Bech32 memiliki kelemahan: jika karakter terakhir dari alamat adalah p, maka memasukkan atau menghapus sejumlah karakter q segera sebelum p tidak akan membatalkan checksumnya.

Untuk mengatasi kekurangan Bech32 di atas, alamat Bech32m diusulkan di BIP0350:

  • Untuk alamat Segwit asli dengan versi 0, gunakan Bech32 sebelumnya;

  • Untuk alamat Segwit asli versi 1 (atau lebih tinggi), Bech32m baru digunakan.

Untuk alamat Bech32m, jika nomor versinya adalah 1, alamat tersebut selalu dimulai dengan "bc1p", yang berarti alamat tersebut adalah alamat Taproot. Mirip dengan Segwit asli, alamat-alamat ini dapat dihasilkan dari frase awal dan frase sandi yang digunakan untuk menghasilkan kunci publik dan pribadi dari suite yang diperluas, memungkinkan penurunan alamat untuk berbagai jalur dalam dompet deterministik hierarkis.

图片

Ini terutama digunakan untuk menyimpan aset digital seperti token BRC-20 serta NFT Bitcoin.