はじめに
↑こちらの記事の続編になります
上記の記事を読まなくてもこの記事だけでERC20発行から行えます。
ERC20開発
ERC20発行
ERC20発行したことある方は復習で、ない方は上記「はじめに」の記事も参考にしつつ、MetamaskとRemixを連携させて、Ropstenでトークンを発行してみましょう。
こちらの便利ツールを使います。
SETTINGS
のName
、Symbol
に任意のトークン名を入力、
Premint
に任意の発行枚数を入力します。
コードをコピーして、Remixで作成した新しい.sol
ファイルににペーストします。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract SakeToken is ERC20 {
constructor() ERC20("SakeToken", "SAKE") {
_mint(msg.sender, 21000000 * 10 ** decimals());
}
}
MetamaskのTestnet、例えばRopstenに接続し、Contractは作成したファイルを選択し、デプロイします。
デプロイできました。
デプロイできたら、decimals
, Name
, Symbol
, totalSupply
ボタンを押してみましょう。
これらは関数で、Ethereumネットワーク上にあるデプロイしたコントラクトの状態を調べることができます。
デプロイに使ったアカウント(以下、アリスとする)をbalanceOf
の入力欄に入れ、call
ボタンを押してみましょう。
21,000,000 * 10**18発行されています。10の18乗はデフォルトの設定になります。
ERC20転送
別のアドレス(以下、ボブとする)を用意し、balanceOf
の入力欄に入れ、call
ボタンを押してみましょう。
デプロイしたアカウントにしかトークンは存在しないので、それ以外のアカウントは当然ながらゼロです。
このアカウントに対して、任意の額(この記事の見本では600万SAKE)を送ってみましょう。
転送できました。
再度、balanceOf
を見てみると、受け取った額が表示されています。
ERC20の委任
approve
approve
, transferFrom
関数を使うと、キャロルがSAKEを持っていなくても、ボブがキャロルにトークンの転送を委任することができます。
Remixに接続するアカウントをボブに切り替えます。
キャロル役のアカウントを用意し、approve
関数のspender
にキャロルのアカウントを、amount
に委任する任意の額(ここでは300万SAKE)を入力し、transact
ボタンを押します。
実行結果がこちら
allownance
のowner
にボブのアカウント、spender
にキャロルのアカウントを入力し、call
を押すと、委任した額が表示されていることを確認できます。
transferFrom
これまでとは別のアカウント(以下、デビットとする)を用意します。
transferFrom
のfrom
にボブのアカウント、to
にデビットのアカウント、amount
はボブがキャロルに委任した額の範囲内で入力し、キャロルのアカウントで実行します。
キャロルが実行し、ボブからデビットへ250万SAKE移動したことがわかります。
今回は、人が操作するEOA(Externally Owned Account)に対して、委任を行いましたが、
↓次回はコントラクトへの委任を行います。