scure-btc-signer 上の序数と碑文用の最小限の JS ライブラリ。
これを JS コード内のライブラリとして使用するか、付属の CLI ツールを実行します。碑文により、BTC ブロックチェーンにランダムなファイルをアップロードできます。
実験的:徹底的にテストするまで資金の損失につながる可能性があります。
npm インストールマイクロ序数
碑文の作成
TypeScript API
CLI
// npm install micro-ordinals @scure/btc-signer @scure/baseimport * as btc from '@scure/btc-signer';import * as ordinals from 'micro-ordinals';import { hex, utf8 } from '@ scure/base';const TESTNET = btc.utils.TEST_NETWORK;const privKey = hex.decode('0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a');const pubKey = btc.utils.pubSchnorr(privKey);const CustomScripts = [ordinals.OutOrdinalReveal]; // 外部でカスタム スクリプトを有効にする // これは、最初の入力の最初の SATOSHI を記述します (デフォルト)const inscription = { タグ: {contentType: 'application/json', // 任意の形式 (MIME タイプ) を使用できます// ContentEncoding: 'br', // 圧縮: Brotli のみサポート }、 body: utf8.decode(JSON.stringify({ some: 1, test: 2, inscription: true, in: 'json' })), // 以前に記述された js スクリプトを html で使用できます // utf8.decode(`<html><head></head><body><script src="/content/script_inscription_id"></script>test</html>`)};const believePayment = btc.p2tr ( 未定義, // externalPubKey ordinals.p2tr_ord_reveal(pubKey, [碑文]), // TaprootScriptTree TESTNET, // メインネットまたはテストネット false, //allowUnknownOutputs, 安全機能 CustomScripts // カスタム スクリプトの処理方法);// 公開する前に、このアドレスにビットコインを送信する必要があります。// また、公開 TX をカバーするのに十分な量があるはずです Fee.console.log('Address', believePayment.address) ; // 'tb1p5mykwcq5ly7y2ctph9r2wfgldq94eccm2t83dd58k785p0zqzwkspyjkp5'// 特に注意してください: 誤って碑文を手数料として送信してしまう可能性があります。// また、レアリティは通常のウォレットでのみ利用可能です。// ただし、これを使用して他の碑文を解析し、共通の碑文を作成することができます。 const changeAddr =支払いのアドレスを明らかにします。 // 異なる場合もありますconst believeAmount = 2000n;constfee = 500n;const tx = new btc.Transaction({customScripts});tx.addInput({ ...支払いを明らかにする、 // これは送信したビットコインを含む txid です (置換) txid: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858', インデックス: 0、 witnessUtxo: { スクリプト:revealPayment.script、金額:revealAmount },});tx.addOutputAddress(changeAddr、revealAmount - 料金、TESTNET);tx.sign(privKey、未定義、new Uint8Array(32));tx.finalize() ;const txHex = hex.encode(tx.extract());console.log(txHex); // ブロードキャストコンスト tx2 へのリビール tx の 16 進数 = btc.Transaction.fromRaw(hex.decode(txHex)); // 碑文を解析していますconsole.log('parsed', ordinals.parseWitness(tx2.inputs[0].finalScriptWitness));console.log('vsize', tx2.vsize); // tx は少なくともこれくらいの料金を支払う必要があることを明らかにします
import { Coder } from '@scure/base';import * as P from 'micro-packed';import { ScriptType, OptScript, CustomScript } from '@scure/btc-signer';type Bytes = Uint8Array;export destroy const InscriptionId : P.Coder<string, Bytes>;type TagRaw = {tag: Bytes;data: Bytes;};const を宣言TagCoders: {ポインタ: P.CoderType<bigint>;contentType: P.CoderType<string>;親: P.Coder<string, Uint8Array>;メタデータ: P.CoderType<any>;メタプロトコル: P.CoderType<string>; contentEncoding: P.CoderType<string>;デリゲート: P.Coder<string, Uint8Array>;rune: P.CoderType<bigint>;注: P.CoderType<string>;};エクスポート タイプ Tags = Partial<{[K in keyof typeof TagCoders]: P.UnwrapCoder<(typeof TagCoders)[K]>;}> & {不明?: [バイト, バイト][];};エクスポート タイプ Inscription = { タグ: タグ;本体: バイト;呪われていますか?: ブール値; };type OutOrdinalRevealType = { type: 'tr_ord_reveal';公開鍵: バイト;碑文: 碑文[]; };エクスポート宣言 const OutOrdinalReveal: Coder<OptScript, OutOrdinalRevealType |未定義> & CustomScript;エクスポート宣言関数 parseInscriptions(script: ScriptType, strict?: boolean): Inscription[] | unknown;/** * tx 入力証人を明らかにする (tx.inputs[0].finalScriptWitness) からの碑文を解析します */export宣言関数 parseWitness(witness: Bytes[]): Inscription[] | unknown;/** * 公開トランザクションを作成します。 * タップルート スクリプトを公開することにより、このアドレスからの出力を支出する際に作成された碑文。 */export 宣言関数 p2tr_ord_reveal(pubkey: Bytes, inscriptions: Inscription[]): {type: string;script: Uint8Array;};
npm install -g micro-ordinals ord file.jpg
使用法: ord [--net mainnet|testnet] [--priv key] [--recovery key] [--compress=on|off] [--fee 10.1] [--addr address]
net: ビットコインネットワーク
priv: WIF 形式のタップルート秘密キー。公開トランザクションに使用されます。ウォレットは使用しないでください。priv は新しいものにする必要があります。一時キーが提供されていない場合は、一時キーを生成します
リカバリ: WIF 形式のタップルート秘密キーを使用すると、登録料金全額を支払うことなく、誤って登録アドレスに送信されたビットコインを回復できます。
圧縮: brotli で圧縮された碑文。エクスプローラーと互換性があります。デフォルト=オン
料金: SATOSHISのビットコインネットワーク料金
addr: リビール後に碑文が送信されるアドレス 重要: 最初のSatは常に刻まれます。バッチ登録はサポートされていません。
ネットワークコードはありません。これによりパッケージはより安全になりますが、開発者のエクスペリエンスは低下します。
料金はおそらく自動的に取得できるでしょうが、utxo の選択はより複雑になるでしょう。たとえば、ユーザーが以前に何かを書き込んだり、珍しい序数を持っている場合、それを知るために序数ノードにアクセスする必要があります。また、ウォレット内の凍結された出力については何も知りません。それはウォレット内のみに存在します。
留意すべきエッジケース:
ユーザーが間違った txid/index を追加したか、送信後にアプリケーションを終了しました
一時的な秘密キーを出力します。ユーザーはそれを「--priv」を指定して再起動できます。
料金/ネットワーク/パスが同じであれば、プロセスを再起動できます
ユーザーが送信した金額が少ないか、複数の UTXO を送信しました。
支出には全額の登録料が必要となるため、これは実際にはさらに困難です。
このためにrecovery
を追加します
mempool と ordinalsbot を使用します。
いくつかの蛇口があります: uo1、eu、pump
Mac で Sparrow を使用するには:
open /Applications/Sparrow.app --args -n testnet
MIT (c) Paul Miller (https://paulmillr.com)、ライセンス ファイルを参照してください。