برنامه نویسی

چگونه ربات تیرانداز از خفا Solana خود را بسازیم (5)

پلتفرم ربات تجارت Solana

سلام 👋 ،

ممنون که اینجا هستی!

در شماره های قبلی ، ما ملزومات ساخت یک ربات تیرانداز از خفا ، SPL ، سکوهای Solana Dex ، ربات تلگرام و غیره را پوشش دادیم. در طول مسیر ، ما چهار اسکریپت اصلی ساختیم:

  • انتقال SOL بین کیف پول A و کیف پول B
  • نقل و انتقالات توکن SPR بین همان کیف پول
  • بوها اسکریپت مبادله (خرید/فروش) برای توکن یک توکن b
  • فیلمنامه ربات تلگرام با ویژگی های Sniping

اکنون وقت آن رسیده است که مهمترین بخش توسعه یک ربات تیرانداز از خفا Solana را کشف کنیم.

همانطور که قبلاً نیز اشاره کردم ، ربات های تیرانداز از خفا در Solana برنامه های خودکار هستند که برای اجرای خریدهای توکن در مناسب ترین لحظه ها ، غالباً در میلی ثانیه از راه اندازی توکن یا یک رویداد حرکت در بازار طراحی شده اند. برای به حداکثر رساندن سود و به حداقل رساندن خطرات ، باید زمان بندی ، استراتژی ها ، ابزارها و خطرات ناشی از آن را بهینه کنیم.

در این شماره ، وقتی ربات های تیرانداز از خفا باید توکن ها را به طور مفصل در Solana خریداری کنند ، پوشش می دهم. من همچنین یک فیلمنامه را نشان می دهم که برای مهاجرت های پمپ به Raydium گوش دهید برای نمونه های برنامه نویسی در دنیای واقعی.

همچنین ، در آخرین بخش این شماره ، من را معرفی می کنم پلت فرم ربات معاملات یکپارچه Solana توسط تیم ما توسعه یافته است.

فهرست مطالب

1 بهترین زمان برای ربات های تیرانداز از خفا

1.1 در حین راه اندازی توکن (سونیک نقدینگی)

سودآورترین و استراتژیک ترین پنجره برای فعالیت ربات تیرانداز از خفا دقیقاً هنگامی اتفاق می افتد که یک نشانه جدید راه اندازی می شود و نقدینگی اولیه به بازار تزریق می شود. این مرحله نشانگر فرصت طلایی برای رباتها برای تأمین موقعیت های کمترین قیمت قبل از هرگونه افزایش قابل توجه قیمت است. در زیر ، ما این فرآیند را با جزئیات جامع بررسی خواهیم کرد ، و هر جنبه ای ظریف را که موفقیت یا عدم موفقیت در تیراندازی با نقدینگی را تعیین می کند ، پوشش می دهیم.

1.1.1 تشخیص استخرهای نقدینگی جدید

چگونه ربات های تیرانداز توکن های راه اندازی را شناسایی می کنند

ربات های تیرانداز از سیستم های نظارتی پیشرفته استفاده می کنند که به طور مداوم کلیه مبادلات غیر متمرکز Solana (DEXS) را اسکن می کنند از جمله:

  • ریدیم (Launchpad اولیه برای نشانه های جدید Solana) ، که به عنوان اصلی ترین محل تجارت و مهمترین محل تجارت برای پرتاب های جدید Solana خدمت می کند ، جایی که تقریباً 78 ٪ از کل توک های جدید SPL ابتدا از طریق زیرساخت های بازار خودکار (AMM) نقدینگی را به دست می آورند و جایی که پر سود ترین فرصت های اولیه به طور معمول در 30 ثانیه اول تجارت ظهور می کند.

  • اره (بازار ثانویه قابل توجه با خلاقیت های جدید استخر) ، به عنوان یک بازار ثانویه قابل توجه که روزانه خلاقیت های قابل توجهی در استخر را مشاهده می کند ، به ویژه برای پروژه های میانه که فراتر از راه اندازی اولیه زنده مانده اند ، فعالیت می کند ، با ویژگی های نقدینگی متمرکز آن ، اغلب الگوهای مهم در مورد زنده ماندن در حال نوظهور از طریق دینامیک بی نظیر و متریک حجم تجارت را نشان می دهد.

  • مشتری (جمع کننده ای که غالباً نشانه های جدیدی را نشان می دهد) ، جمع کننده پیشرو که اغلب نشانه های جدید را از طریق الگوریتم های بهینه سازی مسیر خود قبل از حضور در رابط های DEX فردی نشان می دهد ، به عنوان یک سیستم هشدار اولیه برای ربات های تیرانداز از خفا به دلیل اسکن جامع آن در کلیه منابع نقدینگی ممکن در اکوسیستم Solana ، از جمله کوچکتر ، مکان های کوچکتر ، کمتر تشکیل می شود.

  • جبهه .

این ربات ها پیاده سازی می کنند تجزیه blockchain در زمان واقعی برای تشخیص:

  • معاملات نعناع جدید (شناسایی نشانه های SPL تازه ایجاد شده) ، جایی که رباتها رویدادهای ایجاد توکن را به سطح دستورالعمل های فردی ، کتابخانه برنامه Solana (SPL) تجزیه و تحلیل می کنند ، و نشانه های تازه ایجاد شده را از طریق ترکیبی از تجزیه و تحلیل امضا ، پروفایل کیف پول خالق و الگوهای اقتدار نعناع که به تشخیص پرتاب های مشروع از کاربردهای آزمایشی یا تلاش های کلاهبرداری کمک می کند ، شناسایی می کند.

  • خلاقیت اولیه جفت نقدینگی .

  • اولین معاملات مبادله (نشانگر آغاز معاملات فعال) ، که به عنوان سیگنال قطعی که تجارت فعال آغاز شده است ، با استفاده از رباتها از مدل های یادگیری ماشین برای تفسیر این حرکات اولیه بازار استفاده می شود – تفاوت بین تجارت ارگانیک ، فعالیت ربات ها و الگوهای بالقوه تجارت شستشو – همه در چند بلوک اول وجود تجارت یک توکن برای تصمیم گیری در مورد ورود به سطح میلی ثانیه.

ابزارهای نظارت بحرانی برای تشخیص استخر

تنظیمات تک تیرانداز حرفه ای از منابع مختلف داده به طور همزمان استفاده می کنند:

  • ابزارهای تشخیص اولیه

    • کاخ (قابل اطمینان ترین برای هشدارهای جفت جدید در زمان واقعی با فیلترهای قابل تنظیم)
    • پرنده (عالی برای ردیابی سنبله های حجم ناگهانی در بازارهای جدید)
    • باکله (تخصصی در شناسایی استقرار توکن قبل از راه اندازی)
    • سولسن توکن کاوشگر (داده های blockchain خام برای اولین تشخیص ممکن)
  • سنبله ناگهانی در ناظران ، جستجوها یا حجم یعنی یک نشانه در حال حرکت است.

  • مثال: اگر یک نشانه بدست آید 1000+ تماشاگر جدید Dexscreener در 5 دقیقه، رباتها قبل از جمعیت خریداری می کنند.

  • زیاد گروه های پمپاژ و تأثیرگذار با هماهنگی خریدها.

  • کانال های تلگرام رکاب برای کلمات کلیدی مانند “بار“،”ورود“، یا”گوه

میلی ثانیه مهم است: زمان اجرا

1.1.2 اعتیاد به مواد مخدره اجتماعی جلو – پیش بینی پمپ قبل از آن

تأثیر کاتالیزور رسانه های اجتماعی

تجزیه و تحلیل آماری این را نشان می دهد 87 ٪ از سکه های Meme موفق اولین حرکت اصلی قیمت آنها را در درون تجربه کنید 15-45 دقیقه ارتقاء هماهنگ رسانه های اجتماعی. ربات های تیرانداز از طریق این کار از این طریق سرمایه گذاری می کنند:

مطالعات موردی تاریخی

  • $: رباتها شناسایی شدند 12 دقیقه قبل شیلینگ مهم توییتر آغاز شد
  • Wif $: خرید اولیه در 0.01 دلار
  • $ myro: 87 ٪ از خریدهای اولیه قبل از ورود خرده فروشی رباتها بودند

مدل سازی پیش بینی پیشرفته

سیستم های تیرانداز از تیراندازهای برش در حال حاضر شامل:

  • پردازش زبان طبیعی (NLP) برای نمره پتانسیل اعتیاد به مواد مخدره

  • الگوریتم خوشه بندی کیف پول برای تشخیص تجمع تأثیرگذار

  • شناخت تصویر برای تجزیه و تحلیل قالب های Meme Trending

1.2 تراکم شبکه کم (سرعت اجرای بهینه)

عملکرد شبکه Solana بسیار متغیر است ، با سرعت پردازش معاملات به طرز چشمگیری بر اساس الگوهای استفاده جهانی ، عملکرد گره اعتبار سنج و تقاضای کلی شبکه نوسان می کند. هنگامی که blockchain احتقان می شود-یک اتفاق مکرر در دوره های فعالیت شدید تجارت یا مینت های محبوب NFT-ترازو می تواند به طور کامل از بین برود یا تاخیر خطرناک 30 ثانیه یا بیشتر را تجربه کند ، و پتانسیل سودآوری را برای عملیات ربات تیرانداز از خفا به زمان کاملاً از بین ببرد. درک این الگوهای احتقان و بهینه سازی برای شرایط شبکه برای تیراندازی موفق بسیار مهم است.

1.2.1 بهترین بازه های زمانی برای اجرای سریع – تجزیه و تحلیل زمان بندی استراتژیک

ویندوزهای کم ترافیک بهینه

  • قابل اطمینان ترین بازه های زمانی برای اجرای صاف و کم رقابت به طور مداوم در طول اتفاق می افتد صبح زود UTC (12 صبح – 4 صبح) چه زمانی:

    • معامله گران آمریکای شمالی در حال خواب هستند (منطقه زمانی EST/PST)
    • بازارهای اروپا هنوز تجارت روزانه را آغاز نکرده اند
    • بازارهای آسیا فعالیت خود را به پایان می رسانند
    • فعالیت کلی شبکه در مقایسه با ساعات اوج 40-60 ٪ کاهش می یابد
  • تجزیه و تحلیل آماری الگوهای احتقان تاریخی سولانا این تجربه را نشان می دهد:

    • 78 ٪ نرخ خرابی معامله پایین تر
    • 55 ٪ سریعتر زمان تأیید بلوک
    • 92 ٪ کاهش در جنگ های پیشنهادی هزینه اولویت

دوره های احتقان پرخطر برای جلوگیری از

  • خطرناک ترین دوره برای عملیات تیرانداز با هم مطابقت دارد ساعت اوج بازار ایالات متحده (2 بعد از ظهر – 8 بعد از ظهر UTC) چه زمانی:

    • تجارت وال استریت با فعالیت بازار رمزنگاری همپوشانی دارد
    • قطره های اصلی NFT و پرتاب توکن برنامه ریزی شده است
    • مشارکت در بازرگانان خرده فروشی به طرز چشمگیری
  • در طول این ویندوز ، شبکه به طور مرتب تجربه می کند:

    • نرخ خرابی معاملات بیش از 35 ٪
    • هزینه های اولویت دار تا 50 برابر سطح عادی
    • تأخیر در تأیید 15+ بلوک
    • پاسخ گره RPC زمان تخریب 400-800ms

تکنیک های پیشرفته نظارت بر شبکه

اپراتورهای تک تیرانداز حرفه ای نظارت چند لایه را پیاده سازی می کنند:

  • ردیابی TPS در زمان واقعی از طریق Solana Beach/Explorer (زیر 2000 TPS = ایمن)

  • تجزیه و تحلیل عمق Mempool برای پیش بینی احتقان آینده

  • معیارهای سلامتی اعتبار سنج برای شناسایی نقاط استرس شبکه

  • به رسمیت شناختن الگوی تاریخی از وقایع احتقان مکرر

1.2.2 هزینه های اولویت بندی و بهینه سازی زیرساخت ها

استراتژی های تعدیل هزینه پویا

تنظیم زیرساخت های درجه یک

برای مبارزه با تأخیر ، استقرار عملیات حرفه ای:

  • گره های RPC خصوصی (Helius/QuickNode/Triton/Shyft)

    • نقاط پایانی توزیع شده جغرافیایی
    • تنظیمات متعادل بار
    • اتصالات معتبر اختصاصی
  • خوشه های پردازش معامله

    • استخرهای از پیش امضا شده TX
    • سیستم های ارسال موازی
    • مکانیسم های عدم موفقیت
  • بهینه سازی های سطح شبکه

    • تنظیم TCP سطح هسته
    • مسیرهای فیبر تاخیر زیر 1MS
    • استقرار سرور جمع شده

جنگ میلی ثانیه – بهینه سازی اجرای

جنگل تاریک سولانا
درک سلسله مراتب:

  • تک تیراندازهای لایه اول (اعدام 0-100ms)

  • داوران موج دوم (100-500ms)

  • خرده فروشی (1-3 ثانیه زمان تأخیر)

  • معامله گران دستی (10+ ثانیه – در حال حاضر خیلی دیر)

1.3 خطر و نحوه کاهش آنها

قبل از غواصی به پارامترهای ربات تیرانداز از خفا Solana ، بسیار مهم است که تشخیص دهیم که هیچ پیکربندی نمی تواند خطر را به طور کامل از بین ببرد. خواه از طریق کشش ، بهره برداری ، یا سایر تاکتیک های مخرب ، همیشه در حال پیمایش در آبهای خطرناک خواهید بود. در اینجا تجزیه و تحلیل تهدیدهای کلیدی – و اینکه چگونه می توانید آنها را کاهش دهید ، آورده شده است.

1.3.1 فرش کشیده و لانه ها

کشش فرش هنگامی اتفاق می افتد که یک استخر نقدینگی بدون سوزاندن نشانه های نقدینگی راه اندازی شود و به خالق اجازه می دهد تا در هر زمان وجوه را پس بگیرد. حتی اگر از فیلترها برای بررسی نقدینگی سوخته استفاده می کنید ، هنوز در برابر سوءاستفاده ها آسیب پذیر هستید.

یک نسخه پیچیده تر –لانه زن– هنگامی که خالق بدون ابطال مجوز انجماد (ممکن در Raydium v3) استخر را راه اندازی می کند ، استخر را راه اندازی می کند. آنها می توانند بلافاصله پس از راه اندازی نشانه را یخ بزنند و خریدهای Bot Bot شما را به هیچ وجه برای فروش به دام بیندازند.

کاهش

1.3.2 بهره برداری از طریق تیراندازی با بسته نرم افزاری

برخی از سازندگان از تیراندازی با بسته نرم افزاری استفاده می کنند ، نقدینگی و خرید را در همان معامله اضافه می کنند تا از اول بودن آنها اطمینان حاصل شود. حتی اگر نشانه های نقدینگی سوزانده شوند ، آنها عملکرد اولیه قیمت را کنترل می کنند-به معنای فروش سریع می تواند یک فرش را تقلید کند.

کاهش

1.3.3 رقابت BOT (جنگ های گازی)

هنگامی که بسیاری از ربات ها برای همان تجارت رقابت می کنند ، شبکه Solana می تواند احتقان شود و منجر به معاملات ناموفق ، هزینه های اولویت بالایی یا حتی جلو توسط ربات های تهاجمی تربشر از آنجا که Sniping به سرعت و دقت متکی است ، رقابت سنگین می تواند میزان موفقیت شما را به شدت کاهش دهد – یا به دلیل هزینه های بیش از حد گاز ، تیراندازی را کاملاً سودآور ایجاد کند.

کاهش

  • از RPC های خصوصی استفاده کنید: نقاط پایانی RPC عمومی اغلب از محدودیت های تأخیر و نرخ رنج می برند ، و RPC های خصوصی را برای کاهش تاخیر ضروری می کند.

  • تعدیل گاز پویا: به جای استفاده از هزینه اولویت ثابت ، الگوریتمی را اجرا کنید که گاز را بر اساس ازدحام شبکه در زمان واقعی و فعالیت رقیب رقیب تنظیم می کند.

  • شبیه سازی معامله: قبل از ارسال یک اسنپ کامل ، معامله را برای برآورد احتمال موفقیت و تنظیمات بهینه گاز شبیه سازی کنید.

  • از زمان اوج خودداری کنید: الگوهای احتقان تاریخی Solana را کنترل کنید و از تیراندازی در دوره های پر ترافیک خودداری کنید (به عنوان مثال ، راه اندازی اصلی توکن).

1.3.4 خرابی شبکه Solana

شبکه Solana به طور گاه به گاه شناخته شده است احتقان ، قطع یا عملکرد تخریب شده-به ویژه در دوره های پر تقاضا. اگر شبکه کند شود یا متوقف شود ، ربات تیرانداز از خفا شما ممکن است در انجام معاملات ، از دست دادن فرصت ها ، یا حتی با معاملات در انتظار گیر بیفتد.

کاهش

  • نقاط پایانی RPC Fallback: چندین ارائه دهنده RPC (به عنوان مثال ، RPC های خصوصی ، حق بیمه و پشتیبان گیری عمومی) را حفظ کنید تا در صورت عدم موفقیت ، به طور خودکار تعویض شوند.

  • نظارت بر شبکه در زمان واقعی: از ابزارهایی مانند Solana Beach ، Solscan یا اسکریپت های سفارشی برای تشخیص کندی شبکه و مکث در صورت لزوم استفاده کنید.

  • منطق امتحان مجدد معامله: برای انجام خرابی های موقت بدون اسپم کردن شبکه ، اقدامات هوشمندانه را با پشتوانه نمایی اجرا کنید.

  • گره اعتبار سنج محلی (پیشرفته): برای حداکثر قابلیت اطمینان ، اجرای گره معتبر Solana خود حداقل تأخیر و وابستگی به RPC های شخص ثالث را تضمین می کند.

1.3.5 لیست های سیاه و اقدامات ضد بوته

بسیاری از سازندگان توکن به طور فعال لیست های سیاه و سفید لیست سیاه یا مکانیسم هایی را برای مسدود کردن تک تیراندازهای خودکار اجرا کنید. برخی از پروژه ها حتی توکن ها یا محدودیت های انتقال را اعمال کنید پس از راه اندازی ، به دام انداختن نشانه های خریداری شده ربات و راهی برای فروش.

کاهش

  • کیف پول تازه برای هر اسنپ: از استفاده مجدد از کیف پول خودداری کنید. برای فرار از تشخیص ، آدرس های جدیدی برای هر تجارت ایجاد کنید.

  • هویت غیر متمرکز (DID) کلاهبرداری: برخی از رباتهای پیشرفته IP ها را می چرخانند و اثر انگشت معاملات را تغییر می دهند تا به عنوان کاربران مختلف ظاهر شوند.

  • تجزیه و تحلیل توکن قبل از سوپ: قبل از اجرای یک اسنپ ، بررسی کنید که آیا قرارداد توکن دارای:

    • ابطال یخ زدگی (از لانه ها جلوگیری می کند).
    • بدون عملکرد لیست سیاه (تضمین می کند که می توانید بفروشید).
    • بدون امتیاز مالک پنهان (خطر کشش فرش را کاهش می دهد).
  • معاملات آزمون کوچک: قبل از یک اسنپ کامل ، مبلغی کوچک را خریداری و بفروشید تا تأیید شود که نشانه قفل نشده است.

حتی با استراتژی های فوق العاده خطر غیرقابل اجتناب استبشر بهترین تک تیراندازها ترکیب می شوند چک های خودکار با بررسی دستی– به طور کامل به یک ربات اعتماد نکنید. همیشه فرض کنید که هر نشانه جدید می تواند یک کلاهبرداری باشد ، و هرگز بیش از آنچه که توانایی از دست دادن را دارید سرمایه گذاری نکنیدبشر



2 گوش دادن به پمپ. مهاجرت به Raydium

درک پمپ. مهاجرت توکن

توکن در پمپ. fun شروع به تجارت علیه a منحنی پیوند– فرمول ریاضی که قیمت توکن را بر اساس عرضه و تقاضا تعیین می کند. با این حال ، پس از برآورده شدن شرایط خاص ، نشانه “فارغ التحصیلان“” و مهاجرت می کند نقدینگی آن به Raydium dex.

  • یک نشانه به Raydium مهاجرت می کند:

    • منحنی پیوند به وضعیت تکمیل می رسد (ردیابی شده توسط complete پرچم در حالت منحنی)
    • این نشانه نقدینگی و حجم کافی را جمع کرده است
    • معامله مهاجرت توسط پروتکل اجرا می شود
  • پس از مهاجرت ، تجارت از مکانیسم منحنی پیوند به

    • مدل سنتی AMM (سازنده بازار خودکار) Raydium. این انتقال قابل توجه است زیرا:
    • مکانیک معاملاتی از منحنی پیوند به نقدینگی AMM قابل انعطاف تر می شود و توسط کاربران می توان اضافه و حذف کرد
    • این توکن برای اکوسیستم گسترده تر Raydium در دسترس می شود

TLDR:

  • توکن های Pump.Fun از یک منحنی پیوند شروع می کنند و بعداً برای معاملات سنتی AMM به Raydium مهاجرت می کنند.

  • از check_boding_curve_status.py اسکریپت برای دیدن اینکه آیا منحنی توکن هنوز فعال است یا تکمیل شده است یا خیر.

  • از listen_to_raydium_migration.py اسکریپت برای ردیابی رویدادهای مهاجرت زنده با رمزگشایی معاملات مربوط به زنجیره.

  • این ابزارها به شما در تطبیق استراتژی های معاملاتی کمک می کنند هنگامی که نشانه ها از منحنی پیوند پمپ. Fun به استخرهای نقدینگی Raydium حرکت می کنند.

مرحله 1: محیط تنظیم

  • بیایید کد خودمان را با استفاده از کد VS توسعه دهیم. بیایید فرض کنیم که شما نصب کرده اید Python (نسخه 3.8 یا بالاتر).
  • کلون مخزن GitHub Pump-Fun-Bot
  • کتابخانه ها را با استفاده از این دستور نصب کنید:
pip install -r requirements.txt
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • Node HTTP و نقاط پایانی WebSocket را در ارائه دهید config.py

مرحله 2: کد اصلی

2 پرونده اصلی برای گوش دادن به مهاجرت پمپ. fun به Raydium وجود دارد.

جدید check_boding_curve_status.py پرونده

import argparse
import asyncio
import os
import struct
import sys
from typing import Final

from construct import Flag, Int64ul, Struct
from solana.rpc.async_api import AsyncClient
from solders.pubkey import Pubkey

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from core.pubkeys import PumpAddresses

# Constants
EXPECTED_DISCRIMINATOR: Final[bytes] = struct.pack("", 6966180631402821399)

RPC_ENDPOINT = os.environ.get("SOLANA_NODE_RPC_ENDPOINT")


class BondingCurveState:
    _STRUCT = Struct(
        "virtual_token_reserves" / Int64ul,
        "virtual_sol_reserves" / Int64ul,
        "real_token_reserves" / Int64ul,
        "real_sol_reserves" / Int64ul,
        "token_total_supply" / Int64ul,
        "complete" / Flag,
    )

    def __init__(self, data: bytes) -> None:
        parsed = self._STRUCT.parse(data[8:])
        self.__dict__.update(parsed)


def get_associated_bonding_curve_address(
    mint: Pubkey, program_id: Pubkey
) -> tuple[Pubkey, int]:
    """
    Derives the associated bonding curve address for a given mint
    """
    return Pubkey.find_program_address([b"bonding-curve", bytes(mint)], program_id)


async def get_bonding_curve_state(
    conn: AsyncClient, curve_address: Pubkey
) -> BondingCurveState:
    response = await conn.get_account_info(curve_address, encoding="base64")
    if not response.value or not response.value.data:
        raise ValueError("Invalid curve state: No data")

    data = response.value.data
    if data[:8] != EXPECTED_DISCRIMINATOR:
        raise ValueError("Invalid curve state discriminator")

    return BondingCurveState(data)


async def check_token_status(mint_address: str) -> None:
    try:
        mint = Pubkey.from_string(mint_address)

        # Get the associated bonding curve address
        bonding_curve_address, bump = get_associated_bonding_curve_address(
            mint, PumpAddresses.PROGRAM
        )

        print("\nToken Status:")
        print("-" * 50)
        print(f"Token Mint:              {mint}")
        print(f"Associated Bonding Curve: {bonding_curve_address}")
        print(f"Bump Seed:               {bump}")
        print("-" * 50)

        # Check completion status
        async with AsyncClient(RPC_ENDPOINT) as client:
            try:
                curve_state = await get_bonding_curve_state(
                    client, bonding_curve_address
                )

                print("\nBonding Curve Status:")
                print("-" * 50)
                print(
                    f"Completion Status: {'Completed' if curve_state.complete else 'Not Completed'}"
                )
                if curve_state.complete:
                    print(
                        "\nNote: This bonding curve has completed and liquidity has been migrated to Raydium."
                    )
                print("-" * 50)

            except ValueError as e:
                print(f"\nError accessing bonding curve: {e}")

    except ValueError as e:
        print(f"\nError: Invalid address format - {e}")
    except Exception as e:
        print(f"\nUnexpected error: {e}")


def main():
    parser = argparse.ArgumentParser(description="Check token bonding curve status")
    parser.add_argument("mint_address", help="The token mint address")

    args = parser.parse_args()
    asyncio.run(check_token_status(args.mint_address))


if __name__ == "__main__":
    main()

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • در ترمینال ، این دستور را اجرا کنید:
python check_boding_curve_status.py TOKEN_ADDRESS
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تعویض کردن TOKEN_ADDRESS با آدرس Solana از نشانه هایی که می خواهید بررسی کنید. اسکریپت آدرس منحنی پیوند مرتبط را از آدرس نشانه ای که ارائه می دهید ، مشتق می کند و سپس یک getAccountInfo با منحنی پیوند تماس بگیرید.

جدید listen_to_raydium_migration.py پرونده

import asyncio
import json
import os
import sys

import websockets

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from core.pubkeys import PumpAddresses

WSS_ENDPOINT = os.environ.get("SOLANA_NODE_WSS_ENDPOINT")


def process_initialize2_transaction(data):
    """Process and decode an initialize2 transaction"""
    try:
        signature = data["transaction"]["signatures"][0]
        account_keys = data["transaction"]["message"]["accountKeys"]

        # Check raydium_amm_idl.json for the account keys
        # The token address is typically the 19th account (index 18)
        # The liquidity pool address is typically the 3rd account (index 2)
        if len(account_keys) > 18:
            token_address = account_keys[18]
            liquidity_address = account_keys[2]

            print(f"\nSignature: {signature}")
            print(f"Token Address: {token_address}")
            print(f"Liquidity Address: {liquidity_address}")
            print("=" * 50)
        else:
            print(f"\nError: Not enough account keys (found {len(account_keys)})")

    except Exception as e:
        print(f"\nError: {e!s}")


async def listen_for_events():
    while True:
        try:
            async with websockets.connect(WSS_ENDPOINT) as websocket:
                subscription_message = json.dumps(
                    {
                        "jsonrpc": "2.0",
                        "id": 1,
                        "method": "blockSubscribe",
                        "params": [
                            {
                                "mentionsAccountOrProgram": str(
                                    PumpAddresses.LIQUIDITY_MIGRATOR
                                )
                            },
                            {
                                "commitment": "confirmed",
                                "encoding": "json",
                                "showRewards": False,
                                "transactionDetails": "full",
                                "maxSupportedTransactionVersion": 0,
                            },
                        ],
                    }
                )

                await websocket.send(subscription_message)
                response = await websocket.recv()
                print(f"Subscription response: {response}")
                print("\nListening for Raydium pool initialization events...")

                while True:
                    try:
                        response = await asyncio.wait_for(websocket.recv(), timeout=30)
                        data = json.loads(response)

                        if "method" in data and data["method"] == "blockNotification":
                            if "params" in data and "result" in data["params"]:
                                block_data = data["params"]["result"]
                                if (
                                    "value" in block_data
                                    and "block" in block_data["value"]
                                ):
                                    block = block_data["value"]["block"]
                                    if "transactions" in block:
                                        for tx in block["transactions"]:
                                            logs = tx.get("meta", {}).get(
                                                "logMessages", []
                                            )

                                            # Check for initialize2 instruction
                                            for log in logs:
                                                if (
                                                    "Program log: initialize2: InitializeInstruction2"
                                                    in log
                                                ):
                                                    print(
                                                        "Found initialize2 instruction!"
                                                    )
                                                    process_initialize2_transaction(tx)
                                                    break

                    except TimeoutError:
                        print("\nChecking connection...")
                        print("Connection alive")
                        continue

        except Exception as e:
            print(f"\nConnection error: {e!s}")
            print("Retrying in 5 seconds...")
            await asyncio.sleep(5)


if __name__ == "__main__":
    asyncio.run(listen_for_events())

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در listen_to_raydium_migration.py اسکریپت از اشتراک های WebSocket برای نظارت بر مهاجرت در زمان واقعی توکن از Pump.fun به Raydium Dex استفاده می کند.

حساب مهاجرت پمپ. 39azuyfwpz3vhgkcf3vchuwbpurdchrxjwvowf5jujgg است.

  • در ترمینال ، این دستور را اجرا کنید:
python listen_to_raydium_migration.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این حساب است که – با وضعیت تکمیل منحنی پیوند توکن – نشانه را به استخر AMM Raydium با نقدینگی توکن اضافه می کند. این اساساً مهاجرت نشانه ای از پمپ. fun به Raydium را تشکیل می دهد.

این اسکریپت از آن استفاده می کند blockSubscribe | Solana با گوش دادن به کلیه معاملات مربوط به حساب مهاجرت ، روش از طریق WebSocket 39azUYFWPz3VHgKCf3VChUwbpURdCHRxjWVowf5jUJjg، سپس معاملات را با استفاده از Raydium IDL رمزگشایی می کند raydium_amm_idl.json این نیز در مخزن است. پس از رمزگشایی داده ها ، آنچه را که ما در واقع به آن نیاز داریم چاپ می کند – آدرس نشانه پمپ. fun که مهاجرت کرده است و آدرس استخر نقدینگی جدید برای این نشانه در Raydium.



3 پلت فرم ربات معاملات یکپارچه Solana

پلتفرم ربات تجارت Solana

من از معرفی پلت فرم یکپارچه تجارت Solana Trading Bot ، محصولی از نوآوری و تخصص فنی تیم ما هیجان زده ام.

ما متشکل از توسعه دهندگان ماهر و فصلی ، ما چندین ربات تجارت با کارایی بالا را توسعه داده ایم و آنها را از طریق یک بستر یکپارچه نشان داده ایم-هم قابلیت های فنی آنها و هم در دسترس بودن کاربر.

در حالی که این پروژه هنوز در مراحل اولیه خود است ، من مشتاق هستم که آن را با خوانندگانی که در پنج مقاله گذشته از کار من پیروی کرده اند ، به اشتراک بگذارم. بازخورد ، بینش و انتقادات سازنده شما بسیار ارزشمند است زیرا ما این سیستم عامل را اصلاح و تکامل می دهیم.



اگر مقاله من را دوست دارید ، لطفاً مرا در GitHub دنبال کنید.

مرا دنبال کن


– اگر هرگونه سؤال یا نظر در مورد این پست دارید ، لطفاً در هر زمان با من تماس بگیرید.


اطلاعات تماس من

گیمیل: saivietthanh0314@gmail.com
تلگرام

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا