オリジナルトークンをイーサリアムのテストネットワーク上で作ってみた


## 動作確認環境

- Mac OS Monterey
- Windows 10


## 準備

### テストネットGoerliのETHを入手

こちらを参照
https://qiita.com/blueplanet/items/19cf073bc205c7e497be


### Remix


Remix とは、Solidity言語のコントラクトの作成・コンパイル・実行をwebブラウザ上できる開発環境。

#### ローカルと同期　（ここは無くてもトークンは作れる）

webブラウザで開発できるが、一応ローカルのファイルと連動するパッケージをインストールする。（開発するファイルのある場所のローカルのパスに移動してから以下のコマンド）

詳細は公式のこちら
https://remix-ide.readthedocs.io/en/latest/remixd.html#update-to-the-latest-remixd

```
$ npm install -g @remix-project/remixd
```

permission denied　エラーが出たら、sudo をつける。
または、１度アンインスールしてから再度実行する。

```
$ npm uninstall -g remixd
$ npm install -g @remix-project/remixd
```

<br><br>


Remix にアクセス
https://remix.ethereum.org

左側の 「default workspace」 をクリック
<img width="400" src="https://i.gyazo.com/065e8f6e5fc48e3cb24f91e305d68b41.png">

「connect to localhost」をクリック
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/c0c60fc9-9bad-6a3c-22e4-5d58685fa5bb.png">

　「Connect」 をクリック
<img width="400" src="https://i.gyazo.com/541547d43f5a85b959c23d603a17c4f1.png">



Remix と　ローカル　を同期するコマンドを実行

```
$ remixd -s <ローカルの絶対パス> --remix-ide https://remix.ethereum.org
（例）　remixd -s /Users/tatsuya1970/projects/ERC20-TEST --remix-ide https://remix.ethereum.org

[WARN] latest version of remixd is 0.5.7, you are using 0.5.1
[WARN] please update using the following command:
[WARN] npm install @remix-project/remixd -g
[WARN] You may now only use IDE at https://remix.ethereum.org to connect to that instance
[WARN] Any application that runs on your computer can potentially read from and write to all files in the directory.
[WARN] Symbolic links are not forwarded to Remix IDE

[INFO] Sun Apr 10 2022 10:49:12 GMT+0900 (日本標準時) remixd is listening on 127.0.0.1:XXXXX
[INFO] Sun Apr 10 2022 10:49:12 GMT+0900 (日本標準時) slither is listening on 127.0.0.1:YYYYY

```

remixd is listening on　・・・
slither is listening on　・・・
とメッセージが出たら成功

ここはこのままにして、Remix での開発に入る。

<br><br>

### 開発

Remix で　フォルダ「contracts」内に新規ファイル作成

以下のリンク先にあるサンプルコードを少し変えて
https://docs.openzeppelin.com/contracts/4.x/erc20

私の名前TatsuyaにあやかったTatsuトークン（TAT）を発行するコントラクト

```TatsuToken.sol
// contracts/TatsuToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

contract TatsuToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("Tatsu", "TAT") {
        _mint(msg.sender, initialSupply);
    }
}
```

SOLIDITY COMPILER に移動し
コンパイラーのバージョンを合わす

[![Image from Gyazo](https://i.gyazo.com/f90d591272c9c1eb0aa7c68565bd223a.png)](https://gyazo.com/f90d591272c9c1eb0aa7c68565bd223a)

「Ｃompile」 をクリック
[![Image from Gyazo](https://i.gyazo.com/b86c1f0b0323f58aee49f0734a126f18.png)](https://gyazo.com/b86c1f0b0323f58aee49f0734a126f18)



DEPLOY & RUN TRANSACTION に移動

1, ENVIRONMENT : Injected Web3
   MetaMAsk が立ち上がります。
2, CONTRACT : TatsuToken - TatsuToken.sol
3, デプロイしたいトークン量

4､　Deploy をクリック

[![Image from Gyazo](https://i.gyazo.com/b7ec61f35226c08702e4a16dfee0fcad.png)](https://gyazo.com/b7ec61f35226c08702e4a16dfee0fcad)

MetaMask が立ち上がり、以下のような画面になるので「確認」をクリック

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/f029ab45-95c7-3a1a-640c-5d504aac0fb9.png">





## 残高照会

### Remix
さきほどのとことの
１，[balanceof] に先ほどトークンを送ったアドレスを入力し、call
２， unit256 の横にある数字が残高

<img width="400" src="https://i.gyazo.com/1d5ac0ab8549296c331267114266c2e4.png">


### MetaMask 
コントラクトアドレスを控える。
<img width="400" src="https://i.gyazo.com/2f350ef681600f388ebcf8a2c3392043.png">

MetaMask を起動

トークンをインポート
<img width="400" src="https://i.gyazo.com/21c14f284e0d5b3eaf9ea17a375bf381.png">


さっき控えたコントラクトアドレスを入力
<img width="400" src="https://i.gyazo.com/55490aadce554b95a94d58ff4ab710c5.png">

残高が表示される。
ちなみに、Metamask では18桁分の１が表示される。
（なんでか、よく分かってない）

<img width="400" src="https://i.gyazo.com/491497b28a1d0d882e7369c691653585.png">

## 送金

### Remix
他のアドレスにトークンを送るには
transfer で　送信先アドレスと量を入力し「transact」をクリック

<img width="400" src="https://i.gyazo.com/77f95c9aa3d8fc43baf64f70136bf397.png">


### MetaMask
もちろんMetaMask でも送金できる。
<img width="400" src="https://i.gyazo.com/078e558129d30a29ac88448a3e38a63e.png">


以上。