世界一と噂されるCARDANOのステークプールを立てる ～ TestNet セルフノード編 #送金トランザクション

こんにちは！
[サトー＠CARDANOステーキングプール](https://qiita.com/Kenichi_Sato)です。今日は、「カルダノブロックチェーン 送金トランザクションの実行」について書いていきます。


（注）**「世界一と噂されるCARDANOのステークプールを立てる ～ TestNet セルフノード編」**の 記事は、次の記事で構成されています。
1. [世界一と噂されるCARDANOのステークプールを立てる ～ セルフノードのインストール](https://qiita.com/Kenichi_Sato/items/3b3bdabe93dbb276d8c6)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ セルフノードの起動](https://qiita.com/Kenichi_Sato/items/e6143352f44190f0bdae)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ アドレスの設定](https://qiita.com/Kenichi_Sato/items/71c13d7cdd281f0cea84)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ 送金トランザクションの実行](https://qiita.com/Kenichi_Sato/items/6818d12ec2c507c86102)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ ステークプールの作成](https://qiita.com/Kenichi_Sato/items/7e1e83094e69aef6f5e1)



#1.はじめに

2019年10月18日現在、カルダノ ブロックチェーン プロジェクトは、カルダノネットワークを分散化するためのステップとして「Shelley（シェリー）」の開発を行っています。
開発にあたって「Shelley（シェリー）」は、以下の3段階のマイルストーンが設定されています。
　・セルフノードの実装とホスティング
　・ネットワークテスト
　・インセンティブステージ

今回は、「セルフノードの実装とホスティング」のステップにおける「セルフノード環境でのトランザクションを新規に作成、トランザクションに情報を書き込み、証人情報の入力、トランザクションを発行」について行い、まとめてみました。アドレスをデバッグ、テストするためのJCLIのコンポーネントを利用しています。

この記事の内容を実施する前に、「セルフノードのインストール」（#URLリンク）、「セルフノードの起動」（#URLリンク）を行う必要があります。

##1-1. 環境
Windows10 Pro
Ubuntu 18.04.3 LTS


#2.具体的な手順
①蛇口からAさんにスクリプトファイルを使用して資金を送金する

##ノードを起動
「カルダノブロックチェーン セルフノードの起動」（自己記事へのリンク）☆★
##送信先（Aさん）の秘密鍵、公開鍵、アカウントアドレスをテスト用に作成する。

秘密鍵の生成するコマンド
jcli key generate --type=Ed25519Extended > receiver_secret.key
関連する公開鍵を取得するコマンド
cat receiver_secret.key | jcli key to-public > receiver_public.key
アカウントアドレスを取得するコマンド
jcli address account --testing $(cat receiver_public.key) 

![2019-10-22_22h16_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469763/3a4f30bb-56f7-8957-8536-1c46a2fbc1a6.png)

##スクリプトはノード起動時に、フォルダ内に自動生成される「faucet-send-money.sh」を使用する。

![2019-10-22_22h19_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469763/9b5ebc53-3a0f-8a49-8654-473a20e651ed.png)

##蛇口とAさんの情報をまとめると以下の通り
尚、蛇口の秘密鍵は、faucet-send-money.sh内に定数として書き込まれています。

|　　　　　　　　　　　  |蛇口 | Aさん |
|:-----------:|:------------:|:------------:|
| 秘密鍵 |ed25519e_sk12r4560athjfp0urtch8e9fxc4y7dug8k5ggfv59qtjr0q9crhf8u8nntmpsyuxt7hrt6qczzsy8j4x8ykvmquva493akng0f84epf4gy2d4sh| ed25519e_sk1jqsz76k5zwpf7npkk3t9n0z7ans052l0j03khe2xtdspd9duf9924axs2wnuvq4j6ku090h0cxeaudzcl9jrssjyruv7fj2d4u70vfsggruvz         |
| 公開鍵| ed25519_pk10n843jqf3t2nkf048u80e44zcuac2ck5t0m979rxvfj9t6w5n9zs4ff8q8| ed25519_pk1wulv27zj09j00jeayl0ex2206lttg809vmaa47qfwqpd0k3dae9qa6pymq|
| アカウント| <font color="DarkGreen">ca1s47v7kxgpx9d2we975lsalxk5trnhptz63dlvhc5ve3xg40f6jv52r700za</font>| <font color="DeepSkyBlue">ca1s4mna3tc2fukfa7t85nalyeffltaddqau4n0hkhcp9cq94769hhy552gygl </font>|


##faucet-send-money.sh スクリプトファイルを実行して資金を送金
それでは、実際に、faucet-send-money.sh スクリプトファイルを実行して資金を送金してみます。

コマンドは以下の通りです。
./faucet-send-money.sh  <送付先のアカウントアドレス> <資金> 

![2019-10-22_22h48_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469763/df298d13-d383-a33e-ea8f-5ce4739dbce4.png)

##蛇口アカウントの状態を確認する

jcli rest v0 account get <font color="DarkGreen">ca1s47v7kxgpx9d2we975lsalxk5trnhptz63dlvhc5ve3xg40f6jv52r700za<font> -h  http://127.0.0.1:8443/api

![2019-10-22_22h49_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469763/48ea51fc-0c30-804d-7bb7-9b90bde5a647.png)


value: 999999998990　　　←　送金した1000とマイナーへの報酬10が減っている

送付先（Aさん）のアカウントの状態を確認する。


jcli rest v0 account get  <font color="DeepSkyBlue">ca1s4mna3tc2fukfa7t85nalyeffltaddqau4n0hkhcp9cq94769hhy552gygl</font> -h  http://127.0.0.1:8443/api


value: 1000　になっていることが確認できる。


ログを確認する。
jcli rest v0 message logs -h http://127.0.0.1:8443/api

![2019-10-22_22h58_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469763/5e03b558-27e7-7ef5-14a4-584958b558cc.png)

トランザクションの実行結果（ステータス）

InABlock: 正常終了、、、"4.707"
Pending: 保留中・・・・ブロックに追加中
Rejected:拒否・・・この場合は、拒否する理由のメッセージが出力される

#３.最後に

カルダノ ブロックチェーン 「セルフノードのトランザクション」について実行した結果をまとめてみました。今回は、「faucet-send-money.sh」スクリプトファイルを利用して資金を送金することを行ってみました。　　「faucet-send-money.sh」の中のプログラムを解析してみたり、コマンドを手動で実行することで、より一層理解が進みました。「faucet-send-money.sh」の中のプログラムを解析して今回作成して実行したトランザクションのイメージは次の通りです。

<蛇口からAさんへのTX>

トランザクションID :f1a86120f97b1882f4543f0d854d0c1dce51479263e850fd3928dbdb86efc74a 

| input   | output |
| --- | --- |
|  　　　　　　　　　　　　　　　　　　　　　　　　　| <font color="DeepSkyBlue">ca1s4mna3tc2fukfa7t85nalyeffltaddqau4n0hkhcp9cq94769hhy552gygl</font> |

関連アカウント:<font color="DarkGreen">ca1s47v7kxgpx9d2we975lsalxk5trnhptz63dlvhc5ve3xg40f6jv52r700za</font> 


このようにoutputが未使用な状態のトランザクション(utxo)をカウントとすることで特定のアカウントの所有するコイン数を計算します。
私が実行したjormungandr のバージョンはv0.3.3でしたが、v0.6.5（2019/10/18 現在の最新）でも動作確認ができています。


（注）**「世界一と噂されるCARDANOのステークプールを立てる ～ TestNet セルフノード編」**の 記事は、次の記事で構成されています。

1. [世界一と噂されるCARDANOのステークプールを立てる ～ セルフノードのインストール](https://qiita.com/Kenichi_Sato/items/3b3bdabe93dbb276d8c6)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ セルフノードの起動](https://qiita.com/Kenichi_Sato/items/e6143352f44190f0bdae)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ アドレスの設定](https://qiita.com/Kenichi_Sato/items/71c13d7cdd281f0cea84)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ 送金トランザクションの実行](https://qiita.com/Kenichi_Sato/items/6818d12ec2c507c86102)
1. [世界一と噂されるCARDANOのステークプールを立てる ～ ステークプールの作成](https://qiita.com/Kenichi_Sato/items/7e1e83094e69aef6f5e1)