یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام

آموزش Event در سالیدیتی

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

یک رویداد را می توان با استفاده از کلمه کلیدی event ایجاد کرد.

    //Declare an Event
event Deposit(address indexed _from, bytes32 indexed _id, uint _value);

//Emit an event
emit Deposit(msg.sender, _id, msg.value);

برای درک نحوه عملکرد یک رویداد در Solidity کد زیر را امتحان کنید. ابتدا یک قرارداد ایجاد و یک event را منتشر نمایید.

pragma solidity ^0.5.0;

contract Test {
   event Deposit(address indexed _from, bytes32 indexed _id, uint _value);
   function deposit(bytes32 _id) public payable {      
      emit Deposit(msg.sender, _id, msg.value);
   }
}

سپس به event قرارداد در کد جاوا اسکریپت دسترسی پیدا نمایید.

var abi = /* abi as generated using compiler */;
var ClientReceipt = web3.eth.contract(abi);
var clientReceiptContract = ClientReceipt.at("0x1234...ab67" /* address */);

var event = clientReceiptContract.Deposit(function(error, result) {
   if (!error)console.log(result);
});

باید جزئیاتی مانند موارد زیر چاپ شود :

    {
        "returnValues": {
           "_from": "0x1111...FFFFCCCC",
           "_id": "0x50...sd5adb20",
           "_value": "0x420042"
        },
        "raw": {
           "data": "0x7f...91385",
           "topics": ["0xfd4...b4ead7", "0x7f...1a91385"]
        }
     }
1402/01/24 398
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...