Solidity

智能合約的創建和功能

  • August 17, 2022

我最近在 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 的訪問控制來添加關於允許或不允許誰與您的合約功能互動的限制。在此處查看更多資訊:

https://docs.openzeppelin.com/contracts/2.x/access-control

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