كنت أفكر في مدى شيوع افتراض أن مجرد موافقة سياسة على معاملة يعني أن المعاملة نفسها مضمونة النجاح.
يوضح توثيق نيوتن أن هاتين الخطوتين مختلفتان.
في تدفق النية الخام، يقوم PolicyClient أولاً بالتحقق من الإقرار عبر _validateAttestation. فقط بعد نجاح ذلك ينفذ الاستدعاء باستخدام approved to و value و data الواردة من النية.
لكن هذا الاستدعاء قد يفشل مع ذلك.
إذا قام عقد الوجهة بإرجاع الحالة (revert)، فإن مثال نيوتن يمرّر سبب الإرجاع الأصلي أو يلجأ إلى "Execution failed" عندما لا توجد بيانات لإعادة التراجع. أما في مثال التحقق المباشر، فإنه يستخدم خطأ التنفيذ المخصص ExecutionFailed().
لفتتني هذه النقطة.
يُثبت الإقرار أن مشغلي نيوتن قيّموا الطلب ووافقوا عليه ضمن السياسة المحددة. يمنح العقد الإذن لمحاولة تنفيذ الإجراء.
ولا يضمن أن عقد الوجهة سينفذ بنجاح.
يشير توثيق نيوتن كذلك إلى أسباب عملية قد تجعل ذلك يحدث. على سبيل المثال، يجب أن يمتلك PolicyClient ما يكفي من ETH لإرسال القيمة، وإذا قام عقد الهدف نفسه بإرجاع الحالة، توصي الوثائق بإجراء تصحيح مستقل لهذه المعاملة لأن موافقة السياسة لم تكن هي المشكلة.
ما أقدّره هو أن نيوتن لا يطمس الفرق بين الترخيص والتنفيذ.
النية الموافق عليها تعني فقط: "مسموح لك بالمحاولة." أما ما إذا كان عقد الوجهة قادرًا بالفعل على إكمال الإجراء، فهذه مسألة منفصلة تمامًا.
ما زلت مهتمًا بتجربة المستخدم، رغم ذلك.
هل ستوضح التطبيقات هذا الفرق بشكل كافٍ؟ أم سيرى المستخدمون نية موافقًا عليها بشكل طبيعي ويتوقعون وجود خطأ في نيوتن عندما يفشل التنفيذ؟
إن فصل موافقة السياسة عن التنفيذ يبدو أنيقًا من الناحية المعمارية، لكن ما إذا كان يجعل النظام أيضًا أسهل للفهم بالنسبة للمستخدمين اليوميين فهو سؤال آخر.
$NEWT
#newt $NEWT @NewtonProtocol
يوضح توثيق نيوتن أن هاتين الخطوتين مختلفتان.
في تدفق النية الخام، يقوم PolicyClient أولاً بالتحقق من الإقرار عبر _validateAttestation. فقط بعد نجاح ذلك ينفذ الاستدعاء باستخدام approved to و value و data الواردة من النية.
لكن هذا الاستدعاء قد يفشل مع ذلك.
إذا قام عقد الوجهة بإرجاع الحالة (revert)، فإن مثال نيوتن يمرّر سبب الإرجاع الأصلي أو يلجأ إلى "Execution failed" عندما لا توجد بيانات لإعادة التراجع. أما في مثال التحقق المباشر، فإنه يستخدم خطأ التنفيذ المخصص ExecutionFailed().
لفتتني هذه النقطة.
يُثبت الإقرار أن مشغلي نيوتن قيّموا الطلب ووافقوا عليه ضمن السياسة المحددة. يمنح العقد الإذن لمحاولة تنفيذ الإجراء.
ولا يضمن أن عقد الوجهة سينفذ بنجاح.
يشير توثيق نيوتن كذلك إلى أسباب عملية قد تجعل ذلك يحدث. على سبيل المثال، يجب أن يمتلك PolicyClient ما يكفي من ETH لإرسال القيمة، وإذا قام عقد الهدف نفسه بإرجاع الحالة، توصي الوثائق بإجراء تصحيح مستقل لهذه المعاملة لأن موافقة السياسة لم تكن هي المشكلة.
ما أقدّره هو أن نيوتن لا يطمس الفرق بين الترخيص والتنفيذ.
النية الموافق عليها تعني فقط: "مسموح لك بالمحاولة." أما ما إذا كان عقد الوجهة قادرًا بالفعل على إكمال الإجراء، فهذه مسألة منفصلة تمامًا.
ما زلت مهتمًا بتجربة المستخدم، رغم ذلك.
هل ستوضح التطبيقات هذا الفرق بشكل كافٍ؟ أم سيرى المستخدمون نية موافقًا عليها بشكل طبيعي ويتوقعون وجود خطأ في نيوتن عندما يفشل التنفيذ؟
إن فصل موافقة السياسة عن التنفيذ يبدو أنيقًا من الناحية المعمارية، لكن ما إذا كان يجعل النظام أيضًا أسهل للفهم بالنسبة للمستخدمين اليوميين فهو سؤال آخر.
$NEWT
#newt $NEWT @NewtonProtocol