こんにちは、エンジニアのオオバです。

ブロックチェーン技術自体に興味をもってしまったため、
ここ最近プライベートの時間をブロックチェーン学習にあてています。

今回は前回までに採掘して得たether(イーサ)の送金処理をやってみたいと思います。

これらが済んでいない方は
👇コチラの記事を参考にしてください。

今回もコチラのサイトを参考にさせていただきます。いつもありがとうございます。
etherを送金する - Ethereum入門

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

各アドレスの所持ether(イーサ)確認

本シリーズではEOAアカウントを2個作り、
片方のアカウントで採掘しました。

ここで両アカウントの所持ether(イーサ)を確認します。

> eth.accounts  
["0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65", "0x2a93c84276d063851c307a9a490e5f83f75153e1"]  

> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")  
10485  

> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether")  
0  

eth.getBalanceメソッドで所持ether(イーサ)を調べることができます。
このように0番目のアカウントは10485イーサを所持していることがわかります。

では本記事の本題。
0番目のアドレスから、1番目のアドレスに10イーサを送金してみます。

ether(イーサ)の送金手順

  1. 送り主のアドレスをロック
  2. 送金

という流れです。

送り主のアドレスをアンロック

以下のコマンドを打つと、パスワードを聞かれます。

> personal.unlockAccount(eth.accounts[0])  

成功すると以下のようにtrueが返ります。
※【注意】パスワードの復旧はできません

Unlock account 0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65  
Passphrase:  
true  

sendTransactionメソッドで送金処理を実行します。

>eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(10, "ether")})  

ドキュメントどおりに実行していますが、
以下のエラー。

Error: invalid sender  
 at web3.js:6347:37(47)  
 at web3.js:5081:62(37)  
 at :1:20(21)  

また本ドキュメントは2018/3/10 現在、制作中です。
本書について - Ethereum入門

現在2021年5月(本記事執筆時)。
3年前のドキュメントということで一筋縄では行きそうになさそうです。

2021.05.09
本記事のコメントで助言をいただき、解決しました!!

👆の記事内のmyGenesis.jsonの中身を修正しています。
書き換え後、再度ジェネシスブロックの初期化。

$ geth --datadir ./eth_private_net init ./eth_private_net/myGenesis.json  

👆初期化コマンドです。
再度送金処理をすると成功しました!感謝!!

送金が完了したら送付側の所持ether(イーサ)を確認します。

受け取り側の所持ether(イーサ)の確認

早速、送付先の所持ether(イーサ)を確認します。

> eth.getBalance(eth.accounts[1])  
0  

10イーサ送ったはずなのに0。。。

トランザクションはマイニングしないと実行されない

そう、マイニングしていないと送金(トランザクション)は完了しません。
ということで採掘を開始します。

>miner.start()  

再度所持イーサを確認します。

> eth.getBalance(eth.accounts[1])  
10000000000000000000  

10イーサ送金されています!!できた!!

最後に

何とか送金までこぎつけました。
コメントで助言していただき本当に助かりました。
完全に詰んでいたので本当に感謝です。

次回はIDEを使った開発環境の構築です。

オススメ記事
参考サイト