رأيت منشورًا من أحد رموز KOL الأسبوع الماضي يدّعي أن DuskEVM مكافئ لـ EVM وأن Uniswap V3 يتم نشره مباشرة. قمت بتفريع V3 Core وتجميعه على Boreas RC1 للتحقق.
أول خطأ ظهر في Pair.sol.
تقرأ balanceOf _reserves من تخزين EVM العام. طبقة الخصوصية في DuskEVM تُوجّه عمق السيولة عبر Hedger. متغيرات Hedger لا تعيش في تخزين EVM. لذلك كل دالة view تقرأ الاحتياطيات تصطدم بنهاية ميتة. كل عمليات Uniswap في mint وburn وswap تعتمد على قراءة الاحتياطيات بشكل متزامن لحساب حاصل الضرب الثابت. يجب إعادة تحميل هذا المسار الحسابي بالكامل من الصفر.
تتعمق مشكلة "pool" الخاصة. رموز LP في Uniswap هي ERC-20 قياسي مع عمليات نقل مرئية علنًا. الـ LP الخاص على DuskEVM يتطلب إعادة تغليف باستخدام ConfidentialERC20. أرصدة الـ LP تتحرك داخل ملاحظات Zedger. لم تعد عمليات التبادل تقوم بتحديث خريطة الاحتياطيات. بل تستهلك الملاحظة القديمة وتُنشئ ملاحظة جديدة بمبالغ مدعومة بأدلة PLONK.
getAmountOut لا يمكن أن يعمل بالطريقة نفسها. النسخة الأصلية تقسم reserveIn وreserveOut بشكل صريح. نسخة Dusk يجب أن تُثبت داخل الدائرة أن "الملاحظة القديمة ناقص الإدخال يساوي الملاحظة الجديدة زائد الإخراج". يظل كل من الإدخال والإخراج غير مرئيين لصنّاع السوق، لكنهما يظلان قابلين للتحقق لأي شخص يحمل مفاتيح العرض (view key).
في اليوم الثامن حاولت توريث Pair من فئة الأساس ConfidentialERC20. حدث تعارض مباشر في توقيع دالة Permit. موافقة Hedger تستخدم استهلاك الملاحظة، لا بتات allowance في ERC20. يجب تبديل SafeCast إلى HedgedUint256 على مستوى الشيفرة بالكامل.
الحد الأدنى من إعادة الكتابة المطلوبة: عقد Pair، وحساب المبلغ في Router، وأخذ عينات Oracle TWAP. تصبح نقطة أخذ العينة الالتزام بالملاحظة التي لا يمكن قراءتها مباشرة.
ما الذي يستمر: بناء جملة Solidity، Foundry، Remix، وإعداد chainId. تعمل أدوات الإحاطة. لا يمكن نقل منطق AMM الأساسي بدون إعادة عمل كبيرة.
تعني "مكافئ لـ EVM" أن البيئة مألوفة. لا يعني أن العقود القائمة ستعمل دون تغيير عند إدخال الخصوصية.
#dusk $DUSK @Dusk
أول خطأ ظهر في Pair.sol.
تقرأ balanceOf _reserves من تخزين EVM العام. طبقة الخصوصية في DuskEVM تُوجّه عمق السيولة عبر Hedger. متغيرات Hedger لا تعيش في تخزين EVM. لذلك كل دالة view تقرأ الاحتياطيات تصطدم بنهاية ميتة. كل عمليات Uniswap في mint وburn وswap تعتمد على قراءة الاحتياطيات بشكل متزامن لحساب حاصل الضرب الثابت. يجب إعادة تحميل هذا المسار الحسابي بالكامل من الصفر.
تتعمق مشكلة "pool" الخاصة. رموز LP في Uniswap هي ERC-20 قياسي مع عمليات نقل مرئية علنًا. الـ LP الخاص على DuskEVM يتطلب إعادة تغليف باستخدام ConfidentialERC20. أرصدة الـ LP تتحرك داخل ملاحظات Zedger. لم تعد عمليات التبادل تقوم بتحديث خريطة الاحتياطيات. بل تستهلك الملاحظة القديمة وتُنشئ ملاحظة جديدة بمبالغ مدعومة بأدلة PLONK.
getAmountOut لا يمكن أن يعمل بالطريقة نفسها. النسخة الأصلية تقسم reserveIn وreserveOut بشكل صريح. نسخة Dusk يجب أن تُثبت داخل الدائرة أن "الملاحظة القديمة ناقص الإدخال يساوي الملاحظة الجديدة زائد الإخراج". يظل كل من الإدخال والإخراج غير مرئيين لصنّاع السوق، لكنهما يظلان قابلين للتحقق لأي شخص يحمل مفاتيح العرض (view key).
في اليوم الثامن حاولت توريث Pair من فئة الأساس ConfidentialERC20. حدث تعارض مباشر في توقيع دالة Permit. موافقة Hedger تستخدم استهلاك الملاحظة، لا بتات allowance في ERC20. يجب تبديل SafeCast إلى HedgedUint256 على مستوى الشيفرة بالكامل.
الحد الأدنى من إعادة الكتابة المطلوبة: عقد Pair، وحساب المبلغ في Router، وأخذ عينات Oracle TWAP. تصبح نقطة أخذ العينة الالتزام بالملاحظة التي لا يمكن قراءتها مباشرة.
ما الذي يستمر: بناء جملة Solidity، Foundry، Remix، وإعداد chainId. تعمل أدوات الإحاطة. لا يمكن نقل منطق AMM الأساسي بدون إعادة عمل كبيرة.
تعني "مكافئ لـ EVM" أن البيئة مألوفة. لا يعني أن العقود القائمة ستعمل دون تغيير عند إدخال الخصوصية.
#dusk $DUSK @Dusk
