میخواهم در این مقاله از میهن بلاکچین سایتی را معرفی کنم که نمونه آن را تاکنون ندیدهاید. سایتی که قراردادهای هوشمند را طوری برایمان ترسیم میکند که درکشان راحتتر باشد. نام این سایت Evm.storage است. این سایت در حقیقت مثل جعبه ابزاری میماند که هر بخشش مفید است و در مجموع به شفافیت قراردادهای هوشمند کمک میکند. در واقع کار اصلی این سایت این است که فضای ذخیرهسازی اختصاصیافته به متغیرهای بهکاررفته در قرارداد هوشمند را نشان میدهد. در ادامه میخواهم جزئیات این سایت را بررسی کنم و خوشحال میشوم اگر بدانم شما هم مثل من مشتاق هستید که از این سایت و ویژگیهای آن سر در بیاورید.
آشنایی با مفهوم Storage در قرارداد هوشمند
برای آنکه با سایت evm.storage آشنا شویم، باید قبل از آن پیشزمینهای در خصوص مفهوم فضای ذخیرهسازی در قراردادهای هوشمند داشته باشیم و بدانیم دادهها چطور در اسمارت کانترکتها ذخیره میشوند. در حقیقت چیدمان ذخیرهسازی قراردادهای هوشمند (Smart Contract Storage Layout)، متشکل از قوانینی است که متغیرهای ذخیرهسازی (که با نام متغیرهای State یا حالت هم شناخته میشوند) را در حافظه بلندمدت قرار میدهد. استورج یا همان فضای ذخیرهسازی، یکی از چهار مکانی است که دادههای قرارداد هوشمند میتوانند آنجا ذخیره شود. سه محل دیگر پشته، حافظه و Calldata هستند که البته در این مطلب کاری با آنها نداریم.
مسئله مهم دیگر این است که بدانیم حافظه چطور در ماشین مجازی اتریوم مورد استفاده قرار میگیرد. اگر با مفهوم حافظه در کامپیوترهای شخصی آشنا باشید، درک این موضوع هم بسیار راحتتر خواهد بود. قراردادهای هوشمند نیز در حقیقت برنامههای کامپیوتری هستند که روی بلاکچین اجرا میشوند. خود این برنامهها به متغیرها یا پارامترهایی نیاز دارند که توابع بهکمک آنها عمل میکنند. این دادهها (همان پارامترها) نیازمند آن هستند که جایی در حافظه کامپیوتر ذخیره شوند. در اینجا منظورمان از کامپیوتر، ماشین مجازی اتریوم است.
این مسئله را هم اضافه کنم که هر قرارداد هوشمند حافظه خواندنی-نوشتنی مخصوص به خود را دارد که یک حافظه دائم و ماندگار است. هر قرارداد میتواند دادهها را تنها از درون حافظه خود بخواند یا در آن بنویسد. فضای ذخیرهسازی در هر قرارداد به ۲۲۵۶ اسلات ۳۲ بایتی تقسیم میشود. دسترسی به حافظه ماشین مجازی اتریوم هم تنها بهشکل مستقیم از طریق همین اسلاتهای ۳۲ بایتی امکانپذیر است.
یک نکته دیگر هم این است که متغیرهای سادهای که اندازه ثابتی دارند، یکی پس از دیگری در فضای ذخیرهسازی قرار میگیرند. این مسئله در مورد آرایههایی با اندازه متغیر فرق میکند. همین امر باعث میشود که قوانین ذخیرهسازی در مورد این متغیرها متفاوت باشد.
تصویر بالا نشان میدهد که حالت متغیرها چطور به اسلاتهای فضای ذخیرهسازی مپ یا نگاشت میشود. منظور از Map این است که وضعیت متغیرها چطور در حافظه ترسیم شود؛ درست مانند شکل بالا. در مورد این مفاهیم میشود خیلی مفصلتر صحبت کرد. اگر علاقهمند به کسب اطلاعات بیشتری در این خصوص هستید و دوست دارید بیشتر از این مفاهیم سر در بیاورید، باید بروید به سلاغ زبانی مثل سالیدیتی و جزئیات بیشتر را از طریق آن یاد بگیرید.
سایت evm.storage چیست؟
مواردی که در بخش قبلی توضیح دادم، انتزاعی است و مفهوم آن ممکن است گاهی دشوار باشد. ای وی ام دات استورج سایتی است که فضای ذخیرهسازی در قراردادهای هوشمند را طوری برایمان ترسیم میکند که درک آن سادهتر باشد. یعنی چه؟ تصویر زیر را نگاه کنید:
این تصویر مربوط به قرارداد استیبل کوین USDC در سایت evm.storage است. این ردیفها نمایانگر این هستند که فضای ذخیرهسازی این رمزارز چطور مصرف میشود. همچنین میتوان دید که متغیرها چطور با هم در یک گروه قرار میگیرند تا این امر به صرفهجویی در هزینه گس منجر شود.
اگر به تصویر بالا دقت کنید، میبینید که هر ردیف در حقیقت یک اسلات است. همچنین مشخص است که هرکدام از این اسلاتها هم خود به ۳۲ بخش مجزا تقسیم شدهاند.
ویژگی دیگر این سایت این است که میتوانید به کمک آن ارزش متغیرهای داخلی/ خصوصی را هم ببینید. تا پیش از این برای انجام چنین کاری باید محل ذخیره آنها را پیدا میکردید. سپس از طریق کوئری (پرسش و پاسخ) یک نود میتوانستید به مقادیر اسلات موردنظر دسترسی پیدا کنید.
البته اگر از این مدل مپینگ و این تصویرسازی چندان خوشتان نمیآید، میتوانید اطلاعات را از طریق سربرگ Table مشاهده کنید. در اینجا میتوانید ببینید که متغیرها چقدر حافظه مصرف کردهاند و از چه نوعی هستند و همچنین آفست اسلاتها را نیز میتوانید مشاهده کنید؛ چیزی شبیه به تصویر زیر:
چه کارهایی میتوان در سایت evm.storage انجام داد؟
سایت ایویام استورج را تیم SMLXL راه انداخته است. در مطلبی که در بلاگ این تیم منتشر شده است، توضیحاتی در مورد سایت evm.storage توضیح داده شده است تا بیشتر با کاربردهای آن آشنا شویم. این موارد را میتوان بهصورت زیر توضیح داد:
- جستجوی فضای ذخیرهسازی قرارداد هوشمند و State در هر ارتفاعی از بلاک.
- مشاهده متغیرها به همان شکلی که در قراردادهای هوشمند تعریف شدهاند و مقادیری که نماینده آنها هستند.
- دسترسی به ساختارهای ذخیرهسازی پیچیده و عمیق مانند مپینگهای تودرتو یا آرایهها.
- بررسی تاریخچه ذخیرهسازی برای متغیرهایی که یک اسلات را اشغال کردهاند و باقی متغیرها؛ تمام تغییرات بالانس خود را برای یک توکن مشخص خواهید دید.
البته این موارد ممکن است به مرور زمان تغییر کند و امکانات بیشتری به سایت اضافه شود؛ همانطور که اول فقط شبکه اتریوم را پشتیبانی میکرد و اکنون آوالانچ نیز به آن اضافه شده است.
آموزش کار با سایت evm.storage
برای کار کردن با این سایت و بررسی وضعیت ذخیرهسازی قراردادهای هوشمند مختلف، کافی است در همان صفحه اصلی سایت آدرس، هش تراکنش یا نام دامنه اتریوم موردنظرتان را وارد کنید. به این هم دقت کنید که بهجز اتریوم، میتوانید این کارها را روی بلاکچین آوالانچ هم انجام بدهید که از طریق منوی کشویی باکس جستجو، امکان این کار وجود دارد.
برای مثال من یک آدرس از اتراسکن برداشتم و در کادر جستجو، آن را وارد کردم. تصویر زیر نتیجه را نشان میدهد:
میبینید که تعداد توکنهای موجود در آدرس، تعداد تراکنشها، نانس و تاریخ ایجاد آدرس قابل مشاهده است. در قسمت Balances موجودی آدرس را میتوان دید و اطلاعاتی از داراییهای آن را نیز میتواند بههمراه یکسری مشخصات مشاهده کرد.
اگر تعداد تراکنشها بیشتر باشد، باقی اطلاعات را میتوانید در صفحات بعدی مشاهده کنید. روی هر کدام از سطرهای جداول بالا که کلیک کنید، میتوانید به اطلاعاتی از آن دارایی یا تراکنش دست پیدا کنید. مثلا من روی بالاترین ردیف این جدول کلیک کردم تا از جزئیات تراکنش انجامشده سر در بیاورم. باز هم لازم است تصویر زیر را نگاه کنید:
آن بالا هش تراکنش را میتوانید ببینید. سپس اطلاعاتی از وضعیت تراکنش (در این تصویر موفق)، فرستنده و گیرنده، بلاک، زمان انجام تراکنش، آیدی تراکنش، نانس، نوع و متد آن را میشود در ادامه دید. در تصویر زیر نیز میتوانید ببینید که این تراکنش چه تغییراتی در بالانس حساب گیرنده و فرستنده بهوجود آورده است.
به همین ترتیب میتوانید هر آدرس دیگری را بررسی کنید. در مثالی که در ابتدای این مطلب به آن اشاره کردم، آدرس قرارداد USDC را جستجو کردم که این نشان میدهد میتوانید به همین ترتیب (و البته تخصصیتر) از جزئیات یک قرارداد هوشمند سر در بیاورید.
جمعبندی
سایت evm.storage به ما کمک میکند بهتر با مفهوم انتزاعی ذخیرهسازی قراردادهای هوشمند کنار بیاییم. این کار از طریق بصریسازی جایگاه متغیرها در حافظه انجام میشود. در این سایت اگر آدرس اتریوم یا آوالانچ را وارد کنید، میتوانید جزئیاتی در مورد آن آدرس ببینید و اگر آن آدرس مربوط به یک قرارداد هوشمند باشد، نحوه چیدمان متغیرها در حافظه و اسلاتها خواهید دید. اگر ابزارهای دیگری مشابه این سایت میشناسید، لطفا در بخش نظرات بنویسید.
سوالات متداول (FAQ)
سایت evm.storage چیست؟
پلتفرمی است که حافظه قراردادهای هوشمند و نحوه چیدمان متغیرها در این فضا را بهشکل بصری نشان میدهد.
چه کارهایی میتوان در سایت ایویام استورج انجام داد؟
ردیابی تراکنشها، مشاهده فضای ذخیرهسازی قراردادهای هوشمند و دستیابی به ساختارهای ذخیرهسازی مختلف.