رویدادها و سیاهههای مربوط در اتریوم مهم هستند زیرا ارتباط بین قراردادهای هوشمند و رابط کاربری خود را تسهیل می کنند. در توسعه وب سنتی پاسخ سرور در پاسخ به تماس به ظاهر فراهم شده است. در اتریوم هنگامی که یک تراکنش استخراج میشود قراردادهای هوشمند میتوانند رویدادها را منتشر کنند و سیاهههای مربوط به بلاک چین را بنویسند. روش های مختلفی برای رسیدگی به رویدادها و گزارش ها وجود دارد. این مقدمه فنی برخی از منابع سردرگمی در مورد رویدادها و برخی از کدهای نمونه برای کار با رویدادها را توضیح می دهد.
رویدادها می توانند گیج کننده باشند زیرا می توانند به روش های مختلف مورد استفاده قرار گیرند. یک رویداد برای یکی ممکن است مانند یک رویداد برای دیگری به نظر نرسد. 3 مورد استفاده اصلی برای رویدادها و گزارش ها وجود دارد:
- مقادیر بازگشتی قرارداد هوشمند برای رابط کاربری
- محرک های ناهمزمان با داده ها
- ذخیره سازی ارزان تر
اصطلاحات بین رویدادها و سیاهههای مربوط منبع دیگری از سردرگمی است و این در مورد استفاده سوم توضیح داده خواهد شد.
1) مقادیر بازگشتی قرارداد هوشمند برای رابط کاربری
ساده ترین استفاده از یک رویداد انتقال مقادیر بازگشتی از قراردادها به جلوی برنامه است. برای نشان دادن, در اینجا مشکل این است:
با فرض مثال قرارداد یک نمونه از نمونه است منقبض, یک ظاهر با استفاده از وب3.جی اس اس می تواند با شبیه سازی اجرای قرارداد به مقدار بازگشتی دست یابد:
با این حال, زمانی که وب3.جی اس تماس قرارداد را به عنوان معامله ارسال می کند و نمی تواند مقدار بازگشتی را دریافت کند [1]:
مقدار بازگشتی یک روش انتقال ارسالی همیشه هش تراکنشی است که ایجاد شده است. تراکنش ها ارزش قرارداد را به جلو باز نمی گردانند زیرا تراکنش ها بلافاصله استخراج نمی شوند و در بلاک چین گنجانده می شوند.
راه حل توصیه شده استفاده از یک رویداد است و این یکی از اهداف مورد نظر برای رویدادها است.
هنگامی که معامله استناد تولی استخراج شده است, پاسخ به تماس در داخل ساعت باعث خواهد شد. این به طور موثر اجازه می دهد تا ظاهر برای دریافت مقادیر بازگشتی از تولی.
2) محرک های ناهمزمان با داده ها
مقادیر بازگشتی یک مورد استفاده حداقل برای رویدادها هستند و رویدادها را می توان به طور کلی به عنوان محرک های ناهمزمان با داده ها در نظر گرفت. هنگامی که یک قرارداد می خواهد به ماشه ظاهر, قرارداد ساطع می کند یک رویداد. مانند, ظاهر در حال تماشای برای رویدادهای, می تواند اقدامات را, نمایش یک پیام, و غیره. یک مثال از این است که در بخش بعدی (یک رابط کاربر می تواند به روز هنگامی که یک کاربر باعث می شود سپرده.)
3) یک فرم ارزان تر از ذخیره سازی
مورد استفاده سوم کاملا متفاوت از موارد پوشش داده شده است و این از رویدادها به عنوان شکل قابل توجهی ارزان تر از ذخیره سازی استفاده می کند. در ماشین مجازی اتریوم و کاغذ زرد اتریوم از رویدادها به عنوان سیاهههای مربوط یاد می شود (کدهای ورود به سیستم وجود دارد). هنگامی که صحبت از ذخیره سازی, این امر می تواند از لحاظ فنی دقیق تر می گویند که داده ها را می توان ذخیره شده در سیاهههای مربوط به داده های ذخیره شده در حوادث. با این حال, هنگامی که ما به یک سطح بالاتر از پروتکل, دقیق تر می گویند که قرارداد منتشر می کنند و یا باعث حوادث که ظاهر می تواند به واکنش نشان می دهند. هر زمان که یک رویداد ساطع شده است, سیاهههای مربوط به بلاکچین نوشته شده است. اصطلاحات بین وقایع و سیاهههای مربوط منبع دیگری از سردرگمی است, به این دلیل که زمینه دیکته که مدت دقیق تر است.
سیاهههای مربوط به شکلی از ذخیره سازی است که هزینه گاز قابل توجهی کمتر از ذخیره سازی قرارداد طراحی شده بودند. سیاهههای مربوط اساسا [2] هزینه 8 گاز در هر بایت, در حالی که هزینه های ذخیره سازی قرارداد 20,000 گاز در هر 32 بایت. اگر چه سیاهههای مربوط را صرفه جویی عظیم الجثه گاز, سیاهههای مربوط از هر قرارداد در دسترس نیست [3].
با این اوصاف, موارد استفاده برای استفاده از سیاهههای مربوط به عنوان ذخیره سازی ارزان وجود دارد, به جای باعث برای ظاهر. یک مثال مناسب برای سیاهههای مربوط به ذخیره داده های تاریخی است که می تواند توسط ظاهر رندر شده است.
یک صرافی ارز دیجیتال ممکن است بخواهد تمام سپرده هایی را که در صرافی انجام داده است به کاربر نشان دهد. به جای ذخیره سازی این اطلاعات سپرده در قرارداد بسیار ارزان تر برای ذخیره به عنوان سیاهههای مربوط است. این امکان وجود دارد زیرا مبادله نیاز به وضعیت تعادل کاربر دارد که در ذخیره سازی قرارداد ذخیره می شود اما نیازی به دانستن اطلاعات مربوط به سپرده های تاریخی ندارد.
فرض کنید ما می خواهیم یک رابط کاربری را به روز کنیم زیرا کاربر سپرده گذاری می کند. در اینجا یک مثال از استفاده از یک رویداد است (سپرده) به عنوان یک ماشه ناهمزمان با داده (_بازار, پیام.فرستنده, _معنی, اکنون). فرض کنید قرارداد رمزنگاری نمونه ای از تبادل رمزنگاری است:
بهبود کارایی گرفتن همه رویدادها برای یک کاربر دلیل نمایه سازی پارامتر _وندر رویداد است: واریز رویداد(اوینت256 نمایه شده _ بازار, نشانی نمایه شده _ فرستنده, اوینت256 _ معادل, اوینت256 _زمان).
به طور پیش فرض, گوش دادن برای رویدادهای تنها در نقطه شروع می شود زمانی که رویداد نمونه است. هنگامی که رابط کاربر برای اولین بار در حال بارگذاری است, هیچ سپرده به اضافه وجود دارد. بنابراین ما می خواهیم رویدادها را از زمان بلوک 0 بازیابی کنیم و این کار با افزودن یک پارامتر ازبلاک به رویداد انجام می شود.
هنگامی که رابط کاربر سپرده گذاری می شود.کرنومتر () باید فراخوانی شود.
پارامترهای نمایه شده کنار
حداکثر 3 پارامتر را می توان نمایه کرد. به عنوان مثال یک استاندارد توکن پیشنهادی دارای: انتقال رویداد(نشانی نمایه شده _ از, نشانی نمایه شده _ به, اوینت256 _ ارزش) . این به این معنی است که یک ظاهر موثر می تواند فقط برای انتقال رمز که تماشا:
- ارسال شده توسط نشانی نشانه قرارداد.انتقال()
- یا دریافت شده توسط نشانی نشانه قرارداد.انتقال()
- یا از طریق نشانی به نشانی خاصی برای قرارداد ارسال می شود.انتقال()
نتیجه گیری
سه مورد استفاده برای رویدادها مطرح شده است. اولین, با استفاده از یک رویداد به سادگی یک مقدار بازگشتی از یک تابع قرارداد استناد با ارسال تراکنش(). دومین, با استفاده از یک رویداد به عنوان یک ماشه ناهمزمان با داده, که می تواند یک ناظر مانند یک رابط کاربری اطلاع. سوم, با استفاده از یک رویداد برای نوشتن سیاهههای مربوط در بلاکچین به عنوان یک فرم ارزان تر از ذخیره سازی. این مقدمه برخی از رابط های برنامه کاربردی برای کار با حوادث نشان داده است. رویکردهای دیگری نیز برای کار با رویدادها وجود دارد, سیاهههای مربوط, و رسیدها و این موضوعات را می توان در مقالات بعدی پوشش داد.
با تشکر از هارون دیویس, وینسنت گاریپی, و جوزف لوبین برای بازخورد در مورد این مقاله.
منابع
[1] وب3.جی اس می تواند شاهد این باشد که تراکنش در بلاک چین گنجانده شود و سپس تراکنش را در نمونه ای از تراکنش مجددا پخش کند تا مقدار بازگشتی را دریافت کند اما این مقدار قابل توجهی منطق برای افزودن به وب3 است.جی اس
[2] هزینه های گاز وجود دارد 375 برای یک عملیات ورود به سیستم, و 375 گاز در هر موضوع, اما زمانی که بسیاری از بایت در حال ذخیره شده, این هزینه ها نشان دهنده کسری ناچیز از کل هزینه های ذخیره سازی.
[3] اثبات مرکل برای سیاهههای مربوط امکان پذیر است, بنابراین اگر یک نهاد خارجی تامین یک قرارداد با چنین اثبات, یک قرارداد می توانید بررسی کنید که ورود به سیستم در واقع در داخل بلاکچین وجود دارد.