أخيرًا هدّأت الطفل حتى نام في الساعة الحادية عشرة والنصف تقريبًا. لا أريد قضاء نصف ساعة إضافية على الهاتف، ففتحت قليلًا وثائق طبقة التنفيذ في Dusk. كنت أنوي فقط إلقاء نظرة سريعة ثم أخلد للنوم، لكنني علقت عند تفصيلة واحدة لم تسمح لي بالنوم.
Piecrust هي آلة تنفيذ للعقود الذكية في Dusk، مبنية على WASM؛ وهذا يشبه كثيرًا ما تختاره بعض السلاسل الجديدة، ولا يبدو فيه شيء مميز. ما يميّزها هو طريقة تعاملها مع العمليات الحسابية التشفيرية: مثل عمليات حساب الهاش، والتحقق من الإثباتات الصفرية (Zero-Knowledge Proofs) وغيرها من العمليات المكثفة من ناحية الحساب. بدلًا من تسليمها إلى بايتكود WASM ليُنفّذها، يتم تحويلها إلى دوال مضيفة (host functions) تُستدعى مباشرة لتنفيذ الحساب باستخدام Rust على مستوى النظام (الأصلية). بمعنى أن كود العقد يعمل في حاوية العزل (sandbox) للآلة الافتراضية للمنطق المعتاد، لكن بمجرد أن يواجه حسابات تشفيرية ثقيلة، “يخرج” من الـsandbox ويُسند للشفرة الأصلية للمعالجة، ثم تُعاد النتائج إلى العقد.
قد يبدو هذا التقسيم تحسينًا هندسيًا فحسب، لكن التفكير فيه بعمق يكشف أنه أمر ضروري. إن وضع تحقق الإثباتات الصفرية داخل آلة افتراضية تفسيرية (interpreted VM) يعني أن خسارة الأداء تكون بفارق على مستوى “مراتب” كاملة، ولا سيما في سلسلة مثل Dusk التي تتبع مسار معاملات مُشفّرة افتراضيًا؛ إذ تكاد كل معاملة تمر عبر تحقق الإثباتات. فإذا تأخرت هذه الخطوة، تتوقف الإنتاجية (throughput) للسلسلة كلها بشكل مباشر. نقل الجزء الأكثر استهلاكًا للموارد خارج الـsandbox وتشغيله بالشفرة الأصلية هو، جوهريًا، طريق وسط بين هدفين: "اكتمال آلة تورينغ للعقود" و"عدم السماح للحوسبة الخصوصية أن تُدمّر الأداء".
ما علّقني هو السؤال التالي: من يعرّف واجهات استدعاء هذه الـhost functions؟ وهل يمكن توسيعها مستقبلًا؟ إذا كانت إضافة أي برهمية/بدائية تشفيرية جديدة تتطلب تعديل كود آلة التنفيذ الأساسي، فهذا يعني أن أنواع بدائيات الخصوصية المتاحة للمطورين—إلى حد ما—مرهونة بإيقاع تحديث الفريق الأساسي، وليست متاحة لتوسّع حر داخل النظام البيئي. وهذا يتعارض قليلًا مع رواية السلسلة العامة التي تقول إن "آلة تورينغ كاملة ويمكن للمطورين الاستفادة بحرية"؛ نعم، التناقض مخبأ في الطبقات السفلية، لذلك لا تشعر به عادة.
لهذا، لم أعد أملك مزاجًا لمواصلة القراءة، فاحتفظت بهذه النقطة أولًا وسأبحث لاحقًا عن فرصة للتحقق إلى أي مدى تكون الـhost functions مفتوحة.
برأيكم، هل أن تعيين حسابات التشفير الأساسية لتعمل خارج الـsandbox وتشغيل كود أصلي—وهذا خيار "الأداء أولًا"—ستكون كلفته أكبر مما يبدو؟
@Dusk #dusk $DUSK
Piecrust هي آلة تنفيذ للعقود الذكية في Dusk، مبنية على WASM؛ وهذا يشبه كثيرًا ما تختاره بعض السلاسل الجديدة، ولا يبدو فيه شيء مميز. ما يميّزها هو طريقة تعاملها مع العمليات الحسابية التشفيرية: مثل عمليات حساب الهاش، والتحقق من الإثباتات الصفرية (Zero-Knowledge Proofs) وغيرها من العمليات المكثفة من ناحية الحساب. بدلًا من تسليمها إلى بايتكود WASM ليُنفّذها، يتم تحويلها إلى دوال مضيفة (host functions) تُستدعى مباشرة لتنفيذ الحساب باستخدام Rust على مستوى النظام (الأصلية). بمعنى أن كود العقد يعمل في حاوية العزل (sandbox) للآلة الافتراضية للمنطق المعتاد، لكن بمجرد أن يواجه حسابات تشفيرية ثقيلة، “يخرج” من الـsandbox ويُسند للشفرة الأصلية للمعالجة، ثم تُعاد النتائج إلى العقد.
قد يبدو هذا التقسيم تحسينًا هندسيًا فحسب، لكن التفكير فيه بعمق يكشف أنه أمر ضروري. إن وضع تحقق الإثباتات الصفرية داخل آلة افتراضية تفسيرية (interpreted VM) يعني أن خسارة الأداء تكون بفارق على مستوى “مراتب” كاملة، ولا سيما في سلسلة مثل Dusk التي تتبع مسار معاملات مُشفّرة افتراضيًا؛ إذ تكاد كل معاملة تمر عبر تحقق الإثباتات. فإذا تأخرت هذه الخطوة، تتوقف الإنتاجية (throughput) للسلسلة كلها بشكل مباشر. نقل الجزء الأكثر استهلاكًا للموارد خارج الـsandbox وتشغيله بالشفرة الأصلية هو، جوهريًا، طريق وسط بين هدفين: "اكتمال آلة تورينغ للعقود" و"عدم السماح للحوسبة الخصوصية أن تُدمّر الأداء".
ما علّقني هو السؤال التالي: من يعرّف واجهات استدعاء هذه الـhost functions؟ وهل يمكن توسيعها مستقبلًا؟ إذا كانت إضافة أي برهمية/بدائية تشفيرية جديدة تتطلب تعديل كود آلة التنفيذ الأساسي، فهذا يعني أن أنواع بدائيات الخصوصية المتاحة للمطورين—إلى حد ما—مرهونة بإيقاع تحديث الفريق الأساسي، وليست متاحة لتوسّع حر داخل النظام البيئي. وهذا يتعارض قليلًا مع رواية السلسلة العامة التي تقول إن "آلة تورينغ كاملة ويمكن للمطورين الاستفادة بحرية"؛ نعم، التناقض مخبأ في الطبقات السفلية، لذلك لا تشعر به عادة.
لهذا، لم أعد أملك مزاجًا لمواصلة القراءة، فاحتفظت بهذه النقطة أولًا وسأبحث لاحقًا عن فرصة للتحقق إلى أي مدى تكون الـhost functions مفتوحة.
برأيكم، هل أن تعيين حسابات التشفير الأساسية لتعمل خارج الـsandbox وتشغيل كود أصلي—وهذا خيار "الأداء أولًا"—ستكون كلفته أكبر مما يبدو؟
@Dusk #dusk $DUSK
性能优先没毛病,安全上有原生代码审计反而更放心
0%
开放性被牺牲了,长期看会限制生态自由扩展
0%
得看宿主函数接口设计得开不开放,现在下结论太早
0%
0 الأصوات • تمّ إغلاق التصويت