مقالات عمومی

آیا نود های کامل اتریوم (Full Nodes) واقعا کامل هستند؟

یک مبحث رایج از مباحث مربوط به اتریوم نیازمندی های انبارشی برای مدیریت یک نود اتریوم می باشد. بعضی می گویند که یک نود اتریوم از چندین ترابایت انبارش استفاده می کند و این در حالی است که عده دیگری بر این باورند که این مقدار بسیار کمتر می باشد.

حقیقت این است که نوع خاصی از نود های اتریوم یعنی نود آرشیو در واقع بیش از ۲.۳ ترابایت فضا می گیرد، در حالی که نود دیگری بنام نود کامل کمتر از یک دهم این فضا را می گیرد یعنی فضایی در حدود ۱۸۰ گیگابایت. اما چگونه می توانید بگویید که آن نود کامل است در حالی که نود هایی وجود دارند که کامل تر هستند؟ این موضوع منبع آشفتگی عظیمی است و توضیحات فنی مفصل زیادی در مورد آن داده شده که در این مقاله مورد بحث قرار نمی گیرد. اما به طور خلاصه باید گفت که نود های کامل همه تاریخچه هر بلاک و هر تراکنش را دارند و همه آنها کاملا تایید شده اند. این در حالی است که نود های آرشیو همه این ویژگی ها را دارند و علاوه بر آن دارای حالت واسطه هر اکانت و هر قرارداد برای هر بلاک از زمان پیدایش هستند.

چرا نود آرشیو؟

اکثر کاربران به نود آرشیو نیاز ندارند. شما ممکن است موجودی های خود را بررسی کنید، تراکنش ها را امضا و ارسال کنید و حتی به داده های برنامه غیر متمرکز (Dapp) در حال حاضر نگاه کنید. آنچه که موجود نیست داده های تاریخچه می باشد و به عنوان مثال نمی توانید موجودی اتر خود را از ماه گذشته بررسی کنید اما می توانید همه تراکنش های ERC20 را که انجام داده اید، لیست کنید. همه داده ها موجود خواهند بود اما خارج کردن آنها بسیار کند خواهد بود. نود آرشیو این فرآیند را با ذخیره حالت های واسطه تسریع می بخشد و مانند یک کش (cache) کار می کند.

اکسپلورر های بلاک، داشبورد های برنامه غیر متمرکز، تعدادی از فروشندگان کیف پول و سازمان های تحلیلگر زنجیره از نود های آرشیو استفاده می کنند. من شخصا نود خودم را اجرا می کنم تا قادر باشم که داده های بلاک چین را که برای گزارش های تحلیلی مورد نیاز هستند، سریعا استخراج کنم. برای این کار می توان از infura.io استفاده کرد اما من آن را برای نیاز هایم بسیار کند می بینم.

باور هایی نادرست

تعدادی از افراد کم اطلاع معمولا به انتشار چیز های نادرستی مانند موارد زیر می پردازند:

فقط نود های آرشیو دارای همه داده های بلاک چین هستند.

یک نود آرشیو برای همگام سازی نیاز به یک نود آرشیو دیگر دارد.

تنها تعداد محدودی نود آرشیو در شبکه اتریوم موجود هستند. (بعضی می گویند که تنها یک نود موجود است!)

برای مدیریت یک نود کامل به یک سرور خیلی قدرتمند نیاز است.

نود هایی که در حالت سریع یا پیچ و تاب خورده همگام می شوند، نود کامل نیستند.

پس در تلاش برای حل کردن این مطلب برای همیشه، من آزمایش کوچکی را ابداع کرده ام که ثابت می کند همه اظهارات بالا نادرست هستند. من یک نود آرشیو را با استفاده از فقط یک نود همگام شده در حالت پیچ خورده (warp-synced) همگام می کنم. به عبارت دیگر، من ۲.۳۶ ترابایت از داده های آرشیو را تنها با استفاده از ۱۸۰ گیگابایت به عنوان ورودی بازسازی مجدد می کنم. و من همه این کار ها را با استفاده از کامپیوتر شخصی قدیمی خود در زیرزمین خانه خودم انجام می دهم.

به کانال تلگرامی ما بپیوندید

راه اندازی آزمایشی

Dell Optiplex 7020 (بیرون داده شده در سال ۲۰۱۴)

رم ۱۶ گیگابایتی

سی پی یو i5_4590 @3.30 GHz

(1) 2TB MX300 و (1) 2TB MX500 SATA SSD که در حالت LVM Stripping تنظیم شده است.

Ubuntu 18.04.2 LTS

کلاینت اتریوم Parity 2.3.5

Docker 18.09.02 برای مدیریت هر دو نود ها بر روی یک سرور و اجازه دادن به کنترل شبکه بسیار دقیق.

این کامپیوتر شخصی را با توجه به قیمت حال حاضر بازار می توان با مبلغ حدودا ۸۵۰ دلار تهیه کرد.

مرحله اول: همگام کردن گره کامل 

اتریوم

برای شروع نود کامل را با تنظیمات پیش فرض راه اندازی کردم و آن را به اینترنت متصل کردم. من سریعا همتا هایی را کشف کردم و یک همگام سازی پیچ خورده را شروع کردم.

2019-03-14 10:59:50 UTC Imported #7366745 0x2f51…d183 (110 txs, 7.99 Mgas, 469 ms, 23.44 KiB)
2019-03-14 10:59:59 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:00:13 UTC Imported #7366746 0x9424…beae (167 txs, 8.00 Mgas, 342 ms, 26.43 KiB)
2019-03-14 11:00:20 UTC Imported #7366747 0x7a28…69c5 (158 txs, 7.99 Mgas, 427 ms, 25.74 KiB)
2019-03-14 11:00:29 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:00:59 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:01:29 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:01:59 UTC   18/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:02:29 UTC   14/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:02:59 UTC    8/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:03:29 UTC    0/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:03:59 UTC    0/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:04:29 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:04:59 UTC    1/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:05:29 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:06:04 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs

همگام سازی پیچ خورده Parity بسیار اجرا کننده می باشد و تنها ۹۰ دقیق بعد، این نود با بلاک ۷۳۵۷۸۸۱ که در آن لحظه آخرین بلاک بود، همگام شد.

مرحله دوم: راه اندازی نود آرشیو 

اتریوم

سپس من نود آرشیو را ایجاد کردم و مطمئن شدم که آن قادر به ارتباط با هیچ نود دیگری از اتریوم بجز آن نود کامل نخواهد بود. یک شبکه داخلی خصوصی درون Docker ایجاد شد که اجازه ارتباط بین نود های محلی را می داد. این در حالی بود که از هر نوع ارتباطی بین نود آرشیو و اینترنت جلوگیری می کرد.

برای اینکه شرایط کمی جالب تر شود، من همچنین اتصال اینترنت نود کامل را نیز قطع کردم. پس در این مرحله، نود های کامل و آرشیو کاملا از اینترنت جدا بودند. برای اثبات این مطلب به گزارش های نود کامل توجه کنید:

2019-03-14 10:59:50 UTC Imported #7366745 0x2f51…d183 (110 txs, 7.99 Mgas, 469 ms, 23.44 KiB)
2019-03-14 10:59:59 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:00:13 UTC Imported #7366746 0x9424…beae (167 txs, 8.00 Mgas, 342 ms, 26.43 KiB)
2019-03-14 11:00:20 UTC Imported #7366747 0x7a28…69c5 (158 txs, 7.99 Mgas, 427 ms, 25.74 KiB)
2019-03-14 11:00:29 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:00:59 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:01:29 UTC   25/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:01:59 UTC   18/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:02:29 UTC   14/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:02:59 UTC    8/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:03:29 UTC    0/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:03:59 UTC    0/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:04:29 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:04:59 UTC    1/25 peers      5 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:05:29 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-03-14 11:06:04 UTC    1/25 peers      7 MiB chain  104 MiB db  0 bytes queue    3 MiB sync  RPC:  0 conn,    0 req/s,    0 µs

 

در گزارش های بالا می بینیم که نود کامل تا ۱۱:۰۰:۲۰ در بلاک ۷۳۶۶۷۴۷ همگام بوده است که در آن زمان من اینترنت را قطع کرده ام. سپس نود آرشیو را در ساعت ۱۱:۰۴:۲۱ با پارامتر های زیر راه اندازی کردم.

--bootnodes enode://nodeid@172.19.0.2:30303 --pruning archive  --no-periodic-snapshot --cache-size-db 6000 --cache-size-state 1000

Bootnodes: به نود آرشیو می گوید که چگونه به نود کامل متصل شود.

Pruning archive: در حالت آرشیو اجرا می شود.

No-periodic-snapshot: نود را از ایجاد اسنپ شات برای نود های دیگر به سمت همگام سازی پیچ خورده باز می دارد. اگر می خواهید به شبکه اتریوم کمک کنید، بهتر است که این مرحله را رها کنید و من متوجه شده ام که این تنظیم منابع زیادی را برای نود های آرشیو مصرف می کند. اما در نود های کامل عادی به خوبی اجرا می شود.

Cache-size-db و cache-size-state: مقدار رم را برای استفاده برای rocksdb cache و state cache نشان می دهد. این تنظیمات برای من خوب کار کرده است اما برای شما ممکن است مختلف باشد.

مرحله سوم: همگام سازی نود آرشیو

حال نود آرشیو در حال همگام سازی با بیش از هزار بلاک در ثانیه است!

2019-04-11 10:29:21 UTC Syncing #7546199 0x810a…778e     0.60 blk/s   35.2 tx/s    3.2 Mgas/s      0+    7 Qed  #7546209    1/25 peers      4 MiB chain  750 MiB db  647 KiB queue    5 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-04-11 10:29:26 UTC Syncing #7546200 0x0ada…d56f     0.20 blk/s   39.0 tx/s    1.6 Mgas/s      0+    7 Qed  #7546209    1/25 peers      4 MiB chain  750 MiB db  647 KiB queue    5 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-04-11 10:29:50 UTC Imported #7546209 0x0e68…e5e2 (216 txs, 7.98 Mgas, 22224 ms, 32.56 KiB) + another 6 block(s) containing 553 tx(s)
2019-04-11 10:29:55 UTC Failed to auto-update latest ETH price: Fetch(Timeout)
2019-04-11 10:29:56 UTC    1/25 peers      5 MiB chain  750 MiB db  0 bytes queue    5 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-04-11 10:30:09 UTC Imported #7546210 0x255b…092b (53 txs, 7.99 Mgas, 3073 ms, 30.90 KiB)
2019-04-11 10:30:26 UTC    1/25 peers      5 MiB chain  750 MiB db  0 bytes queue    5 MiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-04-11 10:30:30 UTC Imported #7546211 0x7d07…1c4f (154 txs, 7.96 Mgas, 12496 ms, 20.17 KiB)

این ادامه پیدا نمی کند. اولین بلاک ها همیشه خالی هستند. نود آرشیو خیلی سریع بلاک های بزرگتر و تراکنش های پیچیده تر را می زند که از جمله می توان به بلاک های اسپم بین تقریبا بلاک ۲۲۳۹۰۰۰ و ۲۷۳۰۰۰۰ اشاره کرد. با این وجود، من بعد از ۲۵ روز سرانجام به مرحله همگام سازی رسیدم.

نود آرشیو به همان ارتفاع بلاک مانند نود کامل رسید (۷۳۶۶۷۴۷)، به یاد داشته باشید که ارتباط آن با اینترنت قطع شد و هیچ بلاک جدیدی را از ۱۴ مارس پردازش نکرد. سپس من اقدام به اتصال دوباره شبکه نود کامل کردم، پس آن توانست دوباره همگام شود و ۳ روز بعد، سرانجام همگام سازی با شبکه اصلی را مدیریت کردم:

اجرا

تا حدود بلاک ۴۰۰۰۰۰۰ اوضاع خیلی سریع پیشرفت می کرد و سپس به مقدار قابل توجهی کند شد. نرخ پردازش بلاک نسبتا با شروع از بلاک ۴۷۵۰۰۰۰ ثابت شد.

اتریوم

اگر نموداری از gas پردازش شده در ثانیه را در آن ۲۸ روز رسم کنیم، می توانیم یک کاهش مداوم در عملکرد را ببینیم و این نشانگر آن بود که مگر بهبودی به نسبت کلاینت اتریوم Parity انجام شود، وگرنه همگام سازی یک نود آرشیو با Parity به مرور زمان مشکل و مشکل تر خواهد شد.

اتریوم

من گزارش ها و جزئیات بیشتری را در Github گذاشته ام. افرادی که مایل به دیدن داده ها، مقایسه عملکرد نود هایشان و مطالعه بهبود های احتمالی به نسبت کلاینت های اتریوم هستند، می توانند از آن استفاده کنند.

یادداشت پایانی

من بر این باورم که این مقاله بدون شک نشان داده که نود آرشیو نسخه توسعه یافته ای از نود کامل می باشد و اینکه نود کامل همه اطلاعات مورد نیاز برای ایمن سازی شبکه را دارد.

همگام سازی یک نود آرشیو اتریوم قطعا تجربه خوشایندی نیست. آن بسیار کند است و به مرور زمان کند تر هم می شود. شما حتی ممکن است از تمام شدن آن شگفت زده شوید. در واقع اگر سخت افزار مناسب یا تنظیمات مطلوب نداشته باشید، ممکن است اصلا قادر به تکمیل کردن آن نباشید. مطمئن شوید که انبارش به شما مقدار زیادی IOPS بدهد.

به منظور انجام این آزمایش از یک کامپیوتر ارزان و انبارشی عادی که در اختیار افراد معمولی است، استفاده شد. هدف نشان دادن این واقعیت بود که اگرچه این فرآیند کند است اما در دسترس هر کاربر اتریوم می باشد. کاربران جدی قطعا می خواهند با سیستم های بهتری کار کنند، پشتیبان گیری پایگاه داده خودکار را تنظیم کنند و از انبارش با عملکرد بالا استفاده کنند.

 

منبع
medium

نوشته های مشابه

اشتراک
اطلاع از
0 دیدگاه
Inline Feedbacks
View all comments
دکمه بازگشت به بالا