반응형
Burn이란?
Burn(소각)은 Mint 한 토큰을 없애는 행위를 말한다.
이더리움 프로토콜인 erc20이나 erc721 프로토콜에는 burn과 관련된 함수는 없다.
스마트 컨트랙트 구현 시 많이 사용하는 openzepplin에서
제공하는 erc721 template에는 burn 함수가 구현되어 있다.
function burn(uint256 tokenId) public virtual {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
_burn(tokenId);
}
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId, 1);
// Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook
owner = ERC721.ownerOf(tokenId);
// Clear approvals
delete _tokenApprovals[tokenId];
unchecked {
// Cannot overflow, as that would require more tokens to be burned/transferred
// out than the owner initially received through minting and transferring in.
_balances[owner] -= 1;
}
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
_afterTokenTransfer(owner, address(0), tokenId, 1);
}
기본적으로 Burn은 아무도 사용할 수 없는 지갑으로 토큰을 보낸다고 생각하면 된다.
Eater Address라고 하는 누구도 개인키를 알 수 없는 지갑이나 누구도 소유하지 않은
'0x0000000000000000000000000000000000000000' 지갑으로 보내는 방식이다.
Burn은 되돌릴 수 없는 행위이므로 하기 전에 한번 더 생각해 보도록 하자.
반응형
그리드형
'암호화폐 > 용어' 카테고리의 다른 글
에드작이란? (1) | 2024.09.04 |
---|---|
FDV vs MCAP? (0) | 2024.06.19 |
FDV, MCAP란? (0) | 2024.06.07 |
비트코인 피자데이란? (0) | 2024.03.29 |
DePIN이란? (0) | 2024.03.21 |