مقالات
شبکههای بلاکچینی برای ادامه فعالیت خود به مجموعهای از نرمافزارها و گرهها متکی هستند که وظایفی مانند دریافت و اعتبارسنجی دادهها، بررسی قوانین اجماع و برقراری ارتباط با سایر گرههای شبکه را انجام میدهند. با افزایش حجم دادههای یک بلاکچین، کارایی این نرم افزارها نیز اهمیت بیشتری پیدا میکند؛ زیرا همگامسازی طولانی، مصرف بالای فضای ذخیرهسازی و فشار بر منابع سختافزاری میتواند اجرای یک نود را دشوارتر کند.
زاکورا (Zakura) یکی از پروژههایی است که با تمرکز بر همین مسئله برای شبکه زیکش (Zcash) توسعه یافته است. زاکورا یک پیادهسازی فول نود محسوب میشود که از پروژه Zebra منشعب شده و توسعهدهندگان آن تلاش میکنند زیرساخت نود زیکش را برای مقیاسپذیری بیشتر، همگامسازی سریعتر و استفاده بهینهتر از منابع آماده کنند.
در ادامه با مفهوم زاکورا، ارتباط آن با Zebra، قابلیت Pruning، Snapshot، سازگاری RPC، لایه P2P و فناوریهایی که ممکن است در آینده در این معماری مورد استفاده قرار گیرند آشنا میشویم.
⚠️ هشدار مهم: این مطلب صرفاً با هدف آموزش و افزایش آگاهی درباره زاکورا (Zakura)، ساختار فول نودهای شبکه زیکش و فناوریهای مرتبط با مقیاسپذیری بلاکچین تهیه شده است. مطالب مطرحشده بهمعنای توصیه به استفاده از یک نرمافزار، شبکه یا سرویس خاص نیست. برخی قابلیتهای زاکورا همچنان در حال توسعه یا آزمایش هستند و ممکن است در نسخههای آینده تغییر کنند. کاربران و اپراتورهای نود باید پیش از نصب یا استفاده از هر نرمافزار شبکه، مستندات رسمی، نسخه نرمافزار، الزامات فنی و ملاحظات امنیتی آن را بهصورت مستقل بررسی کنند.
زاکورا یک پیادهسازی نرمافزاری برای اجرای فول نود شبکه زیکش است. این پروژه از کد Zebra منشعب شده و با حفظ سازگاری با قوانین اجماع زیکش، مسیر توسعه متفاوتی را با تمرکز بیشتر بر عملکرد و مقیاسپذیری دنبال میکند. برای درک بهتر جایگاه زاکورا باید میان «شبکه بلاکچین» و «نرمافزار نود» تفاوت قائل شد. زیکش خود شبکه و پروتکل بلاکچینی است؛ در مقابل، نرمافزارهایی مانند zcashd، Zebra و Zakura ابزارهایی هستند که امکان اجرای یک گره و تعامل زیرساختی با این شبکه را فراهم میکنند. بنابراین، معرفی زاکورا به این معنا نیست که بلاکچین مستقلی جایگزین زیکش شده است. زاکورا را میتوان یک پیادهسازی جایگزین برای اجرای نود زیکش در نظر گرفت که توسعهدهندگان آن روی بهینهسازی زیرساخت نرمافزاری تمرکز کردهاند.

⬅️ Zakura | پیادهسازی فول نود برای زیکش |
⬅️ Zcash | شبکه و پروتکل بلاکچینی |
⬅️ Zebra | یکی از پیادهسازیهای نود زیکش و مبنای اولیه زاکورا |
⬅️ zcashd | کلاینت قدیمیتر شبکه زیکش |
⬅️ Pruning | کاهش دادههای ذخیرهشده روی نود |
⬅️ Snapshot | داده از پیش آمادهشده برای تسریع راهاندازی نود |
⬅️ RPC | رابط ارتباط نرمافزارها با نود |
⬅️ P2P | ارتباط مستقیم میان گرههای شبکه |
فول نود یا Full Node یکی از اجزای اصلی زیرساخت یک شبکه بلاکچینی است. این نرمافزار دادههای شبکه را دریافت میکند و براساس قوانین پروتکل مورد بررسی قرار میدهد. یک نود میتواند وظایفی مانند دریافت بلاکها، بررسی اعتبار آنها، دنبالکردن وضعیت زنجیره، برقراری ارتباط با سایر نودها و ارائه رابطهای نرمافزاری برای سرویسهای دیگر را بر عهده داشته باشد. با افزایش عمر یک بلاکچین، حجم دادههایی که نود باید پردازش کند نیز افزایش مییابد. در چنین شرایطی، سرعت پردازش داده، فضای ذخیرهسازی، پهنای باند و نحوه همگامسازی اهمیت بیشتری پیدا میکنند.
تمرکز زاکورا نیز عمدتاً روی همین لایه زیرساختی است.
زاکورا از Zebra فورک شده است. در مهندسی نرمافزار متنباز، Fork به این معناست که توسعهدهندگان یک نسخه از کد پروژه موجود را مبنا قرار میدهند و توسعه آن را در مسیری جداگانه ادامه میدهند. این مفهوم را نباید لزوماً با «هاردفورک بلاکچین» یکسان دانست. در اینجا فورک به کد نرمافزار نود مربوط میشود و زاکورا همچنان برای تعامل با شبکه زیکش و رعایت قوانین اجماع آن طراحی شده است. بنابراین، استفاده از واژه فورک در این زمینه بیشتر به منشأ کد نرمافزار اشاره دارد.
یکی از مسائل مهم در توسعه شبکههای بلاکچینی، افزایش ظرفیت بدون ایجاد فشار غیرضروری بر اپراتورهای نود است. اگر افزایش ظرفیت یک شبکه باعث شود هر نود به حجم بسیار زیادی از فضای ذخیرهسازی، پهنای باند یا توان پردازشی نیاز داشته باشد، اجرای نود میتواند دشوارتر شود. به همین دلیل، مقیاسپذیری فقط به افزایش تعداد تراکنشها محدود نمیشود و معماری نود نیز بخشی از این مسئله است. توسعهدهندگان زاکورا تلاش میکنند بخش نرمافزاری این معادله را بهینه کنند. در این مسیر، موضوعاتی مانند سرعت همگامسازی، مدیریت دادههای قدیمی، راهاندازی سریعتر نود، معماری شبکه همتابههمتا و سازگاری با نرمافزارهای موجود مورد توجه قرار گرفتهاند.

هنگامی که یک نود برای نخستین بار راهاندازی میشود، باید وضعیت بلاکچین را دریافت و بررسی کند. به این فرایند معمولاً Synchronization یا Sync گفته میشود. هرچه حجم تاریخچه بلاکچین افزایش پیدا کند، این مرحله میتواند منابع بیشتری مصرف کند. یکی از حوزههایی که زاکورا روی آن تمرکز دارد، کاهش زمان موردنیاز برای این فرایند است. براساس آزمایشهای منتشرشده از سوی توسعهدهندگان پروژه، نسخه اولیه زاکورا در برخی سناریوهای آزمایشی توانسته همگامسازی را سریعتر از Zebra انجام دهد. بااینحال، نتایج Sync به عواملی مانند سختافزار، پهنای باند، وضعیت شبکه، نسخه نرمافزار و روش راهاندازی وابسته است و نباید یک نتیجه آزمایشی را برای تمام محیطها قطعی در نظر گرفت.
یکی از قابلیتهای مهم زاکورا Pruning یا هرس دادهها است. در یک نود آرشیوی، حجم زیادی از دادههای تاریخی بلاکچین نگهداری میشود. اما همه کاربردها الزاماً به نگهداری تمام این اطلاعات نیاز ندارند. Pruning به نود اجازه میدهد بخشی از دادههای تاریخی را که برای فعالیت جاری آن ضروری نیستند حذف کند و در عین حال اطلاعات موردنیاز برای ادامه عملکرد خود را حفظ کند.
حالت | ویژگی اصلی |
⬅️ Archive Node | نگهداری گسترده تاریخچه دادههای بلاکچین |
⬅️ Pruned Node | حذف بخشی از دادههای تاریخی برای کاهش فضای ذخیرهسازی |
⬅️ Snapshot Bootstrap | استفاده از وضعیت آماده برای کاهش زمان راهاندازی اولیه |
این قابلیت میتواند فضای ذخیرهسازی موردنیاز برای برخی اپراتورهای نود را کاهش دهد؛ هرچند انتخاب میان نود آرشیوی و هرسشده باید براساس کاربرد موردنظر انجام شود.
قابلیت دیگری که در معماری زاکورا مورد توجه قرار گرفته، استفاده از Snapshot است.
در روش معمول، یک نود جدید ممکن است مجبور باشد حجم بزرگی از دادهها را از سایر همتایان شبکه دریافت و پردازش کند. Snapshot امکان شروع فعالیت از یک وضعیت از پیش آمادهشده را فراهم میکند و میتواند زمان Bootstrap اولیه را کاهش دهد. البته Snapshot نیز باید با ملاحظات امنیتی همراه باشد. منبع فایل، صحت دادهها، روش اعتبارسنجی و نسخه نرمافزار از جمله مواردی هستند که اپراتور نود باید بررسی کند. به همین دلیل، دریافت Snapshot از منابع ناشناس یا بدون بررسی صحت آن روش مناسبی برای راهاندازی زیرساخت بلاکچینی محسوب نمیشود.
یکی دیگر از موضوعات مهم در مهاجرت زیرساختهای بلاکچینی، سازگاری نرمافزاری است.
سرویسهایی که قبلاً زیرساخت خود را براساس یک کلاینت مشخص ساختهاند ممکن است برای ارتباط با نود از RPCهای همان نرمافزار استفاده کنند. تغییر کلاینت در چنین شرایطی میتواند نیازمند بازنویسی بخشی از زیرساخت باشد.
زاکورا برای کاهش این اصطکاک، حالت سازگاری با رابط zcashd RPC را در نظر گرفته است. هدف از این قابلیت آن است که برخی نرمافزارها و سرویسهای متکی بر رابط قدیمی بتوانند با تغییرات کمتری با نود جدید ارتباط برقرار کنند.
البته وجود Compatibility Mode به این معنا نیست که تمام نرمافزارهای موجود در هر شرایطی بدون آزمایش قابل مهاجرت هستند. سازگاری باید متناسب با RPCهای مورد استفاده و نسخه نرمافزار بررسی شود.
نودهای یک بلاکچین برای تبادل اطلاعات با یکدیگر به شبکه Peer-to-Peer یا P2P متکی هستند. بلاکها، تراکنشها و برخی پیامهای پروتکل از طریق همین ارتباطات میان گرهها جابهجا میشوند.
زاکورا روی یک لایه P2P جدید نیز کار کرده است که هدف آن بهبود نحوه انتشار اطلاعات و افزایش مقاومت زیرساخت شبکه است. این بخش در معرفی اولیه پروژه ماهیت آزمایشی داشته و نباید آن را با تمام قابلیتهای فعال و پایدار نرمافزار یکسان در نظر گرفت.
از جمله اهداف مطرحشده برای این معماری میتوان به انتشار سریعتر بلاک، بهینهسازی تبادل اطلاعات ممپول و طراحی سازوکارهای مقاومتر در برابر حملات محرومسازی از سرویس اشاره کرد.
Mempool را میتوان فضای موقت نگهداری تراکنشهایی دانست که هنوز در یک بلاک ثبت نشدهاند.
نودهای مختلف ممکن است در یک لحظه دید یکسانی از تمام تراکنشهای در انتظار نداشته باشند. به همین دلیل، نحوه انتشار و هماهنگسازی دادههای ممپول میتواند بر عملکرد شبکه تأثیر بگذارد.
Mempool Aggregation بهطور کلی به روشهایی اشاره دارد که برای تجمیع و مدیریت مؤثرتر این اطلاعات میان اجزای شبکه استفاده میشوند. توسعهدهندگان زاکورا این حوزه را نیز بهعنوان بخشی از معماری مقیاسپذیری مورد توجه قرار دادهاند.
یکی دیگر از مفاهیم مرتبط با معماری P2P، Gossip Protocol است.
در این مدل، اطلاعات بهتدریج میان گرههای مختلف منتشر میشود؛ مشابه زنجیرهای از ارتباطات که در آن هر گره اطلاعات را دریافت کرده و برای سایر همتایان مرتبط ارسال میکند.
طراحی این سازوکار باید میان سرعت انتشار، مصرف منابع و مقاومت در برابر رفتارهای مخرب تعادل برقرار کند. اگر یک مهاجم بتواند تعداد بسیار زیادی پیام غیرضروری ایجاد کند، منابع نودها ممکن است تحت فشار قرار گیرند.
به همین دلیل، توسعهدهندگان زاکورا مقابله با حملات DoS را نیز یکی از ملاحظات طراحی لایه ارتباطی خود مطرح کردهاند.
یکی از فناوریهایی که در برنامههای توسعه مرتبط با زاکورا و Project Tachyon مطرح شده، Recursive Proofs یا اثباتهای بازگشتی است. در سیستمهای اثبات رمزنگاری، امکان ترکیب یا اثبات مجموعهای از محاسبات در قالب ساختارهای فشردهتر میتواند مقدار اطلاعاتی را که سایر اجزای شبکه باید پردازش کنند کاهش دهد.
در یک معماری مقیاسپذیر، این ویژگی اهمیت زیادی دارد؛ زیرا افزایش تعداد عملیات نباید الزاماً باعث افزایش خطی حجم اطلاعاتی شود که تمام نودها باید دریافت یا بررسی کنند. بااینحال، باید میان قابلیتهای فعلی نرمافزار زاکورا و فناوریهایی که برای معماری آینده آن مطرح شدهاند تفاوت قائل شد.
مفهوم دیگری که در برنامههای مرتبط با این اکوسیستم دیده میشود Private Information Retrieval یا PIR است.
PIR مجموعهای از تکنیکهای رمزنگاری است که هدف آن فراهمکردن امکان دریافت اطلاعات از یک پایگاه داده بدون آشکارشدن کامل ماهیت درخواست برای ارائهدهنده داده است.
این موضوع برای شبکههایی که حریم خصوصی در طراحی آنها اهمیت دارد کاربرد بالقوه قابلتوجهی دارد. برای مثال، یک کیف پول ممکن است نیاز داشته باشد اطلاعات مرتبط با وضعیت خود را از زیرساخت شبکه دریافت کند؛ اما شیوه پرسوجوی آن نباید بهسادگی اطلاعات حساس درباره فعالیت کاربر را آشکار کند.
گروه Valar روی استفاده از فناوریهای مبتنی بر PIR در زیرساخت زیکش کار کرده است و این فناوری بهعنوان یکی از اجزای احتمالی معماری مقیاسپذیری آینده مطرح میشود.
یکی از اشتباهات احتمالی درباره پروژههایی مانند زاکورا، یکسان دانستن آنها با کیف پول است.
زاکورا اساساً نرمافزار زیرساخت نود است. کیف پول معمولاً رابطی برای مدیریت کلیدها، آدرسها و تعامل کاربر با شبکه فراهم میکند، در حالی که نود مسئول دریافت، بررسی و ارائه دادههای شبکه است.
ویژگی | Zakura | کیف پول |
⬅️ اجرای نود شبکه | بله | معمولاً خیر |
⬅️ اعتبارسنجی دادههای شبکه | بله | بسته به معماری |
⬅️ رابط عمومی برای مدیریت دارایی | هدف اصلی نیست | بله |
⬅️ مدیریت کلیدهای کاربر | هدف اصلی نیست | معمولاً بله |
⬅️ ارتباط P2P با نودها | بله | معمولاً از نود یا سرور واسط استفاده میکند |
⬅️ تمرکز بر زیرساخت | بالا | کمتر |
بنابراین، کاربرد و مخاطبان این دو دسته نرمافزار متفاوت هستند.
اهمیت پروژههایی مانند زاکورا فقط به افزایش سرعت یک نرمافزار محدود نمیشود. وجود چند پیادهسازی برای یک پروتکل میتواند از منظر مهندسی شبکه نیز اهمیت داشته باشد.
وقتی بخش بزرگی از شبکه تنها به یک پیادهسازی نرمافزاری وابسته باشد، وجود یک اشکال در همان نرمافزار ممکن است بخش قابلتوجهی از زیرساخت را تحت تأثیر قرار دهد. تنوع کلاینتها میتواند این وابستگی را کاهش دهد؛ البته تنها در صورتی که پیادهسازیها بهدرستی قوانین اجماع را رعایت کنند.
زاکورا در این چارچوب تلاش میکند علاوه بر سازگاری با زیکش، بستری برای آزمایش و ادغام فناوریهای جدید مرتبط با مقیاسپذیری و حریم خصوصی فراهم کند.
راهاندازی فول نود با نصب یک نرمافزار معمولی تفاوت دارد. نود بخشی از زیرساخت یک شبکه توزیعشده است و باید از نظر امنیت، منابع سختافزاری و پایداری بهدرستی مدیریت شود.
پیش از راهاندازی زاکورا بهتر است نسخه نرمافزار و مستندات همان نسخه بررسی شود، فایلهای اجرایی فقط از منابع رسمی دریافت شوند، منابع سختافزاری موردنیاز مشخص شوند و در صورت استفاده از Snapshot، صحت و منبع آن مورد بررسی قرار گیرد.
همچنین قابلیتهای آزمایشی، بهویژه بخشهای مربوط به شبکه P2P، نباید بدون بررسی مستندات و درک پیامدهای فنی در محیطهای حساس فعال شوند.
زاکورا (Zakura) یک پیادهسازی جدید فول نود برای شبکه زیکش است که از Zebra منشعب شده و توسعه آن با تمرکز بر مقیاسپذیری، عملکرد نود، مدیریت بهتر دادهها و توسعه زیرساخت ارتباطی شبکه ادامه دارد.
قابلیتهایی مانند Pruning، Snapshot و سازگاری با zcashd RPC تلاش میکنند برخی از چالشهای عملیاتی اجرای نود را کاهش دهند. در کنار آنها، توسعه لایه جدید P2P و پژوهش روی فناوریهایی مانند Recursive Proofs و PIR نشان میدهد که هدف پروژه فقط بهینهسازی کوتاهمدت یک کلاینت نیست و بخشی از فعالیتها به معماری آینده شبکه مربوط میشود.
بااینحال، هنگام بررسی زاکورا باید میان قابلیتهای فعال و قابل استفاده فعلی، ویژگیهای آزمایشی و اهداف بلندمدت توسعهدهندگان تمایز قائل شد. چنین تفکیکی به درک دقیقتر جایگاه زاکورا در زیرساخت زیکش و ارزیابی فنی صحیحتر این پروژه کمک میکند.