چرخاندن گرهی اتریوم خودتان
آخرین ویرایش: @sipbikardi(opens in a new tab), ۲ مرداد ۱۴۰۳
اجرای گرهی خودتان مزایای متنوعی برای شما دارد، امکانات جدیدی را در اختیارتان قرار میدهد و به پشتیبانی از اکوسیستم کمک میکند. این صفحه شما را برای چرخاندن گرهی خودتان و ایفای نقش برای اعتبارسنجی تراکنشهای اتریوم راهنمایی میکند.
پیشنیازها
شما باید بدانید که گرهی اتریوم چیست و چرا ممکن است بخواهید یک کلاینت را اجرا کنید. این موضوع در گرهها و کلاینتها بررسی شده است.
If you're new to the topic of running a node, or looking for a less technical path, we recommend first checking out our user-friendly introduction on running an Ethereum node.
انتخاب یک رویکرد
اولین گام برای چرخاندن گره خودتان انتخاب رویکردتان است. شما باید کلاینت (نرمافزار)، محیط و پارامترهایی که میخواهید با آنها کار را شروع کنید انتخاب کنید. همهی کلاینتهای شبکهی اصلی را ببینید.
تنظیمات کلاینت
پیادهسازیهای کلاینت حالتهای مختلف همگامسازی و گزینههای مختلف دیگر را فعال میکنند. حالات همگامسازی نشانگر روشهای مختلف دانلود و اعتبارسنجی دادههای زنجیرهی بلوکی است. پیش از آغاز یک گره، شما باید تصمیم بگیرید که از کدام شبکه و کدام حالت همگامسازی استفاده نمایید. مهمترین چیزی که باید به آن توجه کرد حافظهی دیسک و زمان همگامسازی است که کلاینت نیاز دارد.
تمام گزینهها و ویژگیها را میتوان در مستندات کلاینت مشاهده کرد. پیکربندیهای متنوع کلاینت میتواند با اجرای کلاینت با پرچمهای متناظر تنظیم شود. برای اهداف آزمایشی، ممکن است ترجیح بدهید که کلاینت خود را روی شبکهی تست اجرا کنید. نگاه اجمالی بر شبکههای پشتیبانیشده را مشاهده کنید.
محیطزیست و سختافزار
محلی یا ابری
کلاینتهای اتریوم میتوانند روی رایانههای ردهی مصرفکننده کار کنند و برخلاف استخراج به سختافزار خاصی نیاز ندارند. بنابراین، شما بر اساس نیاز خود گزینههای مختلفی برای بکارگیری دارید. برای ساده کردن، بیایید اجرای یک گره را هم در یک ماشین فیزیکی محلی و هم در یک سرور ابری بررسی کنیم:
- ابر
- ارائهدهندگانْ زمان بهکار (uptime) سرور بالا و آدرسهای آیپی (IP) عمومی ثابت ارائه میدهند
- گرفتن سرور اختصاصی یا مجازی ممکن است راحتتر از ساختن سرور شخصی باشد
- بدهبستان بر سر این است که به یک شخص ثالث - ارائهدهدهی سرور اعتماد کنیم
- به دلیل اندازهی حافظهی لازم برای گرهی کامل، هزینهی اجارهی سرور ممکن است بالا باشد
- سختافزار شخصی
- رویکرد بیاعتمادتر و حاکمیتیتر
- سرمایهگذاری برای یک بار
- امکان خرید ماشینهای پیشپیکربندیشده
- شما باید بهطور فیزیکی دستگاه را آماده، نگهداری و احتمالاً عیبیابی کنید
هر دو گزینه مزایای متفاوتی دارند که در بالا خلاصه شده است. اگر به دنبال راهحل ابری هستید، علاوه بر بسیاری از ارائهدهندگان سنتی پردازش ابری، خدماتی هم وجود دارند که بر روی بکارگیری گرهها متمرکز شدهاند. برای مثال:
- QuikNode(opens in a new tab)
- Blockdaemon(opens in a new tab)
- LunaNode(opens in a new tab)
- Alchemy(opens in a new tab)
سختافزار
با این حال، یک شبکهی غیرمتمرکز و مقاوم در برابر سانسور نباید بر ارائهدهندگان ابری متکی باشد. برای اکوسیستم سالمتر است که هر کس با سختافزار شخصی خودش گره را اجرا کند. سادهترین راه استفاده از ماشینهای پیشپیکربندیشده است:
الزامات فضای ذخیرهسازی برای هر کلاینت و حالت همگامسازی را جهت اطلاع از حداقل فضای لازم و فضای توصیهشده بررسی کنید. بهطور کلی، قدرت محاسباتی متوسط باید کافی باشد. معمولاً مشکل از سرعت درایو است. در همگامسازی ابتدایی، کلاینتهای اتریوم عملیاتهای خواندن و نوشتن بسیاری را انجام میدهند. در نتیجه درایو حالت جامد (SSD) به شدت پیشنهاد میشود. یک کلاینت ممکن است نتواند حالت فعلی را بر روی هارددیسک همگامسازی کند(opens in a new tab) و همواره چند بلوک از شبکهی اصلی عقب بماند. شما میتوانید اکثر کلاینتها را بر روی یک رایانهی تکبورد با ARM اجرا کنید. همچنین میتوانید از سیستمعامل Ethbian(opens in a new tab) برای Raspberry Pi 4 استفاده کنید. This lets you run a client by flashing the SD card. بر اساس امکانات نرمافزار و سختافزاری شما، زمان همگامسازی اولیه و نیازهای ذخیرهسازی ممکن است متفاوت باشد. فراموش نکنید که الزامات فضای ذخیرهسازی و زمان همگامسازی را بررسی کنید. همچنین مطمئن شوید که اتصال اینترنت شما با حد پهنای باند(opens in a new tab) محدود نشده باشد. توصیه میشود از یک اتصال نامحدود استفاده کنید، چون حجم پهنای لازم برای همگامسازی اولیه و پخش دادهها در شبکه ممکن است از حد مجاز تنظیمشده فراتر رود.
سیستمعامل
همهی کلاینتها سیستمعاملهای اصلی یعنی لینوکس، مکاواس و ویندوز را پشتیبانی میکنند. این بدان معناست که میتوانید گرهها را با سیستمعاملی (OS) که برای شما مناسبتر است، روی رایانههای رومیزی یا سرورهای معمولی اجرا کنید. مطمئن شوید که سیستمعامل شما بهروز است تا از مشکلات احتمالی و آسیبپذیریهای امنیتی جلوگیری شود.
چرخاندن گره
دریافت نرمافزار کلاینت
ابتدا نرمافزار کلاینت مدنظرتان را بارگیری کنید
شما بهراحتی میتوانید یک برنامهی کاربردی قابلاجرا یا بستهی نصبی را بارگیری کنید که مناسب سیستمعامل و معماری شما باشد. همیشه امضاها و چک تجمیع بستههای بارگیریشده را بررسی کنید. برخی کلاینتها مخازنی هم برای نصب و ارتقای آسانتر ارائه میدهند. در صورت ترجیح میتوانید از منبع شروع به ساختن کنید. همه کلاینتها متنباز هستند، بنابراین میتوانید آنها را با کامپایلر مناسب از کد منبع بسازید.
باینریهای قابلاجرا برای پیادهسازی های سرویسگیرنده شبکهی اصلی پایدار را میتوان از صفحات انتشار آنها بارگیری کرد:
- Geth(opens in a new tab)
- OpenEthereum,(opens in a new tab)
- Nethermind(opens in a new tab)
- Besu(opens in a new tab)
- Erigon(opens in a new tab)
دقت کنید که OpenEthereumمنسوخ شده است(opens in a new tab) و دیگر نگهداری نمیشود. با احتیاط از آن استفاده کنید و ترجیحاً به پیادهسازی کلاینت دیگری بروید.
آغاز کلاینت
قبل از راهاندازی نرمافزار کلاینت اتریوم، آخرین بررسی را انجام دهید تا مطمئن شوید محیط شما آماده است. برای مثال، مطمئن شوید که:
- فضای حافظهی کافی با توجه به شبکه و حالت همگامسازی انتخابی وجود دارد.
- حافظه و پردازنده توسط برنامههای دیگر استفاده نمیشود.
- سیستمعامل به آخرین نسخهی خود بهروز شده است.
- زمان و تاریخ سیستم درست است.
- روتر و فایروال شما اتصالات را در پورتهای شنونده (listening ports) میپذیرند. به طور پیشفرض کلاینتهای اتریوم از یک پورت شنونده (TCP) و یک پورت یابنده (UDP) که هر دو بهطور پیشفرض روی 30303 هستند استفاده میکنند.
کلاینت خود را ابتدا روی شبکهی تست اجرا کنید تا مطمئن شوید که همهچیز بهدرستی کار میکند. اجرای یک گره سبک geth باید کارگشا باشد. شما باید هرگونه تنظیمات کلاینت که به صورت پیشفرض وجود ندارند را در ابتدا مشخص کنید. میتوانید از پرچمها و فایلهای پیکربندی برای مشخص کردن پیکربندی موردنظر استفاده کنید. برای اطلاع از جزئیات، مستندات کلاینت خود را بررسی کنید. اجرای کلاینت، توابع اصلی، نقاط پایانی انتخاب شده و جستجوی همتایان را آغاز میکند. پس از یافتن موفق همتایان، کلاینت شروع به همگامسازی میکند. دادهی کنونی زنجیرهی بلوکی زمانی آماده خواهد بود که کلاینت بهطور موفقیتآمیز با وضعیت فعلی همگامسازی کرده باشد.
استفاده از کلاینت
کلاینتها ارائهدهندهی نقاط پایانی وب سرویس RPC هستند که میتوانید از آنها برای کنترل کلاینت و ارتباط با شبکهی اتریوم به اشکال مختلف استفاده کنید:
- فراخوانی دستی آنها با یک پروتکل مناسب (مثلاً استفاده از
curl
) - ضمیمه کردن کنسول ارائه شده (مثلاً
geth attach
) - پیادهسازی آنها در برنامههای کاربردی
کلاینتهای مختلف پیادهسازیهای مختلفی برای نقاط پایانی RPC دارند. اما برای JSON-RPC استانداردی وجود دارد که میتوانید برای هر کلاینتی استفاده نمایید. برای مروری اجمالی، مستندات JSON-RPC را بخوانید(opens in a new tab). برنامههای کاربردی که نیاز به اطلاعات از شبکهی اتریوم دارند میتوانند از RPC استفاده کنند. برای مثال، کیف پول معروف MetaMask به شما اجازه میدهد که یک نمونهی زنجیرهی بلوکی محلی را اجرا کنید و به آن متصل کنید(opens in a new tab).
دستیابی به RPC
پورت پیشفرض JSON-RPC 8545
است اما میتوانید پورتهای نقاط پایانی محلی را در فایل پیکربندی مشخص کنید. در حالت پیشفرض، رابط RPC فقط در هاست محلی (localhost) رایانهی شما قابل دسترسی است. برای اینکه بتوانید از راه دور به آن دسترسی داشته باشید، میتوانید با تغییر آدرس به 0.0.0.0
آن را در معرض دید عموم قرار دهید. بدین ترتیب از طریق آدرسهای آیپی (IP) محلی و عمومی قابلدسترسی خواهد بود. در بیشتر موارد، باید روی روتر خود بازارسالی پورت (port forwarding) را هم تنظیم کنید.
شما باید این کار را با احتیاط انجام دهید، چون هر کسی در اینترنت اجازه میدهد گرهی شما را کنترل کند. اگر از کلاینت خود به عنوان کیف پول استفاده میکنید، بازیگران بداندیش میتوانند به گرهی شما دسترسی پیدا کنند تا سیستم شما را خراب کنند یا سرمایههای شما را بدزدند.
راهحل این مشکل، جلوگیری از تغییرپذیری روشهای بالقوه خطرناک RPC است. برای مثال، با geth
شما میتوانید روشهای تغییرپذیر را با پرچم مشخص کنید: --http.api web3,eth,txpool
.
همچنین میتوانید با اشاره سرویس وب سرور، مانند Nginx، به آدرس محلی و پورت کلاینت خود، دسترسی به رابط RPC خود را میزبانی کنید.
سادهترین و بهترین راه از حیث حفظ حریم خصوصی برای تنظیم یک نقطهی پایانی قابلدسترس این است که سرویس Tor(opens in a new tab) آنیون خود را داشته باشید. بدین ترتیب میتوانید به RPC خارج از شبکهی محلی خود بدون آدرس آیپی (IP) عمومی ثابت یا پورتهای باز شده دسترسی پیدا کنید. برای انجام این کار:
tor
را نصب کنید- پیکربندی
torrc
را برای فعالسازی سرویس پنهان با آدرس RPC کلاینت و پورت خود ویرایش کنید - سرویس
tor
را مجدداً راهاندازی کنید
وقتی Tor را مجدداً راهاندازی میکنید، کلیدهای سرویس پنهان و نام میزبان را در نشانی مدنظرتان دریافت میکنید. از آن به بعد، RPC شما روی نام میزبان .onion
قابلدسترسی خواهد بود.
گرداندن گره
شما باید بهطور مرتب گره خود را کنترل کنید تا مطمئن شوید که به درستی کار میکند. ممکن است نیاز به انجام تعمیرات گاهبهگاه داشته باشید.
برخط نگهداشتن گره
نیازی نیست که گرهی شما بیوقعه برخط باشد، اما باید آن را تا حد امکان برخط نگه دارید تا با شبکه همگام شود. برای راهاندازی مجدد میتوانید آن را خاموش کنید، اما به خاطر داشته باشید که:
- اگر وضعیت اخیر همچنان روی دیسک نوشته میشود، خاموش شدن میتواند تا چند دقیقه طول بکشد.
- خاموش شدن اجباری میتواند به پایگاه داده آسیب برساند.
- کلاینت شما با شبکه همگام نمیشود و با راهاندازی مجدد باید مجدداً همگام شود.
این موضوع روی گرههای اعتبار سنج لایهی اجماع اعمال نمیشود. بُرونخط کردن گرهی شما بر تمام سرویسهای وابسته به آن تأثیر میگذارد. اگر یک گره را برای سهامگذاری اجرا میکنید باید سعی کنید زمان خاموشی را تا حد امکان پایین آورید.
ساختن سرویس کلاینت
برای اجرای خودکار کلاینت در هنگام راهاندازی، ساختن سرویس را در نظر بگیرید. بهعنوان مثال در سرورهای لینوکس، بهترین رویه ساخت سرویسی است که کلاینت را با پیکربندی مناسب، تحت کاربر با امتیازات محدود اجرا میکند و بهطور خودکار مجدداً راهاندازی میشود.
بهروزرسانی کلاینت
شما باید نرمافزار کلاینت خود را با آخرین پچهای امنیتی، ویژگیها و EIPها بهروز نگهدارید. خصوصاً قبل از انجام فورکهای سخت مطمئن شوید که نسخهی درست کلاینت را اجرا میکنید.
اجرای سرویسهای اضافه
اجرای گره خودتان به شما امکان میدهد از خدماتی استفاده کنید که نیاز به دسترسی مستقیم به RPC کلاینت اتریوم دارند. اینها سرویسهایی هستند که بر روی اتریوم ساخته شدهاند مثل راهحلهای لایهی 2، [کلاینتهای اجماع] و سایر زیرساختهای اتریوم.
نظارت بر گره
برای نظارت صحیح بر گرهی خود، جمعآوری معیارها را در نظر بگیرید. کلاینتها نقاط پایانیهای معیارها را ارائه میدهند که شما بتوانید دادههای جامعی دربارهی گرهی خود دریافت کنید. از ابزارهایی مثل InfluxDB(opens in a new tab) یا Prometheus(opens in a new tab) برای ساخت پایگاه دادههایی استفاده کنید که میتوانید با استفاده از نرمافزارهایی مثل Grafana(opens in a new tab) آنها را تبدیل به بازنمایی بصری و نمودار کنید. تنظیمات زیادی برای استفاده از این نرمافزار و داشبوردهای مختلف Grafana وجود دارد تا بتوانید گرهی خود و شبکه را بهطور کامل به شکل بصری بازنمایی کنید. بهعنوان بخشی از نظارت خود، مطمئن شوید که عملکرد دستگاه خود را زیر نظر داشته باشید. در طول همگامسازی اولیهی گره شما، ممکن است نرمافزار کلاینت برای پردازنده و رم بسیار سنگین باشد. علاوه بر Grafana میتوانید از ابزارهایی که سیستمعاملتان به شما ارائه میدهد، مثل htop
یا uptime
، برای این کار استفاده کنید.
بیشتر بخوانید
- تحلیل نیازهای سختافزاری برای تبدیل شدن به یک گرهی کامل معتبر اتریوم(opens in a new tab) - آلبرت پالا، 24 سپتامبر 2018
- اجرای گرههای کامل اتریوم: راهنمایی برای افراد کمانگیزه(opens in a new tab) - جاستین لروکس، 7 نوامبر 2019
- اجرای یک گرهی Besu هایپرلجر روی شبکهی اصلی اتریوم: مزایا، نیازمندیها و راهاندازی(opens in a new tab) - فلیپ فراگی، 7 مه 2020
- بکارگیری کلاینت اتریوم Nethermind با پشتهی نظارت(opens in a new tab) - Nethermind.eth، 8 جولای 2020