Helios هو عميل خفيف متعدد السلاسل غير موثوق به وفعال ومحمول ومكتوب بلغة Rust.
تقوم Helios بتحويل نقطة نهاية RPC مركزية غير موثوقة إلى نقطة نهاية RPC محلية آمنة وغير قابلة للتلاعب لمستخدميها. تتم مزامنته في ثوانٍ، ولا يتطلب أي مساحة تخزين، وخفيف الوزن بما يكفي للتشغيل على الأجهزة المحمولة.
تتمتع Helios بحجم ثنائي صغير ويتم تجميعها في WebAssembly. وهذا يجعله هدفًا مثاليًا للتضمين مباشرة داخل المحافظ والتطبيقات اللامركزية.
قم أولاً بتثبيت heliosup
، مُثبِّت Helios:
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
لتثبيت هيليوس، قم بتشغيل heliosup
.
لتشغيل Helios على Ethereum، قم بتشغيل الأمر أدناه، مع استبدال $ETH_RPC_URL
بعنوان URL لموفر RPC مثل Alchemy:
helios ethereum --execution-rpc $ETH_RPC_URL
يجب أن يكون $ETH_RPC_URL
موفر واجهة برمجة تطبيقات تنفيذ Ethereum مدعومًا يوفر نقطة نهاية eth_getProof
. Infura لا يدعم هذا حاليًا. نوصي باستخدام الكيمياء.
ستقوم Helios الآن بتشغيل خادم RPC محلي على http://127.0.0.1:8545
.
توفر Helios أيضًا وثائق لأساليب RPC المدعومة في ملف rpc.md.
لتشغيل Helios على سلسلة OP Stack، قم بتشغيل الأمر أدناه، مع استبدال $ETH_RPC_URL
بعنوان URL لموفر RPC مثل Alchemy و $NETWORK
بشبكة OP Stack المدعومة:
helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
قيم الشبكة المدعومة حاليًا هي op-mainnet
و base
، مع المزيد قريبًا.
يمكن استخدام --consensus-rpc
أو -c
لتعيين نقطة نهاية rpc لطبقة إجماع مخصصة. يجب أن تكون هذه عقدة إجماع تدعم واجهة برمجة تطبيقات Beaconchain للعميل الخفيف. نوصي باستخدام Nimbus لهذا الغرض. إذا لم يتم توفير RPC المتفق عليه، فسيتم تعيينه افتراضيًا على https://www.lightclientdata.org
الذي نقوم بإدارته.
يمكن استخدام --checkpoint
أو -w
لتعيين نقطة تفتيش ذاتية ضعيفة مخصصة. يجب أن يكون هذا مساويًا لتجزئة كتلة المنارة الأولى في العصر. نقاط التفتيش الذاتية الضعيفة هي أصل الثقة في النظام. إذا تم تعيين هذا على قيمة ضارة، فيمكن للمهاجم أن يتسبب في مزامنة العميل مع السلسلة الخاطئة. تقوم Helios بتعيين قيمة افتراضية في البداية، ثم تقوم بتخزين أحدث كتلة نهائية شاهدتها مؤقتًا لاستخدامها لاحقًا.
--network
أو -n
يضبط الشبكة المراد مزامنتها. الخيارات الصالحة الحالية هي mainnet
و sepolia
و holesky
ولكن يمكن للمستخدمين إضافة شبكات مخصصة في ملفات التكوين الخاصة بهم.
--rpc-port
أو -p
يعين المنفذ الذي يجب أن يعمل عليه RPC المحلي. القيمة الافتراضية هي 8545
.
--rpc-bind-ip
أو -b
يعين عنوان IP الذي يرتبط بخادم JSON-RPC. بشكل افتراضي، ستستخدم هيليوس 127.0.0.1
. استخدم 0.0.0.0
للسماح بالوصول عن بعد.
--data-dir
أو -d
يعين الدليل الذي يجب أن تستخدمه Helios لتخزين نقاط التحقق الذاتية الضعيفة المخزنة مؤقتًا فيه. تقوم كل شبكة بتخزين أحدث نقطة تفتيش فقط، والتي تبلغ 32 بايت فقط.
--fallback
أو -f
يعين عنوان URL الاحتياطي لنقطة التفتيش (سلسلة). يتم استخدام هذا فقط إذا كانت نقطة التحقق التي توفرها علامة --checkpoint
قديمة جدًا بحيث لا يمكن لشركة Helios استخدامها للمزامنة. إذا لم يتم توفير أي شيء ولم يتم تعيين علامة --load-external-fallback
، فسوف يحدث خطأ في Helios. على سبيل المثال، يمكنك تحديد الإجراء الاحتياطي مثل: helios --fallback "https://sync-mainnet.beaconcha.in"
(أو باستخدام الاختصار مثل: helios -f "https://sync-mainnet.beaconcha.in"
)
--load-external-fallback
أو -l
يتيح إمكانية الرجوع الضعيف لنقطة تفتيش الذاتية (لا توجد قيمة مطلوبة). على سبيل المثال، لنفترض أنك قمت بتعيين قيمة نقطة تفتيش قديمة جدًا ولا يمكن لـ Helios مزامنتها معها. إذا تم تعيين هذه العلامة، فسوف تقوم Helios بالاستعلام عن جميع واجهات برمجة تطبيقات الشبكة في القائمة التي يحتفظ بها المجتمع في ethpandaops/checkpoint-sync-health-checks للحصول على أحدث فتحاتها. تتم تصفية قائمة الفتحات للحصول على واجهات برمجة التطبيقات السليمة وسيتم إرجاع نقطة التفتيش الأكثر شيوعًا التي تحدث في العصر الأخير. ملاحظة: هذه قائمة يحتفظ بها المجتمع وبالتالي لا يتم توفير أي ضمانات أمنية. استخدم هذا كحل أخير في حالة فشل نقطة التفتيش التي تم تمريرها إلى --checkpoint
. لا يُنصح بهذا لأنه يمكن إرجاع نقاط التفتيش الضارة من واجهات برمجة التطبيقات المدرجة، حتى لو كانت تعتبر سليمة . يمكن تشغيل هذا على النحو التالي: helios --load-external-fallback
(أو helios -l
مع الاختصار).
--strict-checkpoint-age
أو -s
يتيح فحصًا صارمًا لعمر نقطة التفتيش. إذا كان عمر نقطة التفتيش أكثر من أسبوعين وتم تمكين هذه العلامة، فسوف يحدث خطأ في Helios. وبدون هذه العلامة، ستعرض Helios بدلاً من ذلك تحذيرًا للمستخدم وتستمر. إذا كان عمر نقطة التفتيش أكبر من أسبوعين، فهناك هجمات نظرية يمكن أن تتسبب في مزامنة عملاء Helios والعملاء الخفيفين بشكل غير صحيح. هذه الهجمات معقدة ومكلفة، لذا تقوم شركة Helios بتعطيل ذلك افتراضيًا.
--help
أو -h
يطبع رسالة المساعدة.
يمكن ضبط جميع خيارات التكوين على مستوى كل شبكة في ~/.helios/helios.toml
. فيما يلي مثال لملف التكوين:
[الشبكة الرئيسية]consensus_rpc = "https://ethereum.operationssolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXXX"checkpoint = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"[op-mainnet]consensus_rpc = "https://op-mainnet.operationssolarstorm.org"execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXXX"[base]consensus_rpc = "https://base.operationssolarstorm.org"execution_rpc = "https://base-mainnet.g.alchemy. كوم/v2/XXXX"
يتوفر تفصيل شامل لخيارات التكوين في ملف config.md.
يمكن رؤية أمثلة تشغيل Helios كمكتبة صدئة في دليل الأمثلة.
نقطة التفتيش عبارة عن تجزئة كتلة لطبقة توافق سلسلة المنارة بدلاً من تجزئة كتلة طبقة التنفيذ. يظهر مثال على تجزئة كتلة طبقة التنفيذ لـ Holesky على https://holesky.etherscan.io/blocks
ويمكن الحصول على نقاط التفتيش من الروابط التالية:
شبكة الإيثريوم الرئيسية https://beaconcha.in
هولسكي تيست نت https://holesky.beaconcha.in
يوصى باستخدام تجزئة الكتلة كنقطة تفتيش عمرها أقل من أسبوعين، ومع ذلك يمكنك بالفعل استخدام نقاط التحقق الأقدم وستظل تعمل ولكنها ستعطيك تحذيرًا. إن استخدام نقطة تفتيش عمرها أقل من أسبوعين يمنع بعض الهجمات التي يصعب تنفيذها.
على سبيل المثال، للحصول على نقطة تفتيش حديثة لـ Holesky Testnet، انتقل إلى https://holesky.beaconcha.in/ واحصل على تجزئة الكتلة للكتلة الأولى في أي حقبة نهائية. في وقت كتابة هذا التقرير، كانت تجزئة الكتلة الأولى في الحقبة 78425 هي أقدم فتحة 2509600 التي تحتوي على جذر كتلة 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6 وهي أحدث قيمة نقطة تفتيش يمكن استخدامها.
يمكن توفير نقطة التفتيش الأخيرة هذه كخيار CLI إضافي في سطر الأوامر لتشغيل عقدة Helios Light Client على Ethereum Holesky Testnet:
هيليوس الاثيريوم --ثقب الشبكة --consensus-rpc http://testing.holesky.beacon-api.nimbus.team --execution-rpc https://ethereum-holesky.g.allthatnode.com --نقطة تفتيش 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
على سبيل المثال، للحصول على نقطة تفتيش حديثة لـ Ethereum Mainnet، انتقل إلى https://beaconcha.in واحصل على تجزئة الكتلة للكتلة الأولى في أي حقبة نهائية. في وقت كتابة تجزئة الكتلة الأولى في العصر 222705، كانت أقدم فتحة 7126560 لها جذر كتلة 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2 وهي أحدث قيمة نقطة تفتيش يمكن استخدامها.
يمكن توفير نقطة التفتيش الأخيرة هذه كخيار CLI إضافي في سطر الأوامر لتشغيل عقدة Helios Light Client على Ethereum Mainnet:
هيليوس الاثيريوم --الشبكة الرئيسية --consensus-rpc https://www.lightclientdata.org --execution-rpc https://ethereum-mainnet.g.allthatnode.com --نقطة تفتيش 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2
إذا كنت ترغب في استخدام ملف تكوين بدلاً من وسيطات CLI، فيجب عليك استبدال نقاط التحقق النموذجية في ملف التكوين بأحدث نقاط التحقق التي تم الحصول عليها أعلاه.
للتأكد من أن Helios يعمل كما هو متوقع، لدينا مجموعة اختبار شاملة يمكنك تشغيلها. قبل إجراء الاختبارات، تأكد من إنشاء ملف .env
في جذر دليل المشروع. يمكنك نسخ محتويات الملف .env.example
وملء أسرارك الخاصة.
cp .env.example .env
لتشغيل كافة الاختبارات، استخدم الأمر التالي:
اختبار البضائع للجميع
لإجراء اختبارات لحزمة فردية، استخدم هذا الأمر، مع استبدال الحزمة التي تريد اختبارها:
اختبار الشحن -p <اسم الحزمة>
جميع المساهمات في هيليوس هي موضع ترحيب. قبل فتح العلاقات العامة، يرجى إرسال مشكلة تتضمن تفاصيل الخلل أو الميزة. عند فتح PR، يرجى التأكد من أن مساهمتك مبنية، ومبطنة cargo fmt
، وتحتوي على اختبارات عند الاقتضاء.
إذا كنت تواجه مشكلة مع Helios أو تفكر في المساهمة، فلا تتردد في الانضمام إلى برقية لدينا هنا.
يتم توفير هذا الرمز كما هو. لا يتم تقديم أي ضمان أو تمثيل أو ضمان، صريحًا أو ضمنيًا، فيما يتعلق بسلامة أو صحة الكود. لم يتم تدقيقها، وعلى هذا النحو لا يمكن ضمان أنها ستعمل على النحو المنشود، وقد يواجه المستخدمون تأخيرات أو فشل أو أخطاء أو سهو أو فقدان المعلومات المرسلة. لا ينبغي تفسير أي شيء في هذا الريبو على أنه نصيحة استثمارية أو مشورة قانونية لأي حقائق أو ظروف معينة وليس المقصود منه أن يحل محل المستشار المختص. يُنصح بشدة بالاتصال بمحامي حسن السمعة في نطاق سلطتك القضائية لطرح أي أسئلة أو مخاوف تتعلق بهذا الأمر. a16z ليست مسؤولة عن أي استخدام لما سبق، ويجب على المستخدمين توخي الحذر والاستخدام على مسؤوليتهم الخاصة. راجع a16z.com/disclosures لمزيد من المعلومات.