رویدادها در برنامه نویسی سالیدیتی
22 خرداد 1401 1401-03-22 13:12رویدادها در برنامه نویسی سالیدیتی
رویدادها در برنامه نویسی سالیدیتی
در قراردادهای هوشمند برای اطلاعرسانی در مورد وضعیت قراردادها و تراکنشها، از رویدادها استفاده میشود. در واقع رویدادها در قرارداد هوشمند روشی برای ثبت فعالیتها و نمایش تغییرات جدید هستند و به صورت جداگانه در زنجیره بلوک ذخیره میشوند.در ادامه به بررسی رویدادها در برنامه نویسی سالیدیتی میپردازیم.جهت کسب اطلاعات بیشتر می توانید مقالات زیر را که مقدماتی بر قرارداد هوشمند و برنامه نویسی سالیدیتی هست را مطالعه نمایید.
- هر آنچه که باید در مورد اتریوم بدانید
- قرارداد هوشمند یا اسمارت کانترکت (Smart Contract) چیست؟
- توسعه قرارداد هوشمند در محیط ریمیکس
- کاربردهای برنامه نویسی سالیدیتی
- چگونه یک برنامه نویس سالیدیتی شویم؟
کاربرد ارزدیجیتال و قرارداد هوشمند
با پیشرفت تکنولوژی و استفاده روزافزون از فضای دیجیتال، معاملات پولی نیز به این فضا انتقال یافته و ارز دیجیتال جایگزین پولهای کاغذی شده است. ارز دیجیتال در دنیای واقعی دارای معادل فیزیکی نیست و افراد میتوانند با استفاده از آن در فضای مجازی و اینترنتی به خرید و فروش بپردازند.یکی از پلتفرمهای محبوب و عمومی، شبکه ارز دیجیتال اتریوم است که دارای یک توکن ارزرمز به نام «اتر» میباشد. در این شبکه غیرمتمرکز و منبعباز، دولتها برای جلوگیری از تقلب در انجام تراکنشها به کاربران کمک میکنند. کاربران میتوانند از تریوم برای پردازش معاملات مالی، ذخیره دادهها و انجام قراردادهای هوشمند نیز استفاده کنند.
قرارداد هوشمند یکی از مهمترین ویژگیهای اتریوم بوده و امکان برنامهنویسی روی این شبکه را فراهم کرده است. برای برنامهنویسی و پیادهسازی قراردادهای هوشمند در پلتفرمهای مختلف بلاکچین، بهویژه اتریوم از زبان سالیدیتی استفاده میشود. سالیدیتی یک زبان متنباز است و ویژگی وراثت دارد، به این معنی که میتوان با استفاده از آن متغیرها و توابع یک قرارداد را در سایر قراردادهای هوشمند نیز به کار برد.
رویدادها در برنامه نویسی سالیدیتی چیست؟
به بیان ساده، رویدادها روشی برای برقراری ارتباط و اطلاعرسانی به کاربران هستند و میتوان از طریق یک زنجیره بلوکی به آنها دسترسی پیدا کرد. رویدادهای سالیدیتی، دارای ویژگی وراثت بوده و میتوانند فعالیتهایی را که در قرارداد هوشمند انجام میشوند، ذخیره کنند. بهطور کلی، رویدادها برای اطلاعرسانی در مورد وضعیت قرارداد استفاده میشود.
رویدادهای Solidity مانند رویدادهای هر زبان برنامه نویسی دیگری هستند. رویداد عضوی ارثی از قرارداد است که آرگومانهای ارسال شده در گزارشهای تراکنش را هنگام انتشار ذخیره میکند.
همانطور که میدانید، کلیه اطلاعات در بلاکچین عمومی هستند و کاربران میتوانند با بررسی دقیق تراکنشها، اطلاعات لازم در مورد همه فعالیتها را کسب کنند. اما رویدادها روشی میانبر بوده و میتوان با استفاده از آنها به روشی ساده و آسان قراردادهای هوشمند را توسعه دارد.
رویدادهای سالیدیتی بهصورت یکپارچه بوده و میتوانند بهصورت خودکار تغییر کنند. رویدادها یکی از مهمترین عوامل در رشد و توسعه اتریوم و بسیاری از بلاکچینها هستند؛ علاوهبراین ویژگی گزارشگیری دارند که برای نوشتن اطلاعات در ساختاری بیرون از قراردادهای هوشمند استفاده میشوند. رویدادها امکان جستجو اطلاعات روی بلاکچین را برای کاربران فراهم میکنند و با استفاده از آنها میتوان به همه فعالیتها و تراکنشها دسترسی پیدا کرد.
- رویدادها با استفاده از کلمه کلیدی “event” اعلام می شوند.
- برای انتشار یک رویداد در یک تابع از کلمه کلیدی “emit” استفاده کنید.
- رویدادها در لاگ تراکنش های بلاکچین ثبت می شوند.
- رویدادها برای ذخیره لز متغیرها ارزانتر هستند.
- قراردادهای هوشمند نمی توانند مستقیماً به گزارش رویدادها دسترسی داشته باشند.
توجه داشته باشید که رویدادها در لاگ تراکنشهای بلاکچین ذخیره میشوند و اگر قراردادها از بین بروند، امکان دسترسی به آنها وجود ندارد. اگر یک گروه بلاکچین ایجاد کنید میتوانید با عضویت در رویدادهای خاص به آنها گوش دهید و در جریان تغییرات در قراردادها، اطلاعات زنجیرهای و تغییرات در حسابها قرار بگیرید.
رویدادها در برنامهنویسی سالیدیتی چه کاربردی دارند؟
با توجه به اینکه قراردادهای هوشمند بر اساس همکاری تیمهای تجاری با توسعهدهندگان ایجاد میشود، اعضا میتوانند تمامی فعالیتها را در قالب پاسخ به رویدادها شرح دهند. با رویدادهای سالیدیتی میتوانید:
- قراردادهای هوشمند را برای متغیرهای خاص مورد آزمایش قرار دهید
- فهرستی از متغیرها برای بازسازی وضعیت زخیرهسازی ایجاد کنید
- برای تغییر فرانتاند از آنها استفاده کنید
- برای بررسی و خواندن سریع دادهها، زیرگراف ایجاد کنید
آموزش سالیدیتی برنامه نویسی قرارداد هوشمند Smart contracts
نحوه استفاده از رویدادها در برنامه نویسی سالیدیتی
در برنامهنویسی سالیدیتی، رویدادها با استفاده از کلمه کلیدی event تعریف میشوند. سپس نام و پارامترهای رویداد را مشخص کرده و با ذخیره کردن آن، رویداد خود را در تابع منتشر کنید. در واقع رویدادها با استفاده از کلمه کلیدی event، یک شناسه و لیست پارامترها اعلام میشوند و با یک نقطه ویرگول به پایان میرسند. کاربران میتوانند با جستجوی نام یا پارامترها، رویداد را پیدا کنند.
پارامترهای رویداد سالیدیتی دو نوع ایندکسشده و ایندکسنشده هستند. شما میتوانید به رویدادهای ایندکسشده حداقل سه پارامتر اضافه کنید. پارامترهایی ایندکس نشده هستند، در قسمت اطلاعات لاگ با ABI کدگذاری میشوند.
رویدادها یک فضای ذخیرهسازی ارزان هستند و پارامترهای آن در لاگ تراکنشهای بلاکچین ثبت میشوند. اگر قصد انتشار یک رویداد را داشته باشید میتوانید با استفاده از کلمه کلیدی emit آن را منتشر کنید. شما میتوانید رویدادها را با نام یا آدرس قرارداد، ذخیره یا جستجو کنید.
event <eventName>(parameters) ;
نمونه کد ساخت رویداد در زبان برنامه نویسی سالیدیتی
// Solidity program to demonstrate
// creating an event
pragma solidity ^0.4.21;
// Creating a contract
contract eventExample {
// Declaring state variables
uint256 public value = 0;
// Declaring an event
event Increment(address owner);
// Defining a function for logging event
function getValue(uint _a, uint _b) public {
emit Increment(msg.sender);
value = _a + _b;
}
}
تصویر خروجی کدهای رویداد در سالیدیتی
سخن پایانی رویداد ها در Solidity
لاگها و گزارشها بخشهای مهمی در زمینه توسعه قراردادهای هوشمند هستند و زیرساختهای حساتی برای شبکه محسوب میشوند. رویدادها دارای سه پارامتر هستند که عبارتند از: آدرس واریز کننده، مقدار اتر واریزی و زمان دقیق واریز شدن اتر. کاربران میتوانند با گوش دادن به رویدادها اطلاعات دقیقی در مورد قراردادها و تاریخچه آنها کسب کنند.