Carrot: العناوين الجديدة
مخطط العناوين والمفاتيح الجديد الذي يصل مع FCMP++
Carrot (Cryptonote Address on Rerandomizable-RingCT-Output Transactions) هو مخطط العناوين والمخرجات لمرة واحدة لحقبة FCMP++. يحافظ على صيغة العناوين الحالية لكنه يقدّم تسلسلًا أكثر مرونة للمفاتيح (مفاتيح منفصلة لـ "رؤية الوارد" و"رؤية كل شيء" و"توليد key images" و"إثبات صلاحية الإنفاق")، ويسد ثغرة هجوم Janus، ويسرّع المسح.
لماذا نغيّر ما يعمل
مخرج FCMP++ من الشكل O = x·G + y·T، وصيغ العناوين لمرة واحدة القديمة لا تأخذ ذلك في الحسبان. وبما أن التغيير لا بد منه على أي حال، يعالج Carrot مضايقات قديمة في CryptoNote:
- محافظ العرض فقط لا ترى عمليات الإنفاق. كان عليك استيراد key images.
- هجوم Janus على العناوين الفرعية: كان بإمكان المرسِل اختبار ما إذا كان عنوانان فرعيان مرتبطين.
- "خطأ الحرق" (burning bug): كان يمكن إرسال مخرجين بالمفتاح لمرة واحدة نفسه، فلا يستطيع المستلم إنفاق إلا واحدًا منهما.
- المسح البطيء — عمليات Ed25519 وview tag من بايت واحد.
تسلسل المفاتيح
| المفتاح | ما يتيحه |
|---|---|
k_vi — رؤية الوارد | العثور على المدفوعات الواردة (مثل مفتاح العرض القديم) |
k_gi — توليد الصور | حساب key images ← معرفة المخرجات المُنفقة |
s_vb — رؤية الرصيد | رؤية كل الوارد والصادر، والرصيد الدقيق؛ والتعرف على الباقي الخاص بك |
s_ga — توليد العناوين | إنشاء عناوين فرعية (مثلًا على خادم متجر) دون صلاحية رؤية المدفوعات |
k_ps — إثبات الإنفاق | المفتاح الوحيد اللازم فعلًا للإنفاق؛ ويمكن أن يبقى على محفظة أجهزة |
التوافق مع المحافظ القديمة
تُطابَق المحفظة الحالية مع Carrot هكذا: k_vi = a، k_gi = b، k_ps = 0. عندها K_s = b·G = B، وتبقى العناوين القديمة كما هي — يمكنك الإرسال إليها ومسحها. أما القدرات الجديدة (مفتاح منفصل لرؤية الرصيد وغيره) فهي للمحافظ المنشأة وفق المخطط الجديد.
ما الذي يتغير أيضًا في المخرجات
- تبادل المفاتيح على X25519 (منحنى Montgomery بدلًا من Edwards) — مسح أسرع.
- view tag — 3 بايتات بدلًا من 1: إيجابيات كاذبة أقل بـ 65,536 مرة.
- الحماية من Janus: تُضاف "مرساة" إلى المخرج كي يتحقق المستلم من أن المرسِل يعرف العنوان كاملًا ولم يلصقه من أجزاء عناوين فرعية مختلفة.
- الحماية من خطأ الحرق: يُربط المفتاح لمرة واحدة بأول key image في المعاملة، فلا يمكن وجود مخرجين متطابقين.
- المخرجات الداخلية (الإرسال إلى النفس): يُبنى الباقي عبر
s_vb، والمحفظة التي تملك مفتاح رؤية الرصيد تتعرف عليه بشكل موثوق.
مواصفات Carrot منشورة في مستودع jeffro256/carrot، ومواصفات FCMP++ في أوراق kayabaNerve ومستودع monero-oxide. يعيد هذا الموقع صياغتها؛ وإن تعارضا فثق بالمواصفات.