Solidity

如何使用 Solidity Burn 功能

  • June 7, 2022

新手來了

有人可以解釋如何在solidity合約中使用Burn函式嗎?我有一個 1 萬億供應量的代幣,我想在必要時燒掉 1%。該函式要求金額 = uinit256。我被困在輸入的內容上。我試過輸入 10000000000 並且它只燒掉 1 個令牌。

刻錄功能

大多數 ERC20 代幣隱含 18 位小數,這意味著“1 代幣”實際上意味著 1 * 10^18 個代幣在solidity 程式碼中。如果要燒掉 10^12 的 1%,實際上需要輸入 0.01 * 10^12 * 10^18 = 10^28。這是一個 1 後跟 28 個零:100000000000000000000000000000

請自己計算並確保這是正確的。

在發布問題之前,請深入了解契約。

ERC20 標準實現(大多數人使用)將餘額定義為uint256.

您還有一個呼叫的函式decimals,它允許外部代理將balanceOf數據解釋為小數而不是整數。

例子:

  • decimals() = 18- 作為@phaze 的指針,通常是這種情況,儘管您可以更改它
  • balanceOf(someAddress) = 100

在這種情況下,Metamask 和大多數網站會告訴你你有0.000...01代幣,而不是100. 這是因為它們在 UI 中將您的餘額顯示為balanceOf(you)/(10^decimals()).

但在 Remix 中,情況並非如此,因此您必須輸入10^decimals()要燃燒的數量才能燃燒。

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