Tokens

ERC-20 代幣如何運作?

  • October 26, 2017

我以為我了解 ERC-20 代幣。但是,我想購買少量的基本注意力代幣(例如 5 美元)來學習和試驗。那時我意識到我並沒有像我想像的那樣理解他們。對我來說令人困惑的部分基本上是在傳輸和儲存中。請允許我以 BAT 為例。

Brave 瀏覽器可讓您通過將 Ether 發送到您的 Brave 錢包來添加資金。該錢包的地址在 Brave 瀏覽器中提供。假設我不想立即使用所有 BAT。因此,我想將不想使用的 BAT 儲存在 Ledger 之類的硬體錢包上。我正在嘗試這個只是為了了解它是如何工作的。這就是我感到困惑的地方。

據我了解,我看不到將 BAT 發送到某個地址的方法。一旦它進入 Brave Wallet,它就在那裡。即使可以選擇將 BAT“發送”到某個地址,我也不知道將其發送到 Ledger 上的哪個地址。什麼表示錢包地址是“BAT”錢包地址?單個乙太坊錢包會自動辨識代幣類型嗎?或者,每個代幣都需要自己的錢包嗎?有人告訴我,Ledger 錢包可以存放 BAT。然而,Ledger 應用程序似乎只辨識 Ether。

那麼,每個 ERC-20 代幣都需要自己的錢包嗎?或者,您是否只需要一個乙太坊錢包並且乙太坊平台可以辨識代幣的類型?雖然我以 BAT 為例,但我也試圖在其他 ERC-20 代幣的背景下理解它。

包含 BAT 的錢包和不包含 BAT 的錢包之間沒有區別(當然,除了現在可以發送 BAT 代幣這一事實之外)。事實上,BAT 代幣從未真正儲存錢包中。代幣“儲存”在 BAT 合約中——所有符合 ERC-20 標準的代幣都是如此。每個 ERC-20 合約都包含錢包地址到賬戶餘額的映射。支持 ERC-20 的錢包會知道ERC-20 的軟體界面具有balanceOf檢查代幣餘額的功能以及一些用於轉移命名transfertransferFrom. 您可以將“轉移到錢包”更多地視為“對相關 ERC-20 合約的請求,以代表錢包所有者持有代幣託管”。

由於接收代幣的賬戶實際上並沒有收到任何代幣(這是代幣合約中的一些數字轉移),要查看您是否有任何特定類型的代幣,您需要查詢相應代幣的映射。一些錢包可能會自動檢查(AKA watch)一些常見的代幣,但功能齊全的乙太坊錢包應該能夠與任何 ERC-20 代幣進行互動;它只需要使用者輸入來將其“注意力”指向特定的 ERC-20 合約。即使您在錢包地址收到代幣,功能不全的乙太坊錢包也可能不允許您與合約進行互動。在這種情況下,您需要導出錢包的私鑰並將其導入功能更強大的錢包。不用擔心; 那些令牌不會失去!

如果您想將您的 BAT 代幣發送到另一個 ETH 地址,您可以使用合約頁面上的MyEtherWallet來實現。請注意,這只有在您有權訪問以下其中一項時才有可能:您的密鑰庫/JSON 文件、助記詞或私鑰。您需要提供 BAT 代幣合約的地址,即:

0x0d8775f648430679a709e98d2b0cb6250d2887ef

您還需要提供傳輸函式的 ABI / JSON 介面,通常是:

$$ {“constant”:false,“inputs”:[{“name”:“to”,“type”:“address”},{“name”:“amount”,“type”:“uint256”}],“name”:“transfer”,“outputs”:[{“name”:"",“type”:“bool”}],“payable”:false,“stateMutability”:“nonpayable”,“type”:“function”} $$ 然後,您需要選擇“訪問”,然後選擇“選擇功能”,在下拉菜單中您應該會看到傳輸功能。然後你需要填寫 2 個參數,你想發送代幣的地址和你想發送的代幣數量。請注意,如果要發送 1 個令牌,則需要輸入 1 後跟 18 個 0。這是因為 BAT 是 18 位十進制標記。如果您只是輸入 1,那麼您只會發送 0.000000000000000001 BAT。

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