[英]How ERC20 Token Balances are stored on the Ethereum blockchain
我對ERC20代幣余額如何存儲在鏈上感到非常困惑。 似乎所有余額數據都存儲為成員映射變量:
contract TestCoin is ERC20Interface {
...
mapping(address => uint) balances;
...
我想知道區塊鏈上存儲了多少副本。 假設balances
包含1萬條記錄,最高塊數為100。現在我進行令牌轉移,更改了balances
2條記錄,我們得到了一個新的balances
,並通過新的塊101確認了此轉移。
<------- [Block 100] <------- [Block 101]
^ ^
| |
balance1 balance2
余額存儲在哪里? 是否可以在方框100中檢索余額? (我想我們必須能夠這樣做,因為區塊鏈可能會回滾)。
我正在使用geth / web3 / eth,如果您可以將我定向到相關的文檔頁面,那就太好了。
非常感激!
以太坊區塊鏈具有“狀態”的概念,其中每個合約(和地址)都有一個狀態,並且每個區塊都會為該狀態創建一個增量(變化)。 為了獲得當前余額,您必須掃描整個區塊鏈。
因此,如果我向您發送50個以太幣,則包含此交易的區塊將有效地導致我的帳戶中產生-50 Eth,給您的帳戶中產生50 Eth。
同樣適用於您在此處顯示的映射。 當發生相關事務時,在每個塊中向它們發送令牌時,映射僅包含相關地址(所涉及的地址)和這些地址中的增量。
這就是以太坊使用的“會計模型”和比特幣使用的UTXO模型之間的區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.