"كنا نعرف الأصغر والأسرع والأرخص أفضل من أي شخص آخر في العالم، والآن نحن نطبق تلك المفاهيم على تقنية البلوكشين." — غريغ فيتزجيرالد، مؤسس Solana
سولانا هي سلسلة كتل عالية الأداء ومنخفضة التأخير مشهورة بسرعتها وكفاءتها وتركيزها على تجربة المستخدم. تتيح لها الهندسة المعمارية المتكاملة الفريدة الخاصة بها آلاف المعاملات في الثانية عبر شبكة لامركزية عالمية. بفضل وقت الكتلة البالغ 400 مللي ثانية ورسوم المعاملات التي تكون كسور من السنتات، فإنها توفر كل من السرعة والكفاءة من حيث التكلفة. يستكشف هذا التقرير تفاصيل تصميم وعمل سولانا، مستكشفًا الآليات الرئيسية وتوبولوجيا الشبكة التي تسهم في قدراتها.
تتبنى سولانا نهجا متكاملا لتطوير تقنية سلسلة الكتل، حيث تستفيد من عقود الخبرة لفريق الأسس في بناء الأنظمة الموزعة. واحدة من المبادئ الأساسية لسولانا هي أن البرمجيات لا ينبغي أن تعيق الأجهزة. وهذا يعني أن البرمجيات تستفيد من كامل إمكانات الأجهزة التي تعمل عليها وتقوم بالتوسع معها. كبيئة موحدة، يرث جميع التطبيقات المبنية على هذه السلسلة الكتلية الواحدة قابلية التكامل، مما يتيح لها التفاعل والبناء على بعضها بسهولة. كما تضمن هذه البنية أيضًا تجربة مستخدم مباشرة وبديهية دون الحاجة إلى جسر، أو معرف سلسلة منفصل، أو تجزئة سيولة.
تتطور سولانا بسرعة، مع التطورات الأخيرة بما في ذلك لفات SVM وضغط ZKكحلول توسيع مهمة. بينما قد تشكل هذه المشاريع يومًا ما تصورنا المستقبلي لـ سولانا، إلا أنها حاليًا في مراحل تطوير أو اعتماد مبكرة جدًا ولن تُغطى في هذا التقرير.
عدستنا الأساسية لفهم سولانا خلال هذا التقرير ستكون دورة حياة عملية نموذجية. لإنشاء نموذج أساسي لفهم معاملات سولانا، يمكننا تحديد العملية على النحو التالي:
ستتوسع الأقسام التالية من هذا التقرير في هذا النموذج وتنخرط في هذه العملية بتفصيل أكبر بكثير، بدءًا من المشاركين الرئيسيين - المستخدمين.
تذكر
التغييرات الجوهرية في بروتوكول سولانا تمر من خلال عملية رسمية وشفافةعمليةمن تقديم وثيقة تحسين سولانا (SIMD) التي سيقوم أعضاء المجتمع والهندسة الأساسية بانتقادها علنًا. يتم التصويت بعد ذلك على SIMDs من قبل الشبكة.
سنشير إلى الرؤية المرئية المكونة من ست مراحل المعروضة أعلاه طوال هذا التقرير، حيث توفر لنا إطارًا منتظمًا لفهم العلاقات بين عناصر Solana الأساسية.
تم ترتيب الفصول السابقة وفقًا لهذه المراحل الست. فصول النهاية - الشائعات، الأرشيف، الاقتصاد، وجيتو - تربط أية طرف غير منتهية. من المهم ملاحظة أن بعض الفصول ستمتد عبر مراحل متعددة، وستظهر بعض المراحل في عدة فصول.
هذا التداخل لا يمكن تجنبه لأن الإطار المكون من ست مراحل له قيوده. في الواقع، سولانا نظام موزع معقد يحتوي على العديد من العناصر المترابطة.
"سولانا لديها الإمكانية لتكون شركة آبل في عالم العملات الرقمية" - راج جوكال، مؤسس سولانا
يبدأ مسار المستخدم عادةً بإعداد وتمويل تطبيق محفظة. تتوفر عدة تطبيقات محفظة شائعة لـ Solana، سواء كتطبيقات جوال أصلية أو ملحقات متصفح.
تقوم المحافظ بتوليد أزواج مفاتيح المستخدم بشكل تشفيري، والتي تتألف من مفاتيح عامة وخاصة. تعمل المفتاح العام كمعرف فريد لحسابهم ويعرف به جميع المشاركين في الشبكة. يمكن اعتبار حساب المستخدم على سولانا بنية بيانات تحمل معلومات وحالة تتعلق بتفاعلاتهم مع سلسلة كتل سولانا. وبهذه الطريقة، يشبه المفتاح العام اسم ملف: تمامًا كما يحدد اسم الملف ملفًا داخل نظام ملفات، يحدد المفتاح العام لسولانا حسابًا بشكل فريد على سلسلة كتل سولانا. تُمثل المفاتيح العامة على سولانا على شكل سلاسل مشفرة بقاعدة 58 بايتًا.
FDKJvWcJNe6wecbgDYDFPCfgs14aJnVsUfWQRYWLn4Tn
المفتاح الخاص — المعروف أيضًا باسم المفتاح السري — يمكن اعتباره ككلمة مرور أو مفتاح وصول يمنح إذن الوصول والتعديل على الحساب. توقيع المفاتيح الخاصة هو كيفية التعامل مع تفويضات سلاسل الكتل. معرفة المفتاح الخاص تمنح سلطة كاملة على الحساب. تكوينات Keypairs تأتي بطول 64 بايتًا تتكون من المفاتيح العامة (النصف الأول) والخاصة (النصف الثاني). أمثلة:
3j15jr41S9KmdfughusutvvqBjAeEDbU5sDQp8EbwQ3Hify2pfM1hiEsuFFAVq8bwGywnZpswrbDzPENbBZbd5nj
[63,107,47,255,141,135,58,142,191,245,78,18,90,162,107,197,8,33,211,15,228,235,250,30,185,122,105,23,147,115,115,86,8,155,67,155,110,51,117,0,19,150,143,217,132,205,122,91,167,61,6,246,107,39,51,110,185,81,13,81,16,182,30,71]
يمكن أيضًا استخلاص المفاتيح الخاصة من عبارات البذور الذهنية، التي تتألف عادة من 12 أو 24 كلمة. يتم استخدام هذا التنسيق في العادة في المحافظ لتسهيل عمليات النسخ الاحتياطي والاستعادة. يمكن استخلاص مفاتيح متعددة بشكل قاطع من عبارة بذور واحدة.
تستخدم سولانا Ed25519, خوارزمية توقيع رقمي بنموذج مفتاح بيضاوي يستخدم على نطاق واسع، لتلبية احتياجات التشفير بالمفتاح العام. يتم التفضيل لـ Ed25519 لحجم مفتاحه الصغير، وحجم توقيعه الصغير، وسرعة الحساب، ومناعته ضد العديد من الهجمات الشائعة. كل عنوان محفظة Solana يمثل نقطة على منحنى البيضاوي Ed25519.
يقوم المستخدم بتوقيع المعاملات باستخدام مفتاحه الخاص. يتم تضمين هذا التوقيع مع بيانات المعاملة ويمكن التحقق منه من قبل المشاركين الآخرين باستخدام المفتاح العام للمرسل. يضمن هذا العملية أن المعاملة لم يتم التلاعب بها وأنها معتمدة من قبل مالك المفتاح الخاص المقابل. يعمل التوقيع أيضًا كمعرف فريد للمعاملة.
إرسال المعاملة هو الطريقة الوحيدة لتغيير الحالة على سولانا. يتم تنفيذ أي عملية كتابة من خلال معاملة، والمعاملات ذات طبيعة ذرية - إما أن تحدث كل ما تحاول المعاملة فعله أو تفشل المعاملة. تتألف المعاملة، المعروفة بشكل أكثر رسمية باسم "رسالة معاملة"، من أربعة أقسام: رأس، قائمة بعناوين الحسابات، مؤشر كتلة حديث وتعليمات.
يتم تقييد عدد التعليمات في عملية تحويل أولاً بحجمها، الذي يمكن أن يصل إلى 1،232 بايت. هناك أيضًا حدود حول عدد الحسابات التي يمكن الرجوع إليها. وأخيرًا، هناك حدود لتعقيد عملية التحويل المقاس بوحدات الحساب (CUs). تقيس وحدات الحساب الموارد الحسابية المستهلكة في معالجة العمليات.
تذكر
أصغر وحدة من SOL تعرف باسم "لامبورت"، ما يعادل مليار جزء من SOL، مماثل لساتوشي في بيتكوين. يُطلق على اللامبورت اسمليزلي لامبورت، عالم كمبيوتر ورياضياتي بحثه أسس العديد من الأسس النظرية للأنظمة الموزعة الحديثة.
تكلفة SOL لتنفيذ معاملة مقسمة إلى جزأين - رسم أساسي ورسم تحديد الأولوية. الرسم الأساسي هو 5000 لامبورت ثابتة للتوقيع الواحد بغض النظر عن تعقيد المعاملة - عادة ما يكون هناك توقيع واحد لكل معاملة.
رسوم التحديد أختيارية من الناحية التقنية، ولكنها تصبح ضرورية خلال فترات الطلب العالي على مساحة الكتلة. تُسعر هذه الرسوم بالميكرو لامبورتس (مليون جزء من لامبورت) لكل وحدة حسابية. الغرض منها هو أن تعمل كإشارة سعرية، مما يجعل المعاملات أكثر جاذبية اقتصادياً بالنسبة لأجهزة المعالجة الرئيسية لتضمينها في كتلها.
الرسوم الإجمالية = رسوم التحديد الأولي + الرسوم الأساسية
رسوم الترتيب = سعر وحدة الحساب (ميكرو لامبورت) × حد وحدة الحساب
حاليًا، يتم حرق 50٪ من جميع رسوم العمليات، مما يزيل هذا SOL بشكل دائم عن التداول، مع الـ 50٪ المتبقية تذهب إلى منتج الكتل. تتم إضافة تغيير جديد (SIMD 96) قريبًا يسمح بتوجيه 100٪ من رسوم التحضير إلى منتج الكتل. تبقى الرسوم الأساسية دون تغيير.
يقوم المستخدم بربط محفظته بالتطبيق، مما يتيح للتطبيق قراءة المفتاح العام للمستخدم. يبقى المفتاح الخاص مشفرًا ومحصورًا بشكل آمن في بيئة منفصلة عن التطبيق.
يقوم التطبيق ببناء معلمات رسالة الصفقة استنادًا إلى تفاعلات المستخدم. على سبيل المثال، إذا أراد المستخدم تبديل عملتين، فإنه سيحدد كمية العملات التي يرغب في شرائها، والعملات المقابلة للبيع، وانزلاق الصفقة المقبول.
بمجرد أن تصبح رسالة المعاملة جاهزة ، يتم إرسالها إلى المحفظة ليتم توقيعها باستخدام المفتاح الخاص للمستخدم. في هذه المرحلة ، تتم مطالبة المستخدم بنافذة منبثقة لتأكيد استعداده للتعامل. قد تتضمن هذه النافذة المنبثقة محاكاة لنتائج المعاملة. بمجرد التوقيع ، يتم إرجاع رسالة المعاملة والتوقيع إلى التطبيق ، والذي يمكنه بعد ذلك إعادة توجيه المعاملة إلى مزود RPC من اختيارهم ، إما بأنفسهم أو باستخدام مزود المحفظة.
موفرو RPC (Remote Procedure Call) يعملون كوسطاء بين التطبيقات والمحققين الذين يبنون الكتل. إنهم خدمة أساسية تمكن التطبيقات منتقديمأو محاكاة المعاملات الموقعة واسترجاع البيانات على السلسلة بكفاءة. التطبيقات التي ترغب في التفاعل مع الشبكة تفعل ذلك عبر نقطة نهاية JSON-RPC أو WebSocketالمستندات.
تذكر
يعتبر مصطلح "فشل العملية" على سولانا مضللًا وقد تسبب الكثير من الارتباك. تتكبد هذه العمليات رسومًا وتُنفَّذ بنجاح من قبل وقت التشغيل بالضبط كما أراد الموقع. يفشلون بسبب منطق العملية نفسه الذي يتطلب منهم القيام بذلك. +80% من العمليات "الفاشلة" تأتي من رمز الخطأ 0x1771، الرمز الخاص بتجاوز مبلغ الانزلاقالبيانات) على وجه الخصوص، يتم تقديم 95٪ من هذه المعاملات فقط من قبل 0.1٪ من عناوين سولانا النشطة، وتحديدًا الروبوتات الآلية التي تحاول الاستفادة من فرص التحكم في الأسعار الحساسة للوقت.
"حرفياً، هدف سولانا هو نقل المعاملات بسرعة مثل انتشار الأخبار حول العالم - بسرعة الضوء عبر الألياف. الذي نتنافس معه هو ناسداك وبورصة نيويورك." - أناتولي ياكوفينكو، مؤسس سولانا
تشير RPCs (Remote Procedure Calls) إلى عقد RPC. يمكن اعتبار هذه العقد بوابات للتفاعل مع الشبكة وقراءة البيانات منها. تعمل هذه العقد بنفس البرنامج الموجود على المحققين الكاملين ولكن بإعدادات مختلفة، مما يتيح لها محاكاة الصفقات بدقة والحفاظ على رؤية محدثة للحالة الحالية. حتى كتابة هذا النص، هناك أكثر من 4,000 عقد RPC على شبكة Solana.
على عكس العُقداء الكاملة، فإن عُقد الـ RPC لا تحمل أي رهان في الشبكة. بدون رهان، لا يمكنهم التصويت أو بناء الكتل. يختلف هذا الإعداد عن معظم سلاسل الكتل الأخرى، حيث يكون عُقد الـ RPC والمعتمدين عادةً نفسهم. نظرًا لعدم تلقي عُقد الـ RPC لمكافآت الرهان، فإن اقتصاديات تشغيل عُقد الـ RPC تختلف عن تلك المعتمدين مع العديد منها يعمل كخدمة مدفوعة للمطورين الذين يديرون تطبيقات سولانا.
تتميز سولانا لأنها تم تصميمها من البداية للعمل بدون ذاكرة مؤقتة. على عكس البلوكشين التقليدية التي تستخدم بروتوكولات النميمة لنقل المعاملات عشوائيا وعلى نطاق واسع عبر الشبكة، تقوم سولانا بتوجيه جميع المعاملات إلى محقق الصلاحية الرئيسي المحدد مسبقا، المعروف باسم القائد، لكل فتحة زمنية.
Callout
تعمل سولانا على أربع مجموعات: Localnet، Testnet، Devnet، و Mainnet-Beta. عندما يشير الناس إلى سولانا أو شبكة سولانا، فإنهم دائمًا يشير إلى Mainnet-Beta تقريبًا. Mainnet-Beta هو الوحيد الذي تحمل فيه الرموز قيمة حقيقية، بينما تستخدم المجموعات الأخرى فقط لأغراض الاختبار.
بمجرد أن يتلقى RPC رسالة معاملة ليتم تضمينها في كتلة ، يجب إعادة توجيهها إلى القائد. يتم إنتاج جدول القائد قبل كل حقبة (كل يومين تقريبا). تنقسم الحقبة القادمة إلى فتحات ، كل منها ثابت عند 400 مللي ثانية ، ويتم اختيار قائد لكل فتحة. سيتم اختيار المدققين ذوي الحصة الأعلى في كثير من الأحيان ليصبحوا قادة في كل حقبة. خلال كل فتحة ، تتم إعادة توجيه رسائل المعاملات إلى القائد ، الذي لديه الفرصة لإنتاج كتلة. عندما يحين دور المدقق ، يتحولون إلى "وضع القائد" ، ويبدأون بنشاط في معالجة المعاملات وبث الكتل إلى بقية الشبكة.
في بداية عام 2024، قدمت سولانا آلية جديدة تهدف إلى منع الرسائل غير المرغوب فيها وتعزيز مقاومة سايبيل، والمعروفة باسم "جودة الخدمة المرتبطة بالرهن" (SWQoS). يتيح هذا النظام للقادة تحديد أولوية رسائل المعاملات التي يتم تمريرها من خلال محققين آخرين مرهونين. هنا، يتم منح المحققين الذين لديهم رهن أعلى قدرة أعلى نسبيًا لنقل حزم رسائل المعاملات إلى القائد. يساعد هذا النهج بشكل فعال في التخفيف من هجمات سايبيل من العقد غير المرهونة عبر الشبكة.
تحت هذا النموذج، يمكن للمحققين أيضًا التفاوض على تأجير سعتهم المرتبطة بالرهان إلى عقد معقد الطلبات البروتوكولية. وفي المقابل، تحصل عقد معقد الطلبات البروتوكولية على زيادة في النطاق الترددي، مما يتيح لها تحقيق معدلات إدراج معاملات أكبر في الكتل. يجدر بالذكر أن 80% من سعة القائد (2،000 اتصال) محجوزة لـ SWQoS. يتم تخصيص الـ 20% المتبقية (500 اتصال) لرسائل المعاملات من العقد غير المرتبطة. تعكس استراتيجية التخصيص هذه المسارات ذات الأولوية على الطرق السريعة، حيث يدفع السائقون رسومًا لتجنب حركة المرور.
أثرت SWQoS على نظام Solana من خلال رفع متطلبات إعادة توجيه المعاملات إلى القائد وتقليل فعالية هجمات الرسائل غير المرغوب فيها. لقد تحفز هذه التغييرات التطبيقات ذات حركة عالية على دمج عملياتها عموديًا. من خلال تشغيل عقدة المحقق الخاصة بهم، أو من خلال الوصول إلى اتصالات المراهنة، يمكن للتطبيقات ضمان وصول مميز إلى القائد، مما يعزز قدراتها في معالجة المعاملات.
في نهاية عام 2022، اعتمدت سولانابروتوكول الشبكات QUICلإدارة رسالة نقل الصفقات إلى الزعيم. تم تحفيز هذه الانتقالات بتعطل الشبكة الناتج عن قيام الروبوتات بإرسال رسائل غير مرغوب فيها في سلسلة الكتل NFT. يسهل QUIC التواصل السريع والغير متزامن.
تم تطويرها في البداية بواسطةGoogleفي عام 2012، حاولت QUIC تقديم ما هو أفضل في كلتا العوالم. إنه يُسهل التواصل السريع غير المتزامن مشابه لبروتوكول UDP، ولكن مع جلسات آمنة واستراتيجيات متقدمة لمراقبة تدفق TCP. وهذا يسمح بوضع حدود على مصادر حركة المرور الفردية بحيث يمكن للشبكة التركيز على معالجة المعاملات الحقيقية. كما أن لديه مفهوم للتدفقات الفردية. لذلك إذا تم إسقاط معاملة واحدة، فإنه لا يحتاج إلى حظر المتبقية. باختصار، يمكن اعتبار QUIC محاولة لدمج أفضل خصائص TCP و UDP.
صندوق التنبيه
وزن الرهان هو مبدأ متكرر يوجد في جميع أنظمة سولانا، ويشمل مكافآت التصويت، وأشجار التوربين، وجداول الزعماء، وتيار الخليج، وشبكة النميمة. يتم منح المحققين ذوي الرهان الأكبر ثقة أعلى وأولوية في الأدوار في الشبكة.
"نحن نعتبر نظام SVM (Solana Virtual Machine) الأفضل من حيث تكنولوجيا الجهاز الظاهري حاليًا." — أندري كرونيه، مؤسسة فانتوم
تقوم العديد من شبكات البلوكشين ببناء كتل كاملة قبل بثها، ما يعرف ببناء الكتل المتفرقة. يستخدم سولانا، على النقيض من ذلك، بناء كتل مستمر الذي ينطوي على تجميع وتيسير الكتل ديناميكيًا أثناء إنشائها خلال فترة زمنية مخصصة، مما يقلل بشكل كبير من التأخير.
كل فتحة تستمر 400 ميلي ثانية، ويتم تعيين كل قائد أربع فتحات متتالية (1.6 ثانية) قبل التناوب إلى القائد التالي. من أجل أن يحظى الكتلة بالقبول، يجب أن تكون جميع المعاملات داخلها صالحة ومنتجة من قبل العقد الأخرى.
قبل تولي القيادة بفترتي فتحة، يقوم العارض بإيقاف توجيه المعاملات للتحضير لعبء عمله القادم. خلال هذه الفترة، ترتفع حركة المرور الواردة بشكل حاد، لتصل إلى أكثر من جيجابايت في الثانية حيث يوجه الشبكة بكامله حزم البيانات إلى القائد الوارد.
بمجرد استلام رسائل المعاملات، تدخل رسائل المعاملات وحدة معالجة المعاملات (TPU)، وهي اللوجيك الأساسي للمحقق المسؤول عن إنتاج الكتلة. هنا، تبدأ تسلسل معالجة المعاملات بمرحلة الاحضار، حيث تتلقى المعاملات عبر QUIC. بعد ذلك، تتقدم المعاملات إلى مرحلة التحقق من التوقيع (SigVerify)، حيث تخضع لفحوص التحقق الدقيقة. هنا، يقوم المحقق بالتحقق من صحة التواقيع، ويتحقق من العدد الصحيح للتواقيع، ويقضي على المعاملات المكررة.
يمكن وصف مرحلة البنك كمرحلة بناء الكتلة. إنها أهم مرحلة في TPU، والتي تأخذ اسمها من "البنك". البنك هو فقط الحالة في كتلة معينة. بالنسبة لكل كتلة، لدى سولانا بنك يتم استخدامه للوصول إلى الحالة في تلك الكتلة. عندما تصبح كتلة مؤكدة بعد أن يصوت ما يكفي من المحققين عليها، سيتم تفريغ تحديثات الحساب من البنك إلى القرص، مما يجعلها دائمة. الحالة النهائية للسلسلة هي نتيجة جميع المعاملات المؤكدة. يمكن دائمًا إعادة إنشاء هذه الحالة من تاريخ البلوكشين بشكل حتمي.
تتم معالجة المعاملات بالتوازي وتعبئتها في "إدخالات" دفتر الأستاذ ، وهي دفعات من 64 معاملة غير متعارضة. أصبحت معالجة المعاملات المتوازية على Solana سهلة لأن كل معاملة يجب أن تتضمن قائمة كاملة بجميع الحسابات التي ستقرأها وتكتب إليها. يضع اختيار التصميم هذا عبئا على المطورين ولكنه يسمح للمدقق بتجنب ظروف السباق عن طريق تحديد المعاملات غير المتعارضة فقط للتنفيذ داخل كل إدخال بسهولة. تتعارض المعاملات إذا حاول كلاهما الكتابة إلى نفس الحساب (كتابتان) أو إذا حاول أحدهما القراءة من والآخر يكتب إلى نفس الحساب (قراءة + كتابة). وبالتالي ، تدخل المعاملات المتضاربة في إدخالات مختلفة ويتم تنفيذها بالتتابع ، بينما يتم تنفيذ المعاملات غير المتعارضة بالتوازي.
هناك ستة خيوط تقوم بمعالجة المعاملات بشكل متوازي، مع أربعة مخصصة للمعاملات العادية واثنان حصريًا لمعالجة معاملات التصويت التي تعد جزءًا أساسيًا من آلية توافق Solana. يتم تحقيق كل توازن للمعالجة من خلال عدة أنوية معالجة مركزية؛ ليس لدى المحققين أي متطلبات لوحدة المعالجة الرسومية (وثائق،
بمجرد تجميع المعاملات في إدخالات ، تكون جاهزة للتنفيذ بواسطة Solana Virtual Machine (SVM). الحسابات اللازمة للمعاملة مقفلة ؛ يتم تشغيل الشيكات للتأكد من أن المعاملة حديثة ولكن لم تتم معالجتها بالفعل. يتم تحميل الحسابات ، ويتم تنفيذ منطق المعاملة ، وتحديث حالات الحساب. سيتم إرسال تجزئة الإدخال إلى خدمة إثبات التاريخ ليتم تسجيلها (المزيد حول هذا في القسم التالي). إذا نجحت عملية التسجيل ، الالتزام بجميع التغييرات للبنك ، ويتم رفع الأقفال على كل حساب يتم وضعه في الخطوة الأولى. يتم التنفيذ بواسطة SVM ، وهو جهاز افتراضي تم إنشاؤه باستخدام شوكة Solana الخاصة ب rBPF, مكتبة للعمل مع الترجمة الفورية للتراكيب (JIT)، والآلات الافتراضية لبرامج eBPF. يرجى ملاحظة أن Solana لا تفرض على المحققين كيفية اختيار ترتيب المعاملات داخل كتلة. هذه المرونة نقطة حاسمة سنعود إليها لاحقًا في قسم الاقتصاد + Jito من هذا التقرير.
تذكر
مصطلح SVM قد يكون غامضًا، حيث يمكن أن يشير إما إلى "آلة الترجمة الافتراضية لـ Solana" أو "آلة الترجمة الافتراضية لـ Sealevel". كلا المصطلحين يصفان نفس المفهوم، مع Sealevel يكون اسم بيئة تشغيل Solana. يستمر مصطلح SVM في الانتشار بشكل فضفاض على الرغم من الجهود الأخيرة لتحديده بدقةتحديد حدودها.
سولانا هي شبكة تضم آلاف العقد المشغلة بشكل مستقل تتعاون للحفاظ على دفتر الأستاذ الموحد. كل عقد يشكل جهاز أداء عالي يعمل بنفس البرنامج مفتوح المصدر المعروف باسم "عميل".
أطلقت سولانا مع برنامج عميل الكاشف الواحد - في الأصل كان عميل سولانا لابس، والآن يُعرف باسمعميل Agave - مكتوب بلغة Rust. كان توسيع تنوع العملاء أحد الأولويات منذ ذلك الحين وسيتحقق ذلك حقًا مع إطلاقهعميل الراقصة المشتعلة. تعد Firedancer إعادة كتابة كاملة من البداية للعميل الأصلي بلغة برمجة C. تم بناؤها من قبل فريق ذو خبرة من شركة Jump للتداول عالي التردد، وتعد أن تكون العميل الأكثر أداءً على أي سلسلة كتلية.
"كنت قد شربت قهوتين وبيرة، وبقيت حتى الساعة 4:00 صباحًا. كان لدي هذه اللحظة الاكتشافية التي تشبه اللغز إلى إثبات العمل باستخدام نفس الدالة المقاومة للصورة السابقة SHA-256... كنت أعرف أن لدي هذا السهم من الزمن." - أناتولي ياكوفينكو، مؤسس سولانا
دليل التاريخ (PoH) هو صلصة سرية لـ سولانا، تعمل كساعة خاصة في كل محقق تحقق تزامنا عبر الشبكة. ينشئ دليل التاريخ مصدرًا موثوقًا لترتيب الأحداث ومرور الوقت. والأهم من ذلك يضمن الالتزام بجدول القيادة. على الرغم من الأسماء المماثلة، إلا أن دليل التاريخ ليس خوارزمية توافقية مثل دليل العمل.
تزداد الزيادة الزائدة بين العقد عادة مع توسيع الشبكات، ويصبح التنسيق أكثر تعقيدا. تخفف سولانا من ذلك عن طريق استبدال الاتصال من عقد إلى عقد بحساب محلي لـ PoH. وهذا يعني أن المحققين يمكنهم الالتزام بكتلة بجولة واحدة فقط من التصويت. تضمن الطوابع الزمنية الموثوقة في الرسائل أن المحققين لا يمكنهم الانتقال فوق بعضهم البعض وبدء كتلهم مبكرًا.
الخصائص الفريدة لخوارزميات التجزئة هي العوامل الأساسية للـ PoH. SHA256:
Dentro de cada cliente validador, un servicio dedicado de "Prueba de Historia" se ejecuta continuamente el algoritmo hash SHA256 creando una cadena de hashes. La entrada de cada hash es la salida del hash anterior. Esta cadena actúa de la misma manera que una función de retraso verificable, dado que el trabajo de hash debe realizarse en secuencia y los resultados de los hashes futuros no pueden conocerse de antemano. Si el servicio PoH crea una cadena de mil hashes, sabemos que ha pasado tiempo para que haya calculado cada hash secuencialmente; esto puede considerarse como un "microprueba de trabajo". Sin embargo, otros validadores pueden verificar la corrección de los mil hashes en paralelo a una velocidad mucho más rápida que la que se produjeron, ya que la entrada y la salida de cada hash se han difundido a la red. Por lo tanto, la PoH es difícil de producir pero fácil de verificar.
تتراوح أداء معالجة SHA-256 عبر معالجات مختلفة بشكل مدهش ضيق، مع اختلافات طفيفة فقط بين أسرع الآلات. لقد تم بالفعل بلوغ حد علوي شائع، على الرغم من الجهد والوقت الكبير الذي تم استثماره في تحسين هذه الوظيفة، وذلك بشكل كبير بسبب اعتماد Bitcoin عليها.
أثناء فتحة القائد، ستتلقى خدمة PoH الإدخالات المعالجة حديثًا من مرحلة البنك. يتم دمج العلامة التجارية PoH الحالية بالإضافة إلى علامة التجارية لجميع المعاملات في الإدخال في العلامة التجارية PoH التالية. يعمل هذا كطابع زمني يضع الإدخال في سلسلة العلامات التجارية، مثبتًا تسلسل تم معالجة المعاملات به. هذه العملية لا تؤكد فقط مرور الوقت ولكنها تعمل أيضًا كسجل تشفيري للمعاملات.
في كل كتلة، هناك 800،000 تجزئة. تتضمن تدفق PoH أيضًا "ticks"، وهي إدخالات فارغة تشير إلى حيوية الزعيم ومرور الوقت تقريبًا بجزء صغير من الثانية. يحدث علامة كل 6.25 مللي ثانية، مما يؤدي إلى حدوث 64 علامة في كل كتلة ووقت كتلة إجمالي يبلغ 400 مللي ثانية.
يقوم المحققون باستمرار بتشغيل ساعة PoH حتى عندما لا يكونون القادة حيث يلعب دورًا حاسمًا في عملية التزامن بين العقد.
تذكر
الفائدة الرئيسية لـ PoH هي أنه يضمن أن جدول القادة الصحيح يجب الالتزام به، حتى لو كان منتج الكتلة غير متصل بالإنترنت - وهو حالة تعرف باسم "المتخلف". يمنع PoH المعالج الخبيث من إنتاج كتل قبل دوره.
"فصل الشيفرة والحالة في SVM كان أفضل قرار تصميم. مباركون المطورون في النظم المضمنة الذين حفروا هذه المفهوم في دماغي بإخلاص." — أناتولي ياكوفينكو، مؤسس سولانا
Dentro de un validador de Solana, el estado global se mantiene en la base de datos de cuentas conocida como AccountsDB. Esta base de datos es responsable de almacenar todas las cuentas, tanto en la memoria como en el disco. La estructura de datos principal en el índice de cuentas es un hashmap, lo que hace que AccountsDB sea esencialmente un vastoمخزن القيم المفتاحيةهنا، المفتاح هو عنوان الحساب، والقيمة هي بيانات الحساب.
مع مرور الوقت، ارتفع عدد حسابات سولانا إلى مئات الملايين. يعود هذا العدد الكبير جزئيًا إلى أن مطوري سولانا يحبذون القول بأن "كل شيء على سولانا هو حساب!"
الحساب هو حاوية تحتفظ بالبيانات بشكل دائم، على غرار ملف على الكمبيوتر. تأتي بأشكال مختلفة:
جميع الحسابات لديها الحقول التالية:
حسابات برامج سولانا تحتوي فقط على منطق قابل للتنفيذ. هذا يعني عند تشغيل برنامج يقوم بتغيير حالة الحسابات الأخرى ولكن يبقى دون تغيير ذاته. هذا الفصل بين الشيفرة والحالة يميز سولانا عن سلاسل الكتل الأخرى ويدعم العديد من تحسيناتها. يكتب المطورون في المقام الأول هذه البرامج بلغة Rust، وهي لغة برمجة عامة.المعروفلتركيزها القوي على السلامة والأداء. بالإضافة إلى ذلك، تتوفر العديد من SDKs في TypeScript و Python لتسهيل إنشاء واجهات تطبيقات الواجهة الأمامية وتمكين التفاعل البرمجي مع الشبكة.
توفر العديد من الوظائف الشائعة بشكل افتراضي من قبل البرامج الأصلية. على سبيل المثال، الـ Solana لا تتطلب من المطورين نشر الكود لإنشاء رمز. بدلاً من ذلك، يتم إرسال التعليمات إلى برنامج أصلي مُعد مسبقًا سيقوم بإعداد حساب لتخزين بيانات الرمز، مما يخلق بشكل فعال رمزًا جديدًا.
الإيجار هو آلية مصممة لتحفيز المستخدمين على إغلاق الحسابات وتقليل زيادة الحالة. لإنشاء حساب جديد، يجب أن يحتفظ برصيد أدنى من SOL، المعروف بـ "مبلغ الإيجار المعفى منه". يمكن اعتبار هذا تكلفة تخزين تتحملها الحساب للحفاظ على حيويته في ذاكرة المحقق. إذا زاد حجم بيانات الحساب، يزيد متطلب الإيجار بالرصيد الأدنى بشكل نسبي. عندما لا يعد الحساب مطلوبًا، يمكن إغلاقه، ويتم إرجاع الإيجار إلى مالك الحساب.
على سبيل المثال، إذا كان المستخدم يحمل stablecoin مرتبط بالدولار، يتم تخزين هذه الحالة في حساب رمزي. حاليا، المبلغ المعفى من الإيجار لحساب الرمزي هو 0.002 SOL. إذا قام المستخدم بتحويل رصيده الكامل من stablecoin إلى صديق، يمكن إغلاق حساب الرمزي، وسيتلقى المستخدم 0.002 SOL الخاصة به مرة أخرى. غالباً ما تتولى البرامج إغلاق حسابات المستخدمين تلقائيًا. تتوفر العديد من التطبيقات لمساعدة المستخدمين في تنظيف الحسابات القديمة غير المستخدمة واسترداد الكميات الصغيرة من SOL المخزنة فيها.
في حين أن قراءة بيانات الحساب مسموح بها عالميا ، فإن نموذج ملكية Solana يعزز الأمان من خلال تقييد من يمكنه تعديل (كتابة) بيانات الحساب بالضبط. هذا المفهوم ضروري لفرض القواعد والأذونات على Solana blockchain. كل حساب لديه برنامج "المالك". مالك الحساب مسؤول عن إدارته ، مما يضمن أن البرامج المصرح بها فقط هي التي يمكنها تغيير بيانات الحساب. الاستثناء الملحوظ لهذه القاعدة هو نقل lamports (أصغر وحدة في SOL) - زيادة رصيد lamports للحساب مسموح به عالميا ، بغض النظر عن الملكية.
برامج سولانا ، كملفات تنفيذية للقراءة فقط، يجب أن تخزن الحالة باستخدام "عناوين مشتقة من البرنامج" (PDAs). تعد PDAs أنواعًا خاصة من الحسابات ترتبط ببرنامج وتمتلكه وليس مستخدم معين. بينما تكون عناوين مستخدمي سولانا العادية مشتقة من المفتاح العام لزوج مفاتيح Ed25519 ، إلا أن PDAs لا تحتوي على مفتاح خاص. بدلاً من ذلك ، يتم استنتاج مفتاحهم العام من مزيج من المعلمات - وغالبًا كلمات مفتاحية أو عناوين حسابات أخرى - جنبًا إلى جنب مع معرف البرنامج (العنوان) للبرنامج المملوك.
عناوين PDA موجودة "خارج المنحنى"، مما يعني أنها ليست على منحنى Ed25519 مثل العناوين العادية. يمكن للبرنامج الذي يمتلك PDA توليد توقيعات برمجياً لضمان أنه هو الوحيد القادر على تعديل حالة PDA.
أعلاه: حسابات رمز Solana هي أمثلة محددة لعناوين مشتقة من البرنامج (PDAs). يتم استخدامها لاحتواء الرموز والعيش "خارج المنحنى". برنامج Associated Token Account (ATA) يضمن أن يمكن لكل محفظة أن تحتوي على حساب رمز مرتبط واحد فقط لكل نوع من الرموز، مما يوفر وسيلة موحدة لإدارة حسابات الرموز.
"أكثر جزء مثير للاهتمام حول سولانا ليس التوازي أو الدعم الذاتي أو تغريدات تولي. إنه شيء قد لا تكون قد سمعت به: توربين" - مرت ممتاز، هيليوس
أثناء مرحلة البنكية، يتم تنظيم المعاملات في إدخالات وإرسالها إلى تيار دليل التأريخ لتسجيل الزمن. يتم تحديث بنك الكتلة، وتصبح الإدخالات الآن جاهزة للمرحلة التالية - توربين.
التوربينات هي العملية التي ينتشر فيها الزعيم كتلته إلى بقية الشبكة. مستوحاة منبت تورنت, تم تصميمه ليكون سريعًا وفعالًا، مما يقلل من الزائد في التواصل ويقلل من كمية البيانات التي يحتاج القائد إلى إرسالها.
تحقق ذلك توربين عن طريق تقسيم بيانات المعاملات إلى "شرائح" من خلال عملية تسمى "تمزيق". الشرائح عبارة عن حزم صغيرة من البيانات، تصل إلى 1280 بايت، مماثلة للإطارات الفردية في تيار الفيديو. عند إعادة تجميعها، تتيح هذه الشرائح للمحققين إعادة تشغيل الكتلة بأكملها. تُرسل الشرائح عبر الإنترنت بين المحققين باستخدام بروتوكول UDP وتستخدم الترميز بالمحو للتعامل مع فقدان الحزمة أو الإسقاط الخبيث للحزم.ترميز المحوسبة, aمتعدد الحدودنظام كشف الأخطاء وتصحيحها القائم على القاعدة، يضمن سلامة البيانات. حتى إذا فقدت بعض الشظايا، يمكن للكتلة أن تُعاد بناؤها بعد ذلك.
تتم تجميع الشظايا في مجموعات تعرف باسم دفعات تصحيح الأخطاء الأمامية (FEC). بشكل افتراضي، تتكون هذه الدفعات من 64 شظية (32 شظية بيانات + 32 شظية استرداد). يحدث استرداد البيانات لكل دفعة FEC، مما يعني أنه يمكن استعادة جميع البيانات حتى لو فُقدت أو تعطلت نصف الحزم في دفعة. يتم تقسيم كل دفعة من 64 شظية إلى ميركل بتوقيع القائد، ويربطها بالدفعة السابقة. يضمن هذا العملية أن يمكن الحصول بأمان على الشظايا من أي عقد في الشبكة يمتلكها، حيث يوفر سلسلة جذور ميركل مسارًا قابلا للتحقق للأصالة والنزاهة.
يبث القائد في البداية إلى عقدة جذر واحدة ، والتي تنشر القطع على جميع عقد المدقق الأخرى. تتغير عقدة الجذر هذه مع كل أجاد. يتم تنظيم المدققين في طبقات ، لتشكيل "شجرة التوربينات". عادة ما يتم وضع المدققين الذين لديهم كمية حصة أكبر باتجاه الجزء العلوي من الشجرة ، بينما يتم وضع أولئك الذين لديهم حصص أقل في الأسفل.
الشجرة عادة ما تمتد عبر ثلاثة أو أربعة قفزات ، اعتمادًا على عدد الوحدات التحقق النشطة. لأسباب بصرية بسيطة ، يتم تصوير فانوت بقيمة 3 أعلاه ، ولكن قيمة فانوت سولانا الفعلية حاليًا مضبوطة إلى 200. لأسباب أمان ، يتم تدوير ترتيب الشجرة لكل دفعة جديدة من الشرائح.
الهدف الرئيسي لمثل هذا النظام هو تخفيف ضغط انتقال البيانات الصادرة على القائد والجذور. من خلال استخدام نظام الإرسال وإعادة الإرسال، يتم توزيع الحمل بين القائد ومعادلي الإرسال، مما يقلل من الضغط على أي عقدة فردية.
“يقول بعض الأشخاص الذين لديهم ؠارة ذكية بأن هناك مجتمع مطورين ذـ64 للانا... أتمنى أن يحظى المجتمع بفرصة منصفة للتطور” — فيتاليك بوتيرين، مؤسس إيثريم
بمجرد أن يتلقى المحقق المسؤول عن التحقق من الكتلة الجديدة من الزعيم عبر توربين، يجب أن يقوم بالتحقق من جميع المعاملات داخل كل إدخال. يتضمن ذلك إعادة تشغيل الكتلة بأكملها، والتحقق من تجزئة PoH بشكل متوازٍ، وإعادة إنشاء المعاملات في التسلسل الذي يحدده PoH، وتحديث بنكه المحلي.
يتم التعامل مع هذه العملية من خلال وحدة التحقق من المعاملات (TVU)، والتي تشبه وحدة معالجة المعاملات الرئيسية (TPU)، حيث تعمل كمنطق النواة المسؤول عن معالجة الشظايا والتحقق من الكتلة. مثل TPU، يتم تقسيم تدفق TVU إلى عدة مراحل، بدءًا من مرحلة جلب الشظايا حيث يتم استلام الشظايا عبر Turbine. في مرحلة التحقق من توقيع قائد الشظايا التالية، تخضع الشظايا لعدة فحوصات للتأكد من سلامتها، ولا سيما التحقق من توقيع القائد، الذي يضمن أن الشظايا المستلمة مشتقة من القائد.
في مرحلة إعادة الإرسال، يقوم المحقق، استنادًا إلى موقعه في شجرة التوربين، بتوجيه الشظايا إلى المحققين الأسفل المناسبين. في مرحلة الإعادة التشغيل، يقوم المحقق بإعادة إنشاء كل صفقة تمامًا وبالترتيب الصحيح أثناء تحديث نسخته المحلية من البنك.
تعتبر مرحلة إعادة التشغيل مماثلة لمرحلة البنك في وحدة المعالجة الزمنية؛ إنها المرحلة الأكثر أهمية ويمكن وصفها بشكل أكثر استقامة كمرحلة التحقق من الكتلة. إعادة التشغيل عبارة عن حلقة عملية ذات خيوط واحدة تنسق العديد من العمليات الرئيسية، بما في ذلك التصويت وإعادة تعيين ساعة PoH، وتبديل البنوك.
أعلاه: مرحلة إعادة اللعب مسؤولة عن تحويل المحقق إلى وضع القائد وبدء إنتاج الكتلة. الرسم البصري الأصلي: جاستن ستاري، أنزا
لتحقيق التوافق، تستخدم سولانا تاور بي اف تي (TBFT)، وهي تنفيذ مخصص لنموذج العمل العملي المعروفعيب فرنجي بيزنطيخوارزمية التحمل (PBFT)، المستخدمة عادةً من قبل معظم شبكات البلوكشين للاتفاق على حالة السلسلة. مثل جميع شبكات البلوكشين، تفترض سولانا وجود عقد الأشباح في الشبكة، لذا يجب على النظام أن يتحمل ليس فقط فشل العقد ولكن أيضًا مستويات معينة من الهجمات.
يميز Tower BFT نفسه عن سلاسل أخرى من خلال الاستفادة من الساعة المتزامنة التي توفرها دليل التاريخ. بينما يتطلب PBFT التقليدي جولات متعددة من الاتصال للاتفاق على ترتيب المعاملات، يستخدم عُقد Solana ترتيب الأحداث المحدد مسبقًا، مما يقلل بشكل كبير من العبء الناتج عن الرسائل.
للمشاركة في الإجماع وكسب المكافآت ، يقدم المدققون أصواتا للكتل التي يعتقدون أنها صالحة (أي خالية من مشكلات مثل الإنفاق المزدوج أو التوقيعات غير الصحيحة) ويجب اعتبارها أساسية. يدفع المدققون رسوم معاملة لهذه الأصوات ، والتي تتم معالجتها بواسطة القائد وتضمينها في كتلة جنبا إلى جنب مع معاملات المستخدم العادية. هذا هو السبب في أن معاملات Solana غالبا ما يتم تصنيفها إلى معاملات تصويت وغير تصويت. عندما يقدم المدققون تصويتا صحيحا وناجحا ، فإنهم يكسبون رصيدا. تحفز هذه الآلية المدققين على التصويت على الشوكة التي يعتقدون أن لديها أفضل فرصة لإدراجها ، أي الشوكة "الأثقل".
جزء من تصميم سولانا، الذي يجعله سريعًا جدًا، هو أن الشبكة لا تنتظر اتفاق جميع المحققين على كتلة مُنتجة حديثًا قبل إنتاج الكتلة التالية. ونتيجة لذلك، من الشائع أن تكون هناك كتلتان مختلفتان مرتبطتان بنفس الكتلة الأم، مما يخلق الشوك.
يجب على محققي Solana التصويت على هذه الفروع واستخدام خوارزمية توافق لتحديد أي منها يجب اعتماده. عند وجود فروع منافسة، سيتم تنفيذ فقط فرع واحد في النهاية من قبل الشبكة، بينما تتم التخلص من الكتل في الفروع المهجورة.
كل فتحة لها قائد محدد مسبقًا يتم قبول كتلة هذا القائد فقط؛ لا يمكن أن يكون هناك كتلتان مقترحتان لفتحة واحدة. وبالتالي، يتم تقييد عدد الانشعاعات المحتملة إلى قائمة تخطي "موجود/غير موجود" للاشواط التي يمكن أن تظهر عند حدود فتحات تناوب القادة. بمجرد أن يختار المحقق شوكة، يلتزم بهذه الشوكة حتى ينتهي وقت القفل، مما يعني أنه يجب أن يلتزم بخياره لفترة دنيا.
معدل "تخطي سولانا" - النسبة المئوية للفتحات التي لم يتم فيها إنتاج كتلة - تتراوح بين 2% إلى 10%، حيث تكون الفروع هي السبب الرئيسي لتخطي هذه الفتحات. الأسباب الأخرى المحتملة للفتحات المتخطية تشمل بدء حقبة جديدة، أو كون قائد غير متصل، أو إنتاج كتلة غير صالحة.
تذكر
حالة المعاملة على سولانا تختلف اعتمادًا على مرحلتها الحالية في عملية التوافق:
تم معالجته: تم تضمين الصفقة في كتلة.
تم التأكيد: تم التصويت على كتلة العملية بأغلبية سوبرمايورية بنسبة ثلثين.
تم الانتهاء: تم بناء أكثر من 31 كتلة على أعلى كتلة المعاملة.
حتى الآن، لم يحدث في تاريخ سولانا أبداً أن (بتفاؤل) الكتلة المؤكدة لم تصبح نهائية.
مع كل كتلة، يستخدم Solana البنك للوصول إلى الحالة في تلك الكتلة. عندما يتم إنهاء البنك، يتم تحديث الحسابات من ذلك البنك وأسلافه على القرص. بالإضافة إلى ذلك، يتم تقليم أي تحديثات للحسابات من البنوك السابقة التي ليست أسلافاً للبنك الذي تم إنهاؤه. يسمح هذا العملية لـ Solana بالحفاظ على حالات محتملة متعددة بكفاءة.
"يتطلب سلسلة كتل مزيجًا ذكيًا من علم التشفير والأنظمة الموزعة وأنظمة التشغيل ولغات البرمجة. كانت قوة سولانا الخارقة هي استعدادها للهروب بصرخة من أكثر المشاكل المثيرة في كل تخصص." — غريغ فيتزجيرالد، مؤسس سولانا
يمكن التفكير في شبكة الشائعات على أنهاطائرة التحكملشبكة سولانا. على عكس الطائرة البيانات، التي تدير تدفقات المعاملات، ينشر الطائرة التحكمية بيانات ضرورية حول حالة سلسلة الكتل، مثل معلومات الاتصال، وارتفاع دفتر الأستاذ، ومعلومات التصويت. بدون شائعات، لن يعرف المحققون وبروتوكولات الاتصال بالإجراءات البعيدة أي عناوين ومنافذ مفتوحة للاتصال عبر مختلف الخدمات. تعتمد العقد الجديدة أيضًا على الشائعات للانضمام إلى الشبكة.
بروتوكول الشائعات في سولانا يستخدم الاتصال غير الرسمي ند لند مستوحى من نهج البث الشجري بواسطة خوارزمية PlumTree المعدلة. تُنشر هذه الطريقة بشكل فعال المعلومات دون الاعتماد على مصدر مركزي.
يعمل القيل والقال إلى حد ما كنظام معزول ، مستقل عن معظم مكونات المدقق الأخرى. يشارك المدققون و RPCs كائنات البيانات الموقعة كل 0.1 ثانية عبر UDP عبر القيل والقال ، مما يضمن توفر المعلومات عبر الشبكة. يجب أن تكون جميع رسائل القيل والقال أقل من أو تساوي الحد الأقصى لوحدة الإرسال (MTU) البالغ 1280 بايت ، والمشار إليه باسم "بنية الحزمة" في قاعدة التعليمات البرمجية.
سجلات الشائعات هي كائنات البيانات الفعلية المشتركة بين العقد. هناك حوالي 10 أنواع مختلفة من السجلات، كل منها يخدم أغراضًا مختلفة. تتم توقيع سجلات الشائعات وتخضع للإصدار والتأريخ لضمان النزاهة والعملة.
هناك أربعة أنواع من رسائل النميمة:
يتم تخزين بيانات الشائعات في مخزن بيانات متكرر العنقاد (CrdsTable). يمكن أن تنمو هذه الهيكلة البيانات بشكل كبير جدًا وتحتاج إلى تقليم دوري.
تتميز سولانا عن غيرها من شبكات البلوكشين بعدم الحاجة إلى تاريخ كامل لتحديد الحالة الحالية لحساب. يضمن نموذج الحساب في سولانا أن الحالة في أي فتحة معروفة، مما يسمح للمحققين بتخزين الحالة الحالية لكل حساب دون معالجة جميع الكتل التاريخية. لا تحتفظ الـ RPCs والمحققون، حسب التصميم، بسجل الدفاتر التاريخي بالكامل. بدلاً من ذلك، يتم تخزين بيانات المعاملات التي تعادل 1 أو 2 حقبة فقط (2-4 أيام) عادةً، مما يكفي للتحقق من طرف السلسلة.
يتم إدارة الأرشيف حاليًا بواسطة "عقدة المستودع"، التي يديرها مقدمو خدمات RPC المحترفون، ومؤسسة سولانا، وغيرهم من المشاركين في النظام البيئي الذين يهتمون بضمان توفر تاريخ المعاملات. تحتفظ عقدة المستودع عادةً بأحد أو كلا العنصرين التاليين:
أرشيف السجل: يقوم بتحميل لقطات السجل الخام وقواعد البيانات للحسابات المناسبة لإعادة اللعب من البداية.
Google Bigtable Instance: يخزن بيانات الكتل من الكتلة الأصلية فصاعداً، بتنسيق يخدم طلبات RPC.
“يدرك الناس أن سولانا هي السلسلة الوحيدة المتاحة اليوم التي ستدعم تطبيقات المستهلكين الرئيسية.” — تيد ليفينغستون، مؤسس Code
توظف سولانا التضخم لتوزيع مكافآت الرهان عن طريق إنشاء رموز SOL جديدة في كل حقبة. يؤدي هذا العملية إلى تقليل حصة شبكة غير المراهنين مقارنة بالمراهنين، مما يؤدي إلى تحويل ثروة من غير المراهنين إلى المراهنين. بدأ التضخم في أوائل عام 2021 بمعدل ابتدائي 8% ينخفض بمقدار 15% سنويًا حتى يستقر عند معدل طويل الأمد قدره 1.5%.
يمكن لأي حامل لرمز SOL كسب مكافآت ومساعدة في تأمين الشبكة عن طريق رهن الرموز لمراقب أو أكثر. تعرف تخصيص الرموز لمراقب باسم التفويض. تفويض الرموز لمراقب يشير إلى الثقة في المراقب. ومع ذلك، فإنه لا يمنح المراقب ملكية أو تحكم في الرموز. يتم تنفيذ جميع الإجراءات المتعلقة بالرهن وإلغاء الرهن والتفويض في بداية حقبة جديدة.
مكافآت التصويت
عندما يقدم المحقق تصويتًا ، يكسب رصيدًا إذا كان التصويت دقيقًا وناجحًا. تكلفة معاملات التصويت 0.000005 SOL وتخضع للإعفاء من رسوم الأولوية. تبلغ مصاريف التصويت حوالي 1 SOL في اليوم الواحد لكل محقق ، مما يجعله التكلفة التشغيلية الرئيسية لتشغيل المحقق. خلال حقبة ، يتراكم المحققون الرصيد من التصويت ، والذي يمكنهم تبادله مقابل حصة من التضخم في نهاية الحقبة.
يصوت أعلى المحققين بنجاح على نحو 90٪ من الفتحات. يرجى ملاحظة أن نسبة الفتحات بدون كتل (معدل الفتحة المتخلفة) تتراوح بين 2٪ إلى أكثر من 10٪، ولا يمكن التصويت على هذه الفتحات. يصوت المحقق الأوسط بنجاح على حوالي 80٪ من الفتحات، مكتسبًا 345،600 رصيد في حقبة تحتوي على 432،000 فتحة.
يتم تقسيم إجمالي حجم التضخم أولاً بناءً على الاعتمادات المكتسبة للحقبة. حصة محقق الأعتمادات الإجمالية (اعتماداتهم مقسمة على مجموع اعتمادات جميع المحققين) تحدد مكافأتهم نسبيًا. يتم تزويدها بشكل إضافي بواسطة الرهان.
لذلك، يجب أن يكسب المحقق الذي يمتلك 1% من إجمالي الرهن تقريبًا 1% من التضخم الإجمالي إذا كان لديه عدد متوسط من الاعتمادات. إذا كان لديه عدد من الاعتمادات أعلى أو أدنى من العدد المتوسط، ستتقلب مكافآته وفقًا لذلك.
الاختلافات في أداء التصويت هو سبب آخر في تفاوت عوائد (المقاسة بنسبة العائد السنوي) التي يقدمها المحققون لأصحاب الحصص. عامل آخر هو معدل العمولة المفروضة من قبل المحققين، والذي يمثل نسبة من مكافآت التضخم الإجمالية الموجهة إلى محققهم. بالإضافة إلى ذلك، يؤثر بشكل كبير على العوائد أن يكون محققا غير متصل بالإنترنت أو خارج التزام مع سلسلة الكتل (المعروف باسم التقصير)
مكافآت الكتل
يتلقى المدققون المعينون كقائد لكتلة معينة مكافآت كتلة إضافية. تتكون هذه المكافآت من 50٪ من الرسوم الأساسية و 50٪ من رسوم الأولوية لجميع المعاملات داخل الكتلة ، مع حرق الرسوم المتبقية. فقط المدقق الذي أنتج الكتلة يتلقى هذه المكافآت. على عكس مكافآت Staking ، التي يتم توزيعها لكل حقبة ، يتم إضافة مكافآت الكتلة على الفور إلى حساب هوية المدقق عند إنتاج الكتلة.
أصبح الرهن السائل بديلاً شعبيًا عن الرهن الأصلي. يتلقى المشاركون رمزًا، المعروف باسم رمز الرهن السائل (LST) أو المشتق السائل للرهن (LSD)، مقابل رهن SOL الخاص بهم، عادةً في مجموعة رهن تفويضية توزع رموزها عبر عدة محققين. تمثل رموز LST الجديدة التي تم تلقيها حصة المستخدم من SOL المرهونة. يمكن تداول هذه الرموز واستخدامها في التطبيقات، أو نقلها إلى الآخرين مع الحصول على مكافآت الرهن. الميزة الرئيسية لهذا النظام هي أنه يعزز بشكل كبير كفاءة رأس المال.
سعر LST = (إجمالي SOL المرهون في حوض * سعر SOL) / إجمالي LST المطبوعة
مع الرهانات الأصلية التقليدية، مع مرور الوقت، سيتراكم المراهن مباشرة المزيد من SOL. بينما مع الرهان السائل، يتم إعادة استثمار المكافآت إلى البركة مما يزيد من القيمة العادلة لـ LST. طالما وجد آلية لاسترداد LSTs مقابل SOL المرهونة الأساسية، سيضمن التجار التحكيميون أن يبقى سعر الرمز عقلانيًا.
حتى الآن، أكثر من 80% (مصدر) من حصته على سولانا يستخدم برنامج تحقق العميل جيتو. يقدم هذا العميل، وهو فروع من العميل الأصلي أجاڤي، مزاد خارج بروتوكول البلوكسبيس الذي يوفر للمحققين حوافز اقتصادية إضافية من خلال النصائح. هذه الحافز الإضافي هو عامل رئيسي في اعتماد عميل جيتو بين المحققين بشكل واسع النطاق.
عندما يستخدم القادة عميل Jito validator، تتم توجيه معاملاتهم في البداية إلى Jito-Relayer. يعمل هذا البرنامج مفتوح المصدر كموجّه وسيط المعاملات. تظل العقد الشبكية الأخرى غير عابرة لوجود Jito-Relayer، حيث أنها ترسل ببساطة المعاملات إلى عنوان وتكوين المنفذ الذي أعلن عنه القائد عبر شبكة الشائعات كـ ingress_socket الخاص به، وتفترض أنه القائد.
يحتفظ المعالج بجميع المعاملات لمدة 200 ميلي ثانية قبل إعادة توجيهها إلى القائد. يؤخر هذا الآلية الـ "عرقلة السرعة" رسائل المعاملات الواردة، مما يوفر نافذة قصيرة لإجراء المزادات. بعد 200 ميلي ثانية، يفرج المعالج بتفاؤل عن المعاملات بغض النظر عن نتائج المزاد.
تحدث مزادات Blockspace خارج السلسلة الرئيسية عبر محرك الكتل Jito، مما يسمح للباحثين والتطبيقات بتقديم مجموعات من الصفقات التي تُنفذ بشكل ذري. تحتوي هذه المجموعات عادة على صفقات تتعلق بالوقت مثل الفروقات أو التصفيات. يفرض Jito رسمًا بنسبة 5% على جميع النصائح، مع حد أدنى للنصيحة قدره 10,000 lamports. تعمل النصائح بشكل كامل خارج البروتوكول، منفصلة عن رسوم الأولوية والأساسية في البروتوكول. في السابق، كان Jito يعمل خدمة قاعدة بيانات الذاكرة الخارج البروتوكولية القنونية، والتي تم الآن إهمالها.
"كنا نعرف الأصغر والأسرع والأرخص أفضل من أي شخص آخر في العالم، والآن نحن نطبق تلك المفاهيم على تقنية البلوكشين." — غريغ فيتزجيرالد، مؤسس Solana
سولانا هي سلسلة كتل عالية الأداء ومنخفضة التأخير مشهورة بسرعتها وكفاءتها وتركيزها على تجربة المستخدم. تتيح لها الهندسة المعمارية المتكاملة الفريدة الخاصة بها آلاف المعاملات في الثانية عبر شبكة لامركزية عالمية. بفضل وقت الكتلة البالغ 400 مللي ثانية ورسوم المعاملات التي تكون كسور من السنتات، فإنها توفر كل من السرعة والكفاءة من حيث التكلفة. يستكشف هذا التقرير تفاصيل تصميم وعمل سولانا، مستكشفًا الآليات الرئيسية وتوبولوجيا الشبكة التي تسهم في قدراتها.
تتبنى سولانا نهجا متكاملا لتطوير تقنية سلسلة الكتل، حيث تستفيد من عقود الخبرة لفريق الأسس في بناء الأنظمة الموزعة. واحدة من المبادئ الأساسية لسولانا هي أن البرمجيات لا ينبغي أن تعيق الأجهزة. وهذا يعني أن البرمجيات تستفيد من كامل إمكانات الأجهزة التي تعمل عليها وتقوم بالتوسع معها. كبيئة موحدة، يرث جميع التطبيقات المبنية على هذه السلسلة الكتلية الواحدة قابلية التكامل، مما يتيح لها التفاعل والبناء على بعضها بسهولة. كما تضمن هذه البنية أيضًا تجربة مستخدم مباشرة وبديهية دون الحاجة إلى جسر، أو معرف سلسلة منفصل، أو تجزئة سيولة.
تتطور سولانا بسرعة، مع التطورات الأخيرة بما في ذلك لفات SVM وضغط ZKكحلول توسيع مهمة. بينما قد تشكل هذه المشاريع يومًا ما تصورنا المستقبلي لـ سولانا، إلا أنها حاليًا في مراحل تطوير أو اعتماد مبكرة جدًا ولن تُغطى في هذا التقرير.
عدستنا الأساسية لفهم سولانا خلال هذا التقرير ستكون دورة حياة عملية نموذجية. لإنشاء نموذج أساسي لفهم معاملات سولانا، يمكننا تحديد العملية على النحو التالي:
ستتوسع الأقسام التالية من هذا التقرير في هذا النموذج وتنخرط في هذه العملية بتفصيل أكبر بكثير، بدءًا من المشاركين الرئيسيين - المستخدمين.
تذكر
التغييرات الجوهرية في بروتوكول سولانا تمر من خلال عملية رسمية وشفافةعمليةمن تقديم وثيقة تحسين سولانا (SIMD) التي سيقوم أعضاء المجتمع والهندسة الأساسية بانتقادها علنًا. يتم التصويت بعد ذلك على SIMDs من قبل الشبكة.
سنشير إلى الرؤية المرئية المكونة من ست مراحل المعروضة أعلاه طوال هذا التقرير، حيث توفر لنا إطارًا منتظمًا لفهم العلاقات بين عناصر Solana الأساسية.
تم ترتيب الفصول السابقة وفقًا لهذه المراحل الست. فصول النهاية - الشائعات، الأرشيف، الاقتصاد، وجيتو - تربط أية طرف غير منتهية. من المهم ملاحظة أن بعض الفصول ستمتد عبر مراحل متعددة، وستظهر بعض المراحل في عدة فصول.
هذا التداخل لا يمكن تجنبه لأن الإطار المكون من ست مراحل له قيوده. في الواقع، سولانا نظام موزع معقد يحتوي على العديد من العناصر المترابطة.
"سولانا لديها الإمكانية لتكون شركة آبل في عالم العملات الرقمية" - راج جوكال، مؤسس سولانا
يبدأ مسار المستخدم عادةً بإعداد وتمويل تطبيق محفظة. تتوفر عدة تطبيقات محفظة شائعة لـ Solana، سواء كتطبيقات جوال أصلية أو ملحقات متصفح.
تقوم المحافظ بتوليد أزواج مفاتيح المستخدم بشكل تشفيري، والتي تتألف من مفاتيح عامة وخاصة. تعمل المفتاح العام كمعرف فريد لحسابهم ويعرف به جميع المشاركين في الشبكة. يمكن اعتبار حساب المستخدم على سولانا بنية بيانات تحمل معلومات وحالة تتعلق بتفاعلاتهم مع سلسلة كتل سولانا. وبهذه الطريقة، يشبه المفتاح العام اسم ملف: تمامًا كما يحدد اسم الملف ملفًا داخل نظام ملفات، يحدد المفتاح العام لسولانا حسابًا بشكل فريد على سلسلة كتل سولانا. تُمثل المفاتيح العامة على سولانا على شكل سلاسل مشفرة بقاعدة 58 بايتًا.
FDKJvWcJNe6wecbgDYDFPCfgs14aJnVsUfWQRYWLn4Tn
المفتاح الخاص — المعروف أيضًا باسم المفتاح السري — يمكن اعتباره ككلمة مرور أو مفتاح وصول يمنح إذن الوصول والتعديل على الحساب. توقيع المفاتيح الخاصة هو كيفية التعامل مع تفويضات سلاسل الكتل. معرفة المفتاح الخاص تمنح سلطة كاملة على الحساب. تكوينات Keypairs تأتي بطول 64 بايتًا تتكون من المفاتيح العامة (النصف الأول) والخاصة (النصف الثاني). أمثلة:
3j15jr41S9KmdfughusutvvqBjAeEDbU5sDQp8EbwQ3Hify2pfM1hiEsuFFAVq8bwGywnZpswrbDzPENbBZbd5nj
[63,107,47,255,141,135,58,142,191,245,78,18,90,162,107,197,8,33,211,15,228,235,250,30,185,122,105,23,147,115,115,86,8,155,67,155,110,51,117,0,19,150,143,217,132,205,122,91,167,61,6,246,107,39,51,110,185,81,13,81,16,182,30,71]
يمكن أيضًا استخلاص المفاتيح الخاصة من عبارات البذور الذهنية، التي تتألف عادة من 12 أو 24 كلمة. يتم استخدام هذا التنسيق في العادة في المحافظ لتسهيل عمليات النسخ الاحتياطي والاستعادة. يمكن استخلاص مفاتيح متعددة بشكل قاطع من عبارة بذور واحدة.
تستخدم سولانا Ed25519, خوارزمية توقيع رقمي بنموذج مفتاح بيضاوي يستخدم على نطاق واسع، لتلبية احتياجات التشفير بالمفتاح العام. يتم التفضيل لـ Ed25519 لحجم مفتاحه الصغير، وحجم توقيعه الصغير، وسرعة الحساب، ومناعته ضد العديد من الهجمات الشائعة. كل عنوان محفظة Solana يمثل نقطة على منحنى البيضاوي Ed25519.
يقوم المستخدم بتوقيع المعاملات باستخدام مفتاحه الخاص. يتم تضمين هذا التوقيع مع بيانات المعاملة ويمكن التحقق منه من قبل المشاركين الآخرين باستخدام المفتاح العام للمرسل. يضمن هذا العملية أن المعاملة لم يتم التلاعب بها وأنها معتمدة من قبل مالك المفتاح الخاص المقابل. يعمل التوقيع أيضًا كمعرف فريد للمعاملة.
إرسال المعاملة هو الطريقة الوحيدة لتغيير الحالة على سولانا. يتم تنفيذ أي عملية كتابة من خلال معاملة، والمعاملات ذات طبيعة ذرية - إما أن تحدث كل ما تحاول المعاملة فعله أو تفشل المعاملة. تتألف المعاملة، المعروفة بشكل أكثر رسمية باسم "رسالة معاملة"، من أربعة أقسام: رأس، قائمة بعناوين الحسابات، مؤشر كتلة حديث وتعليمات.
يتم تقييد عدد التعليمات في عملية تحويل أولاً بحجمها، الذي يمكن أن يصل إلى 1،232 بايت. هناك أيضًا حدود حول عدد الحسابات التي يمكن الرجوع إليها. وأخيرًا، هناك حدود لتعقيد عملية التحويل المقاس بوحدات الحساب (CUs). تقيس وحدات الحساب الموارد الحسابية المستهلكة في معالجة العمليات.
تذكر
أصغر وحدة من SOL تعرف باسم "لامبورت"، ما يعادل مليار جزء من SOL، مماثل لساتوشي في بيتكوين. يُطلق على اللامبورت اسمليزلي لامبورت، عالم كمبيوتر ورياضياتي بحثه أسس العديد من الأسس النظرية للأنظمة الموزعة الحديثة.
تكلفة SOL لتنفيذ معاملة مقسمة إلى جزأين - رسم أساسي ورسم تحديد الأولوية. الرسم الأساسي هو 5000 لامبورت ثابتة للتوقيع الواحد بغض النظر عن تعقيد المعاملة - عادة ما يكون هناك توقيع واحد لكل معاملة.
رسوم التحديد أختيارية من الناحية التقنية، ولكنها تصبح ضرورية خلال فترات الطلب العالي على مساحة الكتلة. تُسعر هذه الرسوم بالميكرو لامبورتس (مليون جزء من لامبورت) لكل وحدة حسابية. الغرض منها هو أن تعمل كإشارة سعرية، مما يجعل المعاملات أكثر جاذبية اقتصادياً بالنسبة لأجهزة المعالجة الرئيسية لتضمينها في كتلها.
الرسوم الإجمالية = رسوم التحديد الأولي + الرسوم الأساسية
رسوم الترتيب = سعر وحدة الحساب (ميكرو لامبورت) × حد وحدة الحساب
حاليًا، يتم حرق 50٪ من جميع رسوم العمليات، مما يزيل هذا SOL بشكل دائم عن التداول، مع الـ 50٪ المتبقية تذهب إلى منتج الكتل. تتم إضافة تغيير جديد (SIMD 96) قريبًا يسمح بتوجيه 100٪ من رسوم التحضير إلى منتج الكتل. تبقى الرسوم الأساسية دون تغيير.
يقوم المستخدم بربط محفظته بالتطبيق، مما يتيح للتطبيق قراءة المفتاح العام للمستخدم. يبقى المفتاح الخاص مشفرًا ومحصورًا بشكل آمن في بيئة منفصلة عن التطبيق.
يقوم التطبيق ببناء معلمات رسالة الصفقة استنادًا إلى تفاعلات المستخدم. على سبيل المثال، إذا أراد المستخدم تبديل عملتين، فإنه سيحدد كمية العملات التي يرغب في شرائها، والعملات المقابلة للبيع، وانزلاق الصفقة المقبول.
بمجرد أن تصبح رسالة المعاملة جاهزة ، يتم إرسالها إلى المحفظة ليتم توقيعها باستخدام المفتاح الخاص للمستخدم. في هذه المرحلة ، تتم مطالبة المستخدم بنافذة منبثقة لتأكيد استعداده للتعامل. قد تتضمن هذه النافذة المنبثقة محاكاة لنتائج المعاملة. بمجرد التوقيع ، يتم إرجاع رسالة المعاملة والتوقيع إلى التطبيق ، والذي يمكنه بعد ذلك إعادة توجيه المعاملة إلى مزود RPC من اختيارهم ، إما بأنفسهم أو باستخدام مزود المحفظة.
موفرو RPC (Remote Procedure Call) يعملون كوسطاء بين التطبيقات والمحققين الذين يبنون الكتل. إنهم خدمة أساسية تمكن التطبيقات منتقديمأو محاكاة المعاملات الموقعة واسترجاع البيانات على السلسلة بكفاءة. التطبيقات التي ترغب في التفاعل مع الشبكة تفعل ذلك عبر نقطة نهاية JSON-RPC أو WebSocketالمستندات.
تذكر
يعتبر مصطلح "فشل العملية" على سولانا مضللًا وقد تسبب الكثير من الارتباك. تتكبد هذه العمليات رسومًا وتُنفَّذ بنجاح من قبل وقت التشغيل بالضبط كما أراد الموقع. يفشلون بسبب منطق العملية نفسه الذي يتطلب منهم القيام بذلك. +80% من العمليات "الفاشلة" تأتي من رمز الخطأ 0x1771، الرمز الخاص بتجاوز مبلغ الانزلاقالبيانات) على وجه الخصوص، يتم تقديم 95٪ من هذه المعاملات فقط من قبل 0.1٪ من عناوين سولانا النشطة، وتحديدًا الروبوتات الآلية التي تحاول الاستفادة من فرص التحكم في الأسعار الحساسة للوقت.
"حرفياً، هدف سولانا هو نقل المعاملات بسرعة مثل انتشار الأخبار حول العالم - بسرعة الضوء عبر الألياف. الذي نتنافس معه هو ناسداك وبورصة نيويورك." - أناتولي ياكوفينكو، مؤسس سولانا
تشير RPCs (Remote Procedure Calls) إلى عقد RPC. يمكن اعتبار هذه العقد بوابات للتفاعل مع الشبكة وقراءة البيانات منها. تعمل هذه العقد بنفس البرنامج الموجود على المحققين الكاملين ولكن بإعدادات مختلفة، مما يتيح لها محاكاة الصفقات بدقة والحفاظ على رؤية محدثة للحالة الحالية. حتى كتابة هذا النص، هناك أكثر من 4,000 عقد RPC على شبكة Solana.
على عكس العُقداء الكاملة، فإن عُقد الـ RPC لا تحمل أي رهان في الشبكة. بدون رهان، لا يمكنهم التصويت أو بناء الكتل. يختلف هذا الإعداد عن معظم سلاسل الكتل الأخرى، حيث يكون عُقد الـ RPC والمعتمدين عادةً نفسهم. نظرًا لعدم تلقي عُقد الـ RPC لمكافآت الرهان، فإن اقتصاديات تشغيل عُقد الـ RPC تختلف عن تلك المعتمدين مع العديد منها يعمل كخدمة مدفوعة للمطورين الذين يديرون تطبيقات سولانا.
تتميز سولانا لأنها تم تصميمها من البداية للعمل بدون ذاكرة مؤقتة. على عكس البلوكشين التقليدية التي تستخدم بروتوكولات النميمة لنقل المعاملات عشوائيا وعلى نطاق واسع عبر الشبكة، تقوم سولانا بتوجيه جميع المعاملات إلى محقق الصلاحية الرئيسي المحدد مسبقا، المعروف باسم القائد، لكل فتحة زمنية.
Callout
تعمل سولانا على أربع مجموعات: Localnet، Testnet، Devnet، و Mainnet-Beta. عندما يشير الناس إلى سولانا أو شبكة سولانا، فإنهم دائمًا يشير إلى Mainnet-Beta تقريبًا. Mainnet-Beta هو الوحيد الذي تحمل فيه الرموز قيمة حقيقية، بينما تستخدم المجموعات الأخرى فقط لأغراض الاختبار.
بمجرد أن يتلقى RPC رسالة معاملة ليتم تضمينها في كتلة ، يجب إعادة توجيهها إلى القائد. يتم إنتاج جدول القائد قبل كل حقبة (كل يومين تقريبا). تنقسم الحقبة القادمة إلى فتحات ، كل منها ثابت عند 400 مللي ثانية ، ويتم اختيار قائد لكل فتحة. سيتم اختيار المدققين ذوي الحصة الأعلى في كثير من الأحيان ليصبحوا قادة في كل حقبة. خلال كل فتحة ، تتم إعادة توجيه رسائل المعاملات إلى القائد ، الذي لديه الفرصة لإنتاج كتلة. عندما يحين دور المدقق ، يتحولون إلى "وضع القائد" ، ويبدأون بنشاط في معالجة المعاملات وبث الكتل إلى بقية الشبكة.
في بداية عام 2024، قدمت سولانا آلية جديدة تهدف إلى منع الرسائل غير المرغوب فيها وتعزيز مقاومة سايبيل، والمعروفة باسم "جودة الخدمة المرتبطة بالرهن" (SWQoS). يتيح هذا النظام للقادة تحديد أولوية رسائل المعاملات التي يتم تمريرها من خلال محققين آخرين مرهونين. هنا، يتم منح المحققين الذين لديهم رهن أعلى قدرة أعلى نسبيًا لنقل حزم رسائل المعاملات إلى القائد. يساعد هذا النهج بشكل فعال في التخفيف من هجمات سايبيل من العقد غير المرهونة عبر الشبكة.
تحت هذا النموذج، يمكن للمحققين أيضًا التفاوض على تأجير سعتهم المرتبطة بالرهان إلى عقد معقد الطلبات البروتوكولية. وفي المقابل، تحصل عقد معقد الطلبات البروتوكولية على زيادة في النطاق الترددي، مما يتيح لها تحقيق معدلات إدراج معاملات أكبر في الكتل. يجدر بالذكر أن 80% من سعة القائد (2،000 اتصال) محجوزة لـ SWQoS. يتم تخصيص الـ 20% المتبقية (500 اتصال) لرسائل المعاملات من العقد غير المرتبطة. تعكس استراتيجية التخصيص هذه المسارات ذات الأولوية على الطرق السريعة، حيث يدفع السائقون رسومًا لتجنب حركة المرور.
أثرت SWQoS على نظام Solana من خلال رفع متطلبات إعادة توجيه المعاملات إلى القائد وتقليل فعالية هجمات الرسائل غير المرغوب فيها. لقد تحفز هذه التغييرات التطبيقات ذات حركة عالية على دمج عملياتها عموديًا. من خلال تشغيل عقدة المحقق الخاصة بهم، أو من خلال الوصول إلى اتصالات المراهنة، يمكن للتطبيقات ضمان وصول مميز إلى القائد، مما يعزز قدراتها في معالجة المعاملات.
في نهاية عام 2022، اعتمدت سولانابروتوكول الشبكات QUICلإدارة رسالة نقل الصفقات إلى الزعيم. تم تحفيز هذه الانتقالات بتعطل الشبكة الناتج عن قيام الروبوتات بإرسال رسائل غير مرغوب فيها في سلسلة الكتل NFT. يسهل QUIC التواصل السريع والغير متزامن.
تم تطويرها في البداية بواسطةGoogleفي عام 2012، حاولت QUIC تقديم ما هو أفضل في كلتا العوالم. إنه يُسهل التواصل السريع غير المتزامن مشابه لبروتوكول UDP، ولكن مع جلسات آمنة واستراتيجيات متقدمة لمراقبة تدفق TCP. وهذا يسمح بوضع حدود على مصادر حركة المرور الفردية بحيث يمكن للشبكة التركيز على معالجة المعاملات الحقيقية. كما أن لديه مفهوم للتدفقات الفردية. لذلك إذا تم إسقاط معاملة واحدة، فإنه لا يحتاج إلى حظر المتبقية. باختصار، يمكن اعتبار QUIC محاولة لدمج أفضل خصائص TCP و UDP.
صندوق التنبيه
وزن الرهان هو مبدأ متكرر يوجد في جميع أنظمة سولانا، ويشمل مكافآت التصويت، وأشجار التوربين، وجداول الزعماء، وتيار الخليج، وشبكة النميمة. يتم منح المحققين ذوي الرهان الأكبر ثقة أعلى وأولوية في الأدوار في الشبكة.
"نحن نعتبر نظام SVM (Solana Virtual Machine) الأفضل من حيث تكنولوجيا الجهاز الظاهري حاليًا." — أندري كرونيه، مؤسسة فانتوم
تقوم العديد من شبكات البلوكشين ببناء كتل كاملة قبل بثها، ما يعرف ببناء الكتل المتفرقة. يستخدم سولانا، على النقيض من ذلك، بناء كتل مستمر الذي ينطوي على تجميع وتيسير الكتل ديناميكيًا أثناء إنشائها خلال فترة زمنية مخصصة، مما يقلل بشكل كبير من التأخير.
كل فتحة تستمر 400 ميلي ثانية، ويتم تعيين كل قائد أربع فتحات متتالية (1.6 ثانية) قبل التناوب إلى القائد التالي. من أجل أن يحظى الكتلة بالقبول، يجب أن تكون جميع المعاملات داخلها صالحة ومنتجة من قبل العقد الأخرى.
قبل تولي القيادة بفترتي فتحة، يقوم العارض بإيقاف توجيه المعاملات للتحضير لعبء عمله القادم. خلال هذه الفترة، ترتفع حركة المرور الواردة بشكل حاد، لتصل إلى أكثر من جيجابايت في الثانية حيث يوجه الشبكة بكامله حزم البيانات إلى القائد الوارد.
بمجرد استلام رسائل المعاملات، تدخل رسائل المعاملات وحدة معالجة المعاملات (TPU)، وهي اللوجيك الأساسي للمحقق المسؤول عن إنتاج الكتلة. هنا، تبدأ تسلسل معالجة المعاملات بمرحلة الاحضار، حيث تتلقى المعاملات عبر QUIC. بعد ذلك، تتقدم المعاملات إلى مرحلة التحقق من التوقيع (SigVerify)، حيث تخضع لفحوص التحقق الدقيقة. هنا، يقوم المحقق بالتحقق من صحة التواقيع، ويتحقق من العدد الصحيح للتواقيع، ويقضي على المعاملات المكررة.
يمكن وصف مرحلة البنك كمرحلة بناء الكتلة. إنها أهم مرحلة في TPU، والتي تأخذ اسمها من "البنك". البنك هو فقط الحالة في كتلة معينة. بالنسبة لكل كتلة، لدى سولانا بنك يتم استخدامه للوصول إلى الحالة في تلك الكتلة. عندما تصبح كتلة مؤكدة بعد أن يصوت ما يكفي من المحققين عليها، سيتم تفريغ تحديثات الحساب من البنك إلى القرص، مما يجعلها دائمة. الحالة النهائية للسلسلة هي نتيجة جميع المعاملات المؤكدة. يمكن دائمًا إعادة إنشاء هذه الحالة من تاريخ البلوكشين بشكل حتمي.
تتم معالجة المعاملات بالتوازي وتعبئتها في "إدخالات" دفتر الأستاذ ، وهي دفعات من 64 معاملة غير متعارضة. أصبحت معالجة المعاملات المتوازية على Solana سهلة لأن كل معاملة يجب أن تتضمن قائمة كاملة بجميع الحسابات التي ستقرأها وتكتب إليها. يضع اختيار التصميم هذا عبئا على المطورين ولكنه يسمح للمدقق بتجنب ظروف السباق عن طريق تحديد المعاملات غير المتعارضة فقط للتنفيذ داخل كل إدخال بسهولة. تتعارض المعاملات إذا حاول كلاهما الكتابة إلى نفس الحساب (كتابتان) أو إذا حاول أحدهما القراءة من والآخر يكتب إلى نفس الحساب (قراءة + كتابة). وبالتالي ، تدخل المعاملات المتضاربة في إدخالات مختلفة ويتم تنفيذها بالتتابع ، بينما يتم تنفيذ المعاملات غير المتعارضة بالتوازي.
هناك ستة خيوط تقوم بمعالجة المعاملات بشكل متوازي، مع أربعة مخصصة للمعاملات العادية واثنان حصريًا لمعالجة معاملات التصويت التي تعد جزءًا أساسيًا من آلية توافق Solana. يتم تحقيق كل توازن للمعالجة من خلال عدة أنوية معالجة مركزية؛ ليس لدى المحققين أي متطلبات لوحدة المعالجة الرسومية (وثائق،
بمجرد تجميع المعاملات في إدخالات ، تكون جاهزة للتنفيذ بواسطة Solana Virtual Machine (SVM). الحسابات اللازمة للمعاملة مقفلة ؛ يتم تشغيل الشيكات للتأكد من أن المعاملة حديثة ولكن لم تتم معالجتها بالفعل. يتم تحميل الحسابات ، ويتم تنفيذ منطق المعاملة ، وتحديث حالات الحساب. سيتم إرسال تجزئة الإدخال إلى خدمة إثبات التاريخ ليتم تسجيلها (المزيد حول هذا في القسم التالي). إذا نجحت عملية التسجيل ، الالتزام بجميع التغييرات للبنك ، ويتم رفع الأقفال على كل حساب يتم وضعه في الخطوة الأولى. يتم التنفيذ بواسطة SVM ، وهو جهاز افتراضي تم إنشاؤه باستخدام شوكة Solana الخاصة ب rBPF, مكتبة للعمل مع الترجمة الفورية للتراكيب (JIT)، والآلات الافتراضية لبرامج eBPF. يرجى ملاحظة أن Solana لا تفرض على المحققين كيفية اختيار ترتيب المعاملات داخل كتلة. هذه المرونة نقطة حاسمة سنعود إليها لاحقًا في قسم الاقتصاد + Jito من هذا التقرير.
تذكر
مصطلح SVM قد يكون غامضًا، حيث يمكن أن يشير إما إلى "آلة الترجمة الافتراضية لـ Solana" أو "آلة الترجمة الافتراضية لـ Sealevel". كلا المصطلحين يصفان نفس المفهوم، مع Sealevel يكون اسم بيئة تشغيل Solana. يستمر مصطلح SVM في الانتشار بشكل فضفاض على الرغم من الجهود الأخيرة لتحديده بدقةتحديد حدودها.
سولانا هي شبكة تضم آلاف العقد المشغلة بشكل مستقل تتعاون للحفاظ على دفتر الأستاذ الموحد. كل عقد يشكل جهاز أداء عالي يعمل بنفس البرنامج مفتوح المصدر المعروف باسم "عميل".
أطلقت سولانا مع برنامج عميل الكاشف الواحد - في الأصل كان عميل سولانا لابس، والآن يُعرف باسمعميل Agave - مكتوب بلغة Rust. كان توسيع تنوع العملاء أحد الأولويات منذ ذلك الحين وسيتحقق ذلك حقًا مع إطلاقهعميل الراقصة المشتعلة. تعد Firedancer إعادة كتابة كاملة من البداية للعميل الأصلي بلغة برمجة C. تم بناؤها من قبل فريق ذو خبرة من شركة Jump للتداول عالي التردد، وتعد أن تكون العميل الأكثر أداءً على أي سلسلة كتلية.
"كنت قد شربت قهوتين وبيرة، وبقيت حتى الساعة 4:00 صباحًا. كان لدي هذه اللحظة الاكتشافية التي تشبه اللغز إلى إثبات العمل باستخدام نفس الدالة المقاومة للصورة السابقة SHA-256... كنت أعرف أن لدي هذا السهم من الزمن." - أناتولي ياكوفينكو، مؤسس سولانا
دليل التاريخ (PoH) هو صلصة سرية لـ سولانا، تعمل كساعة خاصة في كل محقق تحقق تزامنا عبر الشبكة. ينشئ دليل التاريخ مصدرًا موثوقًا لترتيب الأحداث ومرور الوقت. والأهم من ذلك يضمن الالتزام بجدول القيادة. على الرغم من الأسماء المماثلة، إلا أن دليل التاريخ ليس خوارزمية توافقية مثل دليل العمل.
تزداد الزيادة الزائدة بين العقد عادة مع توسيع الشبكات، ويصبح التنسيق أكثر تعقيدا. تخفف سولانا من ذلك عن طريق استبدال الاتصال من عقد إلى عقد بحساب محلي لـ PoH. وهذا يعني أن المحققين يمكنهم الالتزام بكتلة بجولة واحدة فقط من التصويت. تضمن الطوابع الزمنية الموثوقة في الرسائل أن المحققين لا يمكنهم الانتقال فوق بعضهم البعض وبدء كتلهم مبكرًا.
الخصائص الفريدة لخوارزميات التجزئة هي العوامل الأساسية للـ PoH. SHA256:
Dentro de cada cliente validador, un servicio dedicado de "Prueba de Historia" se ejecuta continuamente el algoritmo hash SHA256 creando una cadena de hashes. La entrada de cada hash es la salida del hash anterior. Esta cadena actúa de la misma manera que una función de retraso verificable, dado que el trabajo de hash debe realizarse en secuencia y los resultados de los hashes futuros no pueden conocerse de antemano. Si el servicio PoH crea una cadena de mil hashes, sabemos que ha pasado tiempo para que haya calculado cada hash secuencialmente; esto puede considerarse como un "microprueba de trabajo". Sin embargo, otros validadores pueden verificar la corrección de los mil hashes en paralelo a una velocidad mucho más rápida que la que se produjeron, ya que la entrada y la salida de cada hash se han difundido a la red. Por lo tanto, la PoH es difícil de producir pero fácil de verificar.
تتراوح أداء معالجة SHA-256 عبر معالجات مختلفة بشكل مدهش ضيق، مع اختلافات طفيفة فقط بين أسرع الآلات. لقد تم بالفعل بلوغ حد علوي شائع، على الرغم من الجهد والوقت الكبير الذي تم استثماره في تحسين هذه الوظيفة، وذلك بشكل كبير بسبب اعتماد Bitcoin عليها.
أثناء فتحة القائد، ستتلقى خدمة PoH الإدخالات المعالجة حديثًا من مرحلة البنك. يتم دمج العلامة التجارية PoH الحالية بالإضافة إلى علامة التجارية لجميع المعاملات في الإدخال في العلامة التجارية PoH التالية. يعمل هذا كطابع زمني يضع الإدخال في سلسلة العلامات التجارية، مثبتًا تسلسل تم معالجة المعاملات به. هذه العملية لا تؤكد فقط مرور الوقت ولكنها تعمل أيضًا كسجل تشفيري للمعاملات.
في كل كتلة، هناك 800،000 تجزئة. تتضمن تدفق PoH أيضًا "ticks"، وهي إدخالات فارغة تشير إلى حيوية الزعيم ومرور الوقت تقريبًا بجزء صغير من الثانية. يحدث علامة كل 6.25 مللي ثانية، مما يؤدي إلى حدوث 64 علامة في كل كتلة ووقت كتلة إجمالي يبلغ 400 مللي ثانية.
يقوم المحققون باستمرار بتشغيل ساعة PoH حتى عندما لا يكونون القادة حيث يلعب دورًا حاسمًا في عملية التزامن بين العقد.
تذكر
الفائدة الرئيسية لـ PoH هي أنه يضمن أن جدول القادة الصحيح يجب الالتزام به، حتى لو كان منتج الكتلة غير متصل بالإنترنت - وهو حالة تعرف باسم "المتخلف". يمنع PoH المعالج الخبيث من إنتاج كتل قبل دوره.
"فصل الشيفرة والحالة في SVM كان أفضل قرار تصميم. مباركون المطورون في النظم المضمنة الذين حفروا هذه المفهوم في دماغي بإخلاص." — أناتولي ياكوفينكو، مؤسس سولانا
Dentro de un validador de Solana, el estado global se mantiene en la base de datos de cuentas conocida como AccountsDB. Esta base de datos es responsable de almacenar todas las cuentas, tanto en la memoria como en el disco. La estructura de datos principal en el índice de cuentas es un hashmap, lo que hace que AccountsDB sea esencialmente un vastoمخزن القيم المفتاحيةهنا، المفتاح هو عنوان الحساب، والقيمة هي بيانات الحساب.
مع مرور الوقت، ارتفع عدد حسابات سولانا إلى مئات الملايين. يعود هذا العدد الكبير جزئيًا إلى أن مطوري سولانا يحبذون القول بأن "كل شيء على سولانا هو حساب!"
الحساب هو حاوية تحتفظ بالبيانات بشكل دائم، على غرار ملف على الكمبيوتر. تأتي بأشكال مختلفة:
جميع الحسابات لديها الحقول التالية:
حسابات برامج سولانا تحتوي فقط على منطق قابل للتنفيذ. هذا يعني عند تشغيل برنامج يقوم بتغيير حالة الحسابات الأخرى ولكن يبقى دون تغيير ذاته. هذا الفصل بين الشيفرة والحالة يميز سولانا عن سلاسل الكتل الأخرى ويدعم العديد من تحسيناتها. يكتب المطورون في المقام الأول هذه البرامج بلغة Rust، وهي لغة برمجة عامة.المعروفلتركيزها القوي على السلامة والأداء. بالإضافة إلى ذلك، تتوفر العديد من SDKs في TypeScript و Python لتسهيل إنشاء واجهات تطبيقات الواجهة الأمامية وتمكين التفاعل البرمجي مع الشبكة.
توفر العديد من الوظائف الشائعة بشكل افتراضي من قبل البرامج الأصلية. على سبيل المثال، الـ Solana لا تتطلب من المطورين نشر الكود لإنشاء رمز. بدلاً من ذلك، يتم إرسال التعليمات إلى برنامج أصلي مُعد مسبقًا سيقوم بإعداد حساب لتخزين بيانات الرمز، مما يخلق بشكل فعال رمزًا جديدًا.
الإيجار هو آلية مصممة لتحفيز المستخدمين على إغلاق الحسابات وتقليل زيادة الحالة. لإنشاء حساب جديد، يجب أن يحتفظ برصيد أدنى من SOL، المعروف بـ "مبلغ الإيجار المعفى منه". يمكن اعتبار هذا تكلفة تخزين تتحملها الحساب للحفاظ على حيويته في ذاكرة المحقق. إذا زاد حجم بيانات الحساب، يزيد متطلب الإيجار بالرصيد الأدنى بشكل نسبي. عندما لا يعد الحساب مطلوبًا، يمكن إغلاقه، ويتم إرجاع الإيجار إلى مالك الحساب.
على سبيل المثال، إذا كان المستخدم يحمل stablecoin مرتبط بالدولار، يتم تخزين هذه الحالة في حساب رمزي. حاليا، المبلغ المعفى من الإيجار لحساب الرمزي هو 0.002 SOL. إذا قام المستخدم بتحويل رصيده الكامل من stablecoin إلى صديق، يمكن إغلاق حساب الرمزي، وسيتلقى المستخدم 0.002 SOL الخاصة به مرة أخرى. غالباً ما تتولى البرامج إغلاق حسابات المستخدمين تلقائيًا. تتوفر العديد من التطبيقات لمساعدة المستخدمين في تنظيف الحسابات القديمة غير المستخدمة واسترداد الكميات الصغيرة من SOL المخزنة فيها.
في حين أن قراءة بيانات الحساب مسموح بها عالميا ، فإن نموذج ملكية Solana يعزز الأمان من خلال تقييد من يمكنه تعديل (كتابة) بيانات الحساب بالضبط. هذا المفهوم ضروري لفرض القواعد والأذونات على Solana blockchain. كل حساب لديه برنامج "المالك". مالك الحساب مسؤول عن إدارته ، مما يضمن أن البرامج المصرح بها فقط هي التي يمكنها تغيير بيانات الحساب. الاستثناء الملحوظ لهذه القاعدة هو نقل lamports (أصغر وحدة في SOL) - زيادة رصيد lamports للحساب مسموح به عالميا ، بغض النظر عن الملكية.
برامج سولانا ، كملفات تنفيذية للقراءة فقط، يجب أن تخزن الحالة باستخدام "عناوين مشتقة من البرنامج" (PDAs). تعد PDAs أنواعًا خاصة من الحسابات ترتبط ببرنامج وتمتلكه وليس مستخدم معين. بينما تكون عناوين مستخدمي سولانا العادية مشتقة من المفتاح العام لزوج مفاتيح Ed25519 ، إلا أن PDAs لا تحتوي على مفتاح خاص. بدلاً من ذلك ، يتم استنتاج مفتاحهم العام من مزيج من المعلمات - وغالبًا كلمات مفتاحية أو عناوين حسابات أخرى - جنبًا إلى جنب مع معرف البرنامج (العنوان) للبرنامج المملوك.
عناوين PDA موجودة "خارج المنحنى"، مما يعني أنها ليست على منحنى Ed25519 مثل العناوين العادية. يمكن للبرنامج الذي يمتلك PDA توليد توقيعات برمجياً لضمان أنه هو الوحيد القادر على تعديل حالة PDA.
أعلاه: حسابات رمز Solana هي أمثلة محددة لعناوين مشتقة من البرنامج (PDAs). يتم استخدامها لاحتواء الرموز والعيش "خارج المنحنى". برنامج Associated Token Account (ATA) يضمن أن يمكن لكل محفظة أن تحتوي على حساب رمز مرتبط واحد فقط لكل نوع من الرموز، مما يوفر وسيلة موحدة لإدارة حسابات الرموز.
"أكثر جزء مثير للاهتمام حول سولانا ليس التوازي أو الدعم الذاتي أو تغريدات تولي. إنه شيء قد لا تكون قد سمعت به: توربين" - مرت ممتاز، هيليوس
أثناء مرحلة البنكية، يتم تنظيم المعاملات في إدخالات وإرسالها إلى تيار دليل التأريخ لتسجيل الزمن. يتم تحديث بنك الكتلة، وتصبح الإدخالات الآن جاهزة للمرحلة التالية - توربين.
التوربينات هي العملية التي ينتشر فيها الزعيم كتلته إلى بقية الشبكة. مستوحاة منبت تورنت, تم تصميمه ليكون سريعًا وفعالًا، مما يقلل من الزائد في التواصل ويقلل من كمية البيانات التي يحتاج القائد إلى إرسالها.
تحقق ذلك توربين عن طريق تقسيم بيانات المعاملات إلى "شرائح" من خلال عملية تسمى "تمزيق". الشرائح عبارة عن حزم صغيرة من البيانات، تصل إلى 1280 بايت، مماثلة للإطارات الفردية في تيار الفيديو. عند إعادة تجميعها، تتيح هذه الشرائح للمحققين إعادة تشغيل الكتلة بأكملها. تُرسل الشرائح عبر الإنترنت بين المحققين باستخدام بروتوكول UDP وتستخدم الترميز بالمحو للتعامل مع فقدان الحزمة أو الإسقاط الخبيث للحزم.ترميز المحوسبة, aمتعدد الحدودنظام كشف الأخطاء وتصحيحها القائم على القاعدة، يضمن سلامة البيانات. حتى إذا فقدت بعض الشظايا، يمكن للكتلة أن تُعاد بناؤها بعد ذلك.
تتم تجميع الشظايا في مجموعات تعرف باسم دفعات تصحيح الأخطاء الأمامية (FEC). بشكل افتراضي، تتكون هذه الدفعات من 64 شظية (32 شظية بيانات + 32 شظية استرداد). يحدث استرداد البيانات لكل دفعة FEC، مما يعني أنه يمكن استعادة جميع البيانات حتى لو فُقدت أو تعطلت نصف الحزم في دفعة. يتم تقسيم كل دفعة من 64 شظية إلى ميركل بتوقيع القائد، ويربطها بالدفعة السابقة. يضمن هذا العملية أن يمكن الحصول بأمان على الشظايا من أي عقد في الشبكة يمتلكها، حيث يوفر سلسلة جذور ميركل مسارًا قابلا للتحقق للأصالة والنزاهة.
يبث القائد في البداية إلى عقدة جذر واحدة ، والتي تنشر القطع على جميع عقد المدقق الأخرى. تتغير عقدة الجذر هذه مع كل أجاد. يتم تنظيم المدققين في طبقات ، لتشكيل "شجرة التوربينات". عادة ما يتم وضع المدققين الذين لديهم كمية حصة أكبر باتجاه الجزء العلوي من الشجرة ، بينما يتم وضع أولئك الذين لديهم حصص أقل في الأسفل.
الشجرة عادة ما تمتد عبر ثلاثة أو أربعة قفزات ، اعتمادًا على عدد الوحدات التحقق النشطة. لأسباب بصرية بسيطة ، يتم تصوير فانوت بقيمة 3 أعلاه ، ولكن قيمة فانوت سولانا الفعلية حاليًا مضبوطة إلى 200. لأسباب أمان ، يتم تدوير ترتيب الشجرة لكل دفعة جديدة من الشرائح.
الهدف الرئيسي لمثل هذا النظام هو تخفيف ضغط انتقال البيانات الصادرة على القائد والجذور. من خلال استخدام نظام الإرسال وإعادة الإرسال، يتم توزيع الحمل بين القائد ومعادلي الإرسال، مما يقلل من الضغط على أي عقدة فردية.
“يقول بعض الأشخاص الذين لديهم ؠارة ذكية بأن هناك مجتمع مطورين ذـ64 للانا... أتمنى أن يحظى المجتمع بفرصة منصفة للتطور” — فيتاليك بوتيرين، مؤسس إيثريم
بمجرد أن يتلقى المحقق المسؤول عن التحقق من الكتلة الجديدة من الزعيم عبر توربين، يجب أن يقوم بالتحقق من جميع المعاملات داخل كل إدخال. يتضمن ذلك إعادة تشغيل الكتلة بأكملها، والتحقق من تجزئة PoH بشكل متوازٍ، وإعادة إنشاء المعاملات في التسلسل الذي يحدده PoH، وتحديث بنكه المحلي.
يتم التعامل مع هذه العملية من خلال وحدة التحقق من المعاملات (TVU)، والتي تشبه وحدة معالجة المعاملات الرئيسية (TPU)، حيث تعمل كمنطق النواة المسؤول عن معالجة الشظايا والتحقق من الكتلة. مثل TPU، يتم تقسيم تدفق TVU إلى عدة مراحل، بدءًا من مرحلة جلب الشظايا حيث يتم استلام الشظايا عبر Turbine. في مرحلة التحقق من توقيع قائد الشظايا التالية، تخضع الشظايا لعدة فحوصات للتأكد من سلامتها، ولا سيما التحقق من توقيع القائد، الذي يضمن أن الشظايا المستلمة مشتقة من القائد.
في مرحلة إعادة الإرسال، يقوم المحقق، استنادًا إلى موقعه في شجرة التوربين، بتوجيه الشظايا إلى المحققين الأسفل المناسبين. في مرحلة الإعادة التشغيل، يقوم المحقق بإعادة إنشاء كل صفقة تمامًا وبالترتيب الصحيح أثناء تحديث نسخته المحلية من البنك.
تعتبر مرحلة إعادة التشغيل مماثلة لمرحلة البنك في وحدة المعالجة الزمنية؛ إنها المرحلة الأكثر أهمية ويمكن وصفها بشكل أكثر استقامة كمرحلة التحقق من الكتلة. إعادة التشغيل عبارة عن حلقة عملية ذات خيوط واحدة تنسق العديد من العمليات الرئيسية، بما في ذلك التصويت وإعادة تعيين ساعة PoH، وتبديل البنوك.
أعلاه: مرحلة إعادة اللعب مسؤولة عن تحويل المحقق إلى وضع القائد وبدء إنتاج الكتلة. الرسم البصري الأصلي: جاستن ستاري، أنزا
لتحقيق التوافق، تستخدم سولانا تاور بي اف تي (TBFT)، وهي تنفيذ مخصص لنموذج العمل العملي المعروفعيب فرنجي بيزنطيخوارزمية التحمل (PBFT)، المستخدمة عادةً من قبل معظم شبكات البلوكشين للاتفاق على حالة السلسلة. مثل جميع شبكات البلوكشين، تفترض سولانا وجود عقد الأشباح في الشبكة، لذا يجب على النظام أن يتحمل ليس فقط فشل العقد ولكن أيضًا مستويات معينة من الهجمات.
يميز Tower BFT نفسه عن سلاسل أخرى من خلال الاستفادة من الساعة المتزامنة التي توفرها دليل التاريخ. بينما يتطلب PBFT التقليدي جولات متعددة من الاتصال للاتفاق على ترتيب المعاملات، يستخدم عُقد Solana ترتيب الأحداث المحدد مسبقًا، مما يقلل بشكل كبير من العبء الناتج عن الرسائل.
للمشاركة في الإجماع وكسب المكافآت ، يقدم المدققون أصواتا للكتل التي يعتقدون أنها صالحة (أي خالية من مشكلات مثل الإنفاق المزدوج أو التوقيعات غير الصحيحة) ويجب اعتبارها أساسية. يدفع المدققون رسوم معاملة لهذه الأصوات ، والتي تتم معالجتها بواسطة القائد وتضمينها في كتلة جنبا إلى جنب مع معاملات المستخدم العادية. هذا هو السبب في أن معاملات Solana غالبا ما يتم تصنيفها إلى معاملات تصويت وغير تصويت. عندما يقدم المدققون تصويتا صحيحا وناجحا ، فإنهم يكسبون رصيدا. تحفز هذه الآلية المدققين على التصويت على الشوكة التي يعتقدون أن لديها أفضل فرصة لإدراجها ، أي الشوكة "الأثقل".
جزء من تصميم سولانا، الذي يجعله سريعًا جدًا، هو أن الشبكة لا تنتظر اتفاق جميع المحققين على كتلة مُنتجة حديثًا قبل إنتاج الكتلة التالية. ونتيجة لذلك، من الشائع أن تكون هناك كتلتان مختلفتان مرتبطتان بنفس الكتلة الأم، مما يخلق الشوك.
يجب على محققي Solana التصويت على هذه الفروع واستخدام خوارزمية توافق لتحديد أي منها يجب اعتماده. عند وجود فروع منافسة، سيتم تنفيذ فقط فرع واحد في النهاية من قبل الشبكة، بينما تتم التخلص من الكتل في الفروع المهجورة.
كل فتحة لها قائد محدد مسبقًا يتم قبول كتلة هذا القائد فقط؛ لا يمكن أن يكون هناك كتلتان مقترحتان لفتحة واحدة. وبالتالي، يتم تقييد عدد الانشعاعات المحتملة إلى قائمة تخطي "موجود/غير موجود" للاشواط التي يمكن أن تظهر عند حدود فتحات تناوب القادة. بمجرد أن يختار المحقق شوكة، يلتزم بهذه الشوكة حتى ينتهي وقت القفل، مما يعني أنه يجب أن يلتزم بخياره لفترة دنيا.
معدل "تخطي سولانا" - النسبة المئوية للفتحات التي لم يتم فيها إنتاج كتلة - تتراوح بين 2% إلى 10%، حيث تكون الفروع هي السبب الرئيسي لتخطي هذه الفتحات. الأسباب الأخرى المحتملة للفتحات المتخطية تشمل بدء حقبة جديدة، أو كون قائد غير متصل، أو إنتاج كتلة غير صالحة.
تذكر
حالة المعاملة على سولانا تختلف اعتمادًا على مرحلتها الحالية في عملية التوافق:
تم معالجته: تم تضمين الصفقة في كتلة.
تم التأكيد: تم التصويت على كتلة العملية بأغلبية سوبرمايورية بنسبة ثلثين.
تم الانتهاء: تم بناء أكثر من 31 كتلة على أعلى كتلة المعاملة.
حتى الآن، لم يحدث في تاريخ سولانا أبداً أن (بتفاؤل) الكتلة المؤكدة لم تصبح نهائية.
مع كل كتلة، يستخدم Solana البنك للوصول إلى الحالة في تلك الكتلة. عندما يتم إنهاء البنك، يتم تحديث الحسابات من ذلك البنك وأسلافه على القرص. بالإضافة إلى ذلك، يتم تقليم أي تحديثات للحسابات من البنوك السابقة التي ليست أسلافاً للبنك الذي تم إنهاؤه. يسمح هذا العملية لـ Solana بالحفاظ على حالات محتملة متعددة بكفاءة.
"يتطلب سلسلة كتل مزيجًا ذكيًا من علم التشفير والأنظمة الموزعة وأنظمة التشغيل ولغات البرمجة. كانت قوة سولانا الخارقة هي استعدادها للهروب بصرخة من أكثر المشاكل المثيرة في كل تخصص." — غريغ فيتزجيرالد، مؤسس سولانا
يمكن التفكير في شبكة الشائعات على أنهاطائرة التحكملشبكة سولانا. على عكس الطائرة البيانات، التي تدير تدفقات المعاملات، ينشر الطائرة التحكمية بيانات ضرورية حول حالة سلسلة الكتل، مثل معلومات الاتصال، وارتفاع دفتر الأستاذ، ومعلومات التصويت. بدون شائعات، لن يعرف المحققون وبروتوكولات الاتصال بالإجراءات البعيدة أي عناوين ومنافذ مفتوحة للاتصال عبر مختلف الخدمات. تعتمد العقد الجديدة أيضًا على الشائعات للانضمام إلى الشبكة.
بروتوكول الشائعات في سولانا يستخدم الاتصال غير الرسمي ند لند مستوحى من نهج البث الشجري بواسطة خوارزمية PlumTree المعدلة. تُنشر هذه الطريقة بشكل فعال المعلومات دون الاعتماد على مصدر مركزي.
يعمل القيل والقال إلى حد ما كنظام معزول ، مستقل عن معظم مكونات المدقق الأخرى. يشارك المدققون و RPCs كائنات البيانات الموقعة كل 0.1 ثانية عبر UDP عبر القيل والقال ، مما يضمن توفر المعلومات عبر الشبكة. يجب أن تكون جميع رسائل القيل والقال أقل من أو تساوي الحد الأقصى لوحدة الإرسال (MTU) البالغ 1280 بايت ، والمشار إليه باسم "بنية الحزمة" في قاعدة التعليمات البرمجية.
سجلات الشائعات هي كائنات البيانات الفعلية المشتركة بين العقد. هناك حوالي 10 أنواع مختلفة من السجلات، كل منها يخدم أغراضًا مختلفة. تتم توقيع سجلات الشائعات وتخضع للإصدار والتأريخ لضمان النزاهة والعملة.
هناك أربعة أنواع من رسائل النميمة:
يتم تخزين بيانات الشائعات في مخزن بيانات متكرر العنقاد (CrdsTable). يمكن أن تنمو هذه الهيكلة البيانات بشكل كبير جدًا وتحتاج إلى تقليم دوري.
تتميز سولانا عن غيرها من شبكات البلوكشين بعدم الحاجة إلى تاريخ كامل لتحديد الحالة الحالية لحساب. يضمن نموذج الحساب في سولانا أن الحالة في أي فتحة معروفة، مما يسمح للمحققين بتخزين الحالة الحالية لكل حساب دون معالجة جميع الكتل التاريخية. لا تحتفظ الـ RPCs والمحققون، حسب التصميم، بسجل الدفاتر التاريخي بالكامل. بدلاً من ذلك، يتم تخزين بيانات المعاملات التي تعادل 1 أو 2 حقبة فقط (2-4 أيام) عادةً، مما يكفي للتحقق من طرف السلسلة.
يتم إدارة الأرشيف حاليًا بواسطة "عقدة المستودع"، التي يديرها مقدمو خدمات RPC المحترفون، ومؤسسة سولانا، وغيرهم من المشاركين في النظام البيئي الذين يهتمون بضمان توفر تاريخ المعاملات. تحتفظ عقدة المستودع عادةً بأحد أو كلا العنصرين التاليين:
أرشيف السجل: يقوم بتحميل لقطات السجل الخام وقواعد البيانات للحسابات المناسبة لإعادة اللعب من البداية.
Google Bigtable Instance: يخزن بيانات الكتل من الكتلة الأصلية فصاعداً، بتنسيق يخدم طلبات RPC.
“يدرك الناس أن سولانا هي السلسلة الوحيدة المتاحة اليوم التي ستدعم تطبيقات المستهلكين الرئيسية.” — تيد ليفينغستون، مؤسس Code
توظف سولانا التضخم لتوزيع مكافآت الرهان عن طريق إنشاء رموز SOL جديدة في كل حقبة. يؤدي هذا العملية إلى تقليل حصة شبكة غير المراهنين مقارنة بالمراهنين، مما يؤدي إلى تحويل ثروة من غير المراهنين إلى المراهنين. بدأ التضخم في أوائل عام 2021 بمعدل ابتدائي 8% ينخفض بمقدار 15% سنويًا حتى يستقر عند معدل طويل الأمد قدره 1.5%.
يمكن لأي حامل لرمز SOL كسب مكافآت ومساعدة في تأمين الشبكة عن طريق رهن الرموز لمراقب أو أكثر. تعرف تخصيص الرموز لمراقب باسم التفويض. تفويض الرموز لمراقب يشير إلى الثقة في المراقب. ومع ذلك، فإنه لا يمنح المراقب ملكية أو تحكم في الرموز. يتم تنفيذ جميع الإجراءات المتعلقة بالرهن وإلغاء الرهن والتفويض في بداية حقبة جديدة.
مكافآت التصويت
عندما يقدم المحقق تصويتًا ، يكسب رصيدًا إذا كان التصويت دقيقًا وناجحًا. تكلفة معاملات التصويت 0.000005 SOL وتخضع للإعفاء من رسوم الأولوية. تبلغ مصاريف التصويت حوالي 1 SOL في اليوم الواحد لكل محقق ، مما يجعله التكلفة التشغيلية الرئيسية لتشغيل المحقق. خلال حقبة ، يتراكم المحققون الرصيد من التصويت ، والذي يمكنهم تبادله مقابل حصة من التضخم في نهاية الحقبة.
يصوت أعلى المحققين بنجاح على نحو 90٪ من الفتحات. يرجى ملاحظة أن نسبة الفتحات بدون كتل (معدل الفتحة المتخلفة) تتراوح بين 2٪ إلى أكثر من 10٪، ولا يمكن التصويت على هذه الفتحات. يصوت المحقق الأوسط بنجاح على حوالي 80٪ من الفتحات، مكتسبًا 345،600 رصيد في حقبة تحتوي على 432،000 فتحة.
يتم تقسيم إجمالي حجم التضخم أولاً بناءً على الاعتمادات المكتسبة للحقبة. حصة محقق الأعتمادات الإجمالية (اعتماداتهم مقسمة على مجموع اعتمادات جميع المحققين) تحدد مكافأتهم نسبيًا. يتم تزويدها بشكل إضافي بواسطة الرهان.
لذلك، يجب أن يكسب المحقق الذي يمتلك 1% من إجمالي الرهن تقريبًا 1% من التضخم الإجمالي إذا كان لديه عدد متوسط من الاعتمادات. إذا كان لديه عدد من الاعتمادات أعلى أو أدنى من العدد المتوسط، ستتقلب مكافآته وفقًا لذلك.
الاختلافات في أداء التصويت هو سبب آخر في تفاوت عوائد (المقاسة بنسبة العائد السنوي) التي يقدمها المحققون لأصحاب الحصص. عامل آخر هو معدل العمولة المفروضة من قبل المحققين، والذي يمثل نسبة من مكافآت التضخم الإجمالية الموجهة إلى محققهم. بالإضافة إلى ذلك، يؤثر بشكل كبير على العوائد أن يكون محققا غير متصل بالإنترنت أو خارج التزام مع سلسلة الكتل (المعروف باسم التقصير)
مكافآت الكتل
يتلقى المدققون المعينون كقائد لكتلة معينة مكافآت كتلة إضافية. تتكون هذه المكافآت من 50٪ من الرسوم الأساسية و 50٪ من رسوم الأولوية لجميع المعاملات داخل الكتلة ، مع حرق الرسوم المتبقية. فقط المدقق الذي أنتج الكتلة يتلقى هذه المكافآت. على عكس مكافآت Staking ، التي يتم توزيعها لكل حقبة ، يتم إضافة مكافآت الكتلة على الفور إلى حساب هوية المدقق عند إنتاج الكتلة.
أصبح الرهن السائل بديلاً شعبيًا عن الرهن الأصلي. يتلقى المشاركون رمزًا، المعروف باسم رمز الرهن السائل (LST) أو المشتق السائل للرهن (LSD)، مقابل رهن SOL الخاص بهم، عادةً في مجموعة رهن تفويضية توزع رموزها عبر عدة محققين. تمثل رموز LST الجديدة التي تم تلقيها حصة المستخدم من SOL المرهونة. يمكن تداول هذه الرموز واستخدامها في التطبيقات، أو نقلها إلى الآخرين مع الحصول على مكافآت الرهن. الميزة الرئيسية لهذا النظام هي أنه يعزز بشكل كبير كفاءة رأس المال.
سعر LST = (إجمالي SOL المرهون في حوض * سعر SOL) / إجمالي LST المطبوعة
مع الرهانات الأصلية التقليدية، مع مرور الوقت، سيتراكم المراهن مباشرة المزيد من SOL. بينما مع الرهان السائل، يتم إعادة استثمار المكافآت إلى البركة مما يزيد من القيمة العادلة لـ LST. طالما وجد آلية لاسترداد LSTs مقابل SOL المرهونة الأساسية، سيضمن التجار التحكيميون أن يبقى سعر الرمز عقلانيًا.
حتى الآن، أكثر من 80% (مصدر) من حصته على سولانا يستخدم برنامج تحقق العميل جيتو. يقدم هذا العميل، وهو فروع من العميل الأصلي أجاڤي، مزاد خارج بروتوكول البلوكسبيس الذي يوفر للمحققين حوافز اقتصادية إضافية من خلال النصائح. هذه الحافز الإضافي هو عامل رئيسي في اعتماد عميل جيتو بين المحققين بشكل واسع النطاق.
عندما يستخدم القادة عميل Jito validator، تتم توجيه معاملاتهم في البداية إلى Jito-Relayer. يعمل هذا البرنامج مفتوح المصدر كموجّه وسيط المعاملات. تظل العقد الشبكية الأخرى غير عابرة لوجود Jito-Relayer، حيث أنها ترسل ببساطة المعاملات إلى عنوان وتكوين المنفذ الذي أعلن عنه القائد عبر شبكة الشائعات كـ ingress_socket الخاص به، وتفترض أنه القائد.
يحتفظ المعالج بجميع المعاملات لمدة 200 ميلي ثانية قبل إعادة توجيهها إلى القائد. يؤخر هذا الآلية الـ "عرقلة السرعة" رسائل المعاملات الواردة، مما يوفر نافذة قصيرة لإجراء المزادات. بعد 200 ميلي ثانية، يفرج المعالج بتفاؤل عن المعاملات بغض النظر عن نتائج المزاد.
تحدث مزادات Blockspace خارج السلسلة الرئيسية عبر محرك الكتل Jito، مما يسمح للباحثين والتطبيقات بتقديم مجموعات من الصفقات التي تُنفذ بشكل ذري. تحتوي هذه المجموعات عادة على صفقات تتعلق بالوقت مثل الفروقات أو التصفيات. يفرض Jito رسمًا بنسبة 5% على جميع النصائح، مع حد أدنى للنصيحة قدره 10,000 lamports. تعمل النصائح بشكل كامل خارج البروتوكول، منفصلة عن رسوم الأولوية والأساسية في البروتوكول. في السابق، كان Jito يعمل خدمة قاعدة بيانات الذاكرة الخارج البروتوكولية القنونية، والتي تم الآن إهمالها.