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 rekening 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, serta informasi tentang pemilik Bitcoin tersebut, dan menunjukkan apakah Bitcoin tersebut tersedia. Anggap saja seperti cek tunai dengan nama pemegangnya, dan selama pemegangnya menandatanganinya, hak pakai dapat dialihkan kepada orang lain. Untuk alamat tertentu, jumlah seluruh jumlah UTXO adalah saldo dompet alamat tersebut. Dengan mengulang semua UTXO, kita bisa mendapatkan saldo saat ini dari setiap alamat. Tambahkan jumlah total semua UTXO untuk mendapatkan semua Bitcoin yang beredar saat ini.
Dalam struktur transaksi Bitcoin, setiap transaksi mencakup beberapa masukan dan keluaran, di mana setiap masukan merupakan referensi ke UTXO yang ada, dan setiap keluaran menentukan alamat penerima dana baru dan jumlah yang sesuai. Setelah transaksi dimulai, UTXO yang direferensikan oleh bagian inputnya dikunci sementara untuk mencegah penggunaan kembali hingga transaksi selesai. Hanya ketika transaksi berhasil dikemas ke dalam blok oleh penambang dan dikonfirmasi oleh jaringan, status UTXO terkait akan berubah. Secara khusus, UTXO yang digunakan sebagai input transaksi dihapus dari daftar UTXO, yang menunjukkan bahwa UTXO tersebut telah digunakan, sedangkan output transaksi menghasilkan UTXO baru dan ditambahkan ke daftar UTXO. Dapat dipahami bahwa setelah cek tunai yang lama digunakan menjadi tidak sah dan timbullah cek tunai baru yang kepemilikannya menjadi milik pemegang baru.
Perlu ditekankan bahwa setiap UTXO hanya dapat digunakan satu kali dalam suatu transaksi. Setelah digunakan sebagai masukan, itu akan dihapus secara permanen dari daftar UTXO. Pada saat yang sama, keluaran yang baru dihasilkan ditambahkan ke daftar sebagai UTXO baru. Daftar UTXO terus berubah, dan seiring dengan dibuatnya setiap blok baru, daftar tersebut juga diperbarui. Dan, dengan menganalisis riwayat transaksi di blockchain, kami dapat merekonstruksi status daftar UTXO pada titik waktu tertentu.
Selain itu, jumlah total masukan suatu transaksi biasanya sedikit melebihi jumlah total keluarannya. Perbedaan ini, yang disebut biaya transaksi atau biaya jaringan, diberikan sebagai insentif kepada penambang yang bertanggung jawab mengemas transaksi ke dalam blok. Besar kecilnya biaya jaringan berbanding lurus dengan kompleksitas transaksi, sehingga transaksi dengan input dan output yang lebih banyak umumnya akan memerlukan biaya jaringan yang lebih tinggi.
Sekarang, untuk memahami struktur transaksi Bitcoin dengan lebih jelas, kami akan melakukan analisis mendalam melalui contoh spesifik. Struktur transaksi Bitcoin adalah sebagai berikut, dimana kedua variabel vin dan vout masing-masing mewakili "input" dan "output" dari transaksi Bitcoin. Transaksi Bitcoin tidak mencatat perubahan data berbentuk akun seperti model saldo akun tradisional, namun diwakili oleh input dan output.
const std::vector<CTxIn> vin;const std::vector<CTxOut> vout;const int32_t nVersion;const uint32_t nLockTime;
Kita dapat secara acak memilih catatan transaksi di blockchain.com untuk dianalisis. Gambar di bawah menunjukkan transaksi dengan Hash ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Ini berisi satu masukan dan dua keluaran.
Dengan menggunakan perintah bitcoin-cli getrawtransaction dan decoderawtransaction, kita dapat melihat struktur dasar transaksi di atas:
{"versi": 1,"locktime": 0,"vin": [{"txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18","vout": 0,"scriptSig" : "3045022100884d142d86652a 3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813[SEMUA] 0484ecc0d46f1918b 30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf","urutan": 4294967295 }],"vout": [{"value": 0,01500000,"scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"},{"value": 0,08450000,"scriptPubKey ": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",}]}
Dalam jaringan Bitcoin, keluaran transaksi berisi dua informasi penting: alamat (hash kunci publik) dan jumlahnya (dalam Bitcoin). Jika keluaran suatu transaksi tidak digunakan dalam masukan transaksi lain, maka keluaran transaksi 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 "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, dan indeksnya dari angka awal 0), kita dapat menemukan jumlah UTXO ini dari transaksi historis (misalnya 0,1), jadi dalam transaksi ini, pengguna menghabiskan 0,1 BTC, dan nilai 0,1 tidak perlu ditulis secara eksplisit dalam transaksi, tetapi melalui pencarian informasi UTXO diperoleh. "Vout" dari transaksi ini memiliki dua output. Kedua output ini adalah dua UTXO baru, sesuai dengan saldo dan pemegang baru, hingga transaksi lain menggunakannya sebagai input.
Model pembayaran
Untuk lebih memahami model pembayaran jaringan Bitcoin, kami menggunakan contoh untuk memperkenalkan proses pembayaran di mana A membayar B sejumlah n Bitcoin. 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 yang harus dibayarkan n (3 BTC). );
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 m-n-fee (3,3-3-0,001 = 0,299BTC). Dompet pengguna biasanya terdiri dari beberapa alamat. Umumnya, setiap alamat hanya digunakan satu kali, dan perubahan dikembalikan ke alamat baru secara default;
Setelah penambang mengemas transaksi dan mengunggahnya ke rantai untuk konfirmasi, B dapat menerima informasi transaksi. Karena ukuran blok memiliki batas atas (kira-kira 1 MB), penambang akan memprioritaskan transaksi dengan tingkat transaksi tinggi (fee_rate=fee/size) untuk mendapatkan pengembalian biaya tertinggi. Kita dapat melihat situasi biaya transaksi penambangan secara real-time di mempool. Jika kita menginginkan konfirmasi tercepat saat proses transfer, kita dapat memilih Prioritas Tinggi atau menyesuaikan rate transaksi yang sesuai;
2. Penomoran dan pelacakan kong
Jumlah total Bitcoin adalah 21 juta, dan setiap Bitcoin berisi 10^8 Satoshi (Satoshi, Sat). Oleh karena itu, ada total 21 juta*10^8 satoshi di jaringan Bitcoin. Protokol Ordinal membedakan satoshi ini dan memberi setiap satoshi nomor unik. Bagian ini akan memperkenalkan bagaimana protokol ini secara unik memberi nomor pada setiap Satoshi dan bagaimana protokol ini melacak akun miliknya. Selain itu, klasifikasi kelangkaan Satoshi juga akan diperkenalkan.
nomor Satoshi
Menurut protokol Ordinals, satoshi diberi nomor berdasarkan 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, angka pertama menunjukkan ketinggian blok tempat satoshi ditambang, dan angka kedua menunjukkan jumlah satoshi di blok tersebut.
Simbol derajat: Misalnya, 3°111094′214″16797‴, angka pertama adalah periode, diberi nomor mulai dari 0, angka kedua adalah indeks blok dari masa halving, dan angka ketiga adalah indeks blok selama tingkat kesulitan periode penyesuaian, angka 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.
Kami akan menggunakan contoh untuk menjelaskan cara memberi nomor pada Bitcoin yang baru ditambang. Melihat blok 795952 dari blockchain Bitcoin, kita dapat melihat bahwa transaksi pertama Tx 3a1f...b177 mencatat hadiah penambang (transaksi coinbase). Transaksi ini mencakup Bitcoin yang baru ditambang, yang digunakan sebagai hadiah pengemasan bagi para penambang, serta biaya penanganan yang dibayarkan kepada penambang oleh pemrakarsa transaksi. Dengan melihat input pada gambar di bawah, kita dapat mengetahui bahwa id UTXO-nya terdiri dari string 0 dan tinggi blok. Alamat keluarannya adalah alamat dompet penambang, dan jumlahnya adalah jumlah imbalan dan biaya penanganan di atas.
Jika kita melihat lebih jauh output ke penambang, kita dapat melihat distribusi alamat, jumlah, dan satoshi yang terkandung. Seperti disebutkan sebelumnya, ini termasuk imbalan dan biaya penambangan. Diantaranya, informasi nomor sats hijau 1941220000000000–1941220625000000 adalah satoshi baru yang dihasilkan oleh hadiah penambangan, 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 tanda kelangkaan (kelangkaan) berikutnya tidak umum. Kami Ini akan dijelaskan secara rinci di bagian selanjutnya.
Peredaran Cong
Karena setiap BTC dihasilkan melalui imbalan penambangan, semuanya dapat dilacak. Akun Bitcoin menggunakan model UTXO. Asumsikan pengguna A memperoleh satoshi ke-100-110 melalui penambangan (10 satoshi disimpan secara keseluruhan di UTXO yang sama dengan ID adc123). Ketika pengguna A ingin membayar 5 satoshi kepada pengguna B, ia memilih untuk menggunakan ID abc123 sebagai input transaksi, dimana 5 satoshi diberikan kepada pengguna B, dan 5 satoshi dikembalikan ke pengguna A sebagai uang kembalian. Kedua salinan 5 satoshi ini adalah satu kesatuan dan disimpan dalam dua UTXO dengan ID abc456 dan abc789 masing-masing. 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:
Penambangan 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 mentransfer uang, 10 satoshi dibagi menjadi dua bagian, masing-masing 5 satoshi. Prinsip "masuk pertama, keluar pertama" digunakan di sini, yaitu urutan jumlah satoshi ditentukan berdasarkan indeksnya dalam keluaran transaksi. Asumsikan urutan outputnya adalah pengguna A terlebih dahulu, kemudian pengguna B, maka nomor seri 5 satoshi pengguna A yang tersisa adalah [100, 105), disimpan di UTXO dengan ID abc456, dan nomor seri 5 satoshi pengguna B adalah [105 , 110), disimpan di UTXO dengan id abc789.
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: Satoshi apa pun kecuali satoshi pertama di blok tersebut (total pasokan adalah 2.100 triliun)
tidak biasa: satoshi pertama di setiap blok (total pasokan 6.929.999)
langka: satoshi pertama setiap periode penyesuaian kesulitan (total persediaan 3437)
epic: satoshi pertama setelah setiap halving (total persediaan 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
Ordinal sangat berbeda dari NFT pada rantai non-Bitcoin lainnya. Perbedaan utamanya adalah metadata Ordinal tidak disimpan di lokasi tertentu. Sebaliknya, metadata ini tertanam ke dalam data saksi transaksi (data saksi, bidang saksi), itulah sebabnya kami menyebutnya “prasasti” karena data ini “diukir” ke dalam Bitcoin seperti sebuah prasasti. datanya dilampirkan ke Satoshi tertentu. Proses prasasti ini dilaksanakan melalui Segregated Witness (SegWit) dan Pay-to-Taproot (P2TR), yang meliputi dua tahap: commit dan discover, yang dapat dicantumkan dalam bentuk konten apa pun (seperti teks, gambar atau video) pada tempat yang ditunjuk. Satoshi. Kami akan memperkenalkan metode penyimpanan lain yang lebih langsung OP_RETURN di bawah ini dan menjelaskan mengapa metode ini tidak digunakan sebagai sarana penulisan. Pada saat yang sama, kami akan memperkenalkan apa itu Segregated Witness dan Pay-to-Taproot, dan apa perannya dalam Prasasti. Terakhir kami akan memperkenalkan metode prasasti.
OP_RETURE
Pada klien Bitcoin Core versi 0.9, kompromi akhirnya dicapai melalui adopsi operator RETURN. **RETURN memungkinkan pengembang untuk menambahkan 80 byte data non-pembayaran ke output transaksi. **Tidak seperti pembayaran semu, RETURN membuat keluaran yang dapat diverifikasi secara eksplisit dan tidak dapat dikonsumsi yang tidak perlu disimpan dalam kumpulan UTXO. Output RETURN dicatat di blockchain, menghabiskan ruang disk dan meningkatkan ukuran blockchain. Namun, output tersebut tidak disimpan dalam set UTXO, sehingga tidak akan memperluas kumpulan memori UTXO dan tidak akan menambah jumlah node penuh. Biaya memori yang mahal.
Meskipun OP_RETURN adalah cara yang sangat mudah untuk menyimpan informasi ke dalam blockchain Bitcoin, ini juga merupakan metode penulisan yang potensial. Namun keterbatasan OP_RETURN membuatnya menghadapi beberapa tantangan saat menangani penyimpanan metadata. Pertama-tama, OP_RETURN hanya dapat menyimpan 80 byte data. Untuk situasi di mana jumlah data yang lebih besar perlu disimpan, batasan ini jelas tidak memuaskan. Kedua, data OP_RETURN disimpan di bagian keluaran transaksi. Meskipun data ini tidak disimpan dalam kumpulan UTXO, data tersebut menempati ruang penyimpanan blockchain, yang menyebabkan peningkatan ukuran blockchain. Terakhir, penggunaan OP_RETURN menghasilkan biaya transaksi yang lebih tinggi karena memerlukan pembayaran lebih banyak untuk memposting transaksi ini.
Saksi Terpisah
Sebaliknya, metode baru yang disediakan SegWit dapat mengatasi permasalahan di atas. SegWit adalah peningkatan protokol penting untuk Bitcoin. Ini diusulkan oleh pengembang inti Bitcoin Pieter Wuille pada tahun 2015 dan akhirnya secara resmi diadopsi dalam versi 0.16.0 pada tahun 2017. Segregated dalam Segregated Witness artinya pemisahan dan isolasi. Saksi merupakan suatu tanda tangan yang berkaitan dengan suatu transaksi. Oleh karena itu, SegWit memisahkan data tanda tangan transaksi tertentu (data saksi) dari transaksi tersebut.
Manfaat utama memisahkan tanda tangan dari data terkait transaksi adalah mengurangi ukuran data yang disimpan dalam blok Bitcoin. Ini memiliki kapasitas ekstra per blok untuk menyimpan lebih banyak transaksi, yang juga berarti jaringan dapat menangani lebih banyak transaksi dan pengirim membayar biaya lebih rendah. Secara teknis, ini berarti mengeluarkan informasi tanda tangan skrip (scriptSig) dari struktur dasar (blok dasar) dan menempatkannya dalam struktur data baru. Node dan penambang yang melakukan pekerjaan verifikasi juga akan memverifikasi tanda tangan skrip dalam struktur data baru ini untuk memastikan bahwa transaksi tersebut valid. Peningkatan Segwit memperkenalkan bidang saksi baru dalam keluaran transaksi untuk memastikan privasi dan kinerja. Meskipun data saksi tidak dirancang untuk penyimpanan data, data 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 pemutakhiran Taproot pada tahun 2021, yang memungkinkan berbagai kondisi transaksi disimpan di blockchain dengan lebih pribadi. Dalam prasasti Ordinal tersebut, P2TR memegang peranan yang vital. Prasasti pada dasarnya menyematkan konten data tertentu ke dalam transaksi Bitcoin, dan peningkatan Taproot, khususnya P2TR, menjadikan penyematan data ini lebih fleksibel dan ekonomis.
Pertama, karena cara skrip Taproot disimpan, kami dapat menyimpan konten prasasti dalam skrip pengeluaran jalur skrip Taproot, yang hampir tidak memiliki batasan pada konten, sekaligus menerima diskon pada data saksi, menjadikan penyimpanan konten prasasti relatif ekonomis. Karena konsumsi skrip Taproot hanya dapat dilakukan dari keluaran Taproot yang sudah ada, Prasasti menggunakan proses komit/pengungkapan dua tahap. Pertama, dalam transaksi komit, keluaran Taproot dibuat yang menjanjikan skrip yang berisi konten prasasti. Kemudian, dalam transaksi pengungkapan, keluaran yang dibuat oleh transaksi komit dikonsumsi, sehingga mengungkapkan konten prasasti pada rantai.
Pendekatan ini sangat mengurangi konsumsi sumber daya. Jika P2TR tidak digunakan maka informasi saksi akan disimpan pada output transaksi. Dengan cara ini, selama output ini tidak digunakan, informasi saksi akan selalu disimpan di set UTXO. Sebaliknya, jika P2TR digunakan, informasi saksi tidak akan muncul dalam transaksi yang dihasilkan selama fase penerapan, sehingga tidak akan ditulis ke set UTXO. Hanya ketika UTXO ini digunakan, informasi saksi akan muncul di input transaksi selama fase pengungkapan. P2TR memungkinkan metadata ditulis ke blockchain Bitcoin, namun tidak pernah muncul di set UTXO. Karena memelihara/memodifikasi kumpulan UTXO memerlukan lebih banyak sumber daya, pendekatan ini dapat menghemat banyak sumber daya.
prasasti
Protokol Ordinals memanfaatkan SegWit untuk melonggarkan batas ukuran konten yang ditulis ke jaringan Bitcoin, menyimpan konten prasasti dalam data saksi. Mengizinkannya menyimpan metadata hingga 4MB. Taproot memudahkan untuk menyimpan data saksi sewenang-wenang dalam transaksi Bitcoin, memungkinkan pengembang Ordinals Casey Rodarmor untuk menggunakan kembali opcode lama (OP_FALSE, OP_IF, OP_PUSH) menjadi apa yang dia gambarkan sebagai "amplop" untuk apa yang dia sebut sebagai penyimpanan "prasasti" Data sewenang-wenang.
Proses pengecoran prasasti terdiri dari dua tahap sebagai berikut:
Pertama, Anda perlu membuat transaksi komit ke keluaran Taproot dari skrip yang berisi konten prasasti. Format penyimpanannya adalah Taproot, yaitu output dari transaksi sebelumnya adalah P2TR (Pay-To-Taproot), dan input dari transaksi berikutnya disematkan dalam format tertentu dalam skrip Taproot yang disaksikan terlebih dahulu, string ordnya adalah didorong ke tumpukan, untuk menghilangkan ambiguitas bahwa prasasti itu memiliki kegunaan lain. OP_PUSH 1 menunjukkan bahwa dorongan berikutnya berisi tipe konten, dan OP_PUSH 0 menunjukkan bahwa dorongan data berikutnya berisi konten itu sendiri. Prasasti besar harus menggunakan beberapa dorongan data karena salah satu dari sedikit keterbatasan akar tunggang adalah bahwa satu dorongan data tidak boleh lebih besar dari 520 byte. Saat ini, data prasasti telah dipetakan ke UTXO keluaran transaksi, namun belum dipublikasikan.
Kedua, output yang dihasilkan oleh transaksi komit perlu digunakan dalam transaksi pengungkapan. Pada tahap ini, transaksi dimulai dengan menggunakan UTXO yang sesuai dengan prasasti tersebut sebagai input. Saat ini, konten prasasti terkait dipublikasikan ke seluruh Internet.
Melalui dua langkah di atas, isi prasasti telah terikat pada UTXO yang tertulis. Menurut posisi Satoshi yang diperkenalkan di atas, prasasti dilakukan pada Satoshi pertama yang sesuai dengan input UTXO, dan konten prasasti disertakan dalam input transaksi yang ditampilkan. Menurut pengenalan peredaran dan pelacakan satoshi yang diperkenalkan di atas, satoshi yang diukir dengan konten khusus ini dapat ditransfer, dibeli, dijual, hilang, dan dipulihkan. Perlu dicatat bahwa prasasti yang diulang tidak diperbolehkan, jika tidak, prasasti berikutnya akan menjadi tidak valid.
Kami akan menjelaskan proses ini secara rinci melalui contoh pengukiran gambar BTC NFT kecil. Proses ini terutama mencakup dua tahap penerapan dan pengungkapan yang disebutkan sebelumnya. Pertama, kita melihat bahwa ID hash dari transaksi pertama adalah 2ddf9...f585c. Perlu diketahui 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 dari Prasasti Kesaksian. Alamat masukan dari transaksi ini adalah alamat keluaran dari transaksi sebelumnya, dan keluaran 0,00000546BTC (546 Satoshi) adalah untuk mengirimkan NFT ini ke alamat Anda 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 mengirimkannya langsung ke alamat orang lain yaitu mengirimkan UTXO ini, sehingga menyelesaikan transfer prasasti tersebut.
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 dimulai dengan 1, 3 atau bc1. Sama seperti alamat email, alamat tersebut dapat dibagikan dengan pengguna Bitcoin lain yang dapat menggunakannya untuk mengirim Bitcoin langsung ke dompet mereka sendiri. Dari sudut pandang keamanan, alamat Bitcoin tidak mengandung sesuatu yang sensitif. Itu dapat diposting di mana saja tanpa mengorbankan keamanan akun Anda. Berbeda dengan alamat email, alamat baru dapat dibuat kapan saja sesuai kebutuhan, yang semuanya akan menyetorkan 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 besar (256 bit n dinyatakan dalam notasi ilmiah sebagai berikut:
Kisaran ini sangat besar, dan hampir tidak mungkin bagi kita untuk menebak kunci privat orang lain. Kunci pribadi bilangan bulat acak ini dapat diwakili oleh 256 bit, dan terdapat beberapa metode pengkodean. Jika kunci pribadi dalam bentuk WIF atau terkompresi WIF tidak dienkripsi, "bilangan bulat acak" asli dapat diperoleh dengan mendekodekannya. Cara lainnya adalah BIP38, yang mengusulkan penggunaan algoritma AES untuk mengenkripsi kunci privat. Kunci privat yang diperoleh dengan metode ini dimulai dengan karakter 6P. Kunci privat semacam ini harus memasukkan kata sandi sebelum dapat diimpor ke berbagai dompet Bitcoin. Inilah yang biasa kami lakukan.
Kemudian kita akan menggunakan rumus kurva elips K = kG untuk menghasilkan kunci publik Bitcoin K dari kunci pribadi k adalah Titik Dasar, yang merupakan parameter secp256k1. Dapat diperoleh dua koordinat K yang merupakan dua ekspresi kunci publik yaitu “Format tidak terkompresi” dan “Format terkompresi”.
Bentuk Terkompresinya adalah menghubungkan langsung dua koordinat x dan y, lalu menambahkan awalan 0x04 di depannya;
Bentuk terkompresi artinya bila y bilangan genap maka pengkodeannya adalah 02 x, dan bila y bilangan ganjil maka pengkodeannya adalah 03 x;
alamat bitcoin
Berbagai jenis alamat Bitcoin ditunjukkan pada gambar di bawah ini. Ada empat metode representasi:
Referensi: https://en.bitcoin.it/wiki/Invoice_address
1. Format Warisan (P2PKH).
Contoh: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Alamat yang dimulai dengan "1" adalah format alamat asli Bitcoin dan masih digunakan sampai sekarang. Itu dihitung dari kunci publik melalui Hash, juga dikenal sebagai P2PKH, yang merupakan singkatan dari Pay To PubKey Hash (pembayaran ke hash kunci publik).
2. Format SegWit (P2SH) Bersarang
Contoh: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Alamatnya dimulai dengan "3" dan P2SH adalah singkatan dari Pay To Script Hash, yang mendukung fungsi yang lebih kompleks daripada alamat Legacy. P2SH Bersarang, mengambil alamat P2SH yang ada (dimulai dengan "3") dan merangkumnya dengan alamat SegWit.
3. Format SegWit (Bech32) asli
Contoh: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Alamat yang dimulai dengan bc1 diusulkan di BIP0173, yang merupakan alamat asli SegWit. Alamat berkode Bech32 adalah format alamat yang khusus dikembangkan untuk SegWit. Bech32 didefinisikan di BIP173 pada akhir tahun 2017. Salah satu fitur utama format ini adalah tidak peka huruf besar-kecil (alamat hanya berisi 0-9, az), sehingga secara efektif dapat menghindari kebingungan saat memasukkan dan lebih mudah dibaca . Karena lebih sedikit karakter yang diperlukan dalam alamat, alamat tersebut menggunakan pengkodean Base32 daripada Base58 tradisional, membuat perhitungan lebih mudah dan efisien. Data dapat disimpan lebih rapat dalam kode QR. Bech32 memberikan keamanan yang lebih baik, kode deteksi kesalahan checksum yang lebih optimal, dan meminimalkan kemungkinan 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. Alamat Bech32 memiliki beberapa keunggulan dibandingkan Base58 yang lebih lama (pengkodean Base58Check digunakan untuk mengkodekan array byte dalam Bitcoin menjadi string yang dapat dikodekan manusia): Kode QR lebih kecil, lebih tahan kesalahan, lebih aman; , sehingga lebih mudah dibaca, diketik dan dipahami.
4. Format akar tunggang (P2TR)
Bech32 memiliki kelemahan: jika karakter terakhir dari suatu 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 versi 0, gunakan Bech32 sebelumnya;
Untuk alamat SegWit asli versi 1 (atau lebih tinggi), Bech32m baru digunakan.
Untuk alamat Bech32m, jika versinya 1, selalu dimulai dengan bc1p (yaitu alamat Taproot). Secara khusus, seperti SegWit asli, dompet dapat terdiri dari frase awal dan frase sandi. Ini digunakan untuk menghasilkan kunci publik dan privat yang diperluas yang digunakan untuk mendapatkan alamat untuk jalur arbitrer dalam dompet deterministik hierarkis. Ini terutama menyimpan BRC-20 dan BTC NFT, dll.


