Sound of AVM يطلق الإصدار 0.9.0 ويحوّل مجمّع معاملات Algorand المباشر إلى موسيقى داخل المتصفح
Sound of AVM، أداة مفتوحة المصدر تحوّل مجمّع معاملات Algorand إلى صوت، تصدر الإصدار 0.9.0: بثّ gossip من Nodely بلا مفاتيح يحلّ محلّ الاستقصاء الدوري، تصوّرات بصرية جديدة، وإمكانية سكّ الإعدادات المسبقة على السلسلة كرموز غير قابلة للاستبدال بمعيار ARC-3.
شبكة تستطيع سماعها
تُسدّد Algorand كتلة جديدة كل بضع ثوانٍ، وكل كتلة منها توثّق ما فعله الشبكة للتوّ — دفعة عملة مستقرة، أو تحويل أصل، أو نداء عقد ذكي. ومعظم الناس يتابعون هذا النشاط في صورة جداول متدحرجة من البصمات على مستكشف الكتل. أما Sound of AVM1 فيستمع بدلًا من ذلك: مُركّب صوتي داخل المتصفح يحوّل النشاط المباشر على السلسلة إلى موسيقى، فتبدو الشبكة المزدحمة كغرفة مزدحمة، والهادئة كصمت تتخلله نغمة عابرة. ووصفه الذاتي هو الأدقّ بين الأوصاف: «لا شيء مسجّل مسبقًا؛ فإن سمعت نغمة، فمعاملة وقعت للتوّ».
يقرأ التطبيق مجمّع المعاملات — رصيد المعاملات غير المؤكدة التي تنتظر الكتلة التالية — لا سجل الكتل، فيلتقط المعاملات لحظة انتشارها وقبل تسويتها. وكل آلة موسيقية هنا هي بطاقة مُركّب صوتي تقرن قاعدة تحدّد المعاملات التي تعنيها بصوت يُعزف عند وصول إحداها. وفي 26 يوليو 2026 أطلق المشروع الإصدار 0.9.0، أول إصدار مرقّم له؛ ويقدّم دليله داخل التطبيق أسرع طريقة للانطلاق: حمّل إعدادًا مسبقًا، واضغط Start، ويوقف شريط المسافة الموسيقى ويشغّلها من أي موضع في الصفحة.
مُركّب صوتي واحد لكل نوع من المعاملات
أول خيار يتخذه المُركّب الصوتي هو نوع المعاملة التي يصغي إليها. ومجموعة معاملات Algorand الكاملة معروضة في القائمة — pay و axfer و appl و acfg و keyreg و afrz و stpf و hb و group و block — ويمكن تضييق نطاق كل منها عبر أنواع فرعية. فمُركّب pay يمكنه الترشيح حسب المبلغ أو المرسل أو المستلم؛ ومُركّب axfer يضيف معرّف الأصل، والاشتراك، وإلغاء الاشتراك، والاسترداد القسري; ومُركّب appl يمكنه مراقبة تطبيق بعينه. وهنا يصبح الترشيح دقيقًا إلى حدّ الجراحة:
| المفهوم | الأثر في العالم الواقعي |
|---|---|
| pay — مدفوعات ALGO العادية | نطاق المبلغ يحوّل الصوت إلى كاشف للحيتان: نغمة عميقة لا تُسمع إلا حين يتجاوز الدفع، مثلًا، 5,000 ALGO. |
| axfer — تحويلات الأصول | صناديق الأصول تبحث بالاسم كما بالمعرّف، فيكفي كتابة 'USDC' ليجعل صوتًا واحدًا يُعزف فقط عند تحرّك ذلك الرمز. |
| appl — نداءات العقود الذكية | تتبّع تطبيقًا واحدًا، أو الأصول والحسابات الأجنبية التي تلمسها نداءاته، من دون قراءة سجلات المعاملات. |
| group — المعاملات المجمّعة | اقرن مُركّبًا صوتيًا بـ group لالتقاط مبادلة رمز على DEX، فالمبادلة مجموعة ذرّية لا معاملة مفردة. |
| block — نغمة واحدة لكل كتلة | قسم الإيقاع: صوت يُطلق مرة واحدة في كل جولة موثّقة، فيمنح كل ما عداه نبضة ثابتة. |
وما تبقّى هو تصميم صوتي. وخمسة محرّكات Tone.js2 تقف خلف الأصوات — مُركّب أحادي الصوت لنغمات قصيرة إيقاعية؛ ومُركّب أحادي بمرشّحه الخاص لخطوط الباس؛ ومُركّب متعدد الأصوات لطبقات متراكبة؛ ونسختان بنمطَي AM وFM لطوابع معدنية أو جرسية. ويتقدّم مُسلسِل من ثماني خطوات مع المعاملات لا مع ساعة، فإيقاع اللازمة هو إيقاع الشبكة: سلسلة مزدحمة، لازمة سريعة. ويقدّم الدليل النغمة كتأليف — «ضع أكثر أنواع المعاملات ازدحامًا في الأسفل وأندرها في الأعلى، فتحصل على الباس واللحن مجانًا». وحين يُستدعى مُركّب صوتي أسرع من حدّه الأقصى، يتحدد المصير بخيار Mode: فـ Single يُسقط الفائض، بينما Aggr يدمج الانفجار في نغمة واحدة أطول وأعلى.
من الاستقصاء الدوري إلى بثّ مباشر
بدأ المشروع في Algorand Dev Retreat at Home كنموذج أولي بـ HTML وJavaScript خالصين، وُلد من ملاحظة مفادها أن تدفّق معاملات أي سلسلة ضرب من الإيقاع. وكان ذلك الإصدار الأول يستقصي المعاملات المعلّقة كل 50 ميلي ثانية عبر واجهة AlgoNode العامة أو عقدة شخصية، ويرسل النتائج إلى Tone.js، ويطلب من المستخدمين الرفق بالواجهة المجانية. أما وصل عقدة شخصية فكان يقتضي تعديل ترويسة CORS في إعدادات العقدة. وقد عمل الأمر، لكن بتحفّظات — إذ كانت دقة الجدولة رهينة فترة الاستقصاء، وجعلت حدود معدّل الواجهة منه لعبة لا أداة مراقبة.
يستبدل الإصدار 0.9.0 طبقة البيانات بأكملها. فبدل الاستقصاء الدوري، يفتح التطبيق اتصال WebSocket مع بوابة gossip للشبكة الرئيسية لدى Nodely3 ويفكّ ترميز المعاملات الموقّعة داخل المتصفح لحظة بثّها عبر المرحّلات. والكود صريح في المقايضة التي يجريها: «كل معاملة تصل لحظة انتشارها، بوقت وصولها الحقيقي — لا استقصاء، ولا عدّ فروقات، ولا رموز وصول».
| المفهوم | الأثر في العالم الواقعي |
|---|---|
| النموذج الأولي: استقصاء كل 50 ميلي ثانية لواجهة عامة | تصل النغمات مُكمَّمة على فترة الاستقصاء، وقدّر المشروع أن حدود الطبقة المجانية تحصر الاستماع المتواصل في نحو خمس ساعات. |
| الإصدار 0.9.0: اتصال WebSocket مع Nodely بلا مفاتيح | تُطلق النغمة لحظة انتشار المعاملة إلى المرحّلات، من دون مفتاح API ومن دون حاجة إلى عقدة محلية. |
| تخزين مؤقت للمجموعات الذرّية (نحو 300 ميلي ثانية) | تُجمع أعضاء المعاملة المجمّعة وتُفرَّغ كحدث واحد، فتبدو المبادلة إيماءة واحدة لا تلعثمًا. |
هذه التفصيلة الأخيرة تهمّ المستمع بقدر ما تهمّ التوليف الصوتي: إذ يطبّق العميل شريحة من بروتوكول النقل الخاص بمرحّلات Algorand داخل المتصفح، فيشترك في وسم رسالة المعاملة، ويفكّ ترميز حمولات msgpack الخاصة بها، ويحتفظ في ذاكرته بالمعاملات التي رآها حديثًا عبر جيلين حتى لا تؤدي إعادة بثّ المرحّلات إلى تشغيل النغمة مرتين.
إعدادات مسبقة يمكنك سكّها على السلسلة
التخطيطات قابلة للنقل. والإعداد المسبق ملف JSON يصف كل مُركّب صوتي وإعداد فيه، ويُحفظ محليًا أو يُصدَّر للمشاركة؛ كما يشفّر الإصدار 0.9.0 الإعدادات المسبقة ورموزها المسكوكة في شريط العنوان، فيكفي رابط لتمرير صوت. أما زر المحفظة فموجود لسبب واحد: سكّ إعداد مسبق على السلسلة باسم «NFPreset».
يستحقّ هذا الميكانيزم تفكيكًا لأنه يستعين مباشرة بآليات الرموز الأصلية في Algorand. فشبكة Algorand تُصدر أصولًا — تُعرف بـ ASA — من دون حاجة إلى عقد ذكي، وARC-3 هو العُرف المتّبع للرموز غير القابلة للاستبدال فيما بينها: إذ يشير رابط الأصل إلى بيانات وصفية بصيغة JSON مستضافة على IPFS، معلّمة بلاحقة '#arc3'. وNFPreset هو ASA تُدرج بياناته الوصفية على IPFS الإعداد المسبق في صورة سلسلة base64 مضغوطة ضمن خصائصه. وتحميل أحدها يعني جلب البيانات الوصفية للأصل من المفهرس، وإحضار الملف من IPFS، ثم فكّ ترميزه عائدًا إلى أصوات. وتصف خارطة الطريق السكّ كمعاملة واحدة لإنشاء أصل موقّعة من المحفظة، مع تأجيل سوق لتداول الإعدادات المسكوكة إلى إصدار ثانٍ لاحق.
وقد جُرّبت هذه الصيغة على السلسلة فعلًا. فالأصل «block anxiety» (اسم الوحدة NFP، إجمالي المعروض 1) أُنشئ في 5 أغسطس 2025 من عنوان موّله hampelman.algo، وهو المعرّف على السلسلة للمطوّر — بما يطابق البيانات الوصفية النموذجية في وثيقة خارطة الطريق الخاصة بالمشروع — وأعقبه سكّان آخران للإعداد المسبق نفسه، بعنواني NFP2 وNFP23. والتصوّر غريب بهدوء وعملي إلى حدّ بعيد: فالرمز غير القابل للاستبدال هنا ليس صورة بل إعداد آلة قابل للعزف، وتداوله يعني تداول تصميم صوتي.
صغير ومفتوح وما زال متناغمًا
جلب الإصدار المرقّم كذلك صفًّا من التصوّرات البصرية التي تعرض البيانات ذاتها صورًا — Territory، حيث تستحوذ كل معاملة على حصتها من الشاشة و«تزحزح الأرضية القائمة جانبًا»، إضافة إلى Kintsugi Ledger وMusic Box، إلى جانب Score وLoom الأسبقين. أما زر التسجيل، المخصّص لالتقاط المخرجات صوتًا، فلم يُوصَل بعد.
ويبقى المشروع صادقًا بشأن حدوده. فملف README الأصلي يذكر أن «المعاملات ترد أسرع مما تستطيع Tone.js معالجته، فلا يقدر على توليد طابع زمني فريد لكل واحدة منها» — وهذا هو سبب وجود الوضع المُجمَّع — كما لا يوجد تدقيق رسمي لقاعدة الكود، وهي حالة معتادة لأداة مفتوحة المصدر بهذا الحجم. وانتشاره متواضع: ثماني نجوم على المستودع الأصلي في منظّمة Algorand Developer Retreat، ونجمة واحدة على النسخة المُصانة بنشاط تحت الحساب الشخصي للمطوّر، وتقرير قصير وحيد من مُجمِّع أخبار Algorand في أواخر يوليو 2026 وصف البنية الأقدم القائمة على الاستقصاء — ما يشير إلى أن التجديد لم يجد جمهوره بعد.
إنه من نوع المشاريع التي لا توجد إلا لأن هاكاثون أتاح لمطوّر واحد أن يسعى خلف فكرة غريبة: أن لنشاط البلوك تشين إيقاعًا يستحق السماع. ويبقى الكود مفتوحًا، وقد رحّب المشرف بالاقتراحات منذ أيام النموذج الأولي. ولمن وجد في مستكشف الكتل شيئًا مُنوِّمًا على النحو الخطأ، فإن الاستماع إلى الشبكة — باس للحيتان، ولحن للأحداث النادرة، ومُركّب كتلة يحفظ الإيقاع — طريقة جديدة بحق لمشاهدة سلسلة وهي تعمل.
المصدر
- Sound of AVM1
- The Sound of AVM — Algorand Developer Retreat organization (prototype)4
- The Sound of AVM — active development repository5
- تغطية PXke عن Algorand
- Verifiably Random: S2:E8 - Inside the open-source coding at the Algorand Dev Retreat6
- منشور @algorand.pxke.me — Bluesky7
- RelayUrl path and query issues · Issue #735 · mikedilger/gossip8
- QuickStart | Nodely9
المصادر
- 1Sound of AVM soundofavm.online↩
- 2Tone.js tonejs.github.io↩
- 3Nodely nodely.io↩
- 4The Sound of AVM — Algorand Developer Retreat organization (prototype) github.com↩
- 5The Sound of AVM — active development repository github.com↩
- 6Verifiably Random: S2:E8 - Inside the open-source coding at the Algorand Dev Retreat algorand.co↩
- 7منشور @algorand.pxke.me — Bluesky bsky.app↩
- 8RelayUrl path and query issues · Issue #735 · mikedilger/gossip github.com↩
- 9QuickStart | Nodely nodely.io↩