¿Cómo quemo monedas con esta función? Y pregunta general sobre "quemar" tokens ECR-20


 /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

**Pregunta adicional

Si el titular de un token envía un token a la dirección (0) o 0x0, ¿se reduce automáticamente el suministro de ese token? o, ¿tienen que usar la función "quemar" si está incluida en el contrato para reducir el suministro?

Respuestas (1)

Por lo general, durante la creación del contrato, el creador del contrato realiza dos funciones separadas para grabar y transferir tokens. En aras de la simplicidad. Normalmente, las personas seguirán la siguiente sintaxis para transferir el token en el que no puede transferir a la dirección (0) para que su token no se queme.

function transfer(address recipient, uint256 amount) public {
        require(sender != address(0), "ERC20: transfer from the zero address");
    

Y para la cantidad de quema, la gente usará esta sintaxis.

function burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

En esta función, quemará la cantidad de la cuenta del usuario y reducirá el suministro total. Depende del creador del contrato lo que quiere escribir, pero por lo general todos los programadores siguen este enfoque. y es mucho mejor que un código complejo. Como referencia, lea este código: enlace Y perdón por mi pobre inglés. ¡Disfruta tu día!