Mapping

mapping(address => uint) public balances如何獲得餘額?

  • August 31, 2021

我注意到balances作為映射

mapping(address => uint) public balances;

並充當字典,其中地址映射到餘額。(地址->餘額)。對於典型的字典,我們需要首先提供/初始化字典,其中包含一些address -> balance對的條目。但在solidity中,它仍然能夠獲取餘額。

這是如何實現的?

部署代幣合約時,映射為空 - 沒有數據。

通常,在部署期間,會鑄造一些令牌(憑空創建)並分配給部署者的地址。因此添加了一個條目,將部署者映射addressuint餘額。基本上它說“這個地址有這個餘額”。每當修改任何地址的餘額時,都會修改相同映射的uint值(對於給定的address)。

當有人查詢該地址的餘額時,使用相同的映射來檢索給定地址的餘額。

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