こんにちは、エンジニアのオオバです。
前回に引き続きGethを使ったEthereum開発の学習を進めています。
環境構築についてはコチラの記事を見ていただければと思います。
今回はetherの採掘です。
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
ether(イーサ)とは?
Ethereumは内部通貨etherが規定されており、Ethereumでトランザクションを発生させるためにはetherの手数料が必要になります。
etherとはEthereumの内部通貨のことです。
そもそもEhtereumは通貨ではなくプラットフォーム。
そのプラットフォーム内で使われる通貨がether(イーサ)です。
プラットフォームと言われてもという感じですが、
毎度のごとく細かいことはスキップして本題の採掘を始めます。
本記事もコチラのサイトを参考にさせていただいております。
いつもありがとうございます。
etherを採掘する - Ethereum入門
EOAアカウントの作成
Ethereumには2種類のアカウントがありますが、
今回はEOA(Externally Owened Account)というアカウントを作成します。
前回記事で接続したプライベートネットワーク上の対話型コンソールを使っていきます。
もしまだでしたらコチラの記事を参考にして対話型コンソールを起動してください。
現在のEOAアカウント調査
> eth.accounts
[ ]
まだ作っていないため空の配列が出力されます。
アカウントの作成
personal.newAccount
メソッドでアカウントが作成できます。
> personal.newAccount("pass")
"0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65"
再度現在のアカウントリストを確認します。
> eth.accounts
["0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65"]
このように、さきほどは空の配列でしたが、
作成したハッシュ値(アドレス)が格納されます。
あとで送金処理をするため、もう1アカウント作成します。
> personal.newAccount("pass2")
"0x2a93c84276d063851c307a9a490e5f83f75153e1"
> eth.accounts
["0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65", "0x2a93c84276d063851c307a9a490e5f83f75153e1"]
このようにアカウントが2つ作成されました。
パスワードは復元できないので忘れないようにしてください
採掘と報酬をひも付けるetherbase またはcoinbase
> eth.coinbase
"0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65"
eth.coinbase
と実行すると、
さきほど作成したEOAアカウントのうち片方のアドレスが表示されました。
このアドレスが採掘した時の報酬にひも付きます。
報酬をひも付けるアドレスを変えたい場合は、
以下のコマンドを実行します。
miner.setEtherbase(new_adress)
etherの採掘
👇以下のコマンドで採掘が開始します。
> miner.start()
null
採掘状況の確認
> eth.blockNumber
157
このように採掘したブロック数を確認できます。
採掘しているかどうかの確認
> eth.mining
true
採掘の停止
> miner.stop()
null
ハッシュレートの確認
マイニングをする際の1秒あたりの計算力、採掘速度のことです。 単位は hash/s (セカンド)で、「毎秒 ◯ ハッシュの計算ができる」ことを意味します。
そもそもハッシュレートとは採掘スピードとのことです。
ハッシュレートを確認してみましょう。
ところが、ドキュメントでは eth.hashrate
と記載されていますが、
Error: the method eth_hashrate does not exist/is not available
at web3.js:6347:37(47)
at get (web3.js:6247:66(14))
👆このようなエラーがスローされます。
バージョン違いによる仕様の変更かもしれません。
中身を確認すると、
👇正しくはこちらで確認できます。
> ethash.getHashrate()
494672
採掘したブロックの確認
100個目のブロックを確認してみます。
> eth.getBlock(100)
すると以下のようなJSONが出力されます。
{
difficulty: 137514,
extraData: "0xd983010a02846765746888676f312e31362e338664617277696e",
gasLimit: 121724529,
gasUsed: 0,
hash: "0xb454ce4bab83f6ae896469381a8831b004e89c19655dc139078347176e69dc5f",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0xf49a337c6f16b1897576bdd12d4d76fef4f0ad65",
mixHash: "0xf7058ff56352eda9708d940e9414048871108746d98268b0ebf958ac6593b693",
nonce: "0x16d87ae5f6da90d8",
number: 100,
parentHash: "0xc89fabade2b4373520aab707a4a2d7fe1aa8ef0c4cd7f2c37dd7eee086e58026",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 538,
stateRoot: "0xc537d04ec12de7055ca44163ca95144bab45b149af09e38bd63e82752e97ee2b",
timestamp: 1619428804,
totalDifficulty: 13443302,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
一旦細かいことはスキップして先に進みます。
採掘報酬の確認
getBalance
メソッドで現状の保有etherを確認できます。
> eth.getBalance(eth.accounts[0])
1.0485e+22
wei単位の報酬量では分かりづらいためether単位
に変換してみます。
> web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
10485
現在採掘して、10485イーサ所有していることになります。
まとめ
etherの採掘をしてきました。
ただ、テスト環境だと正直どんどん採掘でき、
報酬も付与されるため何をしているのか実感はありません。
新しいことの学習とは、最初はそういうものです。
とりあえず引き続き全体把握に努めていきます。
次回はetherの送金です。
この記事が気に入ったらフォローしよう
- macOS Catalina 10.15.7
- ethereum 1.10.2
- go 1.16.3 darwin/amd64