شنو كيدير fastmint-fcfs
fastmint-fcfs هي مهارة لوكلاء الذكاء الاصطناعي بحال Claude Code وCodex وCursor وOpenClaw. كتعاون فتنفيذ معاملة وحدة ديال mint ولا claim ولا buy على BNB Smart Chain مباشرة منين كيبدا البيع.
الأداة كتستعمل واجهة سطر الأوامر ديال Binance Agentic Wallet المسماة baw. الجهاز ديالك كيحضّر بيانات الاستدعاء وكيختار وقت إرسال الطلب، بينما توقيع المعاملة كيدوز فالخلفية ديال Binance عبر Developer Mode. المفتاح الخاص ولا عبارة الاسترداد ولا رمز الجلسة ما كيتخزن حتى واحد منهم فالجهاز.
حيت تدفق المحفظة ديال Binance كيتطلب contract-call preview ومن بعد contract-call execute، fastmint-fcfs كتحسّن التوقيت ديال هاد الخطوات. كتستعمل بزاف ديال المحفزات المستقلة بلا ما تسنى إشارة وحدة:
- محفز الساعة: كيتفعل فموعد البيع باستعمال ساعة مصححة عبر NTP.
- محفز الرأس: كيراقب أول بلوك فـBSC اللي كيكون الطابع الزمني ديالو وصل لوقت الافتتاح.
- محفز المحاكاة: كيدير سباق بين طلبات
eth_callعبر أسرع نقاط RPC المتاحة.
أول preview ناجح كيتنفذ غير مرة وحدة بالضبط. وأي previews آخرين اللي مازال خدامين كيتجاهلو.
استعمل هاد الأداة غير من بعد تعليمات واضحة من المستخدم بخصوص mint محدد. الرابط بوحدو ماشي ترخيص لإرسال معاملة.
المتطلبات والتثبيت
ثبّت البرامج المطلوبة
استعمل Node.js بالإصدار 20 ولا أحدث. المستودع فيه ethers 6.13، وبالتالي المشروع ما كيحتاجش npm install. ثبّت واجهة Binance Agentic Wallet عالميا:
npm install -g @binance/agentic-wallet@1.12.0فـBinance App، فعّل Agentic Wallet وDeveloper Mode. تأكد بلي رصيد المحفظة باقي تحت الحد الأقصى ديال Developer Mode. ومهارة محفظة Binance الاختيارية تقدر توفر دعم إضافي لعمليات المحفظة.
حط المهارة فالمكان اللي يقدر الوكيل يقراها منو
فك ضغط المستودع ونسخ مجلد fastmint-fcfs لمجلد المهارات اللي كيستعملو الوكيل ديالك:
# Claude Code، لكل مشروع
mkdir -p .claude/skills
cp -r fastmint-fcfs .claude/skills/
# Claude Code، بشكل عام
mkdir -p ~/.claude/skills
cp -r fastmint-fcfs ~/.claude/skills/
# Codex وCursor وأدوات أخرى متوافقة مع .agents
mkdir -p .agents/skills
cp -r fastmint-fcfs .agents/skills/
chmod +x fastmint-fcfs/fastmint.shدخل للمحفظة
دخل مرة وحدة من التيرمينال:
baw auth signin --jsonحل urlForWeb اللي رجعات، وقارن pairingCode اللي باين فـBinance App، ومن بعد وافق على الربط. ثم تحقق من الجلسة:
baw auth verify --qrCodeId <qrCodeId> --json
baw wallet status --jsonخاص حالة المحفظة تكون CONNECTED. الجلسات كتدوم حتى لـ48 ساعة بلا نشاط. إلا سالات الجلسة، خاص الوكيل يوقف ويطلب منك تعاود تدخل، بلا ما يحاول يدير المصادقة أوتوماتيكيا.
فحص البيئة
دخل لمجلد المشروع وشغّل الاختبار المرجعي اللي ما كيبدل والو:
cd fastmint-fcfs
./fastmint.sh benchالاختبار كيتحقق من ترتيب RPC، وتأخر WebSocket، وانحراف ساعة NTP، واتصال المحفظة، وDeveloper Mode، ورصيد BNB، وAgent ID، وتوقيت preview. وهو تشخيص أولي مفيد قبل جدولة mint.
إلا ما قدرش Node يتحقق من سلسلة الشهادات فـmacOS، المشروع يقدر يبني حزمة CA من keychain ديال النظام:
./fastmint.sh bench --caفالبيئات الأخرى، عيّن NODE_EXTRA_CA_CERTS لملف CA مناسب.
إعداد نقاط RPC الاختيارية
المشغّل كيقرا أوتوماتيكيا ملف .env الموجود فمجلد المهارة. تقدر تزيد نقاط HTTP وWebSocket مدفوعة:
FASTMINT_RPCS_EXTRA=https://<premium-endpoint>
FASTMINT_WS_EXTRA=wss://<premium-endpoint>الإعدادات الأخرى المدعومة كتضم FASTMINT_RPCS لتعويض مجموعة RPC كاملة، وFASTMINT_WS لتحديد نقطة WebSocket، وFASTMINT_TZ للمنطقة الزمنية المحلية، وFASTMINT_CA لحزمة شهادات Node. أسماء المضيفين ديال نقاط الاتصال كتكون مخفية فالسجلات.
طريقة الاستعمال الموصى بها
التشغيل العادي فيه أربع مراحل: فحص البيئة، ومعاينة عقد mint، وتجربة preview، ومن بعد تنفيذ المعاملة الحقيقية.
- Bench: تأكد بلي المحفظة وبيئة الشبكة واجدين.
- Recon: اكتشف عنوان العقد، وABI، ودالة mint، والوسائط، والتوقيت، وعمليات القراءة المهمة.
- Dry-run: صيفط preview ولكن وقف قبل التنفيذ.
- Fire: شغّل محرك المعاملة وسمح بتنفيذ واحد من بعد ما يدوز preview جميع الفحوصات.
1. فحص موقع mint
شغّل recon على صفحة mint:
./fastmint.sh recon https://mint-siteإلا كنت عارف عنوان العقد من قبل، عطيو مباشرة:
./fastmint.sh recon https://mint-site --contract 0x...Recon كينزّل الصفحة وJavaScript المرتبط بها ولا وثائق الوكيل، ومن بعد كيقلب على عناوين العقود، ومعرّفات السلاسل، وأسماء الدوال، وتوقيعات ABI، والطوابع الزمنية. كذلك كيتحقق من bytecode المنشور، وكيجيب ABI من Sourcify إلا كان متاح، وكيقرا دوال view، وكيطبع مرشحي mint مع الوسائط المتوقعة، وcalldata، ونتائج المحاكاة، ووقت بداية محتمل.
استعمل النتائج باش تتحقق من وقت الافتتاح، والثمن، والكمية المجانية، والحد لكل محفظة، ومتطلبات Agent ID، وأخطاء العقد المفككة. ما تعتمدش على الوسائط المتوقعة بلا ما تتأكد منها.
2. تجربة preview
استعمل fire --dry باش تدير الفحوصات وتشوف المعاينة بلا ما تنفّذ المعاملة:
./fastmint.sh fire --to 0xSALE --data 0x195ad114 --start 23:00 --dryالخيار --start كيقبل ثواني Unix، ولا وقت محلّي بصيغة HH:MM[:SS]، ولا توقيت ISO-8601. شوف القيمة المطبوعة ديال call وتأكد باللي الـselector والـarguments كيمثلو الدالة اللي باغي.
إلى بغيتي تجربة خاصها تدوز من مسار مربوط بالوقت، زيد --gateSim. هاد الخيار كيمنع eth_call اللي كينجح من قبل من أنه يخلّي التجربة تنفّذ قبل وقت الفتح المعيّن.
3. نفّذ عملية mint وحدة
من بعد ما تراجع التجربة الجافة وتحصل على موافقة صريحة، شغّل المعاملة فالخلفية باش يبقى الـagent كيرد:
./fastmint.sh fire --to 0xSALE --data 0x195ad114 --start 23:00 --label project_freeإلى رجعات المعاينة بمحاكاة ناجحة، المحرّك كينادي baw contract-call execute مرة وحدة. التقرير النهائي فيه hash ديال المعاملة، ورابط BscScan، وحالة الإيصال، والأصول المستلمة إلا كانت متاحة، وتسلسل زمني، ومسار السجل.
أمثلة أساسية على الأوامر
استعمل توقيع دالة
بلا ما تجهّز calldata خام، عطِ توقيع الدالة:
./fastmint.sh fire \
--to 0xSALE \
--sig "claimFreeShare()" \
--start 23:00صيفط mint مؤدّاة
الـmints المؤدّاة خاصها مبلغ صريح وحد أقصى مطابق. مثلا، جوج حصص بثمن 0.005 BNB لكل وحدة غادي يستعملو:
./fastmint.sh fire \
--to 0xSALE \
--sig "buyWithBnb(uint256,address,uint256)" \
--args '[2,"0x0000000000000000000000000000000000000000",0]' \
--value 0.01 \
--maxValue 0.01 \
--start 23:00الـmints المجانية خاصها تستعمل --value 0. الأداة كترفض قيمة ماشي صفر بلا حد أقصى، وكتـرفض القيم اللي كتفوت --maxValue.
فرَض نتيجة NFT معيّنة
استعمل --expectNft إلا كان خاص التنفيذ يوقع غير إلى بيّنت المعاينة أن عدد محدد بالضبط من NFTs غادي يدخل للمحفظة:
./fastmint.sh fire \
--to 0xNFT \
--data 0xa0712d68...0002 \
--value 0 \
--expectNft 2المعاملات الديناميكية
يمكن تقييم المعاملات مباشرة قبل كل معاينة. هادشي مفيد ملي كيكون deadline، ولا عنوان المحفظة، ولا Agent ID، ولا عدّاد العقد قابل للتغيير قرب وقت الفتح.
$walletكيتحلّ لعنوان المحفظة المرتابطة فـBNB Smart Chain.$agentIdكيتحلّ لرقم توكن Agent ID المستخرج من الـhandle المسجّل ديال المحفظة.$zeroكيتحلّ للعنوان الصفري.$now+1800كيتحلّ للوقت الحالي بصيغة Unix زائد 1,800 ثانية.{"getter":"totalMinted()","add":1}كيقرا getter وكيزيد واحد للنتيجة ديالو إلا كانت عدد صحيح بلا إشارة.{"getter":"saleStart()","at":"0x..","mul":2}كيقرا getter من عقد آخر وكيضرب النتيجة.
مثلا، هاد الأمر كيجدد Agent ID والـdeadline مع كل معاينة:
./fastmint.sh fire \
--to 0xSALE \
--sig "mintFree(uint256,uint256,uint256,uint256,address)" \
--args '["$agentId","1","0","$now+1800","0x0000000000000000000000000000000000000000"]' \
--start 21:00النداءات الديناميكية كتستعمل مفتاح قفل مبني على الوجهة والـselector والقيمة، وبهذا تغيير المعاملات ما كيسمحش بالخطأ بتنفيذ ثاني لنفس الـmint.
السلوك ديال التوقيت والمشغّلات
قبل وقت الفتح وحواليه، المحرّك يقدر يصيفط معاينات من عدة مشغّلات مستقلة. الاندفاع الافتراضي كيدوم ثلاث ثواني، والمعاينات بيناتها على الأقل 350 ميلي ثانية، وحتى ثلاث معاينات يقدرو يكونو خدامين فآن واحد.
من بعد الاندفاع، حلقة eth_call كتبقى كتقلب على محاكاة ناجحة حتى يسالي الوقت المحدد، اللي الافتراضي ديالو 600 ثانية. هادشي كيخلي الأداة تتعامل مع بيع كيفتح من بعد الوقت المعلن بلا ما تستهلك حدّ المعاينات بشكل متكرر.
الـreverts كيتفكّو باستعمال Sourcify ABI ديال العقد، والأخطاء الشائعة المدمجة، وبيانات 4byte إلا كانت متاحة. أخطاء بحال NotStarted وNotOpen وTooEarly كتعتبر مؤقتة. وأخطاء بحال SoldOut وFreeGone وAlreadyClaimed وNotEligible وWrongValue كتعتبر نهائية. الأخطاء المجهولة كتستنى حتى يدوز وقت السماح قبل ما تولّي قاتلة.
تقدر تخصّص التصنيف باستعمال regular expressions ديال --waitOn و--fatalOn، ولكن دير هادشي غير إلا كنت فاهم سلوك الأخطاء ديال العقد.
حواجز السلامة اللي خاصك تعرف
- الأداة كتطلب تعليمة صريحة من المستخدم على الـmint المحدد.
- كيتمّ كتابة ملف قفل قبل التنفيذ، وكيمنع إعادة بث نفس النداء.
- المحرّك ما كيديرش تسجيل الدخول أوتوماتيكيا، وما كيطلبش مفتاح خاص، وما كيسولش على عبارة الاسترداد.
- حواجز مخاطر Binance، وإشارات المخاطر، وتغييرات allowance، وتغييرات الصلاحيات كيوقفو التشغيل.
- خاص المحفظة يكون فيها رصيد كافي للقيمة المطلوبة وللغاز.
- خاص المعاينة يكون فيها كود المحاكاة
000000000، ومعرّف طلب، وتدفّق أصلي مقبول للخارج، وما يكونوش تغييرات ممنوعة فالمحفظة. PENDING_CONFIRMATIONكيعني أن المستخدم خاصو يوافق فـBinance App؛ وما خاصش تعاود تصيفط المعاملة.- من بعد خطأ فـexecute، ولا معاملة راجعة، ولا إيصال ناقص، ما تعاودش المحاولة أوتوماتيكيا.
باش تشوف التشغيلات السابقة، استعمل:
./fastmint.sh logs
./fastmint.sh locksحيد القفل غير من بعد تعليمة جديدة وصريحة من المستخدم، وما تحيدوش غير حيث المعاملة باينة بطيئة ولا فاشلة.
حلّ المشاكل
أخطاء المحفظة ووضع المطوّر
إلا كان baw wallet status كيعطي UNCONNECTED، عاود دخل يدوياً. الكودين 351802 و351804 كيعنيو غالباً باللي Developer Mode مطفّي، سالات الصلاحية ديالو، ولا فات السقف ديال الرصيد. الكود 351803 هو حظر ديال المخاطر من Binance وما خاصوش يتجاوز.
أخطاء المحاكاة والعقد
التجاوبات المتكررة بـ351805 عادية قبل ما يلاحظ backend ديال Binance بلوك البداية، ولكن تقدر حتى تعني باللي المعطيات غير صحيحة. التجاوب المستمر بـNotStarted يقدر يعني باللي الوقت المكوَّن غلط. SoldOut وFreeGone وAlreadyClaimed حالات نهائية.
AgentIdRequired ولا NotEligible يقدرو يعنيو باللي النداء خاصو argument ديال Agent ID. أخطاء الأداء بحال PaymentLow وWrongValue كتعني باللي مبلغ BNB المرسل ما مطابقش لمتطلبات العقد.
مشاكل الشبكة والشهادات
إلا كانت RPCs بطيئة ولا كيتطبق عليها تحديد المعدل، كوّن FASTMINT_RPCS ولا FASTMINT_RPCS_EXTRA. إلا عطى Node الخطأ UNABLE_TO_GET_ISSUER_CERT_LOCALLY، ولّد ولا وفّر CA bundle كيف موضح فجزء التثبيت.
اعتراض DNS يقدر حتى هو يسبب أخطاء فالشهادات ولا يرجّع دومينات غير متوقعة ديال مزود الإنترنت. استعمل DNS مشفّر ولا VPN خارج تحكم الوكيل؛ وما تبدلش DNS ديال النظام أوتوماتيكياً.
الملفات والأوامر المفيدة
الملفات الرئيسية هي:
fastmint.shكيطلق أوامر benchmark وrecon وfire وlog وlock.fire.jsكيدبّر الفحوصات القبلية، والمحفزات، والمعاينات، والتنفيذ، والإيصالات.recon.jsكيكتاشف تفاصيل العقد والمرشحين ديال mint.bench.jsكيفحص المحفظة وبيئة الشبكة.lib.jsكيوفّر تسابق RPC، ورؤوس WebSocket، وتصحيح NTP، وفكّ أكواد revert، ومساعدات المحفظة.runs/كيخزّن السجلات، وبيانات المعاينة، وبيانات التنفيذ، والإيصالات، وملفات القفل.cache/كيخزّن واجهات Sourcify ABI اللي تم تحميلها.
كل سجل ديال تشغيل كيتضمن التوقيت المحلي وفوارق T+x.xxxs. السطر الأخير هو ملخص TIMELINE.
الخلاصة
fastmint-fcfs كيجمع بين استطلاع العقد، وتوقيت متزامن، وإشارات متوازية من البلوكشين، ومعاينات محفظة Binance، والحماية من التنفيذ أكثر من مرة فعمليات mint الحساسة للوقت على BSC. بدا بـbench، وفحص الهدف بـrecon، وجرّب باستعمال --dry، وما تنفّذ حتى تتأكد من calldata والمبلغ وحالة المحفظة وترخيص المستخدم.
المشروع حالياً موجّه لـBNB Smart Chain. معرّف السلسلة ديالو، ومجموعة RPC، وسجل Agent ID، والتكامل مع المستكشف خاصّين بـBSC، لذلك ما خاصوش يتعتبر أداة متعددة السلاسل.
