مرحبًا ، أنا سكوت (smsunarto) ، مؤسس August Labs (ArgusLabs \ _). اليوم ، سأتحدث عن موضوع لم نتطرق إليه منذ فترة. نظرًا لأن التدرجات أصبحت الاتجاه السائد في العصر ، فإننا لا نناقش تجزئة التنفيذ بقدر ما نناقش تجزئة البيانات. لذا ، دعنا نعيد النظر في هذا الموضوع المهمل إلى حد ما - تقسيم التنفيذ.
ستكون هذه محادثة سهلة. أعلم أنك كنت تسمع مفاهيم معقدة طوال اليوم ، لذا سأحاول جعل هذه المناقشة عملية قدر الإمكان. لقد أعددت تصميم شريحة مناسب لهذا العرض التقديمي.
بالنسبة لأولئك الذين لا يعرفونني ، الشيء المضحك هو أنني معروف على تويتر بكوني فتاة أنيمي. لقد فاتني أيضًا تخرجي من الكلية لمجرد وجودي هنا ، الأمر الذي أثار استياء والدي كثيرًا. حاليًا ، أنا مؤسس Argus Labs. نحن نرى أنفسنا كشركة ألعاب ، ولسنا شركة بنية تحتية أو شركة للعملات المشفرة. أحد أكبر ما يزعجني هو أن كل شخص في ألعاب التشفير يريد إنشاء أدوات ، لكن لا أحد يريد إنشاء محتوى أو تطبيقات. نحتاج إلى المزيد من التطبيقات التي يمكن للمستخدمين استخدامها بالفعل.
في السابق ، شاركت في إنشاء Dark Forest (darkforest \ _eth) مع أصدقائي الأذكياء Brian Gu (gubsheep) و Alan Luo (alanluo \ _0). يعمل براين الآن على تشغيل 0xPARC (@ 0xPARC) وهو أذكى مني كثيرًا.
ستركز مناقشة اليوم على أداء التجزئة ، ولكن في سياق ما ، لا يكون معظم الناس على دراية بمناقشة أداء التجزئة. نناقش عادةً تقسيم التنفيذ في سياق الطبقة 1 ، مثل تجزئة Ethereum أو بالقرب من التجزئة. لكن اليوم ، أريد تغيير السياق قليلاً. دعنا نفكر في الشكل الذي سيبدو عليه التجزئة في بيئة العرض الإجمالي.
السؤال الأساسي هنا هو لماذا تقوم شركة ألعاب ببناء العرض الإجمالي الخاص بها ، وما الذي يمكن أن نتعلمه من World of Warcraft لتصميم القوائم. بالإضافة إلى ذلك ، سوف نستكشف كيف أن مساحة التصميم للعناصر المتدرجة تتجاوز بكثير الحقائق الحالية.
للإجابة على هذه الأسئلة ، دعنا نعود إلى عام 2020 ، عندما ظهرت فكرة الغابة المظلمة لأول مرة. سألنا أنفسنا ، ماذا لو أنشأنا لعبة يكون فيها كل إجراء من أحداث اللعبة عبارة عن معاملة داخل السلسلة؟ كانت الفرضية سخيفة في ذلك الوقت ، ولا تزال حتى يومنا هذا بالنسبة لكثير من الناس. لكنها كانت فرضية مثيرة للاهتمام ، لذلك قمنا ببنائها ، وولدت Dark Forest.
Dark Forest هي لعبة MMORTS لاستكشاف الفضاء كاملة السلسلة تعتمد بالكامل على Ethereum ، والمدعومة من ZK-Snarks. مرة أخرى في عام 2020 ، لم يكن ZK مشهورًا كما هو عليه اليوم لأنه لم يكن هناك أي وثائق. التوثيق الوحيد المتاح لـ Circom هو Jordi Baylina's (jbaylina) محرر مستندات Google. على الرغم من التحديات ، تعلمنا الكثير على طول الطريق ، و Dark Forest هي تجسيد لتلك الدروس.
Dark Forest هي تجربة أكبر مما كنا نظن. لدينا أكثر من 10000 لاعب ، وقد تم إنفاق تريليونات من الغاز ، والفوضى في اللعبة ، وأشخاص يطعنون في ظهر السلسلة. إن الشيء الأكثر روعة في Dark Forest والألعاب على السلسلة هو طبيعة النظام الأساسي. من خلال امتلاك لعبة كاملة السلسلة ، فإنك تفتح الباب لتصميم مساحة للسلوكيات الناشئة ، مما يسمح للأشخاص ببناء عقود ذكية تتفاعل مع اللعبة ، بالإضافة إلى العملاء وأوضاع اللعبة البديلة ، مثل Dark Forest Arena و GPU Miners.
ومع ذلك ، مع القوة العظمى تأتي مسؤولية كبيرة. عندما أطلقنا Dark Forest على xDai ، والمعروف الآن باسم Gnosis Chain ، انتهى بنا الأمر بملء مساحة الكتلة بالكامل للسلسلة. هذا يجعل السلسلة غير قابلة للاستخدام بشكل أساسي لأي شيء آخر ، بما في ذلك DeFi أو NFTs أو أي شيء xDAI آخر.
اذا ماذا الان؟ هل وصلنا إلى طريق مسدود؟ ألن تصبح ألعاب السلسلة الكاملة حقيقة واقعة؟ أم أننا سنعود إلى صنع الألعاب حيث توجد صور JPEG صغيرة فقط في السلسلة ونقنع الناس أن المال ينمو على الأشجار؟ الجواب هو ، نحن نترك البرمجيات تفعل الأشياء. لدى الكثير منا نظرة صارمة جدًا على blockchain و roll-ups ، كما لو لم يكن هناك مجال كبير للتحسين. لكني لا أوافق. يمكننا التجربة وإيجاد إمكانيات جديدة.
سألنا أنفسنا سؤالاً: إذا أردنا تصميم blockchain من الصفر للألعاب والألعاب فقط ، كيف سيبدو؟ نحن بحاجة إلى إنتاجية عالية ، لذلك نحتاج إلى قياس عمليات القراءة والكتابة. تم تصميم معظم سلاسل الكتل لتكون ثقيلة الكتابة. المعاملات في الثانية (TPS) هي مقياس يتفاخر به الناس ، ولكن في الواقع ، القراءة لا تقل أهمية. كيف تعرف مكان وجود اللاعب إذا كنت لا تستطيع القراءة من عقدة blockchain؟ هذا هو في الواقع أول عنق زجاجة وجدناها في بناء blockchain.
تواجه Dark Forest مشكلة حيث يتم استخدام العقد الكاملة بكثرة وينفجر الإدخال / الإخراج لأننا نحتاج إلى قراءة البيانات من الحالة المتصلة بالسلسلة. نتج عن ذلك آلاف الدولارات في تكاليف الخادم ، والتي تمت تغطيتها بسخاء من قبل فريق xDAI. ومع ذلك ، هذا ليس مثاليًا على المدى الطويل. نحن بحاجة إلى إنتاجية عالية ، ليس فقط للمعاملات المكتوبة في الثانية ، ولكن أيضًا للقراءات ، مثل جلب البيانات من blockchain نفسها.
نحتاج أيضًا إلى blockchain قابل للتطوير أفقيًا لتجنب مشكلة الجار الصاخب. لا نريد أن تبدأ لعبة مشهورة فجأة في الانهيار على blockchain ، وتوقف كل الأعمال. نحتاج أيضًا إلى المرونة والقابلية للتخصيص حتى نتمكن من تعديل آلة الحالة ليتم تصميمها للعبة. يتضمن ذلك وجود حلقة لعبة ، وجعلها ذاتية التنفيذ ، وما إلى ذلك.
أخيرًا وليس آخرًا ، بالنسبة لأولئك الذين ليسوا على دراية بهندسة الألعاب عبر الإنترنت ، قد يكون هذا غامضًا بعض الشيء ، فنحن بحاجة إلى معدل عالٍ من العلامات. القراد هي الوحدة الذرية للوقت في عالم اللعبة. في سياق سلاسل الكتل ، لدينا كتل كوحدات زمنية ذرية. في الألعاب ، لدينا القراد. يكون هذا مشابهًا تقريبًا عندما تقوم ببناء لعبة كاملة السلسلة ، حيث يكون معدل إنشاء القراد أو الكتلة في blockchain الخاص بك مساويًا لعلامة اللعبة نفسها.
لذلك ، ما نحتاجه هو blockchain مع إنتاجية عالية ، وقابلية التوسع الأفقي ، والمرونة والتخصيص ، ومعدل التجزئة المرتفع. يمكن أن يلبي هذا التصميم احتياجات blockchain التي صممناها من البداية للعبة.
إذا كان لديك معدل علامة أعلى أو كتل أكثر في الثانية ، فستشعر اللعبة بمزيد من الاستجابة. على العكس من ذلك ، إذا كان معدل التجزئة الخاص بك منخفضًا ، ستشعر اللعبة بالركود. أحد الأشياء الأساسية التي يجب تذكرها هو أنه إذا تأخرت الأجزاء ، فستواجه تأخرًا ملحوظًا في اللعبة. هذه تجربة سيئة. إذا سبق لك التعامل مع لاعبين غاضبين يصرخون على الكمبيوتر لخسارة لعبة ، فهذا وضع رهيب للغاية.
في الوقت الحالي ، تحتوي مجموعاتنا على كتلة واحدة في الثانية ، وهو ما يعادل علامة واحدة. إذا أردنا الحصول على ألعاب أكثر برودة ، فنحن بحاجة إلى معدلات أعلى من التجزئة. على سبيل المثال ، Minecraft ، وهي لعبة بسيطة من فن البكسل ، بها 26 علامة في الثانية. ما زلنا بعيدين عن بناء لعبة سريعة الاستجابة مثل Minecraft.
أحد الحلول الممكنة هو نشر مجموعة التحديثات الخاصة بنا. على الرغم من أنه يبدو أنه يحل المشكلة ، إلا أنه لا يعمل بالفعل على إصلاح السبب الجذري للمشكلة. على سبيل المثال ، سيكون لديك معدل نقل أعلى للكتابة ، ولكن ليس إلى المستوى الذي تحتاجه الألعاب. بالطبع ، إذا كانت لعبتك تضم مائة لاعب ، فسيكون هذا كافياً. ومع ذلك ، إذا كنت ترغب في إنشاء لعبة تتطلب إنتاجية أعلى ، فهناك قيود صارمة للغاية بسبب الطريقة التي يتم بها الإدخال / الإخراج في الإصدار الحالي.
من ناحية القراءة ، لا تحصل حقًا على مكاسب في الأداء. ما زلت بحاجة إلى الاعتماد على المفهرسات. ليس لديك حقًا قابلية التوسع الأفقي. إذا حاولت بدء مجموعة جديدة لتوسيع نطاق لعبتك أفقيًا ، فسوف تدمر النظام البيئي الحالي للعقد الذكي. لن تعمل الأسواق التي ينشرها اللاعب مع السلاسل الأخرى التي تطلقها لتوسيع نطاق لعبتك أفقيًا. هذا يثير الكثير من الأسئلة.
أخيرًا ، لا يزال معدل التجزئة المرتفع والكتل في الثانية يمثل تحديًا إلى حد ما ، على الرغم من أنه يمكننا دفعه بأقصى ما نستطيع ، فقد نحصل على كتلتين في الثانية ، وربما ثلاث ، ولكن هذه هي الطريقة التي تعمل بها هذه البلوكشين. الأبعد ، لأن هناك مجموعة من الأشياء مثل إعادة التنظيم التي تعتمد بشكل كبير على دورات الحوسبة.
للإجابة على هذا السؤال ، ننظر إلى الوراء إلى أوائل العقد الأول من القرن الحادي والعشرين وأواخر التسعينيات ، عندما كانت الألعاب عبر الإنترنت مثل ألعاب MMO في الظهور. لديهم مفهوم يسمى التجزئة. هذا ليس مفهومًا جديدًا ؛ لقد كان موجودًا في الماضي. تأتي كلمة "التجزئة" التي نستخدمها في بنية قاعدة البيانات في الواقع من إشارة إلى Ultima Online. كانوا أول من استخدم كلمة "شارد" لشرح خوادمهم المختلفة.
إذن ، كيف تعمل التجزئة في الألعاب؟ إنه ليس حلًا واحدًا يناسب الجميع. إنها أداة في صندوق الأدوات ، وستختلف كيفية تكييفها مع لعبتك من حالة إلى أخرى. على سبيل المثال ، أول بناء تجزئة هو ما أحب أن أسميه التجزئة على أساس الموقع. النموذج العقلي الجيد هو تخيل نظام إحداثيات ديكارت مقسم إلى أربعة أرباع ، لكل منها شريحة لعب خاصة بها. في كل مرة تريد اجتياز جزء ما ، تقوم بإرسال اتصال إلى جزء آخر يقول "مرحبًا ، أريد الانتقال إلى هناك" ويتم نقلك إلى الجزء الخاص بك ، تاركًا اللاعبين أمامك الجسم. من خلال القيام بذلك ، تقوم بتوزيع عبء العمل على الخادم عبر مثيلات فعلية متعددة ، بدلاً من إجبار خادم واحد على القيام بكل العمليات الحسابية لعالم اللعبة بأكمله. أصبح التكوين الثاني أكثر شيوعًا الآن. يطلق عليه تقسيم الأكوان المتعددة ، حيث يكون لديك العديد من حالات اللعبة التي تعكس بعضها البعض. يمكنك اختيار الجزء الذي تريد الانتقال إليه ، ويتم تحميله بشكل متوازن افتراضيًا بحيث لا يكون كل خادم مكتظًا.
الآن ، السؤال الرئيسي هو ، كيف يمكنك تحويل هذا المفهوم إلى تراكمي؟ لهذا السبب أنشأنا World Engine. World Engine هي بنيتنا الأساسية الرئيسية ، وهي في الأساس أداة فرز شظايا برأيك مصممة لبدء التشغيل. إن تصميماتنا مختلفة وأكثر ملاءمة لاحتياجاتنا من العديد من تصميمات فارز الأجزاء التي رأيناها في المناقشات القليلة الماضية. اتجاه التحسين لدينا هو: A ، الإنتاجية ، B ، نريد التأكد من عدم وجود أقفال تمنع وقت التشغيل لضمان أن يكون معدل التجزئة ووقت الحظر فعالين قدر الإمكان ، لذا فهو متزامن افتراضيًا ، الطريقة نصمم الفرز على أنه فرز جزئي ، بدلاً من فرض الطلب الكلي (يجب أن تحدث كل معاملة بعد الأخرى).
المكونات الرئيسية هنا هي أن لدينا شيئين رئيسيين. لدينا التجزئة القائمة على EVM ، والتي تشبه سلسلة EVM الخالصة ، والتي يمكن للاعبين من خلالها نشر العقود الذكية ، والدمج مع الألعاب ، وإنشاء أسواق مع الضرائب ، وما إلى ذلك. إنها مثل السلسلة العادية ، أليس كذلك؟ شيء مثل كتلة واحدة في الثانية أو شيء ما ، يكفيك فقط للقيام بجميع أجهزتك وأسواقك النموذجية.
المكوِّن السري هنا هو أننا نستخدم أيضًا جزء اللعبة ، وهو في الأساس عبارة عن blockchain صغير مصمم كخادم ألعاب عالي الأداء. لدينا واجهة تنفيذ خاصة بك بحيث يمكنك تخصيص هذا الجزء حسب رغبتك. يمكنك بناء القطع الخاصة بك وحقنها في الجزء الأساسي. تحتاج فقط إلى تنفيذ مجموعة من الواجهات القياسية ، تمامًا مثل Cosmos التي تعرفها ، لدى Cosmos واجهة ABC. يمكنك تجميع هذا بشكل أساسي في مواصفات مماثلة ، وإحضار شظاياك الخاصة إلى مكدس World Engine.
المفتاح هنا هو أن لدينا معدل عالٍ لا يمكننا تحقيقه حاليًا باستخدام بنية التجزئة الحالية. هذا هو المكان الذي أريد أن أقدم فيه كاردينال. Cardinal هو أول تطبيق تجزئة للعبة World Engine. يستخدم نظام مكون الكيان (ECS) مع بنية موجهة للبيانات. هذا يسمح لنا بموازنة اللعبة وزيادة إنتاجية حسابات اللعبة. لديها معدل علامة قابل للتكوين يصل إلى 20 نقطة في الثانية. بالنسبة إلى مستخدمي blockchain هنا ، هذه 20 كتلة في الثانية.
يمكننا أيضًا تحديد الموقع الجغرافي لتقليل وقت الاستجابة. على سبيل المثال ، قد يكون لديك فارز في الولايات المتحدة ، ومن ثم يتعين على الآسيويين الانتظار 300 مللي ثانية حتى تصل المعاملة إلى الفارز. هذه مشكلة كبيرة في الألعاب لأن 300 مللي ثانية هي وقت طويل. إذا حاولت لعب لعبة FPS بفارق 200 مللي ثانية ، فأنت في الأساس ميت.
نقطة رئيسية أخرى مهمة بالنسبة لنا هي أنها فهرسة ذاتية. لم نعد بحاجة إلى مفهرسات خارجية. لا نحتاج إلى هذه الأطر لتخزين حالة اللعبة مؤقتًا. يتيح لنا هذا أيضًا إنشاء المزيد من الألعاب في الوقت الفعلي دون حدوث مشكلات في زمن الانتقال حيث لا يزال المفهرس يحاول اللحاق بكتل الفارز.
لدينا أيضًا نظام مكون إضافي يسمح للأشخاص بموازاة التحقق من صحة ZK وما إلى ذلك. أفضل جزء ، على الأقل بالنسبة لي ، هو أنه يمكنك كتابة الكود الخاص بك في Go. لم يعد من الضروري استخدام Solidity لجعل لعبتك تعمل. إذا كنت قد حاولت من قبل إنشاء لعبة بلوكتشين باستخدام Solidity ، فقد كان ذلك بمثابة كابوس.
ومع ذلك ، فإن النقطة الأساسية في بناء الشظايا لدينا هي أنه يمكنك بناء أي شيء كقطعة. إنها تشبه في الأساس مساحة تصميم لا نهائية ، مثل ما يمكن أن تكون عليه الشظايا.
بافتراض أنك لا تحب كتابة رمز لعبتك في Go ، يمكنك عندئذٍ اختيار طرق أخرى. ومع ذلك ، فإننا نعمل على جزء من لعبة Solidity سيسمح لك بتنفيذ الألعاب في Solidity بطريقة توفر إمكانيات الترميز مع الاحتفاظ بالعديد من مزايا Cardinal. يمكنك أيضًا إنشاء جزء مسكوك من NFT مع مجموعة ذاكرة فريدة وتركيب ترتيب ، مما يحل مشكلة الجار الصاخب المشابهة لعملية سك النقود الأساسية. يمكنك أيضًا إنشاء جزء هوية لعبة واستخدام NFT لتمثيل هوية لعبتك ، بحيث يمكنك إجراء معاملات هوية اللعبة بسهولة من خلال NFT بدلاً من مشاركة المفاتيح الخاصة.
هذه بنية عالية المستوى ، ولن أخوض في الكثير من التفاصيل المتعمقة اليوم بسبب قيود الوقت. بشكل حاسم ، نسمح بدمج عقود EVM الذكية مع أجزاء اللعبة باستخدام اختيار وتمرير مخصص. لقد أنشأنا غلافًا حول Geth للسماح بالاتصال بينهما ، مما يفتح الكثير من مساحة التصميم في كلا الاتجاهين. نحن متزامنون بشكل افتراضي ويمكننا التعامل بسلاسة وتكوين بين الأجزاء بدون أقفال.
يختلف فارزنا المشترك من حيث أنه لا يستخدم إنشاء تسلسل مشترك يعطي الأولوية للحزم الذرية المصنفة عالميًا ، الأمر الذي يتطلب آلية قفل ويسبب مشاكل مثل حظر الخيط الرئيسي ، مما يؤدي إلى معدلات غير مستقرة وأوقات كتلة ، والنتيجة هي تأخير في اللعبة. كما أنه يفرض قيودًا على أوقات الكتلة لكل جزء ويتطلب اقتصاديات تشفير مختلفة وبنيات لمنع رفض الخدمة. هناك مشكلة كبيرة أخرى لم أراها مذكورة في العديد من تركيبات فارز VCR: إذا كان لديك شظايا مختلفة تعتمد على بعضها البعض وتعتمد على الجمود ، فكيف يمكنك حلها؟ مع التصميم غير المتزامن ، هذه ليست مشكلة ، لأن كل شخص يفعل ما يريد القيام به ، ثم يترك الأمر.
في الواقع ، عادةً ما تكون الحزم الذرية واللفافات عبر الشظايا غير ضرورية. بالنسبة لحالة الاستخدام الخاصة بنا ، لا نحتاج إلى أي شيء يتطلب حزمًا ذرية ، ولا نعتقد أن هذا شيء يجب أن نصممه حول نقاء حالة الاستخدام. يجلب هذا أيضًا العديد من الميزات الأخرى المثيرة للاهتمام. على سبيل المثال ، يمكن أن تحتوي كل قطعة لعبة على طبقة DA منفصلة للسلسلة الأساسية. على سبيل المثال ، يمكنك استخدام الجزء الأساسي لدفع البيانات إلى Ethereum ، ويمكن لجزء اللعبة دفع البيانات إلى Celestia (على غرار لجنة إتاحة البيانات). يمكنك أيضًا تقليل متطلبات الأجهزة لتشغيل عقدة كاملة ، لأنه يمكنك تشغيل عقدة الجزء الأساسي Geth الكاملة بشكل منفصل ، دون تشغيل عقدة جزء اللعبة ، مما يسهل عليك التكامل مع أشياء مثل Alchemy.
لتلخيص ذلك ، أريد أن أكون صادقًا هنا أن الكثير من الناس يتوقعون أن تحل بنياتهم جميع مشاكلهم ، لكننا لا نفعل ذلك. نعتقد أن تركيبتنا تعمل لصالحنا ، لكنها قد لا تعمل مع حالة الاستخدام الخاصة بك. من غير الواقعي أن نفترض أن بنياتنا ستعمل مع الجميع. بالنسبة لنا ، فهو يناسب احتياجاتنا ، ويوفر إنتاجية عالية ، وقابلية للتوسع الأفقي ، ومرونة ، ومعدلات عالية ، ولكنه ليس علاجًا للسرطان. إذا كنت بحاجة إلى بروتوكول DeFi يتطلب تكوينًا متزامنًا ، فقد لا يكون هذا البناء مناسبًا لك.
بشكل عام ، أنا أؤمن حقًا بمفهوم بنية blockchain المتمحورة حول الإنسان. من خلال التصميم حول أدوار مستخدم محددة وحالات استخدام ، يمكنك إجراء المفاضلات بشكل أفضل ، بدلاً من محاولة حل مشكلات الجميع. لقد حان عصر النهضة ، ويمكن للجميع تصميم رول أب خاص بهم لتلبية احتياجاتهم الخاصة ، بدلاً من الاعتماد على حل عام. أعتقد أننا يجب أن نحتضن الانفجار الكمبري. لا تقم بإنشاء تجميعات مثل الطبقة الأولى ذات مقاس واحد يناسب الجميع لأنها ليست مصممة لحل نفس المشكلة على الإطلاق. أنا شخصياً أتطلع إلى رؤية المزيد من الأشخاص يستكشفون المزيد من مساحة تصميم العرض الإجمالي لحالات الاستخدام. على سبيل المثال ، كيف سيبدو العرض الإجمالي المصمم خصيصًا لتبادل الأصول؟ هل سيكون على أساس النية؟ كيف سيبدو العرض الإجمالي المصمم خصيصًا لـ CLOBs (دفتر أوامر الحد المركزي) على السلسلة؟ هنا ، أسلم الميكروفون إلى MJ. شكرا لك على دعوتك.
النسخة الإنجليزية:
شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
لماذا يستخدم Argus التجزئة لبناء بنية تحتية للعبة كاملة السلسلة؟
原 标题: كيف تعلمت أن أتوقف عن القلق وتقاسم الحب
رابط الفيديو:
المتحدث: سكوت سونارتو (smsunarto) في يوم البحث
تحرير المقالة وإنهائها: جاستن تشاو (hiCaptainZ)
مرحبًا ، أنا سكوت (smsunarto) ، مؤسس August Labs (ArgusLabs \ _). اليوم ، سأتحدث عن موضوع لم نتطرق إليه منذ فترة. نظرًا لأن التدرجات أصبحت الاتجاه السائد في العصر ، فإننا لا نناقش تجزئة التنفيذ بقدر ما نناقش تجزئة البيانات. لذا ، دعنا نعيد النظر في هذا الموضوع المهمل إلى حد ما - تقسيم التنفيذ.
ستكون هذه محادثة سهلة. أعلم أنك كنت تسمع مفاهيم معقدة طوال اليوم ، لذا سأحاول جعل هذه المناقشة عملية قدر الإمكان. لقد أعددت تصميم شريحة مناسب لهذا العرض التقديمي.
بالنسبة لأولئك الذين لا يعرفونني ، الشيء المضحك هو أنني معروف على تويتر بكوني فتاة أنيمي. لقد فاتني أيضًا تخرجي من الكلية لمجرد وجودي هنا ، الأمر الذي أثار استياء والدي كثيرًا. حاليًا ، أنا مؤسس Argus Labs. نحن نرى أنفسنا كشركة ألعاب ، ولسنا شركة بنية تحتية أو شركة للعملات المشفرة. أحد أكبر ما يزعجني هو أن كل شخص في ألعاب التشفير يريد إنشاء أدوات ، لكن لا أحد يريد إنشاء محتوى أو تطبيقات. نحتاج إلى المزيد من التطبيقات التي يمكن للمستخدمين استخدامها بالفعل.
في السابق ، شاركت في إنشاء Dark Forest (darkforest \ _eth) مع أصدقائي الأذكياء Brian Gu (gubsheep) و Alan Luo (alanluo \ _0). يعمل براين الآن على تشغيل 0xPARC (@ 0xPARC) وهو أذكى مني كثيرًا.
ستركز مناقشة اليوم على أداء التجزئة ، ولكن في سياق ما ، لا يكون معظم الناس على دراية بمناقشة أداء التجزئة. نناقش عادةً تقسيم التنفيذ في سياق الطبقة 1 ، مثل تجزئة Ethereum أو بالقرب من التجزئة. لكن اليوم ، أريد تغيير السياق قليلاً. دعنا نفكر في الشكل الذي سيبدو عليه التجزئة في بيئة العرض الإجمالي.
السؤال الأساسي هنا هو لماذا تقوم شركة ألعاب ببناء العرض الإجمالي الخاص بها ، وما الذي يمكن أن نتعلمه من World of Warcraft لتصميم القوائم. بالإضافة إلى ذلك ، سوف نستكشف كيف أن مساحة التصميم للعناصر المتدرجة تتجاوز بكثير الحقائق الحالية.
للإجابة على هذه الأسئلة ، دعنا نعود إلى عام 2020 ، عندما ظهرت فكرة الغابة المظلمة لأول مرة. سألنا أنفسنا ، ماذا لو أنشأنا لعبة يكون فيها كل إجراء من أحداث اللعبة عبارة عن معاملة داخل السلسلة؟ كانت الفرضية سخيفة في ذلك الوقت ، ولا تزال حتى يومنا هذا بالنسبة لكثير من الناس. لكنها كانت فرضية مثيرة للاهتمام ، لذلك قمنا ببنائها ، وولدت Dark Forest.
Dark Forest هي لعبة MMORTS لاستكشاف الفضاء كاملة السلسلة تعتمد بالكامل على Ethereum ، والمدعومة من ZK-Snarks. مرة أخرى في عام 2020 ، لم يكن ZK مشهورًا كما هو عليه اليوم لأنه لم يكن هناك أي وثائق. التوثيق الوحيد المتاح لـ Circom هو Jordi Baylina's (jbaylina) محرر مستندات Google. على الرغم من التحديات ، تعلمنا الكثير على طول الطريق ، و Dark Forest هي تجسيد لتلك الدروس.
Dark Forest هي تجربة أكبر مما كنا نظن. لدينا أكثر من 10000 لاعب ، وقد تم إنفاق تريليونات من الغاز ، والفوضى في اللعبة ، وأشخاص يطعنون في ظهر السلسلة. إن الشيء الأكثر روعة في Dark Forest والألعاب على السلسلة هو طبيعة النظام الأساسي. من خلال امتلاك لعبة كاملة السلسلة ، فإنك تفتح الباب لتصميم مساحة للسلوكيات الناشئة ، مما يسمح للأشخاص ببناء عقود ذكية تتفاعل مع اللعبة ، بالإضافة إلى العملاء وأوضاع اللعبة البديلة ، مثل Dark Forest Arena و GPU Miners.
ومع ذلك ، مع القوة العظمى تأتي مسؤولية كبيرة. عندما أطلقنا Dark Forest على xDai ، والمعروف الآن باسم Gnosis Chain ، انتهى بنا الأمر بملء مساحة الكتلة بالكامل للسلسلة. هذا يجعل السلسلة غير قابلة للاستخدام بشكل أساسي لأي شيء آخر ، بما في ذلك DeFi أو NFTs أو أي شيء xDAI آخر.
اذا ماذا الان؟ هل وصلنا إلى طريق مسدود؟ ألن تصبح ألعاب السلسلة الكاملة حقيقة واقعة؟ أم أننا سنعود إلى صنع الألعاب حيث توجد صور JPEG صغيرة فقط في السلسلة ونقنع الناس أن المال ينمو على الأشجار؟ الجواب هو ، نحن نترك البرمجيات تفعل الأشياء. لدى الكثير منا نظرة صارمة جدًا على blockchain و roll-ups ، كما لو لم يكن هناك مجال كبير للتحسين. لكني لا أوافق. يمكننا التجربة وإيجاد إمكانيات جديدة.
سألنا أنفسنا سؤالاً: إذا أردنا تصميم blockchain من الصفر للألعاب والألعاب فقط ، كيف سيبدو؟ نحن بحاجة إلى إنتاجية عالية ، لذلك نحتاج إلى قياس عمليات القراءة والكتابة. تم تصميم معظم سلاسل الكتل لتكون ثقيلة الكتابة. المعاملات في الثانية (TPS) هي مقياس يتفاخر به الناس ، ولكن في الواقع ، القراءة لا تقل أهمية. كيف تعرف مكان وجود اللاعب إذا كنت لا تستطيع القراءة من عقدة blockchain؟ هذا هو في الواقع أول عنق زجاجة وجدناها في بناء blockchain.
تواجه Dark Forest مشكلة حيث يتم استخدام العقد الكاملة بكثرة وينفجر الإدخال / الإخراج لأننا نحتاج إلى قراءة البيانات من الحالة المتصلة بالسلسلة. نتج عن ذلك آلاف الدولارات في تكاليف الخادم ، والتي تمت تغطيتها بسخاء من قبل فريق xDAI. ومع ذلك ، هذا ليس مثاليًا على المدى الطويل. نحن بحاجة إلى إنتاجية عالية ، ليس فقط للمعاملات المكتوبة في الثانية ، ولكن أيضًا للقراءات ، مثل جلب البيانات من blockchain نفسها.
نحتاج أيضًا إلى blockchain قابل للتطوير أفقيًا لتجنب مشكلة الجار الصاخب. لا نريد أن تبدأ لعبة مشهورة فجأة في الانهيار على blockchain ، وتوقف كل الأعمال. نحتاج أيضًا إلى المرونة والقابلية للتخصيص حتى نتمكن من تعديل آلة الحالة ليتم تصميمها للعبة. يتضمن ذلك وجود حلقة لعبة ، وجعلها ذاتية التنفيذ ، وما إلى ذلك.
أخيرًا وليس آخرًا ، بالنسبة لأولئك الذين ليسوا على دراية بهندسة الألعاب عبر الإنترنت ، قد يكون هذا غامضًا بعض الشيء ، فنحن بحاجة إلى معدل عالٍ من العلامات. القراد هي الوحدة الذرية للوقت في عالم اللعبة. في سياق سلاسل الكتل ، لدينا كتل كوحدات زمنية ذرية. في الألعاب ، لدينا القراد. يكون هذا مشابهًا تقريبًا عندما تقوم ببناء لعبة كاملة السلسلة ، حيث يكون معدل إنشاء القراد أو الكتلة في blockchain الخاص بك مساويًا لعلامة اللعبة نفسها.
لذلك ، ما نحتاجه هو blockchain مع إنتاجية عالية ، وقابلية التوسع الأفقي ، والمرونة والتخصيص ، ومعدل التجزئة المرتفع. يمكن أن يلبي هذا التصميم احتياجات blockchain التي صممناها من البداية للعبة.
إذا كان لديك معدل علامة أعلى أو كتل أكثر في الثانية ، فستشعر اللعبة بمزيد من الاستجابة. على العكس من ذلك ، إذا كان معدل التجزئة الخاص بك منخفضًا ، ستشعر اللعبة بالركود. أحد الأشياء الأساسية التي يجب تذكرها هو أنه إذا تأخرت الأجزاء ، فستواجه تأخرًا ملحوظًا في اللعبة. هذه تجربة سيئة. إذا سبق لك التعامل مع لاعبين غاضبين يصرخون على الكمبيوتر لخسارة لعبة ، فهذا وضع رهيب للغاية.
في الوقت الحالي ، تحتوي مجموعاتنا على كتلة واحدة في الثانية ، وهو ما يعادل علامة واحدة. إذا أردنا الحصول على ألعاب أكثر برودة ، فنحن بحاجة إلى معدلات أعلى من التجزئة. على سبيل المثال ، Minecraft ، وهي لعبة بسيطة من فن البكسل ، بها 26 علامة في الثانية. ما زلنا بعيدين عن بناء لعبة سريعة الاستجابة مثل Minecraft.
أحد الحلول الممكنة هو نشر مجموعة التحديثات الخاصة بنا. على الرغم من أنه يبدو أنه يحل المشكلة ، إلا أنه لا يعمل بالفعل على إصلاح السبب الجذري للمشكلة. على سبيل المثال ، سيكون لديك معدل نقل أعلى للكتابة ، ولكن ليس إلى المستوى الذي تحتاجه الألعاب. بالطبع ، إذا كانت لعبتك تضم مائة لاعب ، فسيكون هذا كافياً. ومع ذلك ، إذا كنت ترغب في إنشاء لعبة تتطلب إنتاجية أعلى ، فهناك قيود صارمة للغاية بسبب الطريقة التي يتم بها الإدخال / الإخراج في الإصدار الحالي.
من ناحية القراءة ، لا تحصل حقًا على مكاسب في الأداء. ما زلت بحاجة إلى الاعتماد على المفهرسات. ليس لديك حقًا قابلية التوسع الأفقي. إذا حاولت بدء مجموعة جديدة لتوسيع نطاق لعبتك أفقيًا ، فسوف تدمر النظام البيئي الحالي للعقد الذكي. لن تعمل الأسواق التي ينشرها اللاعب مع السلاسل الأخرى التي تطلقها لتوسيع نطاق لعبتك أفقيًا. هذا يثير الكثير من الأسئلة.
أخيرًا ، لا يزال معدل التجزئة المرتفع والكتل في الثانية يمثل تحديًا إلى حد ما ، على الرغم من أنه يمكننا دفعه بأقصى ما نستطيع ، فقد نحصل على كتلتين في الثانية ، وربما ثلاث ، ولكن هذه هي الطريقة التي تعمل بها هذه البلوكشين. الأبعد ، لأن هناك مجموعة من الأشياء مثل إعادة التنظيم التي تعتمد بشكل كبير على دورات الحوسبة.
للإجابة على هذا السؤال ، ننظر إلى الوراء إلى أوائل العقد الأول من القرن الحادي والعشرين وأواخر التسعينيات ، عندما كانت الألعاب عبر الإنترنت مثل ألعاب MMO في الظهور. لديهم مفهوم يسمى التجزئة. هذا ليس مفهومًا جديدًا ؛ لقد كان موجودًا في الماضي. تأتي كلمة "التجزئة" التي نستخدمها في بنية قاعدة البيانات في الواقع من إشارة إلى Ultima Online. كانوا أول من استخدم كلمة "شارد" لشرح خوادمهم المختلفة.
إذن ، كيف تعمل التجزئة في الألعاب؟ إنه ليس حلًا واحدًا يناسب الجميع. إنها أداة في صندوق الأدوات ، وستختلف كيفية تكييفها مع لعبتك من حالة إلى أخرى. على سبيل المثال ، أول بناء تجزئة هو ما أحب أن أسميه التجزئة على أساس الموقع. النموذج العقلي الجيد هو تخيل نظام إحداثيات ديكارت مقسم إلى أربعة أرباع ، لكل منها شريحة لعب خاصة بها. في كل مرة تريد اجتياز جزء ما ، تقوم بإرسال اتصال إلى جزء آخر يقول "مرحبًا ، أريد الانتقال إلى هناك" ويتم نقلك إلى الجزء الخاص بك ، تاركًا اللاعبين أمامك الجسم. من خلال القيام بذلك ، تقوم بتوزيع عبء العمل على الخادم عبر مثيلات فعلية متعددة ، بدلاً من إجبار خادم واحد على القيام بكل العمليات الحسابية لعالم اللعبة بأكمله. أصبح التكوين الثاني أكثر شيوعًا الآن. يطلق عليه تقسيم الأكوان المتعددة ، حيث يكون لديك العديد من حالات اللعبة التي تعكس بعضها البعض. يمكنك اختيار الجزء الذي تريد الانتقال إليه ، ويتم تحميله بشكل متوازن افتراضيًا بحيث لا يكون كل خادم مكتظًا.
الآن ، السؤال الرئيسي هو ، كيف يمكنك تحويل هذا المفهوم إلى تراكمي؟ لهذا السبب أنشأنا World Engine. World Engine هي بنيتنا الأساسية الرئيسية ، وهي في الأساس أداة فرز شظايا برأيك مصممة لبدء التشغيل. إن تصميماتنا مختلفة وأكثر ملاءمة لاحتياجاتنا من العديد من تصميمات فارز الأجزاء التي رأيناها في المناقشات القليلة الماضية. اتجاه التحسين لدينا هو: A ، الإنتاجية ، B ، نريد التأكد من عدم وجود أقفال تمنع وقت التشغيل لضمان أن يكون معدل التجزئة ووقت الحظر فعالين قدر الإمكان ، لذا فهو متزامن افتراضيًا ، الطريقة نصمم الفرز على أنه فرز جزئي ، بدلاً من فرض الطلب الكلي (يجب أن تحدث كل معاملة بعد الأخرى).
المكونات الرئيسية هنا هي أن لدينا شيئين رئيسيين. لدينا التجزئة القائمة على EVM ، والتي تشبه سلسلة EVM الخالصة ، والتي يمكن للاعبين من خلالها نشر العقود الذكية ، والدمج مع الألعاب ، وإنشاء أسواق مع الضرائب ، وما إلى ذلك. إنها مثل السلسلة العادية ، أليس كذلك؟ شيء مثل كتلة واحدة في الثانية أو شيء ما ، يكفيك فقط للقيام بجميع أجهزتك وأسواقك النموذجية.
المكوِّن السري هنا هو أننا نستخدم أيضًا جزء اللعبة ، وهو في الأساس عبارة عن blockchain صغير مصمم كخادم ألعاب عالي الأداء. لدينا واجهة تنفيذ خاصة بك بحيث يمكنك تخصيص هذا الجزء حسب رغبتك. يمكنك بناء القطع الخاصة بك وحقنها في الجزء الأساسي. تحتاج فقط إلى تنفيذ مجموعة من الواجهات القياسية ، تمامًا مثل Cosmos التي تعرفها ، لدى Cosmos واجهة ABC. يمكنك تجميع هذا بشكل أساسي في مواصفات مماثلة ، وإحضار شظاياك الخاصة إلى مكدس World Engine.
المفتاح هنا هو أن لدينا معدل عالٍ لا يمكننا تحقيقه حاليًا باستخدام بنية التجزئة الحالية. هذا هو المكان الذي أريد أن أقدم فيه كاردينال. Cardinal هو أول تطبيق تجزئة للعبة World Engine. يستخدم نظام مكون الكيان (ECS) مع بنية موجهة للبيانات. هذا يسمح لنا بموازنة اللعبة وزيادة إنتاجية حسابات اللعبة. لديها معدل علامة قابل للتكوين يصل إلى 20 نقطة في الثانية. بالنسبة إلى مستخدمي blockchain هنا ، هذه 20 كتلة في الثانية.
يمكننا أيضًا تحديد الموقع الجغرافي لتقليل وقت الاستجابة. على سبيل المثال ، قد يكون لديك فارز في الولايات المتحدة ، ومن ثم يتعين على الآسيويين الانتظار 300 مللي ثانية حتى تصل المعاملة إلى الفارز. هذه مشكلة كبيرة في الألعاب لأن 300 مللي ثانية هي وقت طويل. إذا حاولت لعب لعبة FPS بفارق 200 مللي ثانية ، فأنت في الأساس ميت.
نقطة رئيسية أخرى مهمة بالنسبة لنا هي أنها فهرسة ذاتية. لم نعد بحاجة إلى مفهرسات خارجية. لا نحتاج إلى هذه الأطر لتخزين حالة اللعبة مؤقتًا. يتيح لنا هذا أيضًا إنشاء المزيد من الألعاب في الوقت الفعلي دون حدوث مشكلات في زمن الانتقال حيث لا يزال المفهرس يحاول اللحاق بكتل الفارز.
لدينا أيضًا نظام مكون إضافي يسمح للأشخاص بموازاة التحقق من صحة ZK وما إلى ذلك. أفضل جزء ، على الأقل بالنسبة لي ، هو أنه يمكنك كتابة الكود الخاص بك في Go. لم يعد من الضروري استخدام Solidity لجعل لعبتك تعمل. إذا كنت قد حاولت من قبل إنشاء لعبة بلوكتشين باستخدام Solidity ، فقد كان ذلك بمثابة كابوس.
ومع ذلك ، فإن النقطة الأساسية في بناء الشظايا لدينا هي أنه يمكنك بناء أي شيء كقطعة. إنها تشبه في الأساس مساحة تصميم لا نهائية ، مثل ما يمكن أن تكون عليه الشظايا.
بافتراض أنك لا تحب كتابة رمز لعبتك في Go ، يمكنك عندئذٍ اختيار طرق أخرى. ومع ذلك ، فإننا نعمل على جزء من لعبة Solidity سيسمح لك بتنفيذ الألعاب في Solidity بطريقة توفر إمكانيات الترميز مع الاحتفاظ بالعديد من مزايا Cardinal. يمكنك أيضًا إنشاء جزء مسكوك من NFT مع مجموعة ذاكرة فريدة وتركيب ترتيب ، مما يحل مشكلة الجار الصاخب المشابهة لعملية سك النقود الأساسية. يمكنك أيضًا إنشاء جزء هوية لعبة واستخدام NFT لتمثيل هوية لعبتك ، بحيث يمكنك إجراء معاملات هوية اللعبة بسهولة من خلال NFT بدلاً من مشاركة المفاتيح الخاصة.
هذه بنية عالية المستوى ، ولن أخوض في الكثير من التفاصيل المتعمقة اليوم بسبب قيود الوقت. بشكل حاسم ، نسمح بدمج عقود EVM الذكية مع أجزاء اللعبة باستخدام اختيار وتمرير مخصص. لقد أنشأنا غلافًا حول Geth للسماح بالاتصال بينهما ، مما يفتح الكثير من مساحة التصميم في كلا الاتجاهين. نحن متزامنون بشكل افتراضي ويمكننا التعامل بسلاسة وتكوين بين الأجزاء بدون أقفال.
يختلف فارزنا المشترك من حيث أنه لا يستخدم إنشاء تسلسل مشترك يعطي الأولوية للحزم الذرية المصنفة عالميًا ، الأمر الذي يتطلب آلية قفل ويسبب مشاكل مثل حظر الخيط الرئيسي ، مما يؤدي إلى معدلات غير مستقرة وأوقات كتلة ، والنتيجة هي تأخير في اللعبة. كما أنه يفرض قيودًا على أوقات الكتلة لكل جزء ويتطلب اقتصاديات تشفير مختلفة وبنيات لمنع رفض الخدمة. هناك مشكلة كبيرة أخرى لم أراها مذكورة في العديد من تركيبات فارز VCR: إذا كان لديك شظايا مختلفة تعتمد على بعضها البعض وتعتمد على الجمود ، فكيف يمكنك حلها؟ مع التصميم غير المتزامن ، هذه ليست مشكلة ، لأن كل شخص يفعل ما يريد القيام به ، ثم يترك الأمر.
في الواقع ، عادةً ما تكون الحزم الذرية واللفافات عبر الشظايا غير ضرورية. بالنسبة لحالة الاستخدام الخاصة بنا ، لا نحتاج إلى أي شيء يتطلب حزمًا ذرية ، ولا نعتقد أن هذا شيء يجب أن نصممه حول نقاء حالة الاستخدام. يجلب هذا أيضًا العديد من الميزات الأخرى المثيرة للاهتمام. على سبيل المثال ، يمكن أن تحتوي كل قطعة لعبة على طبقة DA منفصلة للسلسلة الأساسية. على سبيل المثال ، يمكنك استخدام الجزء الأساسي لدفع البيانات إلى Ethereum ، ويمكن لجزء اللعبة دفع البيانات إلى Celestia (على غرار لجنة إتاحة البيانات). يمكنك أيضًا تقليل متطلبات الأجهزة لتشغيل عقدة كاملة ، لأنه يمكنك تشغيل عقدة الجزء الأساسي Geth الكاملة بشكل منفصل ، دون تشغيل عقدة جزء اللعبة ، مما يسهل عليك التكامل مع أشياء مثل Alchemy.
لتلخيص ذلك ، أريد أن أكون صادقًا هنا أن الكثير من الناس يتوقعون أن تحل بنياتهم جميع مشاكلهم ، لكننا لا نفعل ذلك. نعتقد أن تركيبتنا تعمل لصالحنا ، لكنها قد لا تعمل مع حالة الاستخدام الخاصة بك. من غير الواقعي أن نفترض أن بنياتنا ستعمل مع الجميع. بالنسبة لنا ، فهو يناسب احتياجاتنا ، ويوفر إنتاجية عالية ، وقابلية للتوسع الأفقي ، ومرونة ، ومعدلات عالية ، ولكنه ليس علاجًا للسرطان. إذا كنت بحاجة إلى بروتوكول DeFi يتطلب تكوينًا متزامنًا ، فقد لا يكون هذا البناء مناسبًا لك.
بشكل عام ، أنا أؤمن حقًا بمفهوم بنية blockchain المتمحورة حول الإنسان. من خلال التصميم حول أدوار مستخدم محددة وحالات استخدام ، يمكنك إجراء المفاضلات بشكل أفضل ، بدلاً من محاولة حل مشكلات الجميع. لقد حان عصر النهضة ، ويمكن للجميع تصميم رول أب خاص بهم لتلبية احتياجاتهم الخاصة ، بدلاً من الاعتماد على حل عام. أعتقد أننا يجب أن نحتضن الانفجار الكمبري. لا تقم بإنشاء تجميعات مثل الطبقة الأولى ذات مقاس واحد يناسب الجميع لأنها ليست مصممة لحل نفس المشكلة على الإطلاق. أنا شخصياً أتطلع إلى رؤية المزيد من الأشخاص يستكشفون المزيد من مساحة تصميم العرض الإجمالي لحالات الاستخدام. على سبيل المثال ، كيف سيبدو العرض الإجمالي المصمم خصيصًا لتبادل الأصول؟ هل سيكون على أساس النية؟ كيف سيبدو العرض الإجمالي المصمم خصيصًا لـ CLOBs (دفتر أوامر الحد المركزي) على السلسلة؟ هنا ، أسلم الميكروفون إلى MJ. شكرا لك على دعوتك.
النسخة الإنجليزية: