簡體   English   中英

ERC20 代幣合約:批准 function 需要檢查調用者余額嗎?

[英]ERC20 token contract: does approve function need to check caller balance?

我正在閱讀 ERC20.sol 源代碼。 有一個關於批准 function 的問題。

function _approve(
    address owner,
    address spender,
    uint256 amount
) internal virtual {
    require(owner != address(0), "ERC20: approve from the zero address");
    require(spender != address(0), "ERC20: approve to the zero address");

    _allowances[owner][spender] = amount;
    emit Approval(owner, spender, amount);
}

在function中,它需要owner.= address(0)和spender?= address(0):我只是想知道我們應該在函數中進行金額檢查嗎? 如:

require(amount <= _balances[owner]);

謝謝。

我們應該在 function 中檢查金額嗎?

沒有。 批准 function 僅允許第三方消費者代表您使用您的代幣。 您只需允許某人或智能合約使用您的 ERC20 代幣。 這並不意味着他們可以花費無限的代幣。

假設您讓智能合約花費 1000 個 ERC20 代幣。 該智能合約將能夠代表您從您的余額中花費多達 1000 個代幣。 但前提是您有足夠的余額進行交易。 因此,允許的智能合約可以調用 transferFrom 方法,並且只有在您有足夠的余額並且允許智能合約花費足夠的代幣時,才能將您的代幣發送到另一個錢包。

所以不,你不必在批准時檢查錢包是否有足夠的余額,因為只有在轉移代幣時才需要這個條件。

希望這些信息有用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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