تخطَّ إلى المحتوى

المحافظ والمفاتيح

يتعامل casty مع مفتاحين. عنوان الحفظ، وهو حساب Ethereum يملك معرّف fid الخاص بك، يوقّع شيئًا واحدًا: طلب مفتاح التطبيق. ومفتاح التطبيق، وهو مفتاح Ed25519 يصنعه casty، يوقّع كل ما عدا ذلك: المنشورات والتفاعلات والمتابعات. تشرح هذه الصفحة كيف يعمل ذلك.

ما هو أين يوجد متى يُستخدم
عبارة البذرة لا مكان: تُكتب مرة واحدة في casty init أو casty key revoke، وتُصفَّر بعد الاستخدام لاشتقاق عنوان الحفظ وتوقيع طلب المفتاح، أو الإلغاء
مفتاح التطبيق ~/.config/casty/keys.enc.json، بـ scrypt وXChaCha20-Poly1305، بالوضع 0600؛ وعلى مضيف العقدة أيضًا مع 1-node.sh serve كل رسالة؛ تنتهي صلاحيته بعد مدة TTL دون استخدام (30 يومًا افتراضيًا، و90 على الأكثر)، وكل رسالة تجدّده
كلمة مرور مخزن المفاتيح تُكتب في مطالبة مخفية، أو سر Docker على المضيف لفتح المخزن

يشتق casty init حساب الحفظ من العبارة (يختار --address-index حسابًا آخر من العبارة نفسها)، ويسأل العقدة عن معرّف fid الذي يملكه، ويصنع مفتاح التطبيق، ويجعل حساب الحفظ يوقّع طلب المفتاح (بيانات EIP-712 مُنمَّطة، كما يبنيها @farcaster/core)، ويرسل رسالة KEY_ADD عبر العقدة. بلا معاملة، وبلا غاز، وبلا مفتاح API. يعرض casty key list كل مفتاح تسرده العقدة لمعرّفك؛ ويزيل casty key revoke واحدًا، بالعبارة أو، مع --self، بالمفتاح نفسه. تعرض الصفحة تحت «you» المفاتيح، وتحذّر قبل أسبوع من انتهاء صلاحية مفتاح casty هذا، وتضيف مفتاحًا بالمحفظة في المتصفح (أدناه).

توقيع الحفظ بيانات EIP-712 مُنمَّطة عادية، لذا يستطيع أي شيء يوقّع بيانات مُنمَّطة لعنوان الحفظ أن يأذن بمفتاح تطبيق: تطبيق محفظة، أو محفظة عتادية خلف أحدها، أو إضافة متصفح.

تحت you، «add a key with your wallet»: يصنع casty مفتاح Ed25519 ورسالتي البيانات المُنمَّطة، وتسلّمهما الصفحة إلى المحفظة في المتصفح (eth_signTypedData_v4 عبر EIP-1193: MetaMask وRabby وRainbow وغيرها، وLedger خلف أي منها)، وتوقّع المحفظة بعنوان الحفظ، ويتحقق casty من التوقيعين مقابل ذلك العنوان، ويرسل KEY_ADD عبر العقدة ويخزّن المفتاح. لا تغادر عبارة البذرة المحفظة أبدًا، ولا يراها casty أبدًا. يُعدّ casty init --fid <fid> الإعداد بلا عبارة وبلا مفتاح، لكي تضيف الصفحة المفتاح الأول. ويبقى مسار الطرفية لحساب حفظه عبارة استرداد مجردة لا غير. الخطوات في في المتصفح وعلى الهاتف.

  • على هاتف لا محفظة في متصفحه، تعرض الصفحة أن تفتح نفسها داخل MetaMask أو Coinbase Wallet أو Trust Wallet، مع الإقران؛ وتُكتشف المحافظ التي تعلن عن نفسها (EIP-6963) جنبًا إلى جنب؛ ويُطلب من محفظة على الحساب الخطأ أن تدعك تختار. أما WalletConnect، وهو اعتمادية ومرحّل يديره طرف آخر، فقد تُرك عمدًا.
  • الحساب الذي حفظه عبارة الاسترداد التي أعطاه إياها farcaster.xyz يستورد تلك العبارة إلى إحدى تلك المحافظ مرة واحدة؛ ومن بعدها توقّع المحفظة ولا تُكتب العبارة في أي شيء من casty.

يحمل البروتوكول رسائل VerificationAddAddress، وهي إثبات الحساب أنه يملك عنوان Ethereum أو Solana، وتجيب العقدة على verificationsByFid. يسردها الملف الشخصي في الصفحة، لكل منها رابط إلى مستكشفها وزر نسخ؛ وعناوينك تحت you أيضًا. قراءتها لا تكلّف شيئًا ولا تسأل طرفًا ثالثًا؛ ولا يُقرأ شيء من سلسلة.

تنتهي صلاحية المفتاح الذي بلا رسوم غاز بعد مدة TTL دون استخدام، وكل رسالة يوقّعها تجدّده. لا ينشر casty باسمك أبدًا لإبقاء مفتاح حيًا؛ تحذّر الصفحة قبل أسبوع، وcasty init --ttl 90d هو أطول ما يسمح به البروتوكول.

  • المدفوعات والإكراميات والمبادلات. كل منها يحتاج إلى RPC للسلسلة ومحفظة ممولة وحالة السلسلة، وهو ما يبقيه casty خارج مساره عمدًا (راجع الأمان). ويمكن نسخ عنوان موثّق في ملف شخصي إلى محفظة تثق بها.
  • WalletConnect. سيضيف اعتمادية ومرحّلًا يديره طرف آخر؛ والمحافظ في المتصفح ومتصفحات تطبيقات المحافظ نفسها تغطي الشيء نفسه.
  • الإقران بمفتاح المرور (passkey) وسلسلة مفاتيح نظام التشغيل. تقترن الصفحة برمز من 256 بت ينتقل في جزء fragment من الرابط، ويطلب casty web كلمة المرور مرة واحدة في كل تشغيل.