2022-03-22



Ubuntu Server 21.10でイーサリアムブロックチェーン【その1】
続きです。それではローカルテストブロックチェーンを起動してみます。
geth --networkid "15" --nodiscover --rpc.allow-unprotected-txs --datadir "/home/hogeuser/eth_test" console 2>> /home/hogeuser/eth_test/geth_err.log Welcome to the Geth JavaScript console! instance: Geth/v1.10.17-unstable-2352c722/linux-amd64/go1.17.5 at block: 0 (Thu Jan 01 1970 09:00:00 GMT+0900 (JST)) datadir: /home/hogeuser/eth_test modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 To exit, press ctrl-d or type exit
・networkidは、さきのgenesis.jsonに記載したchainIdを指定します。
・操作consoleを起動しますが、標準エラー出力はgeth_err.logにリダイレクトします。(マイニング状況等各種ログが出力される)
・--rpc.allow-unprotected-txsは、送金テスト時にError: only replay-protected (EIP-155) transactions allowed over RPCと言われるのを防ぐオプションです。
1、最初のブロック情報の確認
eth.getBlock(0)として、ブロック番号0=最初のブロック=が、最初のブロック情報ファイルgenesis.jsonで指定した内容であるか確認します。
eth.getBlock(0) { difficulty: 16384, extraData: "0x", gasLimit: 134217728, gasUsed: 0, hash: "0x7b2e8be699df0d329cc74a99271ff7720e2875cd2c4dd0b419ec60d1fe7e0432", logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", miner: "0x3333333333333333333333333333333333333333", mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000", nonce: "0x0000000000000042", number: 0, parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000", receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", size: 507, stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", timestamp: 0, totalDifficulty: 16384, transactions: [], transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", uncles: [] }
nonceやmixHash他、各項目はgenesis.jsonの設定が反映されています。
2、アカウントの作成
ブロックチェーン上で何かするにはまずアカウントが必要です。ここでは、採掘その他メインアカウント1つと、送金テストで受け取る用のアカウント1つ、計2つを作成します。
現在のアカウント一覧確認
eth.accounts []
まだ無いのでカラです。ではnewAccountコマンドでアカウントを2つ作成します。与える引数は名前ではなくパスワードです。ここでは簡易的にhoge1,hoge2とします。
personal.newAccount("hoge1") "0x36d9643d7fdb4ed786293133cf9bc721509660b5" personal.newAccount("hoge2") "0x1a8355a4ae7465f7bf867a1a0ea88932b1c19891" eth.accounts ["0x36d9643d7fdb4ed786293133cf9bc721509660b5", "0x1a8355a4ae7465f7bf867a1a0ea88932b1c19891"]
2つのアカウントが作成され一覧確認できました。続けて、採掘したり報酬を受け取ったりする代表アカウント=coinbaseが誰であるかを確認します。
eth.coinbase "0x36d9643d7fdb4ed786293133cf9bc721509660b5"
coinbaseは最初に作ったアカウントにデフォルトで設定されています。
3、マイニングの開始
それではマイニング(ブロックの採掘)を開始します。自分1人がひたすら掘るので、ガンガン報酬=イーサリアム=が貯まっていきます。これが本物なら億万長者ですなぁ!
※マイニングにはPCの大量の電力を消費します。自己責任注意※
miner.start() null eth.blockNumber 15 eth.hashrate 0 eth.mining true eth.getBalance(eth.accounts[1]) 0 eth.getBalance(eth.accounts[0]) 122000000000000000000 web3.fromWei(eth.getBalance(eth.accounts[0]),"ether") 140 web3.fromWei(eth.getBalance(eth.accounts[0]),"ether") 1014
miner.startでマイニングを開始して、blockNumberで掘ったブロック数が確認できます。マイニングしてるかどうかはeth.miningで確認。
eth.accounts[0]にどんどん報酬が入ってきているのがわかります。eth.accounts[1]は何もしていないので何も入ってきてません。単位はweiなので、etherに直して出力。
geth_err.logに採掘状況を含めた動作ログが随時書き込まれているので確認。
tail -f /home/hogeuser/eth_test/geth_err.log INFO [03-22|13:00:36.746] Commit new sealing work number=2246 sealhash=9b86d8..b39735 uncles=0 txs=0 gas=0 fees=0 elapsed="347.65μs" INFO [03-22|13:00:36.746] Commit new sealing work number=2246 sealhash=9b86d8..b39735 uncles=0 txs=0 gas=0 fees=0 elapsed="545.594μs" INFO [03-22|13:00:41.205] Successfully sealed new block number=2246 sealhash=9b86d8..b39735 hash=b62173..30164c elapsed=4.459s INFO [03-22|13:00:41.205] ? block reached canonical chain number=2239 hash=619b55..fcd3d2
4、マイニングの終了、およびブロックチェーンの終了
miner.stop()
で終了します。ブロックチェーンそのものを終了するには
exit
とするか、Ctrl+Dを打ちます。ログで終わりを確認し、
tail /home/hogeuser/eth_test/geth_err.log INFO [03-22|13:00:59.978] Persisted trie from memory database nodes=0 size=0.00B time="2.567μs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=251 livesize=31.90KiB INFO [03-22|13:00:59.980] Writing clean trie cache to disk path=/home/hogeuser/eth_test/geth/triecache threads=4 INFO [03-22|13:00:59.982] Persisted the clean trie cache path=/home/hogeuser/eth_test/geth/triecache elapsed=1.870ms INFO [03-22|13:00:59.982] Blockchain stopped
ps aux | grep hogeuser
で、gethプロセスが残ってないか確認します。次回は採掘したイーサリアムを、別のアカウント(2番目に作ったアカウント)に送金してみます。
Ubuntu Server 21.10でイーサリアムブロックチェーン【その3】



※本記事内容の無断転載を禁じます。

写真1枚で作る年賀状・ポストカード★送料無料・税込み30枚500円〜【TOLOT Card】

圧倒的な低価格!1GB 660円(税込)/月〜【DTI SIM】

中古買取サイト【BUY王(バイキング)】スマホ・タブレット・DVD・書籍

中古買取サイト【BUY王(バイキング)】ジャニーズグッズ・DVD・書籍買取

高級木製スタンド付き<1部500円>12枚の写真で作る【TOLOT卓上カレンダー】

シェアリングエコノミー型の訪問介護・家事・生活支援サービス【クラウドケア】

テレビ番組やCMで話題なので成果が出やすいシャワーヘッド!【ミラブルオンライン】

清掃サービスプローモーション【ゴミ屋敷バスター七福神】

中古買取サイト【gd(ジーディー)】GAME・DVD・書籍買取促進

CORESERVER v1 CORE-MINIプランでownCloudをインストールする
size_tとssize_tを使い分けてSegmentation Faultを予防する
Ubuntuでcore dumpedとなってるのにcoreが出力されない場合
【C++】uint8_tバイトvector配列をstring文字列に変換する
Ubuntu Server 21.10でイーサリアムブロックチェーン【その8】
Ubuntu Server 21.10でイーサリアムブロックチェーン【その7】
Ubuntu Server 21.10でイーサリアムブロックチェーン【その6】
githubにpushしようとしたらerror: failed to push some refs toと言われた場合
【Linux】PHP8をソースからインストールする
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【ウマ娘】「全身全霊」スキルを取得するには
【Anaconda3】指定した仮想環境でJupyter Notebookを動かす
【Windows PC】iPadが突然6桁のパスコードを要求してきて詰んだ場合の初期化法