흔자
반응형

소각?

소각 기능은 토큰의 totalSupply를 줄여 가치를 유지하거나 높이는 데 도움이 되는 방법 중 하나이다. 

 

 

OpenZeppelin의 ERC20Burnable 컨트랙트 소개

ERC20Burnable 컨트랙트는 OpenZeppelin Contracts 라이브러리의 일부로 ERC20 토큰에 대한 burn 기능을 구현한다. 이 컨트랙트는 Context와 ERC20 컨트랙트를 상속하여 기본적인 ERC20 토큰 기능을 확장한다.

 

 

주요 함수

burn(uint256 amount) 함수는 호출자가 소유한 토큰을 소각할 수 있게 한다. 이 함수는 내부적으로 _burn 함수를 호출하여 토큰을 소각하며 호출자의 잔고에서 amount 만큼의 토큰이 차감된다. burnFrom(address account, uint256 amount) 함수는 호출자가 특정 계정(account)의 토큰을 소각할 수 있게 한다. 단, 호출자는 해당 계정의 토큰에 대한 소각 권한을 갖고 있어야 한다. 즉, 호출자는 account의 토큰에 대해 최소한 amount만큼의 허용량을 갖고 있어야 한다. 이 함수는 내부적으로 _spendAllowance와 _burn 함수를 호출하여 토큰을 소각한다.

 

 

예시(MyToken.sol)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";

contract MyToken is ERC20, ERC20Burnable {
    constructor(uint256 initialSupply) ERC20("My Token", "MT") {
        _mint(msg.sender, initialSupply);
    }
}

`MyToken` 컨트랙트는 ERC20 토큰 기능과 함께 소각 기능을 갖게 된다. 호출자는 `burn` 및 `burnFrom` 함수를 사용하여 소유한 토큰이나 허용된 토큰을 소각할 수 있다.

 

 

결론

이 글에서는 ERC20 토큰의 소각 기능을 구현하는 방법을 살펴보았다. OpenZeppelin Contracts 라이브러리의 `ERC20Burnable` 컨트랙트를 사용하여 소각 기능을 쉽게 구현할 수 있다. 이 컨트랙트를 사용하면 토큰 소유자나 그 허용량을 갖는 사용자가 토큰을 소각할 수 있으며 이를 통해 토큰의 가치를 유지하거나 높일 수 있다. 이 컨트랙트는 이벤트 분석을 통해 오프체인에서 토큰 소각을 인식할 수 있는 기능을 제공한다. 이 기능을 사용하여 토큰 프로젝트의 유연성과 가치를 높일 수 있습니다.

 

반응형
profile

흔자

@heun_n

즐겁게 개발하고 싶은 사람입니다.