Solidity

如何呼叫內部函式?或者如何保護 Withdraw 和 kill 功能?

  • December 10, 2017

我有一些功能,如撤回和自毀功能設置為內部,但我不能從“霧”中呼叫它們,然後我將它們公開,但我設置了修飾符:

modifier isOwner() {
if (msg.sender != owner) _; 
}

然後將 isOwner 添加到我的函式中

function kill() isOwner public {
   selfdestruct(beneficiary);
} 

但是當我嘗試從子帳戶(而不是所有者帳戶)呼叫它時,它可以工作!

您應該將修飾符更改為類似

modifier isOwner {
 require(msg.sender == owner);
 _;
}

在您的情況下,if正在檢查是否msg.sender不等於 owner ,如果為 true 則繼續執行程式碼。

你提到你試圖將你的函式設置為internal並且不能通過霧呼叫它們=>這是正常的,據我所知,標記為的函式internal只能在契約本身或衍生它的契約中呼叫(根據官方文件)。

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