عنوان الحفظ ومفاتيح التطبيق
يدخل في الأمر نوعان من المفاتيح. عنوان الحفظ (custody address) يملك معرّف fid الخاص بك. ومفتاح التطبيق يوقّع
رسائلك اليومية: المنشورات والتفاعلات والمتابعات. يستخدم casty عنوان الحفظ مرة واحدة لإضافة مفتاح
تطبيق، ولا يحتفظ إلا بمفتاح التطبيق. يوقّع عنوان الحفظ إما في محفظة، من الصفحة
(المحافظ والمفاتيح)، وإما في طرفية، من عبارة البذرة التي يطلبها casty init.
عنوان الحفظ
Section titled “عنوان الحفظ”هو حساب Ethereum مشتق من عبارة البذرة. يستطيع إضافة مفاتيح التطبيق وإزالتها ونقل معرّف fid، لذا لا
يخزّنه casty أبدًا: يقرأ casty init العبارة، ويوقّع طلبًا واحدًا، ثم يصفّر العبارة. ويطلبها
casty key revoke مجددًا، لأن إزالة مفتاح بعنوان الحفظ تحتاج إلى توقيع جديد.
مفتاح التطبيق
Section titled “مفتاح التطبيق”مفتاح Ed25519 يولّده casty على جهازك. يوقّع الرسائل باسم معرّف fid الخاص بك، وتقبلها العقد ما دام المفتاح مسجلًا ولم تنتهِ صلاحيته.
منذ إصدار المحرك 16، يسجّل Snapchain هذه المفاتيح برسالة KEY_ADD بدل معاملة على السلسلة: بلا غاز،
ويصبح المفتاح قابلًا للاستخدام فور دمج الرسالة. يبنيها casty بدالتي @farcaster/core المساعدتين
makeKeyAddBody وmakeKeyAdd. راجع
كتابة الرسائل في توثيق Snapchain. ما زالت الأدلة القديمة، ومنها مثال hello-world في hub-monorepo، تضيف المفتاح بمعاملة إلى عقد KeyGateway على OP Mainnet: وهذا يكلّف رسوم gas ويتطلب محفظة ممولة وRPC، ولا يستخدم casty هذا الطريق.
تحمل رسالة KEY_ADD ثلاثة تواقيع:
- توقيع التطبيق الطالب على طلب المفتاح، ويصنعه عنوان الحفظ لمعرّف fid الخاص بالتطبيق
(
--app-fid، وهو معرّفك أنت افتراضيًا)؛ - توقيع عنوان الحفظ على المفتاح ونطاقاته ومدة صلاحيته وقيمة nonce وموعد نهائي؛
- غلاف الرسالة، موقّعًا بالمفتاح الجديد نفسه، وهو ما يثبت أن casty يملك نصفه الخاص.
قيمة nonce خاصة بكل معرّف fid ويجب أن تزداد مع كل تغيير في المفاتيح: يقرأ casty القيمة الحالية من
العقدة ويضيف إليها 1. إذا وصل تغيير آخر أولًا، ترفض العقدة الرسالة، ويعيد casty init المحاولة مرة
واحدة بقيمة nonce جديدة.
النطاقات
Section titled “النطاقات”يسرد المفتاح الذي بلا رسوم غاز أنواع الرسائل التي يُسمح له بتوقيعها. يطلب casty هذه افتراضيًا:
الاسم في --scopes |
أنواع الرسائل |
|---|---|
cast |
CAST_ADD، CAST_REMOVE |
reaction |
REACTION_ADD، REACTION_REMOVE |
link |
LINK_ADD، LINK_REMOVE |
لا يُضاف user-data (USER_DATA_ADD، ملفك الشخصي) إلا إذا طلبته. ولا يمكن أن يكون KEY_ADD
وKEY_REMOVE ضمن نطاقات أي مفتاح، لذا لا يستطيع مفتاح التطبيق إضافة مفاتيح أو إزالة مفاتيح أخرى؛ ولا
يستطيع إلا إزالة نفسه.
مدة الصلاحية
Section titled “مدة الصلاحية”يحدد --ttl مدة بقاء المفتاح دون استخدام: 30 يومًا افتراضيًا، و90 على الأكثر. كل رسالة يوقّعها
المفتاح وتُدمج تبدأ المدة من جديد، لذا لا تنتهي صلاحية مفتاح تستخدمه. يطبع casty init التاريخ الذي
ستنتهي فيه صلاحيته إن تُرك دون استخدام. ويمكن لمعرّف fid أن يحمل 1000 مفتاح نشط بلا رسوم غاز على
الأكثر.
أي تطبيق نشر المنشور
Section titled “أي تطبيق نشر المنشور”يسجّل كل مفتاح معرّف fid للتطبيق الذي طلبه. ويحمل المنشور المفتاح العام الذي وقّعه، فتستطيع التغذية
أن تذكر التطبيق الذي جاء منه: يبحث casty عن الموقِّع في قائمة مفاتيح المؤلف، ويأخذ معرّف fid الطالب
ويعرض اسم مستخدم ذلك المعرّف بعد via. يرشّح --only-app و--exclude-app بحسبه، ويسرد
casty clients --fid <fid> مفاتيح أي حساب مع تطبيقاتها. والمفاتيح المضافة على السلسلة تحمل الطلب
نفسه، ويقرؤها casty بالطريقة نفسها.
إزالة مفتاح
Section titled “إزالة مفتاح”| الأمر | يوقّعه | يحتاج إلى |
|---|---|---|
casty key revoke <key> |
عنوان الحفظ | عبارة البذرة |
casty key revoke <key> --self |
مفتاح التطبيق نفسه | المفتاح في مخزن casty |
كلاهما يرسل KEY_REMOVE وينتظر حتى تتوقف العقدة عن سرد المفتاح. المفاتيح المضافة على السلسلة تُزال
على السلسلة، في عقد KeyRegistry؛ ولا يفعل casty ذلك.