وجهة نظر المطور | كيف تصبح مدقق إيثريوم منفرد

فكر في الأمر للحظة،

البلوكشين هو مجرد قاعدة بيانات كبيرة واحدة لا يملكها أحد، ولكن يمكن لأي شخص أن يكتب فيها، وما يُكتب فيها لا يمكن حذفه. تحتاج إلى نسخة من قاعدة البيانات على جهاز الكمبيوتر الخاص بك إذا أردت أن تكتب فيها.

لذا، أدركت أخيرًا مدى أهمية أن تكون مُحققًا على شبكة إيثيريوم وقررت أن تجرب حظك لترى كم يمكنك أن تربح.

مبروك أولاً، هذا مشروع كبير وأنا، نيابة عن مجتمع إيثيريوم، أشكرك (لأي سبب كان، سواء لكسب مكافآت الكتل، أو جعل إيثيريوم أكثر لامركزية، أو غير ذلك) على مبادرتك الجريئة.

في نفس روح اللامركزية، سننظر في كيفية أن تكون مُحققًا فرديًا أو كما يُعرف بشكل فاخر بـ “solo staking” على إيثيريوم.

لن نناقش طرق أخرى للستاكينج مثل الستاكينج السائل، أو الستاكينج كخدمة، أو غيرها. يعني، أنت قررت أن تكون مُحققًا، فلماذا لا تفعلها بطريقة السيبر بانك، أليس كذلك؟

لنبدأ بالتعرف على بعض الكلمات أولاً:-

إيثيريوم هو بلوكشين يعتمد على إثبات الحصة منذ حدث “الدمج” الذي حدث في 15 سبتمبر 2022، والذي حول إيثيريوم من إثبات العمل (PoW) إلى إثبات الحصة (PoS).

هذا يعني أن طريقة تحقيق الإجماع على الشبكة تغيرت تمامًا.

تذكر كيف قلنا أن البلوكشين هو مجرد قاعدة بيانات كبيرة واحدة على مجموعة من الحواسيب، حسنًا، حالة تلك القاعدة يجب أن تكون معروفة من قبل جميع الحواسيب في الشبكة في جميع الأوقات. الحواسيب (العقد) المشاركة في الشبكة يجب أن تتفق على الحالة الحالية للقاعدة، أي تحقيق الإجماع!

عقد إيثيريوم لا تحتاج إلى حل مسائل رياضية معقدة لتحقيق الإجماع كما كان الحال في PoW، بل تقوم بقفل الإيثر مسبقًا، وتقول بشكل أساسي:

“مرحبًا، أنا مستعد أن أكون مُحققًا يضيف الكتل ويحقق المعاملات، وإذا تصرفت بشكل سيء أثناء أداء هذه المهمة، يمكنك أن تأخذ الإيثر الذي قمت بقفله مسبقًا (حجتي) كعقوبة على سوء التصرف. وإذا تصرفت بشكل صحيح، فستُكافأ بالإيثر الجديد الذي يتم إنشاؤه!”

عندما يوافق أكثر من ثلثي المُحققين على الحالة الحالية للقاعدة، يُعتبر أن حالة البلوكشين قد تم تثبيتها بشكل نهائي!

لماذا ثلثي المُحققين؟

تخيل لو انتظرنا جميع المُحققين (حاليًا يوجد 1,031,682 مُحقق نشط في شبكة إيثيريوم) ليوافقوا على حالة البلوكشين؟ ستكون سرعة التثبيت بطيئة جدًا، مما يجعل إيثيريوم غير قابل للاستخدام عمليًا. سرعة التثبيت تعتمد على أبطأ عقدة في الشبكة، وبما أن إيثيريوم لامركزي بشكل كبير (أي يمكن تشغيله على أجهزة عادية للمستهلكين تكون أبطأ من الحواسيب المؤسسية الضخمة)، علينا أن نأخذ في الاعتبار أبطأ عقدة. لذلك، ثلثي المُحققين لا يبدو رقمًا سيئًا للانتظار بعد هذا الحجة غير المقنعة، أليس كذلك… 😂😂😂

نموذج أمان إيثيريوم يمكن تلخيصه الآن بـ: “البشر كائنات عقلانية تريد تحقيق الأرباح، وستتخذ قرارات عقلانية لتحقيق تلك الأرباح. لذلك، لن يسيئوا التصرف لأنه إذا أساءوا، فإن الإيثر الذي قفلوه مسبقًا (حجتهم) سيتم خصمها!”

هل نحقق الأمان عبر الرأسمالية، أليس كذلك؟

أولاً، ما هو عقد إيثيريوم؟

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

هذه العقد هي التي تشكل بلوكشين إيثيريوم — مجموعة من الحواسيب التي تعمل برمجيات مماثلة ويمكنها التواصل مع بعضها البعض.

أي شخص يمكنه تشغيل عقدة إيثيريوم، لكن لا يوجد فائدة مالية مباشرة من تشغيلها لنفسك. لا تفهمني خطأ، هناك فوائد حقيقية من تشغيل عقدة (وليس أن تكون مُحققًا) مثل:-

  1. عدم الحاجة إلى الثقة في أي عقدة أخرى في الشبكة، لأنك تستطيع التحقق من جميع بيانات المعاملات بنفسك — الطبيعة السيبر بانكية الحقيقية “لا تثق، تحقق!”
  2. يمكنك استخدام التطبيقات اللامركزية بشكل أكثر أمانًا وخصوصية، لأنك لا تضطر إلى تسريب عناوين محافظك وأرصدة محافظك لعقد غير موثوق بها.
  3. يمكنك ربط محفظة إيثيريوم الخاصة بك مباشرة بنقطة النهاية RPC الخاصة بعقدة إيثيريوم الخاصة بك. هذا يمنحك وصولًا حصريًا وأولوية في تضمين معاملاتك بدلًا من التنافس مع الجميع عبر نقاط النهاية العامة.
  4. أنت تفرض قواعد الإجماع، بحيث لا يمكن خداعك لقبول كتل لا تتبع القواعد، في حال حدث حدث غير متوقع (Black Swan) حيث تتفق جميع العقد على التواطؤ. في مثل هذا الحدث غير المتوقع، يمكن للعقد أن تتبع السلسلة الصادقة عبر استعادة اجتماعية.
  5. زيادة عدد العقد في الشبكة يؤدي إلى شبكة أكثر تنوعًا وقوة، مما يصعب على الشبكة بأكملها أن تفشل أو تتعرض للرقابة على المعاملات.
  6. توفر العقد الكاملة وصولاً لبيانات البلوكشين للعملاء الخفيفين (Light Clients) الذين يعتمدون عليها. هذا يساعد المستخدمين على الوصول والتفاعل مع إيثيريوم بشكل آمن ولامركزي دون الحاجة لمزامنة كامل البلوكشين، مما يفتح مجموعة أوسع من الاستخدامات.

عن طريق إنشاء مفتاح توقيع خاص وتقديم 32 إيثير إلى عقد ذكي مرتبط بهذا المفتاح، يمكنك تحويل عقدة إيثيريوم الخاصة بك إلى مُحقق.

المُحققون هم عقد مفعلة تعالج معاملات المستخدمين وتثبتها (أي، تثبيت نهائي).

صحة كل معاملة تُصوت عليها جميع المُحققين (توقيعات) في شبكة إيثيريوم ويشهد عليها الإيثير المودع.

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

هذا يحفز المُحققين على أن يكونوا أمناء ويظلوا كذلك.

كيف تضع نفسك كمُحقق فردي على إيثيريوم؟

تحتاج إلى إيداع 32 إيثير لتصبح مُحققًا على إيثيريوم، وهو يعادل تقريبًا 13,998,370.65 كش (بالسعر الحالي حيث 1 إيثير = 437,449.08 كش) — كم قيمة 1 إيثير الآن عند قراءتك لهذا؟

كيف توصلوا إلى شرط الـ32 إيثير؟

تم برمجته في الكود الذي يعمل عليه برامج العميل (client software) للمشاركة في شبكة إيثيريوم.

ثم، تحتاج إلى تشغيل برمجيات عميل محددة لتصبح مُحققًا. إليك أمثلة على البرمجيات التي يمكنك تشغيلها:-

  1. Prysm (https://prysmaticlabs.com/))
  2. Lighthouse (https://lighthouse-book.sigmaprime.io/))
  3. Teku (https://consensys.io/teku))
  4. Nimbus (https://nimbus.team/))
  5. Lodestar (https://lodestar.chainsafe.io/))

هذه البرمجيات تُعرف مجتمعة باسم “طبقة الإجماع” لأنها التي تحقق الإجماع على إيثيريوم — وتقرر حالة البلوكشين.

الآن بعد أن عرفت أي برمجية عميل ستشغلها ومعك 32 إيثير، أنت جاهز لكسب مكافآت الكتل، أليس كذلك؟ حسنًا، نعم، لكن كالعادة، التفاصيل هي التي تصنع الفرق. لنرى كيف يمكن أن يصبح الأمر معقدًا جدًا بسهولة.

الستاكينج الفردي (Solo Staking)

الستاكينج الفردي يعني تشغيل عقدتك الخاصة بالكامل وتلقي مكافآت الكتل كاملة دون مشاركة مع أحد.

متطلبات الأجهزة الدنيا للستاكينج الفردي:

  1. CPU: رباعي النواة
  2. RAM: 32 جيجابايت
  3. التخزين: 2 تيرابايت SSD من نوع NVMe، سرعة قراءة >500 IOPS، سرعة كتابة >1700 IOPS، غير QLC (يفضل 4 تيرابايت SSD، سرعة قراءة >5000 IOPS، سرعة كتابة >1700 IOPS، غير QLC إذا أردت إعداد بدون ضغط)
  4. متطلبات الشبكة (تواصل مع مزود الإنترنت الخاص بك):
    1. حجم البيانات: غير محدود أو على الأقل 2 تيرابايت شهريًا
    2. السرعة: على الأقل 500 ميجابت/ثانية مشتركة — عقدتك تحتاج إلى سرعة إنترنت مخصصة لا تقل عن 10 ميجابت/ثانية
    3. عنوان IP ثابت إن أمكن
  5. الطاقة: مصدر طاقة غير منقطع (UPS)

قد تبدو متطلبات الأجهزة مرهقة في البداية، لكن هل رأيت متطلبات أجهزة سولانا؟

تذكر قولنا:

“البلوكشين هو مجرد قاعدة بيانات كبيرة واحدة لا يملكها أحد، ولكن يمكن لأي شخص أن يكتب فيها، وما يُكتب فيها لا يمكن حذفه. تحتاج إلى نسخة من قاعدة البيانات على جهازك إذا أردت أن تكتب فيها”

نعم، لنلتزم بذلك ونرى كيف يؤثر كل مكون من مكونات الأجهزة على الأداء.

المكون تأثير الأداء
المعالج (CPU) – يؤثر على سرعة تنفيذ الكتل (الحد الأقصى 4 ثواني)
– إذا كان بطيئًا جدًا، قد يفوتك التصويتات (attestations) واقتراحات الكتل
الذاكرة (RAM) – إذا نفدت الذاكرة، ستتوقف الخدمات بشكل مفاجئ، مما يؤدي إلى فقدان البيانات. قد يتسبب ذلك في تلف قاعدة البيانات، وفي أسوأ الحالات، يتطلب إعادة مزامنة العقدة من الصفر، مما يفقد التصويتات لعدة أيام.
– مع زيادة نشاط الشبكة (مثل عناوين أكثر، عقود ذكية، معاملات)، ستزداد الحاجة إلى ذاكرة أكبر للحفاظ على حالة السلسلة ونشر المعاملات.
التخزين – سرعات القراءة والكتابة (IOPS) هي العنصر المحدد لسرعة تنفيذ الكتل.
الشبكة – تؤثر على زمن الاستجابة في استقبال/إرسال الكتل، مما يؤثر على سرعة التنفيذ الإجمالية (الحد الأقصى 4 ثواني)
– وجود عنوان IP ثابت يُحسن اكتشاف العقد الأخرى ويمنع مشاكل قلة الأقران
– بعض مزودي الإنترنت يمنعون إعادة توجيه المنافذ (port forwarding) إذا لم يكن لديك عنوان IP ثابت.
الطاقة – انقطاعات مفاجئة في التيار، مثل الصواعق أو انقطاعات الكهرباء، ستؤدي إلى إيقاف عقدتك بشكل غير نظيف، مما يتسبب في فقدان البيانات. قد يتطلب ذلك إعادة مزامنة العقدة من الصفر، وفقدان التصويتات لعدة أيام.

تذكر قولنا أنك بحاجة إلى تشغيل عميل طبقة الإجماع مثل Lighthouse، وأيضًا تحتاج إلى تشغيل عميل طبقة التنفيذ.

ما هو عميل طبقة التنفيذ؟ سعيد أنك سألت…

عميل طبقة التنفيذ في إيثيريوم هو البرنامج الذي ينفذ العقود الذكية والمعاملات. هنا يتم تنفيذ تطبيقاتك المفضلة مثل أَف، يوني سواب، والعملات الميم التي تنتظر أن ترتفع. هذا هو الذي يُكوّن آلة إيثيريوم الافتراضية (EVM).

أمثلة على عملاء طبقة التنفيذ:

  • geth
  • reth
  • nethermind
  • besu
  • erigon

ملاحظة: لتعزيز مرونة إيثيريوم، يُنصح باستخدام عميل تنفيذ أقلية (minority execution client). ماذا لو حدث حدث غير متوقع (Black Swan) وواجهت مشكلة في geth، الذي يمتلك حصة سوقية حوالي 55% عند كتابة هذا، أي أكثر من نصف عملاء تنفيذ إيثيريوم يعملون بـ geth — هل يعني ذلك أن إيثيريوم سيتعطل؟

عملية التحقق من الكتلة تكون كالتالي:-

  1. تنفيذ العقود الذكية على EVM، ويتم ذلك لأن المُحقق يشغل عميل طبقة التنفيذ مثل reth.
  2. هذا التغيير يغير حالة السلسلة.
  3. يجب أن يتم إبلاغ جميع العقد عبر السلسلة — تذكر قاعدة البيانات الكبيرة الواحدة — ليتم التوصل إلى إجماع، وتوافق جميع العقد على الحالة في تلك اللحظة. هذا يتطلب أن يتواصل طبقة التنفيذ مع طبقة الإجماع بطريقة ما.

لنأخذ مثالًا على إعداد reth (عميل طبقة التنفيذ) مع Lighthouse (عميل طبقة الإجماع).

الخطوات التالية تفترض أن لديك فهمًا أساسيًا للعمل على بيئة لينكس، بما في ذلك كتابة الأوامر على الطرفية التي نسختها من StackOverflow بدون فهم دقيق لما تفعله، لكن المهم أنها تعمل.

ls -al | grep | xxd | echo -n

هل لم تفهم شيئًا مما كتبته للتو؟

إذا كانت ls -al | grep | xxd | echo -n تبدو لك كأنها لغة الماندرين، حان الوقت لتنظيف كتبك ومراجعة أوامر لينكس. لست بحاجة لأن تكون خبيرًا مثلي (نعم، أستخدم أرتش بالمناسبة)، لكن على الأقل تعلم الفرق بين cd و rm -rf /!

سنشتغل على جهاز مثبت عليه أوبونتو.

أولاً، نحتاج إلى إنشاء رمز توثيق ويب JSON (JWT) يسمح لبرمجيات طبقة التنفيذ (reth) وطبقة الإجماع (Lighthouse) بالتواصل مع بعضهما.

شغل الأوامر التالية خطوة خطوة لإنشاء مجلد باسم jwtsecret وتوليد ملف JWT باسم jwt.hex داخل المجلد.

sudo mkdir -p /var/lib/jwtsecret

openssl rand -hex 32 | sudo tee /var/lib/jwtsecret/jwt.hex > /dev/null

سنوجه ملفات التكوين لعملاء الطبقتين إلى هذا الملف (jwt.hex) لاحقًا.

قم بتنزيل reth وتهيئة الخدمة

قم بتنزيل أحدث إصدار من reth من هنا (https://github.com/paradigmxyz/reth/releases)) وملف التوقيع الرقمي (.asc) للتحقق من صحة الملف.

curl -LO https://github.com/paradigmxyz/reth/releases/download/v1.0.0/reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz

curl -LO https://github.com/paradigmxyz/reth/releases/download/v1.0.0/reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz.asc

قم بالتحقق من التوقيع باستخدام الأمر التالي:

gpg --keyserver keyserver.ubuntu.com --recv-keys 50FB7CC55B2E8AFA59FE03B7AA5ED56A7FBF253E

gpg --verify reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz.asc reth-v0.1.0-alpha.23-x86_64-unknown-linux-gnu.tar.gz

الناتج المتوقع: تأكيد صحة التحقق من التوقيع

gpg: Signature made Mon 24 Jun 2024 01:33:15 PM EAT

gpg: using EDDSA key 50FB7CC55B2E8AFA59FE03B7AA5ED56A7FBF253E

gpg: Good signature from “Georgios Konstantopoulos (Reth signing key for 2024 and on) <[email protected]>” [unknown]

gpg: WARNING: This key is not certified with a trusted signature!

gpg: There is no indication that the signature belongs to the owner.

مفتاح التحقق الأساسي: 50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E

تحقق من مفتاح التوقيع على الإصدار هنا (https://reth.rs/installation/binaries.html#signature-verification))

إذا تم التحقق من التحقق، استخرج الملفات وانقلها إلى مجلد (/usr/local/bin).

ثم نظف مجلد العمل.

tar xvf reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz

sudo cp reth /usr/local/bin

rm -r reth reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz.asc reth-v1.0.0-aarch64-unknown-linux-gnu.tar.gz

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

sudo useradd --no-create-home --shell /bin/false reth

أنشئ مجلدًا لملفات بيانات شبكة reth، وامنحه ملكية الحساب reth.

sudo mkdir -p /var/lib/reth

sudo chown -R reth:reth /var/lib/reth

أنشئ ملف تكوين systemd لخدمة reth لتعمل في الخلفية.

sudo vi /etc/systemd/system/reth.service

الصق الإعدادات التالية في الملف:

[Unit]

Description=Reth Execution Client (Holesky)

After=network.target

Wants=network.target

[Service]

User=reth

Group=reth

Type=simple

Restart=always

RestartSec=5

ExecStart=/usr/local/bin/reth node \

–chain holesky \

–datadir=/var/lib/reth \

–log.file.directory=/var/lib/reth/logs \

–authrpc.jwtsecret=/var/lib/jwtsecret/jwt.hex \

–full \

–port 30304 \

–http \

–http.api eth,web3,net,txpool,debug,trace \

–http.addr <internal_ip_address> \

–http.port 8547 \

–ws \

–ws.addr <internal_ip_address> \

–ws.port 8548 \

–metrics 127.0.0.1:6060

[Install]

WantedBy=default.target

بعد الانتهاء، احفظ الملف بالضغط على ESC → ENTER → :wq → ENTER

راجع ملخص التكوين الخاص بك وعدله إذا لزم الأمر.

ملخص تكوين reth:

  1. –chain: تشغيل على شبكة Holesky التجريبية
  2. –datadir: مجلد تخزين بيانات البلوكشين لطبقة التنفيذ
  3. –log.file.directory: مسار ملفات السجلات
  4. –authrpc.jwtsecret: مسار ملف الـ JWT الذي أنشأته سابقًا (jwt.hex)
  5. –full: تشغيل عقدة كاملة
  6. –port: رقم المنفذ للتواصل بين الأقران (افتراضي 30303)
  7. –http: تفعيل خدمة HTTP-RPC على HTTP وWebsocket
  8. –http.api: وحدات RPC المسموح بها
  9. –http.addr: عنوان IP للاتصال بخدمة JSON RPC (استخدم عنوان IP الداخلي لجهازك)
  10. –http.port: رقم المنفذ للاتصال بخدمة HTTP-RPC (اختر أي منفذ غير مستخدم، وتأكد من السماح بالاتصالات الواردة)
  11. –ws: تفعيل Websocket
  12. –ws.addr: عنوان خادم Websocket
  13. –ws.port: منفذ Websocket
  14. –metrics: تفعيل مراقبة الأداء

ابدأ reth:

sudo systemctl daemon-reload

sudo systemctl start reth.service

sudo systemctl status reth.service

الناتج المتوقع: يجب أن يقول أن reth “نشط (يعمل)”. اضغط CTRL+C للخروج، وسيستمر في العمل. يستغرق الأمر حوالي 6 ساعات لمزامنة reth على شبكة Holesky التجريبية.

استخدم الأمر التالي لمراجعة سجلات عملية المزامنة، واحذر من أي تحذيرات أو أخطاء:

sudo apt install ccze -y

sudo journalctl -fu reth -o cat | ccze -A

الناتج المتوقع:

اضغط CTRL+C للخروج.

راجع هنا (https://geth.ethereum.org/docs/fundamentals/logs)) لمزيد من التفاصيل حول تفسير وفهم سجلات reth.

إذا كانت خدمة reth تعمل بشكل جيد، يمكنك الآن تفعيلها لتعمل تلقائيًا عند إعادة تشغيل الجهاز:

sudo systemctl enable reth.service

الناتج المتوقع:

Created symlink /etc/systemd/system/default.target.wants/reth.service → /etc/systemd/system/reth.service.

توثيق reth: https://reth.rs/

إعداد وتكوين عميل طبقة الإجماع.

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

قم بتنزيل أحدث إصدار من Lighthouse من هنا (https://github.com/sigp/lighthouse/releases)) وحقق من صحة الملف باستخدام التحقق من التوقيع.

curl -LO https://github.com/sigp/lighthouse/releases/download/v5.2.1/lighthouse-v5.2.1-x86_64-unknown-linux-gnu.tar.gz

curl -LO https://github.com/sigp/lighthouse/releases/download/v5.2.1/lighthouse-v5.2.1-x86_64-unknown-linux-gnu.tar.gz.asc

قم بالتحقق من التوقيع:

gpg --keyserver keyserver.ubuntu.com --recv-keys 15E66D941F697E28F49381F426416DC3F30674B0

gpg --verify lighthouse-v5.1.3-x86_64-unknown-linux-gnu.tar.gz.asc lighthouse-v5.1.3-x86_64-unknown-linux-gnu.tar.gz

الناتج المتوقع: تأكيد صحة التحقق من التوقيع

gpg: Signature made Mon 24 Jun 2024 01:40:15 PM EAT

gpg: using RSA key 15E66D941F697E28F49381F426416DC3F30674B0

gpg: Good signature from “Sigma Prime <[email protected]>” [unknown]

gpg: WARNING: This key is not certified with a trusted signature!

gpg: There is no indication that the signature belongs to the owner.

مفتاح التحقق الأساسي: 15E6 6D94 1F69 7E28 F493 81F4 2641 6DC3 F306 74B0

إذا تم التحقق من التحقق، استخرج الملفات وانقلها إلى مجلد (/usr/local/bin). ثم نظف مجلد العمل.

tar xvf lighthouse-v5.1.3-x86_64-unknown-linux-gnu.tar.gz

sudo cp lighthouse /usr/local/bin

rm -r lighthouse*

ملاحظة: سنقوم بتشغيل عميل الإجماع وعميل المُحققين الخاص بـ Lighthouse كخدمات منفصلة لزيادة المرونة في إعداد عقدة احتياطية لضمان أعلى مدة تشغيل.

أنشئ حسابًا باسم lighthouse بدون وصول للخادم ليعمل كخدمة في الخلفية. هذا الحساب لن يمتلك صلاحيات الجذر، مما يحد من وصول المهاجمين المحتملين إلى خدمات Lighthouse فقط في حال تمكنوا من التسلل عبر تحديث عميل مخترق.

sudo useradd --no-create-home --shell /bin/false lighthousebeacon

أنشئ مجلدًا لتخزين بيانات شبكة الإجماع وبيانات المُحققين.

نقل مجلد مفاتيح المُحققين إلى هذا المجلد، ومنحه ملكية الحساب الجديد.

sudo mkdir -p /var/lib/lighthouse_beacon

sudo chown -R lighthousebeacon:lighthousebeacon /var/lib/lighthouse_beacon

sudo chmod 700 /var/lib/lighthouse_beacon

إذا لم تظهر أخطاء، أنشئ ملف تكوين systemd لخدمة عميل الإجماع.

sudo vi /etc/systemd/system/lighthousebeacon.service

الصق الإعدادات التالية:

[Unit]

Description=Lighthouse Beacon Node (Holesky)

Wants=network-online.target

After=network-online.target

[Service]

User=lighthousebeacon

Group=lighthousebeacon

Type=simple

Restart=always

RestartSec=5

ExecStart=/usr/local/bin/lighthouse bn \

–network holesky \

–datadir /var/lib/lighthouse_beacon \

–execution-endpoint http://127.0.0.1:8551 \

–execution-jwt /var/lib/jwtsecret/jwt.hex \

–checkpoint-sync-url=https://holesky.beaconstate.ethstaker.cc/ \

–metrics \

–metrics-port 8009 \

–validator-monitor-auto \

–port 9001 \

–http \

–http-port 5051 \

–http-address <internal_ip_address> \

–builder http://127.0.0.1

[Install]

WantedBy=multi-user.target

بعد الانتهاء، احفظ الملف بالضغط على ESC → ENTER → :wq → ENTER

راجع ملخص التكوين الخاص بك وعدله إذا لزم الأمر.

ملخص تكوين عميل الإجماع:

–network: تشغيل على شبكة اختبار Holesky

–datadir: مجلد تخزين البيانات

–execution-endpoint: عنوان URL للاتصال بعميل طبقة التنفيذ

–execution-jwt: مسار ملف الـ JWT

–checkpoint-sync-url: عنوان URL لمزامنة سريعة جدًا عبر نقاط التحقق (https://eth-clients.github.io/checkpoint-sync-endpoints/)

–metrics: تفعيل مراقبة الأداء

–metrics-port: رقم المنفذ لمراقبة الأداء

–validator-monitor-auto: مراقبة إضافية للمُحققين

–port: رقم المنفذ للتواصل بين الأقران (افتراضي 9000)

–http: تفعيل الاتصال بواجهة برمجة التطبيقات (API) الخاصة بالمُحققين

–http-port: رقم المنفذ للاتصال بواجهة API

–http-address: عنوان IP للاتصال بواجهة API (استخدم عنوان IP الداخلي)

–builder: عنوان URL للبناة الخارجيين (مثل وسطاء MEV)

ابدأ عميل Lighthouse:

sudo systemctl daemon-reload

sudo systemctl start lighthousebeacon.service

sudo systemctl status lighthousebeacon.service

الناتج المتوقع: يجب أن يقول أن عميل الإجماع “نشط (يعمل)”. اضغط CTRL+C للخروج، وسيستمر في العمل. يستغرق الأمر بضع دقائق ليتم تزامن Lighthouse على Holesky.

استخدم الأمر التالي لمراجعة سجلات عملية المزامنة:

sudo journalctl -fu lighthousebeacon -o cat | ccze -A

الناتج المتوقع:

اضغط CTRL+C للخروج.

إذا كانت خدمة Lighthouse تعمل بشكل جيد، يمكنك تفعيلها لتعمل تلقائيًا عند إعادة تشغيل الجهاز:

sudo systemctl enable lighthousebeacon.service

تحقق من جذور الحالة الأولية (checkpoint sync):

  1. اذهب إلى https://holesky.beaconcha.in/ في متصفحك وابحث عن رقم الـ slot.
  2. تحقق من Block Root وState Root باستخدام مخرجات journalctl.
  3. مخرجات journalctl.

توثيق Lighthouse موجود هنا (https://lighthouse-book.sigmaprime.io/intro.html)).

توليد مفاتيح المُحقق

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

  1. مفتاح المُحقق (أو مفتاح التوقيع):
    • يُستخدم لتوقيع التصويتات (attestations) واقتراح الكتل.
    • يضمن أن المُحقق يمكنه إثبات أفعاله والحفاظ على سلامة عملية التحقق.
    • هو مفتاح نشط، يحتاج أن يكون متصلًا ويعمل ليشارك في الإجماع.
  2. مفتاح السحب (Withdrawal Key):
    • يُستخدم لإدارة وسحب الأموال المودعة للمُحقق.
    • عندما تريد سحب إيثيرك المودع والمكافآت التي حصلت عليها، تستخدم هذا المفتاح.
    • هو مفتاح غير نشط (Cold Key)، يُحتفظ به بعيدًا عن الاتصال المباشر لزيادة الأمان، ويُستخدم فقط عند الحاجة للسحب أو نقل الأصول المودعة.

كيف تولد هذين المفتاحين؟ سعيد أنك سألت، وسنقوم بتوليدهما بطريقة السيبر بانك. استعد…

يُنصح أن تولد هذين المفتاحين على جهاز غير متصل بالإنترنت (air-gapped)، أي جهاز لم يتصل أبدًا بالإنترنت العام!

احصل على Raspberry Pi رخيص — سعره أقل من 100 دولار.

إذا لم يكن Raspberry Pi أو جهاز جديد خيارًا، قم بتنزيل نظام تشغيل جديد، وأوصي بـ Tail OS هنا. قم بتشغيل Tail OS مباشرة من USB، وولّد مفاتيح المُحقق، وانسخ المفاتيح إلى USB، وابدأ.

أيًا كانت الطريقة التي تختارها، تأكد من أنك في بيئة آمنة (مثل المنزل أو المكتب) على شبكة WiFi موثوقة. وتأكد من تغطية الكاميرات (مثل كاميرات اللابتوب، والكاميرات الخارجية، والكاميرات الموجودة خلفك أثناء العملية). أوقف جميع الاتصالات بالإنترنت واللاسلكية (Ethernet، WiFi، Bluetooth) قبل البدء في توليد المفاتيح، والذي سنراه بعد قليل.

هذه إجراءات حماية جدية للخصوصية، أليس كذلك… أنت حتى لا تحمي عبارة بذرة المحفظة بهذه الطريقة، هاها 😂😂😂. ناهيك عن عبارة البذرة، أعتقد أنه لا يوجد شيء في حياتك تتخذ له مثل هذه الاحتياطات عند التوليد. مستوى الخصوصية هذا يعني أنه إذا فقدت مفاتيحك أو تم اختراقها، أنت في ورطة!

لأسباب أمنية، سنوضح كيف تعمل مع نظام تشغيل مباشر (Tail OS) على USB.

لماذا Tail OS؟

لأنه هناك سبب يوصي به إدوارد سنودن! هل تعرف من هو؟

ابحث عنه.

قم بتنزيل أحدث إصدار من ملف توليد مفاتيح إيداع المُحققين من هنا (https://github.com/ethereum/staking-deposit-cli/releases)) وتحقق من صحة التحقق من التوقيع.

curl -LO https://github.com/ethereum/staking-deposit-cli/releases/download/v2.7.0/staking_deposit-cli-fdab65d-linux-amd64.tar.gz

echo “ac3151843d681c92ae75567a88fbe0e040d53c21368cc1ed1a8c3d9fb29f2a3a staking_deposit-cli-fdab65d-linux-amd64.tar.gz | sha256sum --check”

الناتج المتوقع:

staking_deposit-cli-fdab65d-linux-amd64.tar.gz: OK

بعد التحقق من التحقق، استخرج المحتويات وغيّر المجلد إلى المجلد المستخرج.

tar xvf staking_deposit-cli-fdab65d-linux-amd64.tar.gz

cd staking_deposit-cli-fdab65d-linux-amd64

توليد مفاتيح التوقيع للمحقق

قبل المتابعة للخطوة التالية

  • أوقف اتصال Ethernet وWiFi وBluetooth الخاص بك
  • غطِّ جميع الكاميرات، مثل هواتفك، والكاميرات الخارجية، وكاميرات اللابتوب، والأشخاص خلفك أثناء العملية

لا أستطيع أن أؤكد على أهمية حماية مفاتيحك بما فيه الكفاية! احتفظ بها كأنك تملك البيتكوين الخاص بك!

شغل الأمر التالي لتوليد مفاتيح المُحقق. استبدل بعدد المُحققين الذين تريد إعدادهم و بعنوان السحب الخاص بك.

./deposit new-mnemonic --num_validators --chain holesky --eth1_withdrawal_address

استخدم عنوان محفظة إيثيريوم غير حاضنة (non-custodial) تملكه، مثل عنوان محفظة باردة (cold wallet) أو عنوان Multi-sig آمن. لا تستخدم محفظة CEX، لا! استخدم محفظة غير حاضنة!

سيُطلب منك إدخال التالي، اختر ما يناسبك:

  1. اختر لغتك (لجلسة العمل)
  2. أكد عنوان السحب (عنوان السحب الخاص بك)
  3. اختر لغة قائمة كلمات mnemonic (عبارة البذرة)
  4. أنشئ كلمة مرور لتشفير مفاتيح التوقيع للمحققين
  5. أكد كلمة المرور التي أنشأتها في الخطوة 4

الناتج المتوقع:

بعد ذلك، سيتم إنشاء قائمة كلمات mnemonic. اكتبها على ورقة أو دفتر ملاحظات — لا تخزنها أبدًا على الإنترنت أو على أي جهاز متصل بالإنترنت.

الناتج المتوقع:

اضغط على أي مفتاح بعد أن تكتب mnemonic، وسيطلب منك إدخالها بنفس الترتيب للتحقق من أنك سجلتها بشكل صحيح.

إذا أدخلت mnemonic بشكل صحيح، ستظهر لك رسمة ASCII لظبي!

الناتج المتوقع:

سيتم إنشاء ملفين:

  1. ملف keystore-m_.json: هو ملف التوقيع الخاص بالمحقق الذي ستستخدمه عقدتك لتوقيع التصويتات. احتفظ به في مكان آمن جدًا.
  2. ملف deposit_data-.json: يربط إيداع ETH الخاص بك بالمحقق. ستستخدمه مرة واحدة فقط أثناء عملية الإيداع.

احفظ كلا الملفين على USB جديد بنسخ مجلد staking-deposit-cli كاملًا إليه. ثم احذف النسخة الأصلية عبر الأمر:

sudo rm -r $HOME/staking-deposit-cli/validator_keys

أعد تشغيل جهازك (مثل اللابتوب) وأزل نظام التشغيل على USB. لن يُخزن عليه أي ذاكرة دائمة.

إضافة مفتاح المُحقق إلى العقدة

الآن بعد أن حصلنا على ملف التوقيع الخاص بالمحقق، نحتاج إلى وضعه في عقدة المُحقق الخاصة بنا حتى تتمكن من توقيع التصويتات واقتراح الكتل.

قم بتوصيل USB الذي يحتوي على مفاتيح التوقيع إلى جهاز العقدة الخاص بك. بعد توصيله، نحتاج إلى التعرف عليه. على الطرفية، نفذ:

lsblk

الناتج المتوقع:

ابحث عن USB الخاص بك في القائمة. سيكون اسمًا مشابهًا للصورة أعلاه، مثل sdx.

بعد أن تجده، يمكنك تركيب USB على مجلد /media:

sudo mount /dev/sda1 /media

ملاحظة: استبدل sda1 باسم جهاز USB الخاص بك.

الآن يمكنك الوصول إلى USB عبر الطرفية بالدخول إلى مجلد /media.

ادخل إلى مجلد USB وانسخ ملف التوقيع الخاص بالمحقق إلى مجلد HOME الخاص بك.

cd /media/staking-deposit-cli

sudo cp -r validator_keys ~

افصل واطرد USB الخاص بك.

cd

sudo umount /media

ثم، أنشئ ملف كلمة مرور نصي ليتمكن عقدك من فك تشفير مفاتيح التوقيع.

أولاً، اعرض ونسخ اسم ملف التوقيع الخاص بالمحقق.

cd ~/validator_keys

ls

باستخدام اسم الملف، أنشئ ملف كلمة المرور.

sudo vi <validator_signing_keystore_file_name>.txt

اكتب كلمة المرور التي استخدمتها عند توليد المفاتيح، ثم احفظ واغلق الملف بالضغط على ESC → ENTER → :wq → ENTER.

إيداع 32 إيثير لتصبح مُحققًا

انتبه جيدًا، هذه هي الخطوة التي ترسل فيها 32 إيثير لتصبح مُحققًا. ترسل الـ32 إيثير إلى عقد ذكي على إيثيريوم يُسمى عقد إيداع المنارة (Beacon Deposit Contract)، وعنوانه 0x00000000219ab540356cBB839Cbe05303d7705Fa على الشبكة الرئيسية.

لكن، لا ترسل الـ32 إيثير مباشرة إلى العقد، بل يجب أن تستخدم المنصة الرسمية لإطلاق إيثيريوم (Ethereum Launchpad) (http://launchpad.ethereum.org/)).

إذا أرسلتها مباشرة بدون استخدام المنصة الرسمية، ستفشل المعاملة!

تحقق من عنوان عقد الإيداع من مصادر متعددة (مثل مؤسسة إيثيريوم، EthHub، EtherScan) للتأكد أنه هو نفسه 0x00000000219ab540356cBB839Cbe05303d7705Fa.

العملات المشفرة مليئة بالاحتيالات، فكن حذرًا جدًا هنا.

بما أننا نعمل على شبكة اختبار (testnet) حتى الآن، holesky، سنستمر في أن نكون مُحققين على الشبكة التجريبية.

بدلاً من استخدام منصة الإطلاق الرسمية، سنستخدم منصة اختبار (testnet launchpad) (https://holesky.launchpad.ethstaker.cc/)).

من أين تحصل على 32 إيثير اختبار (testnet ETH)؟

  1. أولاً، اذهب إلى https://holesky-faucet.pk910.de/ وجرب أن تطلق 32 إيثير اختبار كامل.
  • إذا نجحت، انتقل إلى القسم التالي.
  • إذا لم تنجح، فقط اطلق المبلغ الذي يمكنك وواصل الخطوات.
  1. انضم إلى سيرفر Discord هنا – https://discord.gg/ethstaker
  2. انضم إلى قناة #cheap-holesky-validator
ETH2.08%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • Gate Fun الساخن

    عرض المزيد
  • القيمة السوقية:$2.42Kعدد الحائزين:1
    0.00%
  • القيمة السوقية:$0.1عدد الحائزين:0
    0.00%
  • القيمة السوقية:$0.1عدد الحائزين:1
    0.00%
  • القيمة السوقية:$2.44Kعدد الحائزين:1
    0.00%
  • القيمة السوقية:$2.57Kعدد الحائزين:3
    0.85%
  • تثبيت