انجمن توسعه قرارداد هوشمند

ساختار ذخیره‌ی داده در اتریوم (درخت پاتریشیا)

بیاین یه لحظه کل کلمه‌ها و صحبت‌های پرزرق و برقی که درباره‌ی بلاک چین شنیدیم رو کنار بذاریم و به این فکر کنیم که بلاک چین ها واقعا چی هستند؟

راستش رو بخواین، بلاک چین‌ها چیزی شبیه به اختراع دستگاه چاپ‌اند. به عبارتی، یک روش جدید برای ثبت و ذخیره ی داده. تنها تفاوت‌شون اینه که به جای چاپ متن و کتاب، داده‌های دیجیتالی رو ثبت و ذخیره می‌کنند.

بشر به بازه‌ای از تاریخ رسیده که نیاز داره داده‌ها رو از گزند سانسور و تغییرات به دور نگه داره؛ و بتونه دنیایی عادلانه‌تر ایجاد کنه. ساخت چنین دنیایی نیازمند به مشارکت همگیه؛ و راه‌حل بلاک چین برای این مساله، ایجاد بستری هست که افراد علاوه بر ثبت و تبادل داده، بتونن شخصا صحت‌سنجی انجام بدند و یا در ثبت، ذخیره و یا تولید اطلاعات فعالانه سهم داشته باشند. اما پیاده‌سازی چنین طرحی با مشکلاتی همراهه.

یکی از مهم‌ترین این مشکلات، با توجه به جمعیت روزافزون کاربران دنیای آنلاین، مساله‌ی مقیاس‌پذیریه.

یک محصول یا تکنولوژی تنها زمانی امکان توسعه داره که بتونه توسط همه استفاده بشه؛ به این معنی که باید کم‌حجم و پرسرعت باشه و بلاک چین‌ها هم از این قاعده مستثنی نیستند.

روش ذخیره‌ی داده در بیتکوین

بیتکوین برای مقیاس‌پذیر کردن شبکه‌ش از یک ساختار ذخیره‌ی داده به اسم درخت مرکل استفاده می‌کنه.

این به اصطلاح درخت، هر دو تراکنش همسایه رو از یک تابع ریاضی (رمزنگاری) به اسم هش می‌گذرونه و بعد از تلفیق اون‌ها دوباره هش می‌گیره و این کار رو تا جایی ادامه می‌ده که فقط یک داده‌ی رمزنگاری‌‌شده باقی بمونه که مجموع داده‌های قبلیه (ریشه‌ی مرکل) .

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

و اگر تمایل به چک کردن تراکنش خودتون رو دارید، فقط کافیه مسیر ریشه تا تراکنش‌تون رو دنبال کنید. (و نه کل تراکنش‌های بلوک رو).

اما این روش نقص‌هایی داره.

محدودیت‌های درخت مرکل

اگر چه درخت مرکل می‌تونه وجود تراکنش‌ها رو اثبات کنه، اما نمی‌تونه هیچ اطلاعاتی از وضعیت موجودی‌ها (مثل دارایی‌های دیجیتالی، وضعیت قراردادها و …) ارائه بده.

همچنین،‌ درخت مرکل تنها می‌تونه در سناریوهای ساده تعداد بیتکوین‌های حاضر در یک موجودی رو نشون بده. در سناریوهای پیچیده‌تر به علت اتصال و همبستگی بلوک‌ها به هم، برای بررسی وضعیت موجود عملا باید کل زنجیره بررسی بشه تا بتونه جواب سوال “در حال حاضر چند بیتکوین داری” رو بده.

اتریوم سعی کرده با تلفیق مرکل با یک ساختار داده‌ای دیگه، این محدودیت‌ها رو برداره.

اثبات مرکلی در اتریوم

هر سرتیتر بلوک در اتریوم شامل نه تنها یک درخت مرکل بلکه سه درخت برای سه نوع مختلف داده‌ست.

  • تراکنش‌ها
  • رسیدها
  • موجودی

این روش باعث می‌شه تا پروتوکل‌های سبک علاوه بر اینکه بتونن وجود تراکنش‌ها رو اثبات کنن، جواب سوالات زیادتری رو به کاربر ارائه بدند. اطلاعاتی مثل:

  • آیا این تراکنش در بلوک مشخصی قرار داده شده؟
  • تمامی موارد خروجی از این آدرس در طی ۳۰ روز گذشته رو بهم نشون بده.
  • بالانس حساب فعلی من چقدره؟
  • آیا این حساب کاربری موجوده؟
  • این تراکنش رو در این قرارداد به شکل آزمایشی اجرا کن و نتیجه رو به من بگو.

درخت پاتریشیا

اتریوم از یک روش ذخیره‌ی داده‌ای استفاده می‌کنه به اسم درخت مرکل‌پاتریشیا.

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

برای مثال به کلمات زیر توجه کنید:

ما برای نوشتن و تولید این کلمات نیاز به تکرار t و h و d نداریم چرا که مشترکند؛ و فقط بخشی رو در بلوک جدید اضافه می کنیم که متفاوته. به این ترتیب می‌شه ترکیبات متنوعی از این ساختار ایجاد کرد بدون اینکه حجم زیادی اشغال کنه؛ چون نیازی به ذخیره‌ی دوباره‌ی داده نیست و نودهای درخت جدید می‌تونن به سادگی به داده‌ی قبلی ارجاع بدند.

اگر هزار بخش از داده بین بلوک N و بلوک N+1 تغییر کنه، میزان داده‌ای که نیاز هست برای بلوک N+1 ذخیره کنه فقط چند کیلوبایته.

جمع‌بندی

اتریوم با ذخیره‌ی داده به صورت پاتریشیا سعی بر این داره که شبکه‌ش رو مقیاس‌پذیرتر کنه؛ و با توجه به سرعت ۱۵ ثانیه‌ای تایید تراکنش‌ها و حجم سنگین تراکنش‌ها در دقیقه، به نظر می‌رسه تا حد زیادی هم موفق شده. یکی از علت‌هایی که اتریوم نگران هزینه‌های بالایی اجرای فول نود نیست هم همینه: تمامی موجودی‌ها در سرتیتر هر بلوک ذخیره شدن و قابل چک کردن هستن.

به نظر شما، آیا عدم توانایی اجرای فول نود (نود آرشیوی در اتریوم) توسط همه می‌تونه در بلندمدت به ضرر شبکه باشه و مشکل‌ساز بشه؟

منابع 1 و 2

8 Likes

مطلب مفیدی بود :ok_hand: :ok_hand: :ok_hand:

اینجا درباره این که توی اتریوم، اثبات مرکلی چجوری به درخت پاترشیا مرتبط میشه نوشتم :

درباره full archive node و full node هم اینجا نوشتم و اگه بخوام خلاصه بگم
این که همه توانایی اجرا کردن فول نود آرشیوی رو نداشته باشن به امنیت شبکه ضربه نمیزنه به خاطر این که ما صرفا با دسترسی داشتن به بلاک ها اتریوم از طريق یه فول نود عادی میتونیم یه فول آرشیو نود رو هر موقع که بخواییم سینک کنیم

1 Likes

مرسی حمید بابت لینک‌ها؛ خیلی عالی بود :slight_smile:

1 Likes