كيفية إرسال الأثير إلى 11،440 شخص

إذا كنت تتابع التحديثات المتعلقة بحالات حافة DAO ، فستسمع أن الأثير من حساب extraBalance يتم إرساله إلى المستخدمين الذين يمتلكونه ليس عن طريق عقد سحب ، ولكن عن طريق إرساله مباشرة إليهم - لا حاجة إلى لهم لاتخاذ أي إجراء للمطالبة به.

بالنظر إلى أن محفظة الوصي هي متعددة الأشكال ، فقد تتساءل عن كيفية تحقيق ذلك. هل سيمضون أسبوعًا في توقيع 11،440 معاملة فردية؟ هل سيقومون بإرسال المبلغ بالكامل إلى حساب يسيطر عليه فرد واحد حتى يتمكنوا من سداد المدفوعات؟ كما يحدث ، لا: بفضل اقتراح رائع من Vitalik ، من الممكن إجراء جميع عمليات النقل بدون ثقة ، بطريقة لا تتطلب سوى نقل واحد من قبل الأمناء. تابع القراءة لمعرفة كيف.

توقيع المعاملة في Ethereum

يعلم الجميع أنه لإنشاء معاملة Ethereum صالحة ، عليك أولاً التوقيع عليها باستخدام مفتاحك الخاص ، وأن المعاملات الموقعة فقط صالحة. هذا صحيح ، لكنه ليس الحقيقة كاملة.

العملية التي يتم من خلالها التحقق من صحة التوقيعات في Ethereum تسمى "ecrecover". هذه هي الوظيفة التي تأخذ رسالة وتوقيعها ، وتقوم بإرجاع المفتاح العمومي (وبالتالي العنوان) الذي وقّع عليه. في Ethereum ، لا يتم تضمين العنوان "من" للمعاملة بشكل صريح في المعاملة ؛ بدلاً من ذلك ، يتم استدعاء ecrecover ، والعنوان الذي تُرجع إليه هو العنوان من المعاملة. ونظرًا لأن المفتاح الخاص لمالك ذلك العنوان فقط هو الذي يمكنه إنشاء توقيعات تُرجع ذلك العنوان ، فيمكنه فقط السماح للشبكة بإنفاق أموال من حسابها.

ماذا لو تجاهلنا عملية التوقيع المعتادة ، وقمنا بملء كل ما أحببنا لتوقيع المعاملة؟ اتضح أن نصف التواقيع صالحة بمعنى أن ecrecover تقوم بإرجاع مفتاح عمومي (وبالتالي عنوان). نظرًا لأننا لا نملك السيطرة على العنوان ، فإن ما قمنا به للتو هو بناء معاملة يمكنها إنفاق أموال من عنوان عشوائي على ما يبدو. إذا أنشأنا مثل هذه المعاملة ، ثم مولنا العنوان الذي تم إنشاؤه مع بعض الأثير ، فستكون المعاملة قادرة على التنفيذ تمامًا مثل المعاملة العادية. لقد أنشأنا فعليًا "عنوان الاستخدام الفردي" ، حيث لا يمكن إنفاق الأموال إلا عن طريق معاملة واحدة. إذا نشرنا المعاملة ، واخترنا قيمًا لحقل التوقيع بطريقة يمكن التنبؤ بها ، فيمكننا أن نثبت لأي شخص أن الأموال المرسلة إلى هذا العنوان ستكون قابلة للاستخدام فقط من خلال هذه المعاملة ، ولا شيء غير ذلك.

Multisends مع عناوين لمرة واحدة

يتم التعامل مع multisend extraBalance في مثل هذا الموضة. أولاً ، نقوم بإنشاء سلسلة من المعاملات التي ترسل الأثير إلى عناوين متعددة - 110 منها لكل معاملة - وننشئ عناوين لها باستخدام العملية الموضحة أعلاه. بالنسبة لحقول التوقيع ، نملأ "0xDA0DA0DA0 ..." - وهي قيمة يمكن التنبؤ بها بحيث يمكنك التأكد من أن شخص ما ليس لديه بالفعل مفتاح خاص للعنوان الذي تم إنشاؤه.

ينتج عن ذلك سلسلة من المعاملات مع "عناوين لمرة واحدة" والتي يمكن استخدامها لتمويلها. لا يزال عدد المعاملات 104 عبارة عن عدد قليل جدًا من الأرقام التي يجب على الأمناء التوقيع عليها بسهولة ، لذلك نكرر العملية مرة أخرى ، ونبني معاملة أخرى ترسل الأثير إلى 104 معاملة أنشأناها في الخطوة الأولى ، وننتج معاملة واحدة بعنوانها الفريد .

الآن ، يمكن لأي شخص التحقق من المعاملات للتأكد من أنه يرسل المبلغ الصحيح من الأثير إلى قائمة العناوين الصحيحة ، وبمجرد رضاه ، يمكن للأمناء الموافقة على الدفع إلى عنوان المعاملة الجذر. بعد ذلك ، يمكن لأي شخص إرسال المعاملات إلى الشبكة ، وبدء العملية برمتها والتي ستؤدي إلى إرسال الأثير إلى الجميع في القائمة - كل ذلك مع توقيع واحد فقط مطلوب ، ودون الحاجة إلى الثقة في الفرد مع الأموال.