ユーザ用ツール

サイト用ツール


blockchain:ethereum構築ハンズオン_geth偏

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
blockchain:ethereum構築ハンズオン_geth偏 [2022/04/21 00:17] dotblockchain:ethereum構築ハンズオン_geth偏 [2022/04/28 01:46] (現在) dot
行 1: 行 1:
 ====== ethereumブロックチェーンの構築(geth偏) ====== ====== ethereumブロックチェーンの構築(geth偏) ======
  
-プライベート型のethereumブロックチェーンを構築し、採掘、スマートコントラクトを実行するハンズオンです。+プライベート型のethereumブロックチェーンを構築し、採掘、送金、スマートコントラクトを実行するハンズオンです。
  
 ===== インストール ===== ===== インストール =====
行 23: 行 23:
 以下のファイルを作成してください。 以下のファイルを作成してください。
  
-<code genesis.json>+<code JSON genesis.json>
 { {
   "config": {   "config": {
行 61: 行 61:
 PowerShell やコマンドラインから以下のようにコマンドを実行することで、ブロックチェーンを構築します。 PowerShell やコマンドラインから以下のようにコマンドを実行することで、ブロックチェーンを構築します。
  
-(先程「インストール」した geth にパスを通すか、geth をフルパスで実行してください。+(先程「インストール」した geth にパスを通すか、geth をフルパスで実行してください。)
  
-<code - sh>+<code PowerShell>
 geth --datadir private_network init genesis.json geth --datadir private_network init genesis.json
 </code> </code>
行 75: 行 75:
 ===== geth console でブロックチェーンにコンソール接続する ===== ===== geth console でブロックチェーンにコンソール接続する =====
  
-<code - sh>+<code PowerShell>
 geth --datadir private_network --nodiscover console geth --datadir private_network --nodiscover console
 </code> </code>
行 84: 行 84:
   * --nodiscover: 「他のノードを探さない」を意味します。ブロックチェーンはP2Pで他のノードと接続しあうネットワークですが、今回はプライベート型で構築しているため、このオプションを指定しています。   * --nodiscover: 「他のノードを探さない」を意味します。ブロックチェーンはP2Pで他のノードと接続しあうネットワークですが、今回はプライベート型で構築しているため、このオプションを指定しています。
   * console: geth console つまりコマンドラインを起動します   * console: geth console つまりコマンドラインを起動します
 +
 +上記のように「geth ... console」でconsole接続すると「ブロックチェーンの起動」と「console接続」が同時に行われます。そのため、コマンドを打つ度にブロックチェーンのログがconsoleに出力され、大変操作しづらくなります。おすすめの方法は、以下「ブロックチェーンの起動」と「attachでconsole接続」分けて行う方法です。
 +
 +[[blockchain:ethereum:start_attach_console|ブロックチェーンの起動とattachを使用したconsole接続]]
  
  
行 92: 行 96:
 現在、アカウントが無いことを確認する。 現在、アカウントが無いことを確認する。
  
-<code - sh>+<code PowerShell>
 > eth.accounts > eth.accounts
 [] []
行 99: 行 103:
 アカウント2つ作成してみる。(後に送金と入金を確認するため2つ作成します) アカウント2つ作成してみる。(後に送金と入金を確認するため2つ作成します)
  
-<code - sh>+<code PowerShell>
 > personal.newAccount("password01") > personal.newAccount("password01")
 "0xd236df380900a967dcc8a229f6a27bd03c330c6d" "0xd236df380900a967dcc8a229f6a27bd03c330c6d"
行 114: 行 118:
 現在の coinbase を確認する。 現在の coinbase を確認する。
  
-<code - sh>+<code PowerShell>
 > eth.coinbase > eth.coinbase
 "0xd236df380900a967dcc8a229f6a27bd03c330c6d" "0xd236df380900a967dcc8a229f6a27bd03c330c6d"
行 125: 行 129:
 __実行__ __実行__
  
-<code - sh>+<code PowerShell>
 > miner.start() > miner.start()
 null null
行 138: 行 142:
 > eth.getBalance(eth.accounts[1]) > eth.getBalance(eth.accounts[1])
 0 0
 +
 +ETH で残高を表示
 +> web3.fromWei(eth.getBalance(eth.accounts[0]), 'ether')
 +210
 </code> </code>
  
 __停止__ __停止__
  
-<code - sh>+<code PowerShell>
 > miner.stop() > miner.stop()
 </code> </code>
行 148: 行 156:
 ===== 送金 ===== ===== 送金 =====
  
-<code - sh>+<code PowerShell>
 > personal.unlockAccount(eth.accounts[0]) > personal.unlockAccount(eth.accounts[0])
 Unlock account 0xd236df380900a967dcc8a229f6a27bd03c330c6d Unlock account 0xd236df380900a967dcc8a229f6a27bd03c330c6d
行 156: 行 164:
 "0xe5c0307ca99f89dfa135a6609d0a01a48b62855ceb3a34a8e36c66d1d7a3d893" "0xe5c0307ca99f89dfa135a6609d0a01a48b62855ceb3a34a8e36c66d1d7a3d893"
 </code> </code>
- 
-===== スマートコントラクト ===== 
  
 上記でトランザクションを送信している。 上記でトランザクションを送信している。
行 164: 行 170:
  
  
-<code - sh>+<code PowerShell>
 > miner.start() > miner.start()
 null null
行 172: 行 178:
 null null
 </code> </code>
 +
 +===== スマートコントラクト =====
  
 ==== コンパイラ(solc)のインストール ==== ==== コンパイラ(solc)のインストール ====
行 184: 行 192:
 内部にカウンターをもち、カウンターの値を取得する(get)と、カウンターの値を1増やす(inc)するスマートコントラクトを実装します。 内部にカウンターをもち、カウンターの値を取得する(get)と、カウンターの値を1増やす(inc)するスマートコントラクトを実装します。
  
-<code Counter.sol>+<code JavaScript Counter.sol>
 // SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.18;+pragma solidity ^0.8.13;
  
 contract Counter { contract Counter {
行 212: 行 220:
 スマートコントラクトのコンパイルはコマンドラインから solc を使用して実行します。 スマートコントラクトのコンパイルはコマンドラインから solc を使用して実行します。
  
-<code - sh>+<code PowerShell>
 solc-windows.exe --abi --bin Counter.sol solc-windows.exe --abi --bin Counter.sol
 </code> </code>
行 230: 行 238:
  
  
-<code コンパイル実行結果>+<code PowerShell コンパイル実行結果>
 ======= Counter.sol:Counter ======= ======= Counter.sol:Counter =======
 Binary: Binary:
行 243: 行 251:
  
  
-<code - sh>+<code PowerShell>
 geth --datadir private_network --nodiscover console geth --datadir private_network --nodiscover console
 > var bin = "0x608060405234801561001057600080fd5b50610209806100206000396000f3fe608060405234801561001057600080fd5 > var bin = "0x608060405234801561001057600080fd5b50610209806100206000396000f3fe608060405234801561001057600080fd5
行 276: 行 284:
 デプロイ処理が完了すると「Contract Account」がaddressに付与されます。 デプロイ処理が完了すると「Contract Account」がaddressに付与されます。
  
-<code - sh>+<code PowerShell>
 > myContract > myContract
 { {
行 313: 行 321:
 デプロイ処理が完了しているため「Contract Account」がaddressに付与されています。 デプロイ処理が完了しているため「Contract Account」がaddressに付与されています。
  
-<code - sh>+<code PowerShell>
 > miner.start() > miner.start()
 null null
行 360: 行 368:
  
  
-<code - sh>+<code PowerShell>
 myContract.inc.sendTransaction({from:eth.accounts[0]}) myContract.inc.sendTransaction({from:eth.accounts[0]})
 Error: authentication needed: password or unlock Error: authentication needed: password or unlock
行 382: 行 390:
 get でカウンターの値を参照する。 get でカウンターの値を参照する。
  
-<code - sh>+<code PowerShell>
 > myContract.get.call() > myContract.get.call()
 0 0
行 399: 行 407:
 確認してみましょう。 確認してみましょう。
  
-<code - sh>+<code PowerShell>
 > eth.getBalance(eth.accounts[0]) > eth.getBalance(eth.accounts[0])
 1.496999999999998206439e+21 1.496999999999998206439e+21
 </code> </code>
  
blockchain/ethereum構築ハンズオン_geth偏.1650500264.txt.gz · 最終更新: 2022/04/21 00:17 by dot