Solidity
如何使用 Solidity Burn 功能
新手來了
有人可以解釋如何在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()
要燃燒的數量才能燃燒。