Mapping

在 ERC20 合約中實現 balanceOf(不使用 openzepellin)

  • February 11, 2022

我是一個菜鳥,並試圖穩固地實現 balanceOf 功能。標準 API 是

function balanceOf (address account) public returns(uint256)

但是,我懷疑它需要從映射中讀取餘額。但映射尚未定義。需要嗎?這樣做的正確方法會是下面嗎?在函式之前定義映射。

mapping(address => uint256) internal balances;

function balanceOf (address account) public returns(uint256){ 
   return balances[account];

我假設您在實現中使用 EIP-20 作為參考。

https://eips.ethereum.org/EIPS/eip-20

話雖如此,定義每個功能的邏輯完全取決於您。我同意將每個地址映射到餘額是實現的充分方法balanceOf,實際上這正是OpenZeppelinConsenSys所做的。另一種方法是使用這裡Storage顯示的契約。

我還要補充一點,您的balanceOf函式不會更改契約的狀態,因此將其可見性設置為view.

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