Solidity
如何呼叫內部函式?或者如何保護 Withdraw 和 kill 功能?
我有一些功能,如撤回和自毀功能設置為內部,但我不能從“霧”中呼叫它們,然後我將它們公開,但我設置了修飾符:
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
只能在契約本身或衍生它的契約中呼叫(根據官方文件)。