رسائل Snapchain
كل ما يفعله حساب على Farcaster رسالة موقّعة: منشور، أو إعجاب، أو متابعة، أو تغيير في الملف الشخصي، أو تغيير في المفاتيح. تفحص العقد كل رسالة وتخزّن ما تقبله. البروتوكول موصوف في Messages في توثيق Farcaster.
ما في الرسالة
Section titled “ما في الرسالة”| الحقل | ما هو |
|---|---|
data |
المحتوى: النوع، ومعرّف fid، والطابع الزمني، والشبكة، وجسم خاص بالنوع |
hash |
تجزئة BLAKE3 لـ data، بطول 20 بايت |
signature |
توقيع Ed25519 على التجزئة |
signer |
المفتاح العام الذي وقّع، ويجب أن يكون مسجلًا لمعرّف fid |
لا يجمّع casty هذه الحقول يدويًا أبدًا؛ بل يستدعي دوال البناء في @farcaster/core
(makeCastAdd وmakeReactionAdd وmakeLinkAdd وغيرها) بمفتاح التطبيق الخاص بك.
تَعُدّ الطوابع الزمنية الثواني منذ حقبة Farcaster، 2021-01-01 00:00:00 UTC. ترفض العقد رسالة طابعها
الزمني متقدم أكثر من 15 دقيقة في المستقبل، ولهذا يفحص casty doctor والخطوة 1 ساعة جهازك.
المنشورات
Section titled “المنشورات”يحمل المنشور حتى 320 بايت من نص UTF-8، أو حتى 1024 بايت كمنشور طويل؛ ويختار casty النوع بحسب الطول. يُعدّ النص بالبايتات لا بالأحرف، لذا يتسع منشور بالسيريلية أو فيه رموز تعبيرية لأحرف أقل.
الذِكر ليس جزءًا من النص. يخزّن المنشور معرّفات fid المذكورة وإزاحات البايتات التي تنتمي إليها،
وتعيد التغذية @name إلى مكانه. يشير الرد إلى أصله بمعرّف fid والتجزئة؛ أما منشور القناة فيشير إلى
رابط القناة بدلًا من ذلك. وتوضع الروابط في التضمينات، --embed <url> في سطر الأوامر.
حذف منشور ينشر CAST_REMOVE. الإعجابات وإعادات النشر تفاعلات، والمتابعات روابط، ولكل منها رسالة
إزالة أيضًا.
الشرائح
Section titled “الشرائح”يقسم Snapchain الشبكة إلى شرائح. تعيش منشورات الحساب وتفاعلاته ومتابعاته وملفه الشخصي على شريحة رسائل
واحدة، تُختار من أول 4 بايتات من SHA-256 لمعرّف fid الخاص به. وتذهب تغييرات المفاتيح وبضع رسائل أخرى
على مستوى الحساب إلى الشريحة 0. لهذا يطبع status وcasty doctor سطرًا لكل شريحة: لا تكون العقدة
متزامنة إلا حين تكون كل الشرائح كذلك.
إرسال رسالة عبر عقدتك
Section titled “إرسال رسالة عبر عقدتك”- يبني casty الرسالة ويوقّعها ويرسل بايتاتها إلى
POST /v1/submitMessage. - تفحصها العقدة وتجيب بـ
200، أو بخطأ مع السبب. - عقدة القراءة لا تحتفظ بشيء: تمرر الرسالة عبر gossip وتنساها.
200تعني قُبلت للتمرير، لا خُزّنت. - حين يُدرج مدقِّق الرسالة في كتلة، تصبح لدى كل عقدة، بما فيها عقدتك.
لذلك يقرأ casty الرسالة مجددًا، مثلًا بـ castById بعد منشور، حتى تظهر؛ وفي
عقد القراءة والمدقِّقون التوقيتات. للبايتات نفسها
التجزئة نفسها، لذا تُخزَّن الرسالة المرسلة مرتين مرة واحدة.
التخزين
Section titled “التخزين”كل رسالة يحتفظ بها حساب تُحسب من تخزينه، بما في ذلك رسائل الإزالة: يبقى CAST_REMOVE سجلًا بأن
المنشور حُذف. راجع إيجار التخزين.