Ganacheでプライベートネットのデータをリセットする手順

先日、Truffleの勉強中にGanache（プライベートネットのデータ）をリセットしようと思ってハマりました。
そこで以下のペットショップの例を元にプライベートネットのリセット手順をステップバイステップでまとめました。

#最初の状態
１番目のペットがSuccess状態になっており、プライベートネットにデータが書き込まれている状態です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/8198622d-4e86-ab41-6330-dbfca9a02bb3.png)

#Ganacheをリセット
Network IDを元々のIDと違うものにします。ここではカウントアップして5781→5782へ変更しました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/c69c8d7e-0eb7-539d-7b0b-a0430705e307.png)

「SAVE AND RESTART」ボタンを押すとデータ(及びコントラクト)の初期化が起こります。
この後画面が止まることがあるのでその場合はGanacheアプリを再起動してください。
以下のように全員のBALANCEが100に戻っていれば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/ea8a7d50-10bd-dd06-2e58-1d938cb0cb91.png)

#Metamaskのリセット
次にChromeの拡張機能の設定でMetamaskを一旦無効にして再度有効にします。
これで内部キャッシュが消えます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/bad49321-4575-fd87-e422-c0a4d5a32f97.png)

Account1のキャッシュが100に戻っていれば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/8ca2763a-a3df-52e7-281f-01c4531a40a6.png)

#再度デプロイ
コントラクトも消えてしまっているのでデプロイし直します。

```bash:スマートコントラクトをデプロイ(ここは各アプリによって異なる場合あり）
$ truffle migrate
Using network 'development'.

Running migration: 1_initial_migration.js
  Deploying Migrations...
  ... 0xa62e50bcc466353b229a9d9c4f1d61ff0c27eb3f7423174532eb9e875c318485
  Migrations: 0x8cdaf0cd259887258bc13a92c0a6da92698644c0
Saving successful migration to network...
  ... 0xd7bc86d31bee32fa3988f1c1eabce403a1b5d570340a3a9cdba53a472ee8c956
Saving artifacts...
Running migration: 2_deploy_contracts.js
  Deploying Adoption...
  ... 0x4f39b4b30e8d5283a79691f34367345f5d20ed5d1aeef99c6b44d1364ca72c22
  Adoption: 0x345ca3e014aaf5dca488057592ee47305d9b3e10
Saving successful migration to network...
  ... 0xf36163615f41ef7ed8f4a8f192149a0bf633fe1a2398ce001bf44c43dc7bdda0
Saving artifacts...
```

#Webサーバーのリセット
最後にWebサーバーもリセットします。

```bash:Webサーバーもリセット
$ npm run dev

> pet-shop@1.0.0 dev /Users/tomo1026/truffleProjects/pet-shop-tutorial
> lite-server

** browser-sync config **
{ injectChanges: false,
  files: [ './**/*.{html,htm,css,js}' ],
  watchOptions: { ignored: 'node_modules' },
  server: 
   { baseDir: [ './src', './build/contracts' ],
     middleware: [ [Function], [Function] ] } }
[Browsersync] Access URLs:
 -------------------------------------
       Local: http://localhost:3000
    External: http://192.168.1.43:3000
 -------------------------------------
          UI: http://localhost:3001
 UI External: http://192.168.1.43:3001
 -------------------------------------
[Browsersync] Serving files from: ./src
[Browsersync] Serving files from: ./build/contracts
[Browsersync] Watching files...
18.03.07 17:45:35 304 GET /index.html
18.03.07 17:45:35 304 GET /css/bootstrap.min.css
18.03.07 17:45:35 304 GET /js/bootstrap.min.js
18.03.07 17:45:35 304 GET /js/web3.min.js
18.03.07 17:45:35 304 GET /js/truffle-contract.js
18.03.07 17:45:35 304 GET /js/app.js
18.03.07 17:45:36 304 GET /pets.json
18.03.07 17:45:36 200 GET /Adoption.json
18.03.07 17:45:37 304 GET /images/scottish-terrier.jpeg
18.03.07 17:45:37 304 GET /images/french-bulldog.jpeg
18.03.07 17:45:37 304 GET /images/boxer.jpeg
18.03.07 17:45:37 304 GET /images/golden-retriever.jpeg
```

#確認
ペットたちがAdopt済み(Success）になっていなければリセット成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/10bb369d-18b8-4b22-c4a2-4f237fb454f0.png)

もう一度Adoptを試みます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/14825b45-0b48-ccde-d6cd-3714b125bc1d.png)

Submitすると残高が減ってトランザクションが完了していれば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/71b63208-c387-2ff4-adc5-8b7e79c0cb9c.png)

Webサイトを再更新するとSuccessになっていることが確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/113188/47b02b6b-5356-1f67-f6c0-92c7abe9edaf.png)