今回は機械学習コミュニティ「Team AI」が開催しているブロックチェーンハッカソンの振り返りを書こうと思います!
できる限り「Short & Simple」を心がけます。
なお、私自身ブロックチェーン初学者なので、内容に誤り等ありましたらご指摘いただけると幸いです。
今回やったこと
今回のハッカソンでは以下のことを行いました。
- Etherの送金(プライベートネット上)
- トランザクションの確認
- 手数料の確認
- Contractの作成
- Node.js&npmのインストール
- Truffleのインストール
- Browser-Solidityのインストール
Contractの作成については、Browser-Solidityのインストールでちょっと躓いてしまったので残念ながら作成までたどり着けていません。なので今回は割愛して、作成までできたら改めてまとめようと思います。
なので今回のテーマは「Etherの送金」についてです。
これまでやってきたこととして、必要に応じて以下の記事もご参照ください。
ちなみにパソコンはMac(OSバージョンは10.12.6)です。
Gethの起動&アカウントの確認
まずはGethを起動しましょう。デゥレクトリなどは上述の記事で作成したものです。
$ geth --networkid 4649 --nodiscover --maxpeers 0 --datadir ~/ether-practice/testnet console 2>> ~/ether-practice/testnet/geth.log
アカウントの確認。
> eth.accounts
["0x5af6f4139ecd7b0497e36a26e0c5828efad55be1", "0xd7bd6786ced3bf0ece162db41c8579fb5ac08035"]
各アカウントのetherの持ち高を確認。
> eth.getBalance(eth.accounts[0])
950000000000000000000
> eth.getBalance(eth.accounts[1])
435000000000000000000
単位が「wei」になっていますが、accounts[0]
が950ether
、accounts[1]
が435ether
保持しています。
Etherの送金
accounts[1]
からaccounts[0]
に35ether
を送金してみます。
実際には送金時に送金元のアカウントのロックの解除が事前に必要なので、まずはロックを解除します。
> personal.unlockAccount(eth.accounts[1])
Unlock account 0xd7bd6786ced3bf0ece162db41c8579fb5ac08035
Passphrase:
上記の通りパスワードを求められるので、アカウント作成時に設定したパスワードを入力すればロックを解除できます。
また、送金の際は採掘処理をバックグラウンドで実行しておく必要があるので、採掘しておきましょう。
> miner.start(1)
etherを送金する準備が整いました。早速送金しましょう。
> eth.sendTransaction({from: eth.accounts[1], to: eth.accounts[0], value: web3.toWei(35, "ether")})
"0x3c7d835a20aa4211dd02812cd293cc3aa182f9a3e6f0c974fba75bc09da598a1"
持ち高を確認します。
> eth.getBalance(eth.accounts[0])
985000000000000000000
> eth.getBalance(eth.accounts[1])
399999622000000000000
accounts[0]
の持ち高は35ether
増えて985ether
になっています。accounts[1]
の持ち高はというと、、、35ether
以上減っていますね。具体的には35.000378ether
減っています。この0.000378ether
がトランザクション手数料です。
トランザクション情報の確認
トランザクション情報を確認してみましょう。eth.getTransaction(tx_id)
コマンドで確認できます。tx_id
には送金した際に出力されたトランザクションIDを指定します。
> eth.getTransaction("0x3c7d835a20aa4211dd02812cd293cc3aa182f9a3e6f0c974fba75bc09da598a1")
{
blockHash: "0xd66268be66394441a9861c82d4e75d07b600f7f00f0a303aa462407aa16bcb0c",
blockNumber: 726,
from: "0xd7bd6786ced3bf0ece162db41c8579fb5ac08035",
gas: 90000,
gasPrice: 18000000000,
hash: "0x3c7d835a20aa4211dd02812cd293cc3aa182f9a3e6f0c974fba75bc09da598a1",
input: "0x",
nonce: 0,
r: "0x9b70974d01bc8ac3a1c8896b55b916d5a2cd774c64b27975b97fc313c84d8e39",
s: "0x7d1642382bacca2c0f581ca0e71de7afd881611a4adfaec9dd4547f31ed76204",
to: "0x5af6f4139ecd7b0497e36a26e0c5828efad55be1",
transactionIndex: 0,
v: "0x41",
value: 35000000000000000000
}
- gas
- トランザクション処理時のgasの使用量の「最大値」を示しています。(実際のトランザクション処理時のgasの使用量ではないので注意!)
- gasPrice
- トランザクションの処理時に採掘者に支払う1 gas 当たりの手数料(wei)を示しています。
今回のトランザクションにどれだけのgasを使用したのかというと、
トランザクション手数料(wei) / gasPrice(wei) = 使用したgas
なので、
378000000000000 / 18000000000 = 21000
21,000 gas
が使用されたことがわかります。
ということで今回はここまでです。