استراتيجيات تخزين بيانات سلسلة الكتل
هناك طرق متعددة لتخزين المعلومات إما مباشرة على سلسلة الكتل، أو بطريقة مؤمنة بواسطة سلسلة الكتل:
- كتل بيانات EIP-4844
- بيانات الاستدعاء
- خارج السلسلة مع آليات طبقة 1 (L1)
- "كود" العقد
- الأحداث
- تخزين EVM
يعتمد اختيار الطريقة التي سيتم استخدامها على عدة معايير:
- مصدر المعلومات. لا يمكن أن تأتي المعلومات الموجودة في بيانات الاستدعاء مباشرة من سلسلة الكتل نفسها.
- وجهة المعلومات. تتوفر بيانات الاستدعاء فقط في المعاملة التي تتضمنها. لا يمكن الوصول إلى الأحداث على السلسلة على الإطلاق.
- ما هو مقدار العناء المقبول؟ يمكن لأجهزة الكمبيوتر التي تقوم بتشغيل عقدة كاملة إجراء معالجة أكثر من عميل خفيف في تطبيق يعمل في متصفح.
- هل من الضروري تسهيل الوصول إلى المعلومات من كل عقدة؟
- المتطلبات الأمنية.
المتطلبات الأمنية
بشكل عام، يتكون أمن المعلومات من ثلاث سمات:
-
السرية، لا يُسمح للكيانات غير المصرح لها بقراءة المعلومات. هذا مهم في العديد من الحالات، ولكن ليس هنا. لا توجد أسرار على سلسلة الكتل. تعمل سلاسل الكتل لأن أي شخص يمكنه التحقق من انتقالات الحالة، لذلك من المستحيل استخدامها لتخزين الأسرار مباشرة. هناك طرق لتخزين المعلومات السرية على سلسلة الكتل، ولكنها تعتمد جميعها على بعض المكونات خارج السلسلة لتخزين مفتاح على الأقل.
-
النزاهة، المعلومات صحيحة، ولا يمكن تغييرها بواسطة كيانات غير مصرح لها، أو بطرق غير مصرح بها (على سبيل المثال، تحويل رموز ERC-20 (opens in a new tab) بدون حدث
Transfer). على سلسلة الكتل، تتحقق كل عقدة من كل تغيير في الحالة، مما يضمن النزاهة. -
التوافر، المعلومات متاحة لأي كيان مصرح له. على سلسلة الكتل، يتم تحقيق ذلك عادةً من خلال إتاحة المعلومات على كل عقدة كاملة (opens in a new tab).
تتمتع جميع الحلول المختلفة هنا بنزاهة ممتازة، لأنه يتم نشر التجزئات على طبقة 1 (L1). ومع ذلك، فإن لديها ضمانات توافر مختلفة.
المتطلبات الأساسية
يجب أن يكون لديك فهم جيد لـ أساسيات سلسلة الكتل. تفترض هذه الصفحة أيضًا أن القارئ على دراية بـ الكتل، والمعاملات، والمواضيع الأخرى ذات الصلة.
كتل بيانات EIP-4844
بدءًا من تحديث دينكون الصلب (opens in a new tab)، تتضمن سلسلة كتل إيثيريوم EIP-4844 (opens in a new tab)، والذي يضيف إلى إيثيريوم كتل بيانات (blobs) ذات عمر محدود (في البداية حوالي 18 يومًا (opens in a new tab)). يتم تسعير كتل البيانات هذه بشكل منفصل عن غاز التنفيذ، على الرغم من استخدام آلية مماثلة. إنها طريقة رخيصة لنشر البيانات المؤقتة.
حالة الاستخدام الرئيسية لكتل بيانات EIP-4844 هي للتجميعات لنشر معاملاتها. تحتاج التجميعات المتفائلة إلى نشر المعاملات على سلاسل الكتل الخاصة بها. يجب أن تكون هذه المعاملات متاحة لأي شخص خلال فترة التحدي (opens in a new tab) لتمكين المدققين (opens in a new tab) من إصلاح الخطأ إذا قام مُسلسِل (opens in a new tab) التجميع بنشر جذر حالة غير صحيح.
ومع ذلك، بمجرد انقضاء فترة التحدي ويصبح جذر الحالة نهائي، فإن الغرض المتبقي لمعرفة هذه المعاملات هو تكرار الحالة الحالية للسلسلة. تتوفر هذه الحالة أيضًا من عقد السلسلة، مع الحاجة إلى معالجة أقل بكثير. لذلك يجب أن تظل معلومات المعاملة محفوظة في أماكن قليلة، مثل مستكشفات الكتل، ولكن ليست هناك حاجة للدفع مقابل مستوى مقاومة الرقابة الذي توفره إيثيريوم.
تقوم تجميعات المعرفة الصفرية أيضًا بنشر بيانات معاملاتها لتمكين العقد الأخرى من تكرار الحالة الحالية والتحقق من براهين الصلاحية، ولكن مرة أخرى هذا متطلب قصير الأجل.
في وقت الكتابة، يكلف النشر على EIP-4844 واحد Wei (10-18 ETH) لكل بايت، وهو أمر لا يذكر مقارنة بـ 21,000 غاز تنفيذ تكلفه أي معاملة، بما في ذلك المعاملة التي تنشر كتل البيانات (opens in a new tab). يمكنك رؤية السعر الحالي لـ EIP-4844 على blobscan.com (opens in a new tab).
فيما يلي العناوين لرؤية كتل البيانات المنشورة بواسطة بعض التجميعات الشهيرة.
بيانات الاستدعاء
تشير بيانات الاستدعاء إلى البايتات المرسلة كجزء من المعاملة. يتم تخزينها كجزء من السجل الدائم لسلسلة الكتل في الكتلة التي تتضمن تلك المعاملة.
هذه هي أرخص طريقة لوضع البيانات بشكل دائم في سلسلة الكتل. التكلفة لكل بايت هي إما 4 غاز تنفيذ (إذا كان البايت صفرًا) أو 16 غاز (أي قيمة أخرى). إذا تم ضغط البيانات، وهو ممارسة قياسية، فإن كل قيمة بايت تكون محتملة بالتساوي، لذلك يبلغ متوسط التكلفة حوالي 15.95 غاز لكل بايت.
في وقت الكتابة، الأسعار هي 12 Gwei/غاز و 2300 $/ETH، مما يعني أن التكلفة تبلغ حوالي 45 سنتًا لكل كيلوبايت. نظرًا لأن هذه كانت أرخص طريقة قبل EIP-4844، فهذه هي الطريقة التي استخدمتها التجميعات لتخزين معلومات المعاملات، والتي يجب أن تكون متاحة لـ تحديات الأخطاء (opens in a new tab)، ولكن لا يلزم الوصول إليها مباشرة على السلسلة.
فيما يلي العناوين لرؤية المعاملات المنشورة بواسطة بعض التجميعات الشهيرة.
خارج السلسلة مع آليات طبقة 1 (L1)
اعتمادًا على مقايضاتك الأمنية، قد يكون من المقبول وضع المعلومات في مكان آخر واستخدام آلية تضمن توفر البيانات عند الحاجة. هناك متطلبان لكي ينجح هذا:
-
نشر تجزئة (opens in a new tab) للبيانات على سلسلة الكتل، تسمى التزام الإدخال. يمكن أن يكون هذا كلمة واحدة بحجم 32 بايت، لذلك فهو ليس مكلفًا. طالما أن التزام الإدخال متاح، فإن النزاهة مضمونة لأنه ليس من المجدي العثور على أي بيانات أخرى يمكن تجزئتها إلى نفس القيمة. لذلك إذا تم توفير بيانات غير صحيحة، يمكن اكتشافها.
-
وجود آلية تضمن التوافر. على سبيل المثال، في Redstone (opens in a new tab) يمكن لأي عقدة تقديم تحدي توافر. إذا لم يستجب المُسلسِل على السلسلة بحلول الموعد النهائي، يتم تجاهل التزام الإدخال، لذلك تعتبر المعلومات وكأنها لم تُنشر أبدًا.
هذا مقبول بالنسبة لـ رول أب متفائل لأننا نعتمد بالفعل على وجود متحقق صادق واحد على الأقل لجذر الحالة. سيتأكد هذا المتحقق الصادق أيضًا من أن لديه البيانات لمعالجة الكتل، ويصدر تحدي توافر إذا لم تكن المعلومات متاحة خارج السلسلة. يُطلق على هذا النوع من الرول أب المتفائل اسم بلازما.
كود العقد
المعلومات التي تحتاج فقط إلى كتابتها مرة واحدة، ولا يتم الكتابة فوقها أبدًا، وتحتاج إلى أن تكون متاحة على السلسلة يمكن تخزينها ككود عقد. هذا يعني أننا ننشئ "عقد ذكي" بالبيانات ثم نستخدم EXTCODECOPY (opens in a new tab) لقراءة المعلومات. الميزة هي أن نسخ الكود رخيص نسبيًا.
بخلاف تكلفة توسيع الذاكرة، تكلف EXTCODECOPY 2600 غاز للوصول الأول إلى العقد (عندما يكون "باردًا") و 100 غاز للنسخ اللاحقة من نفس العقد بالإضافة إلى 3 غاز لكل كلمة بحجم 32 بايت. بالمقارنة مع بيانات الاستدعاء، التي تكلف 15.95 لكل بايت، فإن هذا أرخص بدءًا من حوالي 200 بايت. بناءً على صيغة تكاليف توسيع الذاكرة (opens in a new tab)، طالما أنك لا تحتاج إلى أكثر من 4MB من الذاكرة، فإن تكلفة توسيع الذاكرة أصغر من تكلفة إضافة بيانات الاستدعاء.
بالطبع، هذه مجرد تكلفة قراءة البيانات. لإنشاء العقد يكلف حوالي 32,000 غاز + 200 غاز/بايت. هذه الطريقة اقتصادية فقط عندما تحتاج نفس المعلومات إلى قراءتها عدة مرات في معاملات مختلفة.
يمكن أن يكون كود العقد غير منطقي، طالما أنه لا يبدأ بـ 0xEF. العقود التي تبدأ بـ 0xEF يتم تفسيرها على أنها تنسيق كائن إيثيريوم (opens in a new tab)، والذي له متطلبات أكثر صرامة بكثير.
الأحداث
يتم إصدار الأحداث (opens in a new tab) بواسطة العقود الذكية، وتُقرأ بواسطة برامج خارج السلسلة. ميزتها هي أن الكود خارج السلسلة يمكنه الاستماع للأحداث. التكلفة هي الغاز (opens in a new tab)، 375 بالإضافة إلى 8 غاز لكل بايت من البيانات. عند 12 Gwei/غاز و 2300 $/ETH، يُترجم هذا إلى سنت واحد بالإضافة إلى 22 سنتًا لكل كيلوبايت.
التخزين
تتمتع العقود الذكية بإمكانية الوصول إلى التخزين الدائم (opens in a new tab). ومع ذلك، فهو مكلف للغاية. كتابة كلمة بحجم 32 بايت في خانة تخزين فارغة مسبقًا يمكن أن تكلف 22,100 غاز (opens in a new tab). عند 12 Gwei/غاز و 2300 $/ETH، يبلغ هذا حوالي 61 سنتًا لكل عملية كتابة، أو $19.5 لكل كيلوبايت.
هذا هو أغلى شكل من أشكال التخزين في إيثيريوم.
ملخص
يلخص هذا الجدول الخيارات المختلفة، ومزاياها وعيوبها.
| نوع التخزين | مصدر البيانات | ضمان التوافر | التوافر على السلسلة | قيود إضافية |
|---|---|---|---|---|
| كتل بيانات EIP-4844 | خارج السلسلة | ضمان إيثيريوم لمدة ~18 يومًا (opens in a new tab) | التجزئة فقط متاحة | |
| بيانات الاستدعاء | خارج السلسلة | ضمان إيثيريوم للأبد (جزء من سلسلة الكتل) | متاح فقط إذا كُتب في عقد، وفي تلك المعاملة | |
| خارج السلسلة مع آليات طبقة 1 (L1) | خارج السلسلة | ضمان "متحقق صادق واحد" خلال فترة التحدي | التجزئة فقط | مضمون بواسطة آلية التحدي، فقط خلال فترة التحدي |
| كود العقد | على السلسلة أو خارج السلسلة | ضمان إيثيريوم للأبد (جزء من سلسلة الكتل) | نعم | يُكتب في عنوان "عشوائي"، ولا يمكن أن يبدأ بـ 0xEF |
| الأحداث | على السلسلة | ضمان إيثيريوم للأبد (جزء من سلسلة الكتل) | لا | |
| التخزين | على السلسلة | ضمان إيثيريوم للأبد (جزء من سلسلة الكتل والحالة الحالية حتى يتم الكتابة فوقها) | نعم |