Solidity
智能合約的創建和功能
我最近在 Fantom 上創建了一個智能合約,並想知道一些細節:
- 薄荷功能
- 刻錄功能
任何使用者或開發人員都可以與這些功能進行互動嗎?例如,使用我新創建的令牌。如果我要將這些發送給另一個使用者,他們可以燒掉它們嗎?或者他們可以再鑄幣嗎?
這些功能是如何管理的?
燒錄功能範例:
function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); }
謝謝。
這取決於智能合約的實施。通常,burn 和 mint 函式有某種修飾符來限制其他人呼叫它們。但有時,合約的實施者會犯錯誤和漏洞利用,例如crypto-burger。
在您的範例中,它是一個內部函式,這意味著它僅在您的契約中被呼叫。但是由於您還沒有發布所有程式碼,因此很難說誰可以呼叫或不能呼叫。
您可以使用 OpenZeppelin 的訪問控制來添加關於允許或不允許誰與您的合約功能互動的限制。在此處查看更多資訊: