ユーザ用ツール

サイト用ツール


blockchain:ethereum構築ハンズオン_ganache編

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
blockchain:ethereum構築ハンズオン_ganache編 [2022/04/27 01:02] – [デプロイ] dotblockchain:ethereum構築ハンズオン_ganache編 [2022/04/28 01:48] (現在) dot
行 8: 行 8:
 アプリケーションをインストールするだけで、すぐに ethereum ブロックチェーンを利用した開発が始められます。 アプリケーションをインストールするだけで、すぐに ethereum ブロックチェーンを利用した開発が始められます。
 また、デフォルトで採掘が自動的に行われますので、必要なトランザクションは自動的に処理されます。 また、デフォルトで採掘が自動的に行われますので、必要なトランザクションは自動的に処理されます。
 +権限についてもデフォルトでゆるく設定されており、アカウントのアンロック(eth.unlockAccount)しなくても送金やガス代の支払いができるようになっています。
  
 ===== インストール ===== ===== インストール =====
行 32: 行 33:
 {{:blockchain:ganache03.png?800|}} {{:blockchain:ganache03.png?800|}}
  
-また、一番上のアカウントの PRIVATE KEY を後ほど使用しますので、メモしておいてください(下図参照)+アカウントの PRIVATE KEY は以下の手順で確認できます。
  
 {{:blockchain:ganache04.png?800|}} {{:blockchain:ganache04.png?800|}}
行 41: 行 42:
 「起動」の手順で確認した「RPC SERVER URL」を使用して、以下のようにコンソール接続することができます。 「起動」の手順で確認した「RPC SERVER URL」を使用して、以下のようにコンソール接続することができます。
  
-<code - sh>+<code PowerShell>
 geth --nodiscover attach http://127.0.0.1:7545 geth --nodiscover attach http://127.0.0.1:7545
 </code> </code>
- 
-===== アカウントのアンロック ===== 
- 
-ガス代(手数料)がかかるトランザクション処理や送金を行うためには、アカウントをアンロックする必要があります。 
-「起動」の手順で確認した「PRIVATE KEY」を使用して、以下のようにアカウントのアンロックができます。 
- 
-<code - geth> 
-> personal.unlockAccount(eth.accounts[0]) 
-Unlock account 0xd236df380900a967dcc8a229f6a27bd03c330c6d 
-Passphrase: 
-true 
-</code> 
- 
-今後、必要に応じてアカウントアンロックを実施してください。 
  
 ===== 送金 ===== ===== 送金 =====
  
 送金前 送金前
-<code - sh>+<code PowerShell>
 > eth.getBalance(eth.accounts[0]) > eth.getBalance(eth.accounts[0])
 100000000000000000000 100000000000000000000
行 70: 行 57:
  
 送金 送金
-<code - sh>+<code PowerShell>
 > eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(5, "ether")}) > eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(5, "ether")})
 </code> </code>
  
 送金後(eth.accounts[0] についてはガス代分も少なくなっている) 送金後(eth.accounts[0] についてはガス代分も少なくなっている)
-<code - sh>+<code PowerShell>
 > eth.getBalance(eth.accounts[0]) > eth.getBalance(eth.accounts[0])
 94999580000000000000 94999580000000000000
行 99: 行 86:
 内部にカウンターをもち、カウンターの値を取得する(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.13; pragma solidity ^0.8.13;
行 127: 行 114:
 スマートコントラクトのコンパイルはコマンドラインから solc を使用して実行します。 スマートコントラクトのコンパイルはコマンドラインから solc を使用して実行します。
  
-<code - sh>+<code PowerShell>
 solc-windows.exe --abi --bin Counter.sol solc-windows.exe --abi --bin Counter.sol
 </code> </code>
行 145: 行 132:
  
  
-<code コンパイル実行結果>+<code PowerShell コンパイル実行結果>
 ======= Counter.sol:Counter ======= ======= Counter.sol:Counter =======
 Binary: Binary:
行 157: 行 144:
 スマートコントラクトのデプロイは geth console 上で行います。 スマートコントラクトのデプロイは geth console 上で行います。
  
-<code - sh>+<code PowerShell>
 geth --datadir private_network --nodiscover console geth --datadir private_network --nodiscover console
 > var bin = "0x608060405234801561001057600080fd5b50610209806100206000396000f3fe608060405234801561001057600080fd5 > var bin = "0x608060405234801561001057600080fd5b50610209806100206000396000f3fe608060405234801561001057600080fd5
行 168: 行 155:
 > var contract = eth.contract(abi) > var contract = eth.contract(abi)
 undefined undefined
-> var myContract = contract.new({ from: eth.accounts[0], data: bin, gas: '1000000'}) 
-Error: authentication needed: password or unlock 
-        at web3.js:6365:37(47) 
-        at send (web3.js:5099:62(35)) 
-        at web3.js:3021:48(124) 
-        at <eval>:1:30(13) 
-> personal.unlockAccount(eth.accounts[0]) 
-Unlock account 0xd78f9a659a9a7b50689eb2bd4c4aebdc9c2e5312 
-Passphrase: 
-true 
 > var myContract = contract.new({ from: eth.accounts[0], data: bin, gas: '1000000'}) > var myContract = contract.new({ from: eth.accounts[0], data: bin, gas: '1000000'})
 undefined undefined
行 187: 行 164:
 デプロイ処理が完了しているため「Contract Account」がaddressに付与されています。 デプロイ処理が完了しているため「Contract Account」がaddressに付与されています。
  
-<code - sh>+<code PowerShell>
 > miner.start() > miner.start()
 null null
行 234: 行 211:
  
  
-<code - sh> +<code PowerShell>
-myContract.inc.sendTransaction({from:eth.accounts[0]}) +
-Error: authentication needed: password or unlock +
-        at web3.js:6365:37(47) +
-        at send (web3.js:5099:62(35)) +
-        at web3.js:4155:41(53) +
-        at <eval>:1:35(9) +
- +
-> personal.unlockAccount(eth.accounts[0]) +
-Unlock account 0xd78f9a659a9a7b50689eb2bd4c4aebdc9c2e5312 +
-Passphrase: +
-true+
 > myContract.inc.sendTransaction({from:eth.accounts[0]}) > myContract.inc.sendTransaction({from:eth.accounts[0]})
 "0xd254b4b2e830350da787720e9b037e1e27cc11ad93452ff79345e88d716b9cf2" "0xd254b4b2e830350da787720e9b037e1e27cc11ad93452ff79345e88d716b9cf2"
行 256: 行 222:
 get でカウンターの値を参照する。 get でカウンターの値を参照する。
  
-<code - sh>+<code PowerShell>
 > myContract.get.call() > myContract.get.call()
 0 0
行 271: 行 237:
 確認してみましょう。 確認してみましょう。
  
-<code - sh>+<code PowerShell>
 > eth.getBalance(eth.accounts[0]) > eth.getBalance(eth.accounts[0])
 1.496999999999998206439e+21 1.496999999999998206439e+21
blockchain/ethereum構築ハンズオン_ganache編.1651021343.txt.gz · 最終更新: 2022/04/27 01:02 by dot