Pustaka JS minimal untuk tata cara dan prasasti di atas scure-btc-signer.
Gunakan sebagai perpustakaan dalam kode JS Anda, atau jalankan alat CLI yang disertakan. Prasasti memungkinkan pengunggahan file acak di blockchain BTC.
Eksperimental: dapat menyebabkan hilangnya dana sampai diuji secara menyeluruh.
npm instal mikro-ordinal
Membuat prasasti
API Skrip Ketik
CLI
// npm install micro-ordinals @scure/btc-signer @scure/baseimport * sebagai btc dari '@scure/btc-signer';import * sebagai ordinal dari 'micro-ordinals';import { hex, utf8 } dari '@ scure/base';const TESTNET = btc.utils.TEST_NETWORK;const privKey = hex.decode('0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a');const pubKey = btc.utils.pubSchnorr(privKey);const customScripts = [ordinals.OutOrdinalReveal]; // Aktifkan skrip khusus di luar // Ini tertulis pada satoshi pertama dari input pertama (default) prasasti const = { tag: {contentType: 'application/json', // dapat dalam format apa saja (tipe MIME)// ContentEncoding: 'br', // kompresi: hanya didukung brotli }, isi: utf8.decode(JSON.stringify({ some: 1, test: 2, prasasti: true, in: 'json' })), // Seseorang dapat menggunakan skrip js yang ditulis sebelumnya dalam html // utf8.decode(`<html><head></head><body><script src="/content/script_inscription_id"></script>test</html>`)};const mengungkapkanPembayaran = btc.p2tr ( tidak terdefinisi, // internalPubKey ordinals.p2tr_ord_reveal(pubKey, [prasasti]), // TaprootScriptTree TESTNET, // mainnet atau testnet false, //allowUnknownOutputs, fitur keamanan customScripts // cara menangani skrip khusus);// Kita perlu mengirim sejumlah bitcoin ke alamat ini sebelum mengungkapkan.// Selain itu, jumlahnya harus cukup untuk menutupi pengungkapan tx fee.console.log('Alamat', pengungkapanPembayaran.alamat) ; // 'tb1p5mykwcq5ly7y2ctph9r2wfgldq94eccm2t83dd58k785p0zqzwkspyjkp5'// Berhati-hatilah: ada kemungkinan Anda secara tidak sengaja mengirimkan prasasti sebagai biaya.// Selain itu, kelangkaan hanya tersedia dengan dompet ordinal.// Namun Anda dapat mengurai prasasti lain dan membuat prasasti umum menggunakan ini. const perubahanAddr = mengungkapkanPembayaran.alamat; // bisa berbedaconst mengungkapkanJumlah = 2000n;biaya const = 500n;const tx = btc.Transaction({ customScripts });tx.addInput({ ... mengungkapkan Pembayaran, // Ini adalah txid dari tx dengan bitcoin yang kami kirim (ganti) txid: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858', indeks: 0, saksiUtxo: { skrip: mengungkapkanPembayaran.skrip, jumlah: mengungkapkanJumlah },});tx.addOutputAddress(changeAddr, mengungkapkanAmount - biaya, TESTNET);tx.sign(privKey, tidak ditentukan, Uint8Array baru(32));tx.finalize() ;const txHex = hex.encode(tx.extract());console.log(txHex); // Hex dari pengungkapan tx ke Broadcastconst tx2 = btc.Transaction.fromRaw(hex.decode(txHex)); // Mengurai prasasticonsole.log('parsed', ordinals.parseWitness(tx2.inputs[0].finalScriptWitness));console.log('vsize', tx2.vsize); // Reveal tx harus membayar setidaknya biaya sebesar ini
import { Coder } dari '@scure/base';import * sebagai P dari 'micro-packed';import { ScriptType, OptScript, CustomScript } dari '@scure/btc-signer';type Bytes = Uint8Array;ekspor mendeklarasikan const InscriptionId : P.Coder<string, Bytes>;ketik TagRaw = {tag: Bytes;data: Bytes;};deklarasikan const TagCoders: {pointer: P.CoderType<bigint>;contentType: P.CoderType<string>;parent: P.Coder<string, Uint8Array>;metadata: P.CoderType<any>;metaprotocol: P.CoderType<string>; contentEncoding: P.CoderType<string>;delegasi: P.Coder<string, Uint8Array>;rune: P.CoderType<bigint>;catatan: P.CoderType<string>;};tipe ekspor Tag = Partial<{[K dalam keyof typeof TagCoders]: P.UnwrapCoder<(typeof TagCoders)[K]>;}> & { tidak diketahui?: [Byte, Byte][];};jenis ekspor Prasasti = { tag: Tag; isi: Byte; dikutuk?: boolean; };ketik OutOrdinalRevealType = { ketik: 'tr_ord_reveal'; kunci pub: Byte; prasasti: Prasasti[]; };ekspor mendeklarasikan const OutOrdinalReveal: Coder<OptScript, OutOrdinalRevealType | undefinisi> & CustomScript;ekspor mendeklarasikan fungsi parseInscriptions(script: ScriptType, strict?: boolean): Prasasti[] | tidak terdefinisi;/** * Mengurai prasasti dari pengungkapan tx masukan saksi (tx.inputs[0].finalScriptWitness) */ekspor mendeklarasikan fungsi parseWitness(saksi: Bytes[]): Prasasti[] | tidak terdefinisi;/** * Buat transaksi pengungkapan. Prasasti dibuat pada pengeluaran pengeluaran dari alamat ini dengan * mengungkapkan skrip akar tunggang. */ekspor mendeklarasikan fungsi p2tr_ord_reveal(pubkey: Bytes, prasasti: Prasasti[]): {type: string;script: Uint8Array;};
npm install -g mikro-ordinal ord file.jpg
Penggunaan: ord [--net mainnet|testnet] [--priv key] [--recovery key] [--compress=on|off] [--fee 10.1] [--addr address]
bersih: jaringan bitcoin
priv: kunci pribadi taproot dalam format WIF, akan digunakan untuk mengungkapkan transaksi Jangan gunakan dompet Anda, priv harus yang baru. Kami membuat kunci sementara, jika tidak ada yang disediakan
pemulihan: kunci pribadi akar tunggang dalam format WIF, dapat digunakan untuk memulihkan bitcoin apa pun yang dikirim ke alamat prasasti secara tidak sengaja tanpa membayar biaya prasasti secara penuh.
kompres: prasasti dikompres dengan brotli. Kompatibel dengan penjelajah. default=aktif
biaya: biaya jaringan bitcoin dalam satoshi
addr: alamat tujuan pengiriman prasasti setelah terungkap Penting: sat pertama selalu tertulis. Prasasti batch tidak didukung.
Tidak ada kode jaringan. Itu membuat paket lebih aman, namun mengurangi pengalaman pengembang.
Kami mungkin dapat mengambil biaya secara otomatis, tetapi pemilihan utxo akan menjadi lebih rumit. Misalnya jika pengguna sebelumnya menuliskan sesuatu atau memiliki ordinal yang langka, kita memerlukan akses ke node ordinal untuk mengetahuinya. Selain itu, kami tidak tahu apa pun tentang keluaran yang dibekukan di dompet: keluaran tersebut hanya ada di dalam dompet.
Kasus tepi yang perlu diingat:
pengguna menambahkan txid/indeks yang salah atau keluar dari aplikasi setelah pengiriman
kami mencetak kunci pribadi sementara, pengguna dapat memulai ulang dengan menyediakannya dengan '--priv'
selama biaya/jaringan/jalurnya sama, Anda dapat memulai kembali proses
pengguna mengirim kurang dari jumlah atau beberapa UTXO.
ini sebenarnya lebih sulit, karena pembelanjaan apa pun akan memerlukan biaya pendaftaran penuh
untuk ini kami menambahkan recovery
Gunakan mempool dan ordinalsbot.
Ada beberapa faucet: uo1, eu, pump
Untuk menggunakan burung pipit di mac:
open /Applications/Sparrow.app --args -n testnet
MIT (c) Paul Miller (https://paulmillr.com), lihat file LISENSI.