مبادلة توكنات TON غير الاحتجازية عبر وكيل ذكاء اصطناعي
كيف ينفّذ وكيل الذكاء الاصطناعي مبادلة توكنات غير احتجازية على TON: أداتا get_swap_quote وbuild_swap_tx عبر Omniston، دون أن يلمس الخادم مفاتيحك الخاصة.
من يحتفظ بالمفتاح — السؤال الأهم في مبادلة التوكنات غير الاحتجازية على TON عبر وكيل
تخيّل أنك تكلّف وكيل ذكاء اصطناعي بمراقبة السعر، وحين يهبط USDT يشتري المزيد منه مقابل GRAM. يقيّم الوكيل السوق، ويلتقط اللحظة المناسبة، ويجهّز الصفقة — وهنا يطفو على السطح سؤال لا يُتذكَّر عادةً إلا بعد فوات الأوان. لكي ينفّذ الوكيل المبادلة فعليًا، لا بد أن يوقّع أحدهم المعاملة بمفتاح خاص. فمن يحتفظ بهذا المفتاح؟
إذا كان الجواب «الخدمة التي يعمل الوكيل من خلالها»، فأنت قد منحت شفرة برمجية ليست لك حقّ التصرف بأموالك. تكفي حقنة أوامر (prompt injection) واحدة، أو تسريب سجلّ واحد، ليوقّع الوكيل شيئًا غير الذي كنت تظنه. والمشكلة هنا ليست «كيف نستدعي منصة DEX»، بل كيف نترك للوكيل تجهيز الصفقة مع إبقاء التوقيع حكرًا على محفظة الإنسان. فيما يلي نستعرض كيف تتم مبادلة توكنات TON عبر وكيل بصورة غير احتجازية.
جزءا المبادلة: الحساب آمن، والتوقيع ليس كذلك
للمبادلة على منصة DEX جزءان مختلفان جوهريًا. الأول حسابي وآمن: معرفة السعر، وحساب الانزلاق السعري، وتجميع جسم المعاملة. الثاني لا رجعة فيه وخطِر: توقيع هذا الجسم بالمفتاح الخاص وإرساله إلى الشبكة. ومن هنا يبدأ الافتراق:
- النموذج الاحتجازي. يحتفظ الوكيل (أو الخادم الذي خلفه) بالمفتاح ويوقّع بنفسه. مريح — فالوكيل يتصرف باستقلالية. لكن مفتاح التوقيع يصبح جارًا لنموذج لغوي، والنموذج اللغوي كيان غير حتمي يمكن إقناعه بنصّ غير موثوق (أوصاف الجيتونات، وردود أدوات أخرى، ورسائل المستخدم). هكذا يعمل مثلًا
@ton/mcpالرسمي من TON Foundation: فهو محفظة-وكيل بمفتاح مشغّل (operator) يوقّع عمليات الإرسال والمبادلة بنفسه (نظام split-key: مفتاح المشغّل لدى الوكيل، ومفتاح المالك لدى المستخدم). النموذج يعمل وله نقاط قوة — الإنفاق المستقل، والتعامل مع NFT وDNS، وصفة الحزمة الرسمية. لكنه في جوهره ثقة بمن يحمل المفتاح. - النموذج غير الاحتجازي. الخادم يجهّز المعاملة فقط ويعيدها دون توقيع. التوقيع تضعه محفظة المستخدم عبر TonConnect. الخادم لا يرى المفتاح الخاص ولا يخزّنه إطلاقًا.
بالنسبة إلى وكيل تداول يعمل على مدار الساعة، يزيل النموذج الثاني الخطر الأكبر: حتى لو اختُرقت البنية التحتية، فأقصى ما «يفسد» هو مسوّدة غير موقّعة، وأنت تؤكّدها يدويًا أو وفق سياسة محفظتك على أي حال. هذا الافتراق مشروح بتفصيل أكبر في المقارنة الصريحة بين TONNode و@ton/mcp الرسمي.
نموذج TONNode غير الاحتجازي: الخادم يعيد معاملة غير موقّعة
TONNode هو خادم MCP مُستضاف لشبكة TON. وMCP (Model Context Protocol) هو المعيار الذي يستدعي عبره وكلاء الذكاء الاصطناعي (Claude وCursor وChatGPT/Codex وأي عميل MCP) أدوات خارجية. يمنح TONNode الوكيل 16 أداة للعمل مع TON، وأدوات المبادلة والعمليات عبر السلاسل وتوليد المحفظة غير احتجازية بصرامة.
الثابت الأساسي: الخادم لا يوقّع ولا يحتفظ بالأموال ولا بالمفاتيح الخاصة أبدًا. وفي حالة المبادلة يعني هذا أن الأداة النهائية لا تعيد «صفقة منفَّذة»، بل رسالة TonConnect غير موقّعة — كائنًا جاهزًا للتوقيع. ولا يستطيع الخادم فيزيائيًا استبدال متلقّي الأموال بعد التوقيع، ببساطة لأنه لا يملك التوقيع.
المبادلة في TONNode أداتان بالضبط:
get_swap_quote— عرض سعر مؤكَّد،build_swap_tx— معاملة غير موقّعة جاهزة لـ TonConnect.
كلتاهما تعملان عبر بروتوكول Omniston الذي يجمّع سيولة STON.fi وDeDust في آنٍ واحد — فيُحسب عرض السعر على المنصتين معًا وتحصل أنت على الأفضل من بينهما. وتجري المبادلة في أزواج GRAM⇄جيتون. وGRAM هو Toncoin بعد إعادة تسميته (تمّت في يونيو 2026)؛ أما الشبكة نفسها فما زالت تُسمّى TON. أي أن «GRAM» في عرض السعر هي العملة الأصلية للشبكة.
get_swap_quote: عرض سعر مؤكَّد عبر Omniston (STON.fi + DeDust)
الخطوة الأولى هي معرفة ما ستحصل عليه فعليًا. تعيد get_swap_quote عرض سعر مؤكَّدًا: المبلغ المتوقع عند المخرج وسعر الصرف. وبما أن Omniston يستعلم في الخلفية من STON.fi وDeDust في الوقت نفسه، فلا حاجة إلى أن يجول الوكيل بين المجمّعات ويقارن يدويًا — فهو يرى النتيجة المجمّعة جاهزة.
احصل على عرض سعر لمبادلة 100 USDT → GRAM.
استخدم get_swap_quote. أظهر المبلغ المتوقع وسعر الصرف.
وهناك تفصيل مهم يجعل عروض الأسعار تُحسب خطأً في كثير من الأحيان: عرض السعر يتعامل مع الوحدات الخام (raw) — أي أصغر أجزاء التوكن غير القابلة للتجزئة — لا مع الأرقام «البشرية». لذلك قبل حساب مبلغ مبادلة أي جيتون، لا بد من معرفة قيمة decimals الخاصة به.
get_jetton_info: لماذا تحتاج إلى decimals قبل المبادلة (USDT = 6)
هذا هو الخطأ النموذجي الذي يُفسد عمليات المبادلة: يأخذ الوكيل «100 USDT» ويضع 100 في حقل المبلغ. لكن الجيتون على السلسلة لا يعرف شيئًا اسمه «100» — لا وجود إلا للوحدات الخام. وعدد الوحدات الخام في التوكن الواحد يحدّده معامل decimals، ويُحسب المبلغ بالصيغة الكمية × 10^decimals.
- USDT على TON قيمته
decimals = 6← أي أن 100 USDT تساوي100 × 10^6 = 100 000 000وحدة خام. - معظم الجيتونات قيمتها
decimals = 9← أي أن 100 توكن تساوي100 000 000 000وحدة خام.
وإذا أضفت ببساطة تسعة أصفار إلى «100 USDT» (كما هي الحال مع GRAM)، فستطلب مبادلة بمبلغ أكبر 1000 مرة مما قصدت. الخطأ بمقدار ثلاث مراتب عشرية هنا سهل جدًا. لذلك فإن get_jetton_info خطوة إلزامية: فهي تعيد اسم الجيتون ورمزه وdecimals وإصداره.
قبل المبادلة اعرف decimals للجيتون المُدخَل عبر get_jetton_info،
وبعد ذلك فقط احسب المبلغ بالوحدات الخام.
وقد تناولنا هذا الموضوع بعمق أكبر في مقال ربط وكلاء الذكاء الاصطناعي بشبكة TON عبر MCP.
أدوات مساعدة: parse_address وget_jetton_balance
وهناك أداتان مساعدتان يُستحسن استدعاؤهما قبل تجميع المعاملة:
parse_address— تحقّق من العنوان وتحويله دون اتصال بالشبكة (EQ/UQ/raw). تأمين رخيص ضد خطأ مطبعي في عنوان الجيتون أو المستلِم قبل أن تبدأ بتجميع أي شيء.get_jetton_balance— رصيد الجيتون انطلاقًا من العنوان الرئيسي للمحفظة. فعنوان محفظة الجيتون اللازم للرصيد يُحسب على السلسلة داخل الأداة نفسها، ولذلك يجب تمرير العنوان الرئيسي لا عنوان محفظة الجيتون. والخطأ الشائع هو تمرير عنوان محفظة الجيتون؛ لا داعي لذلك، أعطِها العنوان الرئيسي.
build_swap_tx: رسالة غير موقّعة لـ TonConnect
بعد الحصول على عرض السعر وحساب المبالغ بالوحدات الخام الصحيحة، تتولى build_swap_tx تجميع المعاملة نفسها. وهنا يكمن جوهر النموذج غير الاحتجازي: الأداة تعيد رسالة TonConnect غير موقّعة. ليست صفقة مُرسَلة، بل مسوّدة: عنوان العقد، والمبلغ، وحمولة البيانات (payload). لقد سلّمك الخادم «الظرف» لكنه لم يختمه — الختم (التوقيع) تضعه محفظتك أنت.
بعدها تذهب الرسالة إلى محفظة متوافقة مع TonConnect (مثل Tonkeeper وغيرها)، فيرى المستخدم بالضبط ما الذي يوقّع عليه ثم يؤكّده. والمفتاح الخاص لا يغادر المحفظة في أي خطوة ولا يصل إلى خادم TONNode إطلاقًا.
جمّع معاملة المبادلة بناءً على آخر عرض سعر عبر build_swap_tx.
أعد لي رسالة TonConnect غير الموقّعة — سأوقّعها أنا في محفظتي.
التدفق الكامل: من عرض السعر إلى التوقيع في المحفظة
التسلسل النموذجي لمبادلة جيتون يبدو هكذا:
parse_address— التحقق من عنوان الجيتون والمستلِم وتوحيد صيغته (دون اتصال).get_jetton_info— معرفةdecimals(لـ USDT هي 6، وغالبًا 9) والاسم والرمز.get_jetton_balance— التأكد من كفاية الرصيد (العنوان الرئيسي، لا محفظة الجيتون).get_swap_quote— الحصول على عرض سعر مؤكَّد عبر Omniston (STON.fi + DeDust).build_swap_tx— تجميع معاملة TonConnect غير الموقّعة.- محفظة المستخدم توقّع عبر TonConnect — التوقيع يبقى في جانب المستخدم.
وعلى مستوى الأمر الموجَّه إلى الوكيل، يبدو الأمر طبيعيًا هكذا:
أريد مبادلة 50 GRAM بـ USDT.
أولًا تحقّق من عنوان جيتون USDT عبر parse_address،
واعرف قيمة decimals عبر get_jetton_info،
وتحقّق من الرصيد عبر get_jetton_balance،
ثم خذ عرض السعر بـ get_swap_quote وجمّع المعاملة بـ build_swap_tx.
لا ترسل المعاملة — أعد لي الرسالة غير الموقّعة الخاصة بـ TonConnect.
سيفكّك الوكيل هذا بنفسه إلى استدعاءات أدوات، وستحصل في النهاية على مسوّدة توقّعها في محفظتك. وانتبه إلى نقطة: الخطوة الأخيرة ليست أداة من أدوات TONNode. فالتوقيع تنفّذه المحفظة، وهنا بالضبط يمرّ الخط الفاصل للنموذج غير الاحتجازي. وإذا كنت تبني وكيل تداول متكاملًا، فاطّلع على تحليل التأخيرات وزمن الاستجابة في التداول على TON — فهناك يندمج هذا التدفق داخل دورة اتخاذ القرار. أما للصفقات خارج TON فلدى TONNode خمس أدوات غير احتجازية للعمل عبر السلاسل قائمة على ضمان HTLC الذرّي.
كيف تربط أدوات المبادلة بـ Claude أو Cursor أو ChatGPT
أدوات المبادلة متاحة في جميع الخطط، بما فيها Hobby المجانية (60 طلبًا/دقيقة) — وHobby مفتاح مُستضاف أيضًا. أنت تدفع مقابل سعة التمرير فقط، أما مجموعة الأدوات الـ16 فهي واحدة على كل المفاتيح.
محليًا ومجانًا — للقراءة. حزمة @tonnode/mcp مفتوحة المصدر (رخصة MIT)، وتعمل عبر بروتوكول ADNL الأصلي لشبكة TON دون طبقات HTTP وسيطة، وتُشغَّل بأمر واحد. الإعداد العام يمنحك مجموعة أدوات القراءة كاملة:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
النقطة الطرفية المُستضافة — للمبادلة وكل ما تبقّى. مفتاحك الخاص (تكفي خطة Hobby المجانية)، وسعة تمرير مضمونة، والأدوات الـ16 كلها بما فيها get_swap_quote وbuild_swap_tx:
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
يوضَع هذا الإعداد في إعدادات MCP لدى عميلك — Claude Desktop أو Cursor أو ChatGPT/Codex أو أي وكيل آخر متوافق مع MCP. وبعد ربط المفتاح المُستضاف تظهر أداتا get_swap_quote وbuild_swap_tx لدى الوكيل تلقائيًا. ويُصدَر المفتاح tn_live_… فور تسجيل الدخول، دون بطاقة بنكية.
الخلاصة في سطور
- المبادلة في TONNode أداتان:
get_swap_quote(عرض سعر مؤكَّد) وbuild_swap_tx(معاملة غير موقّعة لـ TonConnect). - كلتاهما تمرّان عبر Omniston — مُجمِّع سيولة STON.fi وDeDust.
- التوقيع دائمًا بيد المستخدم. الخادم لا يخزّن المفاتيح ولا يوقّع بها — بخلاف
@ton/mcpالرسمي الاحتجازي. - قبل مبادلة أي جيتون اعرف قيمة
decimalsعبرget_jetton_info(USDT = 6، والأغلبية = 9)، وإلا حُسب المبلغ بالوحدات الخام خطأً. - أدوات المبادلة تعمل على أي مفتاح مُستضاف، بما في ذلك Hobby المجاني.
المبادلة غير الاحتجازية على TON بالنسبة إلى وكيل هي انضباط في فصل الأدوار: الخادم يحسب ويجمّع، والمحفظة توقّع. وفي TONNode يتحقق ذلك بأداتين اثنتين فوق Omniston، إضافة إلى get_jetton_info لضبط قيمة decimals — ولا يغادر أي مفتاح خاص يد المستخدم.
أسهل طريقة للبدء هي المفتاح المجاني. احصل على مفتاح Hobby دون بطاقة بنكية واربط أدوات المبادلة في دقيقتين: tonnode.io/dashboard?plan=hobby. وإن أردت أولًا الاطلاع على مجموعة الأدوات كاملة، فزُر صفحة الأدوات.
امنح وكيلك الوصول إلى TON
16 أداة MCP: قراءة ومبادلات غير وصائية وعبر السلاسل ومحافظ. الباقة المجانية — 60 طلب/دقيقة، بلا بطاقة.