اگر یک ارائهدهنده API هستید، غیبت نام شما در کاتالوگهای اکتشافی بهمعنای از دست دادن مستقیم فروش است. تیم ScrapeMole، ارائهدهنده APIهای پرداخت-به-ازای-فراخوانی (pay-per-call) برای پروتکل x402، بهتازگی باگی بحرانی را کشف کرد که باعث میشد نقاط انتهایی فعال آنها در شبکه اصلی Base برای خریداران نامرئی بمانند، حتی وقتی پرداختها با موفقیت انجام شده بود.
علائم مشکل
این مشکل زمانی رخ داد که نقاط انتهایی ScrapeMole حدود یک روز بود که روی شبکه اصلی Base فعال شده بودند. طبق گزارش این تیم، کیفپولهای واقعی خارجی ۱۸ فراخوانی را پرداخت کرده بودند و هر یک از این تراکنشها از طریق تسهیلکننده PayAI تسویه شده بود. همچنین، هر پاسخ ۴۰۲ ارسالی از سمت سرور، حاوی یک اعلان معتبر extensions.bazaar بود. با این حال، هنگام استعلام کاتالوگ عمومی تسهیلکننده از طریق دستور curl "https://facilitator.payai.network/discovery/resources?payTo=0xYOUR_PAY_TO&limit=100"، نتیجه صفر مورد بود. در حالی که در مقابل، نقاط انتهایی آنها در شبکه تست (testnet) بهطور عادی در کاتالوگ نمایش داده میشدند.
این اتفاق به دلیل نحوه فهرستبندی منابع توسط تسهیلکنندگانی مثل PayAI رخ میدهد. این کاتالوگها برخلاف خزندههای وب سنتی، پاسخهای ۴۰۲ را اسکن نمیکنند؛ بلکه فقط اعلان اکتشافی موجود در محموله (payload) پرداختی را که به نقاط انتهایی /verify یا /settle ارسال میشود، فهرست میکنند. همانطور که در تحلیلهای قبلی ما درباره امنیت مدلهای بازمتن اشاره کردیم، تضاد بین استانداردهای تئوری و پیادهسازیهای عملی اغلب منجر به چنین حفرههایی میشود.
در مشخصات x402 v2، مسئولیت کپی کردن افزونهها و دادههای منبع از پاسخ ۴۰۲ سرور به داخل محموله پرداخت بر عهده کلاینت خریدار است. اما در دنیای واقعی، بسیاری از کلاینتهای خریدار در انجام این کار شکست میخورند. این بدان معناست که یک فروشنده میتواند دهها تسویه حساب موفق داشته باشد اما در کاتالوگ عمومی کاملاً غایب بماند. نقاط انتهایی ScrapeMole در شبکه تست فقط به این دلیل لیست شده بودند که کلاینت تست داخلی آنها از پوشش رسمی @x402/fetch استفاده میکرد که این افزونه را بهدرستی بازمیگرداند (echo میکند).
شکاف فنی
به نقل از مستندات PayAI، تسویه حساب موفق بهتنهایی برای فهرست شدن کافی نیست و محموله باید صراحتاً افزونه bazaar را حمل کند. برای کمک به توسعهدهندگان در عیبیابی این وضعیت، نقاط انتهایی /verify و /settle اکنون یک هدر EXTENSION-RESPONSES با سه وضعیت احتمالی بازمیگردانند:
{"bazaar":{"status":"processing"}}: محموله دریافت شد و در صف فهرستبندی است.{"bazaar":{"status":"rejected",...}}: محموله دریافت شد اما اعتبارسنجی آن شکست خورد.- نبود هدر: محموله بهطور کلی فاقد افزونه bazaar بود.
راهکار «خالص-صفر»
برای اجبار به فهرست شدن بدون صرف هزینه، فروشندگان میتوانند یک پرداخت از کیفپول دریافتکننده خود به خودش امضا کنند. این یک تراکنش «خالص-صفر» (net-zero) است. با ارسال این محموله به نقطه انتهایی /verify — و بهطور مشخص اجتناب از ارسال به /settle — منبع پس از آنکه پروب (probe) فقط-خواندنیِ تسهیلکننده تأیید کرد که URL پاسخ ۴۰۲ میدهد، وارد کاتالوگ میشود.
ScrapeMole این روش را روی ۴۰ نقطه انتهایی GET در شبکه اصلی اجرا کرد. طبق اعلام آنها، تمام این موارد وضعیت processing گرفتند و ظرف یک دقیقه با موفقیت فهرست شدند. تنها شرط این است که کیفپول موجودی USDC کافی داشته باشد تا بررسی /verify مقدار isValid: true را گزارش کند.
زمینه اکوسیستم
این کشف نشاندهنده یک اکوسیستم تکهتکه است که در آن هر تسهیلکننده سیلو (silo) مخصوص به خود را دارد. فهرست شدن در PayAI تضمینی برای دیده شدن در بازار Coinbase CDP نیست، زیرا دومی فقط محمولههایی را میبیند که از طریق زیرساخت خودش تسویه شدهاند.
بررسی فعالیت کیفپولها در Basescan نشان داد که دو کیفپولی که به ScrapeMole پرداخت کرده بودند، احتمالاً متعلق به یک اپراتور واحد برای اجرای یک عامل پژوهشی (research agent) بودهاند. هر دو کیفپول در همان دقایق، به چندین فروشنده x402 دیگر، عمدتاً از طریق تسهیلکننده Coinbase، پرداخت کرده بودند. این موضوع ثابت میکند که خریداران بین کاتالوگهای مختلف جستوجو میکنند و غیبت در یکی، یک ضرر واقعی در فروش است، نه یک نقص ظاهری.
برای توسعهدهندگان، اکتشاف یک فرآیند «تنظیم کن و فراموش کن» نیست. شما باید هر بار که مسیرهای (routes) جدیدی به سرویس خود اضافه میکنید، مرحله verify را بهصورت دستی فعال کنید تا توسط عاملهای پژوهشی و خریداران خودکار قابل شناسایی باشند. همچنین بهروزرسانیهای پوشش @x402/fetch را دنبال کنید، زیرا استفاده از کتابخانههای رسمی کلاینت در حال حاضر تنها راه قابل اعتماد برای اطمینان از این است که خریداران بهطور خودکار افزونههای لازم را بازمیگردانند.
گام بعدی شما
- اگر از x402 استفاده میکنید، وضعیت فهرست شدن نقاط انتهایی خود را با دستور curl در کاتالوگ PayAI بررسی کنید.
- برای هر Route جدید، از ترفند تراکنش خالص-صفر برای ثبت سریع در کاتالوگ استفاده کنید.
- حتماً از کتابخانه رسمی
@x402/fetchدر کلاینتهای خود استفاده کنید تا احتمال خطای خریداران کاهش یابد.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو