الحد الأدنى من مكتبة JS للأعداد الترتيبية والنقوش الموجودة أعلى scure-btc-signer.
استخدمها كمكتبة في كود JS الخاص بك، أو قم بتشغيل أداة CLI المضمنة. تسمح النقوش بتحميل ملفات عشوائية على BTC blockchain.
تجريبي: يمكن أن يؤدي إلى خسارة الأموال حتى يتم اختباره بدقة.
npm تثبيت الترتيبية الصغيرة
إنشاء النقش
واجهة برمجة تطبيقات تايب سكريبت
سطر الأوامر
// npm تثبيت الترتيبيات الصغيرة @scure/btc-signer @scure/baseimport * كـ btc من '@scure/btc-signer'؛استيراد * كترتيبات من 'micro-ordinals'؛استيراد { hex, utf8 } from '@ scure/base';const TESTNET = btc.utils.TEST_NETWORK;const privKey = hex.decode('0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a');const pubKey = btc.utils.pubSchnorr(privKey);const customScripts = [ordinals.OutOrdinalReveal]; // تمكين البرامج النصية المخصصة في الخارج // هذا يُسجل على أول ساتوشي للإدخال الأول (افتراضي)const inscription = { العلامات: {contentType: 'application/json'، // يمكن أن يكون بأي تنسيق (نوع MIME) // ContentEncoding: 'br'، // الضغط: يدعم brotli فقط }, الجسم: utf8.decode(JSON.stringify({ بعض: 1، اختبار: 2، النقش: صحيح، في: 'json' })))، // يمكن للمرء استخدام نصوص js المكتوبة مسبقًا بتنسيق html // utf8.decode(`<html><head></head><body><script src="/content/script_inscription_id"></script>test</html>`)};const تكشف الدفع = btc.p2tr ( غير محدد، // InternalPubKey ordinals.p2tr_ord_reveal(pubKey, [inscription])، // TaprootScriptTree TESTNET، // الشبكة الرئيسية أو testnet false، //allowUnknownOutputs، ميزة الأمان customScripts // كيفية التعامل مع النصوص البرمجية المخصصة)؛// نحتاج إلى إرسال بعض عملات البيتكوين إلى هذا العنوان قبل الكشف.// أيضًا، يجب أن يكون هناك ما يكفي لتغطية رسوم كشف تكساس. ; // 'tb1p5mykwcq5ly7y2ctph9r2wfgldq94eccm2t83dd58k785p0zqzwkspyjkp5'// كن حذرًا للغاية: من الممكن إرسال نقش عن طريق الخطأ كرسوم.// أيضًا، الندرة متاحة فقط مع المحفظة الترتيبية.// ولكن يمكنك تحليل النقوش الأخرى وإنشاء نقش مشترك باستخدام هذا. تغيير ثابت = checkPayment.address; // يمكن أن تكون مختلفةconst تكشف Amount = 2000n;constfee = 500n;const tx = new btc.Transaction({ customScripts });tx.addInput({ ...كشف الدفع، // هذا هو txid من tx مع عملات البيتكوين التي أرسلناها (استبدال) txid: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858', الفهرس: 0، شاهد Utxo: { script: تكشفPayment.script, المبلغ: تكشف Amount },});tx.addOutputAddress(changeAddr, requireAmount -fee, TESTNET);tx.sign(privKey, uncategorized, new Uint8Array(32));tx.finalize() ;const txHex = hex.encode(tx.extract());console.log(txHex); // الكشف السداسي عن tx إلى البثconst tx2 = btc.Transaction.fromRaw(hex.decode(txHex)); // تحليل inscriptionsconsole.log('parsed', ordinals.parseWitness(tx2.inputs[0].finalScriptWitness));console.log('vsize', tx2.vsize); // Reveal tx يجب أن يدفع هذا المبلغ على الأقل
استيراد { Coder } من '@scure/base'؛ استيراد * كـ P من 'micro-packed'؛ استيراد { ScriptType، OptScript، CustomScript } من '@scure/btc-signer'؛ اكتب Bytes = Uint8Array؛ تصدير يعلن const InscriptionId : P.Coder<string, Bytes>;اكتب TagRaw = {tag: Bytes;data: Bytes;};أعلن ثابت TagCoders: {مؤشر: P.CoderType<bigint>;contentType: P.CoderType<string>;الأصل: P.Coder<string, Uint8Array>;بيانات التعريف: P.CoderType<any>;metaprotocol: P.CoderType<string>; ترميز المحتوى: P.CoderType<string>؛ المفوض: P.Coder<string, Uint8Array>;rune: P.CoderType<bigint>;ملاحظة: P.CoderType<string>;};نوع التصدير العلامات = جزئي<{[K في مفتاح نوع TagCoders]: P.UnwrapCoder<(typeof TagCoders)[K]> ;}> & {غير معروف؟: [البايت، البايت][];};نوع التصدير Inscription = { العلامات: العلامات; الجسم: بايت؛ ملعون؟: منطقي؛ };اكتب OutOrdinalRevealType = { النوع: 'tr_ord_reveal'; مفتاح النشر: بايت؛ النقوش: النقش[]؛ };إعلان التصدير const OutOrdinalReveal: Coder<OptScript, OutOrdinalRevealType | unتعريف> & CustomScript;تصدير إعلان وظيفة parseInscriptions(script: ScriptType, الصارم?: boolean): Inscription[] | undef;/** * تحليل النقوش من شاهد إدخال كشف tx (tx.inputs[0].finalScriptWitness) */ وظيفة إعلان التصدير parseWitness(witness: Bytes[]): Inscription[] | غير محدد؛/** * إنشاء معاملة كشف. تم إنشاء النقش عند إنفاق الإخراج من هذا العنوان عن طريق الكشف عن البرنامج النصي الجذري. */ إعلان تصدير الوظيفة p2tr_ord_reveal(pubkey: Bytes, inscriptions: Inscription[]): {type: string;script: Uint8Array;};
npm install -g micro-ordinals ord file.jpg
الاستخدام: ord [--net mainnet|testnet] [--مفتاح priv] [--مفتاح الاسترداد] [--compress=on|off] [--fee 10.1] [--عنوان addr]
صافي: شبكة بيتكوين
priv: سيتم استخدام المفتاح الخاص Taproot بتنسيق WIF للكشف عن المعاملات. لا تستخدم محفظتك، priv يجب أن يكون جديدًا. نقوم بإنشاء مفتاح مؤقت، إذا لم يتم توفيره
الاسترداد: يمكن استخدام المفتاح الخاص بـ Taproot بتنسيق WIF لاستعادة أي عملات بيتكوين تم إرسالها إلى عنوان التسجيل عن طريق الصدفة دون دفع رسوم التسجيل كاملة.
ضغط: نقوش مضغوطة بالبروتلي. متوافق مع المستكشفين. default=on
الرسوم: رسوم شبكة البيتكوين بالساتوشي
addr: العنوان الذي سيتم إرسال النقش إليه بعد الكشف هام: يتم دائمًا كتابة أول سبت. النقوش المجمعة غير مدعومة.
لا يوجد رمز الشبكة. فهو يجعل الحزمة أكثر أمانًا، ولكنه يقلل من تجربة المطور.
ربما يمكننا جلب الرسوم تلقائيًا، لكن اختيار utxo سيصبح أكثر تعقيدًا. على سبيل المثال، إذا قام المستخدم بتسجيل شيء ما أو كان لديه ترتيبات نادرة، فنحن بحاجة إلى الوصول إلى العقدة الترتيبية لمعرفة ذلك. كما أننا لا نعرف شيئًا عن المخرجات المجمدة في المحفظة: فهي داخل المحفظة فقط.
حالات الحافة التي يجب وضعها في الاعتبار:
أضاف المستخدم txid/index خاطئًا أو قام بإنهاء التطبيق بعد الإرسال
نطبع مفتاحًا خاصًا مؤقتًا، ويمكن للمستخدم إعادة التشغيل من خلال تزويده بـ "--priv"
نظرًا لأن الرسوم/الشبكة/المسار الطويل هو نفسه، يمكنك إعادة تشغيل العملية
أرسل المستخدم أقل من مبلغ أو UTXO متعددة.
وهذا في الواقع أصعب، لأن أي إنفاق سيتطلب رسوم تسجيل كاملة
لهذا نضيف recovery
استخدم mempool وordinalsbot.
هناك العديد من الحنفيات: uo1، الاتحاد الأوروبي، مضخة
لاستخدام سبارو على ماك:
open /Applications/Sparrow.app --args -n testnet
معهد ماساتشوستس للتكنولوجيا (ج) بول ميلر (https://paulmillr.com)، راجع ملف الترخيص.