今天來介紹一下 solidity 裡面一個很特殊的東西 events

我們介紹了這幾天,都還沒有看到 solidity 提供的 logs 的使用法,solidity 的 logs 實現方法,就是要透過 events 來實現,當然 events 的功用不只這樣的功能,可以透過跟 web3 的合作達到事件監聽的作用,我們來看看下面範例。

//定義一個 log event
event log(
    string text
);

//定義一個 function 
function Event() public {
    //透過emit 這樣就可以觸發 event
    emit log("log somethimg");
}

當然上面會有人說,把 log 儲存在 state variables,就可以了,的確可以儲存在變數上面。但是在區塊鏈上,儲存在上面的資料都是需要成本的,像 log 資訊,這種相對沒那麼重要的資料,而且不需要變動的,就很適合透過 events 的機制去儲存它,不過透過 events 儲存的資料,不能夠過 constract 去調用它,只能透過 web3.js 從外部去調用。後續我們會介紹 web3.js 的應用,也就是本系列的重點之一 Dapp 另一個重點。

明天我們來聊聊 solidity 最後幾個重點 libraries 。