Solidity
我們可以像函式一樣將修飾符應用於實體事件嗎?
假設根據業務,我想限制某些使用者(地址)查看契約的日誌。我知道有可以設置為功能的“修飾符”,以授予訪問權限,但是我們可以對事件做類似的事情(下面只有AllowedAddress)嗎?否則有什麼替代方法可以這樣做?
contract MyData{ address allowedAddress; string A; modifier onlyAllowedAddress(){ require(allowedAddress == msg.sender); _; } event MyDataLogs(string _a) **onlyAllowedAddress**; function setA(string arg){ A = arg; MyDataLogs(arg); } }
沒有辦法做你想做的事。如果發送了一個事件,任何人都可以隨時隨地從任何節點讀取它(至少在目前版本的乙太坊中)。
AFAIK,你不能拋出一個事件。事件的目的基本上是記錄可以讀取的內容(通過觀看)。
您應該只在發送事件的方法中處理髮布事件(或不發布)的邏輯。
function setA(string arg) { A = arg; if (msg.sender == allowedAddress) MyDataLogs(arg); }