Help us understand the problem. What is going on with this article?

OpenZeppelinのERC20Burnableの目的

More than 1 year has passed since last update.

こんにちはJPです。(https://twitter.com/salvacion_jp)

トピックはERC20Burnableについてです。This article tackles how tokens are issued and burned.

OpenZeppelin

This is a library for secure smart contract development.

https://github.com/OpenZeppelin/openzeppelin-solidity

ERC20Burnableとは

これは不可逆的に焼けたされた可能性のあるトークンです。

Source: token/ERC20/ERC20Burnable.sol

ERC20BurnableのFunction

_burn

Overrides ERC20._burn in order for burn and burnFrom to emit an additional Burn event.

引数:
who - address
value - uint256

function _burn(address who, uint256 value) internal

burn

Burns a specific amount of tokens.

引数:
value - The amount of token to be burned.

function burn(uint256 value) public

burnFrom

Burns a specific amount of tokens from the target address and decrements allowance.

引数:
from - address The address which you want to send tokens from
value - uint256 The amount of token to be burned

function burnFrom(address from, uint256 value) public

https://openzeppelin.org/api/docs/token_ERC20_ERC20Burnable.html

ERC20Burnableの必要性

Scalability and Security

トークンの作成中に、トークンの初期供給が定義される。 すべては当初契約作成者に属します。Function は、契約作成者だけが呼び出し可能で、呼び出されるとさらに多くのトークンを発行します。

これからの新しいトークンは、まず契約作成者になります。

Issue and Burn

function issueTokens(uint256 extraTokens) public{
// Make sure only the contract creator can call this
require(msg.sender == creator);
balances[msg.sender] = balances[msg.sender].add(_extraTokens);
//We have to emit an event for each token that gets created
for(uint i = maxId.add(1); i <= maxId.add(
extraTokens); i++){
emit Transfer(0x0, creator, i);
}
maxId += _extraTokens; //<- SafeMath for this operation
// was done in for loop above
}

As per the article, in both the cases of addition add function from SafeMath was used so that it would not result to a huge value of _extraTokens.

function burnToken(uint256 tokenId) external{
address owner = ownerOf(_tokenId);
require ( owner == msg.sender
|| allowance[_tokenId] == msg.sender
|| authorised[owner][msg.sender]
);
burned[
tokenId] = true;
balances[owner]--;
emit Transfer(owner, 0x0, _tokenId);
}

Summary

ERC 721のトークンは、より具体的なものを表します。トークンホルダーがより多くのトークンを作成できるようにしたくない場合、functionを使います。

https://medium.com/coinmonks/jumping-into-solidity-the-erc721-standard-part-3-5f38e012248b

ありがとうございました。

jpgsalvacion
こんにちは、JP です。現在奥多摩日本語学校の学生です。前職でQAテスターとして働いていました。私は学校のブランディングのためにデジタルマーケティング活動をしています。よろしくお願いします。
bit-okutama
外国人ITエンジニア育成を目的とした日本語学校です
http://bit-okutama.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away