Solidity

我們可以像函式一樣將修飾符應用於實體事件嗎?

  • September 25, 2017

假設根據業務,我想限制某些使用者(地址)查看契約的日誌。我知道有可以設置為功能的“修飾符”,以授予訪問權限,但是我們可以對事件做類似的事情(下面只有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);
}

引用自:https://ethereum.stackexchange.com/questions/26907