Transactions

0x0000000000000000000000000000000000000000 怎麼可能發送 ERC-20 代幣?

  • October 24, 2018

不是0x0000000000000000000000000000000000000000沒有人有私鑰的燒錄地址嗎?如果是這樣,該地址如何將代幣發送到其他地址?如果你查看 Etherscan 的 ERC-20 Token 選項卡,有很多 OUT 記錄:https ://etherscan.io/address/0x00000000000000000000000000000000000000000#tokentxns

根據ERC20 標準,新創建的 ERC20 代幣被發送0x0000000000000000000000000000000000000000到它們打算發送到的地址。它是作為一種記錄方式來完成的,並且是為了避免無中生有地創建令牌。

更新

ERC20 標準實際上並未定義代幣是從0x0000000000000000000000000000000000000000. 只需通過添加到balances所需使用者的映射、發出Transfer()事件並將該值添加到_totalSupply.

雖然標準中沒有定義,但最佳實踐是在創建令牌時將Transfer()事件0x0作為地址發出。它允許前端客戶端讀取事件並根據該事件顯示數據。從這篇文章:

這是通過這種方式完成的,因此僅解釋“轉移”事件的區塊瀏覽器和錢包可以向使用者顯示操作。使用者抱怨轉賬失敗,因為它沒有出現在他們的錢包(或區塊瀏覽器)中。

只有“Transfer”事件是 ERC20 標準的一部分,“Mint”和“Burn”事件不是。這是一種解決該限制的方法,即從 0x0 生成傳輸以模擬“Mint”事件,並從 0x0 傳輸以模擬“Burn”事件。

您在連結頁面上看到的每筆交易都是 Etherscan 對令牌創建的表示。

為了補充這一點,請查看已將 ERC20 代幣轉移到其他地方的任何地址。如果您點擊“ERC20 Token Tx”選項卡,您將看到將代幣從一個使用者發送到另一個使用者的交易。實際發生的是從發送者到代幣合約的交易,它減少了發送者的balances映射,添加到接收者的balances映射,並發出一個Transfer()事件。您在該選項卡上看到的只是 EtherscanTransfer()對令牌事件的讀取。

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