簡體   English   中英

ERC20代幣余額如何存儲在以太坊區塊鏈上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM