Mapping
在 ERC20 合約中實現 balanceOf(不使用 openzepellin)
我是一個菜鳥,並試圖穩固地實現 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
,實際上這正是OpenZeppelin和ConsenSys所做的。另一種方法是使用這裡Storage
顯示的契約。我還要補充一點,您的
balanceOf
函式不會更改契約的狀態,因此將其可見性設置為view
.