نود آرشیو در اتریوم
آخرین ویرایش: @Coiniran(opens in a new tab), ۲ آبان ۱۴۰۲
یک گره آرشیو نمونهای از کاربر اتریوم است که برای آرشیو تمامی وضعیتهای تاریخی شبکه پیکربندی شده است. این گره ابزاری مفید برای استفاده در موارد خاص بوده ولی ممکن است اجرای آن نسبت به گره کامل دشوارتر باشد.
پیشنیازها
شما باید قبل از استفاده از نود آرشیوگر درک درستی از مواردی مانند مفهوم نود در اتریوم ،معماری آن, استراتژیهای همگامسازی, تمرینهای مرتبط با راهاندازی و استفاده از این نوع نودها.
گره آرشیوگر چیست؟
برای درکی درست از اهمیت یک گره آرشیو، بیایید مفهوم «حالت» را برایتان روشن کنیم. اتریوم را میتوان به عنوان ماشین حالتی که مبتنی بر تراکنش است نامگذاری نمود. این ماشین شامل حسابها و برنامههایی است که با اجرای تراکنشها وضعیت خود را تغییر میدهند. دادههای جهانی به همراه اطلاعات هر حساب و قرارداد، در یک پایگاه دادۀ درختی به نام وضعیت ذخیرهسازی میشوند. این عمل توسط کاربر در لایۀ اجرا (EL) انجام میگیرد که شامل موارد زیر است:
- موجودیها و نانسهای حساب
- کد قرارداد و ذخیرهسازی
- دادههای مربوط به اجماع مانند قرارداد سهام گذاری
برای تعامل با شبکه، تایید و تولید بلاک جدید، کاربرهای اتریوم باید با آخرین تغییرات (انتهای زنجیرۀ شبکه) و وضعیت فعلی آن همگام باشند. کاربر لایۀ اجرا که به عنوان یک نود کامل پیکربندی شده است آخرین وضعیت شبکه را تایید و از آن پیروی میکند اما فقط چند حالت گذشته را میتواند در خود ذخیره کند، به عنوان مثال، تنها قابلیت ذخیرهسازی وضعیت مرتبط با 128 بلوک آخر در شبکه را دارد، بنابراین این کاربر میتواند سازماندهی مجدد زنجیره را مدیریت کرده و دسترسی سریع به دادههای اخیر را فراهم نماید. وضعیت اخیر حالتی است که تمامی کاربرها برای تایید تراکنشهای دریافتی و استفاده از شبکه به آن نیاز دارند.
شما میتوانید وضعیت را به عنوان اسنپشات شبکه در یک بلوک مشخص و آرشیو را به عنوان بازپخش تاریخی آن تصور کنید.
وضعیتهای تاریخی را میتوان با خیال راحت از بین برد، چون این وضعیتها برای عملکرد شبکه ضروری نیستند و نگهداری از تمامی دادههای قدیمی برای کاربر بیهوده است. وضعیتهایی که قبل از چند بلوک اخیر وجود داشتهاند (مانند 128 بلوک از آخر) دور ریخته میشوند. گرههای کامل تنها دادههای تاریخی بلاکچین را نگهداری میکنند (بلوکها و تراکنشها) و اسنپشاتهای تاریخی میتوانند گهگاه در صورت درخواست برای بازسازی دوبارۀ وضعیتهای قدیمیتر استفاده شوند. آنها این کار را با اجرای مجدد تراکنشهای گذشته در EVM انجام میدهند، که زمانی که وضعیت موردنظر از نزدیکترین اسنپشات فاصله دارد، ممکن است سخت باشد.
با این حال، این بدین معنی است که دسترسی به یک وضعیت تاریخی در یک گره کامل، محاسباتی زیادی لازم دارد. کاربر ممکن است نیاز به اجرای تمام تراکنشهای گذشته و محاسبۀ یک وضعیت تاریخی از پیدایش داشته باشد. گرههای آرشیو این مشکل را با ذخیرهسازیِ نه فقط وضعیتهای اخیر بلکه تمام وضعیتهای تاریخی ایجاد شده بعد از هر بلوک حل میکنند. این کار اساساً نوعی مبادلۀ دو طرفه با فضای بیشتر دیسک را ایجاد میکند.
توجه به این نکته بسیار مهم است که شبکه به گرههای آرشیو برای نگهداری و ارائه تمام دادههای تاریخی وابسته نیست. همانطور که در بالا اشاره شد، تمام وضعیتهای موقت تاریخی میتوانند از طریق گرههای کامل به دست آیند. تراکنشها توسط هر گره کامل ذخیره میشوند (در حال حاضر کمتر از 400G) و میتوان برای ساخت کل آرشیو، مجدداً آنها را در شبکه پخش کرد.
موارد استفاده
استفادۀ منظم از شبکۀ اتریوم مانند ارسال تراکنشها، استقرار قراردادها، تایید اجماعها و غیره نیازی به دسترسی داشتن به وضعیتهای تاریخی ندارد. به طور کلی کاربران هرگز برای تعامل استاندارد با شبکه نیازی به گره آرشیو ندارند.
مزیت اصلی آرشیوِ وضعیت، دسترسی سریع به درخواستهای مرتبط با وضعیتهای تاریخی است. برای مثال، گره آرشیو با سرعت زیادی به نتایجی مانند موارد زیر میرسد:
- موجودی حساب اتریومی 0x1337… در بلوک 15537393 چقدر بود؟
- موجودی توکن 0x در بلوک 1920000 چقدر است؟
همانطور که در بالا توضیح داده شد، یک گره کامل باید این دادهها را با اجرای EVM که از CPU استفاده میکند و بسیار زمانبر است، تولید کند. گرههای آرشیو به تمام این دادهها بر روی دیسک دسترسی دارند و بلافاصله پاسخها را نسبت به این قبیل مسائل ارائه میدهند. این ویژگی برای بخشهای خاصی از زیرساخت شبکه مفید است، برای مثال:
- ارائهدهندگان سرویسهایی مثل جستجوگرهای بلوک
- پژوهشگران
- تحلیلگران امنیتی
- توسعهدهندگان برنامههای غیرمتمرکز یا Dappها
- حسابرسی و انطباق سرویسهای رایگان مختلف وجود دارند که امکان دسترسی به دادههای تاریخی را فراهم میکنند. از آنجا که اجرای یک گره آرشیو پرزحمت تر است، دسترسی به آن از طریق سرویسهای مختلف عمدتاً محدود بوده و ممکن است این سرویسها تنها بعضی اوقات کار کنند. اگر پروژۀ شما نیاز به دسترسی پیوسته به دادههای تاریخی دارد، بهتر است خودتان یک گره آرشیو بر روی سیستمتان اجرا کنید.
اجراها و کاربرد
گره آرشیو به معنای دادههای ارائه شده از سوی کاربرهایی است که با کاربرهای لایه اجرا روبه رو هستند زمانی که آنها پایگاه دادۀ وضعیت را مدیریت کرده و نقاط پایانی JSON-RPC را فراهم میکنند. گزینههای پیکربندی، زمان همگامسازی و سایز دادهها ممکن است بسته به کاربر متفاوت باشد. برای جزئیات بیشتر، لطفا به اسناد ارائه شده توسط کاربرتان رجوع کنید.
قبل از شروع راهاندازی گره آرشیوتان، در رابطه با تفاوتهای بین کاربرها و علی الخصوص نیازمندیهای سختافزاریشان مطالعه کنید. شایان ذکر است که اکثر کاربرها بهینهسازی نشدهاند و آرشیوشان نیاز به فضای بیش از 12 ترابایت دارد. در مقابل، پیادهسازیهایی مانند Erigon میتوانند همان داده را در کمتر از 3 ترابایت ذخیره کنند که موثرترین راه برای اجرای یک گره آرشیو محسوب میشود.
اقدامات توصیه شده
جدا از توصیههای کلی برای اجرای یک گره، یک گره آرشیو ممکن است از نظر سختافزار و نگهداری الزامات بیشتری داشته باشد. با توجه به ویژگیهای کلیدی(opens in a new tab) عملیترین رویکرد در این زمینه همان استفاده از پیادهسازی کاربر Erigon است.
سختافزار
همیشه مطمئن شوید که الزامات سخت افزاری برای یک حالت معین در اسناد کاربر را تایید میکنید. بزرگترین نیاز برای گرههای آرشیو فضای دیسک است. این فضا بسته به کاربر، میتواند از 3 ترابایت تا 12 ترابایت متفاوت باشد. حتی اگر HDD راهحل بهتری برای حجم زیادی از داده به نظر رسد، برای همگامسازی و به روزرسانی پیوستهاش با زنجیرۀ شبکه، به درایوهای SSD نیاز خواهد داشت. درایوهای SATA(opens in a new tab) به اندازۀ کافی خوب هستند ولی باید کیفیت قابل اعتماد حداقل در حد TLC(opens in a new tab) داشته باشند. دیسکها را میتوان بر روی کامپیوتر یا یک سرور با اسلات کافی نصب کرد. چنین دستگاههایی برای اجرای گره با زمان کاریِ بالا ایده آل و مناسب هستند. اجرای آن بر روی لپ تاپ نیز امکانپذیر است ولی قابل حمل بودنش هزینۀ اضافی به همراه خواهد داشت.
تمامی دادهها باید در یک حجم قرار گیرند بنابراین دیسکها باید به عنوان مثال توسط RAID0(opens in a new tab) یا LVM(opens in a new tab) به هم متصل شوند. همچنین ممکن است استفاده از سیستم فایل ZFS(opens in a new tab) از آنجا که از ویژگی Copy-on-write پشتیبانی میکند، ارزشمند باشد، در واقع این ویژگی اطمینان حاصل میکند که دادهها به درستی بر روی دیسک و بدون هیچ گونه خطای سطح پایین نوشته شده باشند.
برای ثبات و امنیت بیشتر به منظور جلوگیری از خرابی تصادفی در پایگاه داده، به خصوص در تنظیمات حرفهای، از ECC memory(opens in a new tab) در صورتی که توسط سیستمتان پشتیبانی میشود، استفاده کنید. به طور کلی توصیه میشود سایز RAM هم اندازۀ گره کامل باشد ولی در کل RAM بیشتر میتواند به سرعت همگامسازی کمک کند.
در طول همگامسازی اولیه، کاربرها در حالت آرشیو هر تراکنشی را از زمان پیدایش اجرا میکنند. سرعت اجرا بیشتر توسط CPU محدود میشود، بنابراین CPU سریعتر میتواند به زمان همگامسازی اولیه کمک کند. در یک کامپیوتر معمولی، زمان همگامسازی اولیه میتواند تا یک ماه طول بکشد.
بیشتر بخوانید
- گره کامل اتریوم در مقایسه با گره آرشیو(opens in a new tab) - QuickNode، سپتامبر 2022
- گره آرشیو اتریوم خودتان را بسازید(opens in a new tab) - تامس جی راش، اوت 2021
- چگونه Erigon را نصب کنیم، RPC اِریگون و TrueBlocks (اسکریپ و API) به عنوان خدمات(opens in a new tab) – ماگنون هانسن، بهروز رسانی سپتامبر 2022