プログラミング

【初心者向け】gethのコンソール上でマイニングする方法をまとめてみた

gethを用いてノードを立てることができ、ネットワークに参加することができます。開発フェーズによってアクセスするネットワークを変更することで、スムーズにスマートコントラクトの検証を行うことができます。アカウントの作成方法についてまとめました。今回は、マイニングをまとめてみました。

2019.09.16
【初心者向け】gethのコンソール上でマイニングする方法をまとめてみた

arrow_drop_down 目次

前回の記事の続きなので、gethのアカウント作成までをしていない方は読んで見てください。今回は、gethを起動させ、アカウントの作成をしマイニングをしていきたいと思います。

マイニング開始

 作成したアカウントを元に、マイニングを開始します。今回はスレッドを2としマイニングを開始します。

> miner.start(2)

結果は、

null


マイニングを確認

次に、コマンドでマイニング中であることを確認していきます。

> eth.mining

結果は、

true

となっておけば成功です。

coinbaseの残高を確認

マイニングするたびにetherが獲得でき、coinbaseの残高が増加していくのを確認していきます。

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

結果は、

175

0より大きい数字が出力されていたら成功です。

etherを送金

続いては、eth.sendTransaction関数を使ってetherを送金してみましょう。

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

結果は、

Error: authentication needed: password or unlock
    at web3.js:3143:20
    at web3.js:6347:15
    at web3.js:5081:36
    at <anonymous>:1:1

上のような結果が出ます。

これは、eth.accounts[0]をロック解除していないために発生するエラーです。

そこでロックを解除します。アカウント生成時に設定したパスワードを入力してください。

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

結果は、

Unlock account 0x2554a01435e6304b4bc00ec9bc25f5184c35c904
Passphrase: (パスワードを入力)
true

と表示されたら解除成功です。プライベートのテスト環境なので、都度パスワードを入力するのは面倒。そこで、geth起動時に解除する方法もあります。

まずは、gethを終了しましょう。

> exit

一度、eth_privateのディレクトリの中に、テキストボックスを作成してください。

テキストボックスの中に下記を記載して保存してください。

password
password
password
password

起動時にパスワード解除するオプションは、

> geth --networkid "15" --nodiscover --datadir "~/eth_private" --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" --targetgaslimit "20000000" --unlock  0x2554a01435e6304b4bc00ec9bc25f5184c35c904, 0x20a0b8c676bdf803f0c3fc61755cfa536dbd443d, 0x628e9e4c85643a23fffeac8955b782f65154a4ec ,0x38288fc39b1fe15faf7df76c75af0d86485789c4 --password "password.txt" console 2>> ~/eth_private/geth_err.log 

マイニングで得たetherを送金

マイニングで得たetherを送金してみましょう。

アカウント2に10 etherを送金していきます。

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

結果は、

"0xb28ffc72b75ac9cb623530c3b5a7d74314e46ffbc96d16c059bc2afba2107e39"

上記のように、16進数のトランザクションハッシュが出力されます。トランザクションハッシュは毎回都度異なる値が出力されます。

トランザクションの中身を確認

>eth.getTransaction('0xce67645e3b3234c1cf82ec47c2cd919c969ce2a5939454974c0a3395017b9c45')

結果は、

{
  blockHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  blockNumber: null,
  from: "0x2554a01435e6304b4bc00ec9bc25f5184c35c904",
  gas: 90000,
  gasPrice: 1000000000,
  hash: "0xb28ffc72b75ac9cb623530c3b5a7d74314e46ffbc96d16c059bc2afba2107e39",
  input: "0x",
  nonce: 0,
  r: "0x4205462121b63fc3b96d74b3c10484d21ff9750b77ac1cfe0fd51ccbb37e311f",
  s: "0x4809c632602e0ffdd933b7a0c0ab7f2a426f824c21f71d4f96c73f40be30001a",
  to: "0x628e9e4c85643a23fffeac8955b782f65154a4ec",
  transactionIndex: 0,
  v: "0x1c",
  value: 10000000000000000000
}

と出力されます。

fromに送信元アドレスのeth.accounts[0]、toに送信先アドレスのeth.accounts[2]が表示されていると思います。valueは送金額、10000000000000000000 と大きくなっていますが、表示がweiなのでetherに菅さんすると10etherとなり、想定通りのトランザクションを発行できていると思います。

まとめ

いかがでしたか?マイニングを体験し送金まで体験してみたいと思います。

gethの終了コマンドは、

>exit


でできるので、終了しましょう。

今回は、3回に渡ってgethコンソールの扱いをご紹介させていただきましたが、次回は、solidityについてご紹介していきたいと思います。

「PR」自身の力でブロックチェーンアプリケーションを作ってみませんか?

自身の手でブロックチェーンアプリケーションを作りたいと考えている方は、プログラミングスクールに通ってみてはいかかでしょうか?

  • ブロックチェーンを学んで、今までにない何か作ってみたい
  • 今のうちにブロックチェーンの概念を理解し、開発もできるようになっておきたい
  • プログラミング初心者だけどブロックチェーンアプリケーションを作ってみたい
  • 独学で本や記事を見ながら勉強したけど、途中で一度挫折してしまったためメンターをつけて学びたい

と感じてる方は、BLOCKCHAIN Code Campがおすすめです。

BLOCKCHAIN Code Campとは

プログラミンング初心者からでもブロックチェーンアプリケーションを作ることができるオンライン完結型のプログラミングスクールです。現役のブロックチェーンエンジニアが1対1でメンターとなって、最短3ヶ月で、ブロックチェーンの概念や、ブロックチェーンアプリケーションを作れるようになれます。

現在無料相談会も実施しております。 少しでもご興味ある方は、こちらのサイトよりお問い合わせください。