まずは、資料が多いイーサリアムから触ってみよう!!
1173 views
前項では、アカウントを作成しました。本項ではブロックについてやっていく
最初に、作成したGenesisブロックを確認してみましょう。
コマンドプロンプトに、下記のコマンドを入力してください。
>eht.getBlock(0)
{
difficulty: 256,
extraData: "0x",
gasLimit: 134217728,
gasUsed: 0,
hash: "0x5704d029fe80f4fb605c0cb5e31d591511f10a46a0cb8166f97d8d559f9bc5b0",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x3333333333333333333333333333333333333333",
mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
nonce: "0x0000000000000033",
number: 0,
parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 507,
stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
timestamp: 0,
totalDifficulty: 256,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
下にずらーと出力されたのが、ジェネシスブロックの中身です。
続けて、マイニングを開始します。マイニングとは、ブロックを生成することです。
さて、コマンド入力の時間です。
コマンドプロンプトに下記のコマンドを入力してください。
>miner.start(1)
null
出力がnullなのは、変だけど,,,うまくいってます。
怖いので、一応下記のコマンドを入力してください。
>eth.mining
true
こっちのほうが安心できるわ。
ここで、マイニングを停止します。
コマンドは以下のように入力してください。
>miner.stop()
true
>eth.mining
false
これでマイニングが停止されました。
ブロックのマイニングをすると、マイナーへ報酬が支払われます。
一回マイナーのコインベースを確認します。
コマンドプロンプトに下記のコマンドを入力してください。
>eth.getBalance(eth.accounts[0])
100000000000
>web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
70
上のコマンドでかなりの桁数が表示されます。
下のコマンドで単位をetherに変換してわかりやすくします。
本項では、送金を試してみます。
eth.sendTransactionコマンドから送金できるよ。
詳細は、下記に記す。コマンドプロンプトを起動してコマンドを入力してください。
//アカウント2が持っているetherを確認する
>web3.fromWei(eth.getBalance(eth.accounts[2]),"ether")
0
//アカウント0からアカウント2に送金する。
>eth.sendTransaction({from: eth.accounts[0] , to: eht.accounts, value:web3.toWei(5,"ether")})
Error
......
おそらくエラーが出力されます。
今はこれでOKです。
エラーの理由は、アカウントがロックされているからです。
それでは、アカウントにかかっているロックを解除します。
下記のコマンドを入力してください。
>personal.unlockAccount(eth.accounts[0])
Unlock account 0x,,,,
Passphraqse://アカウント作成時に設定した文字。記事通りにやっているならば、「password」で解除可能
true
これでロック解除できました。
もう一度送金処理をすると、今度は成功します。
ここまで、送金時にアカウントロックを解除してから、送信してきました。
ロック解除不要な方法もあるので、説明します。
まずは、gethを終了します。下記コマンドを入力してください。
>exit
これでgethが終了します。
ディレクトリ「C:\User\ユーザー名\Geth\prevate_net」を開いてください。
開いたら、password.txtを作成してください。
中身は下記の通りです。
password
password
password
上から、アカウント作成時に使用したワードを改行区切りで入力してください。
それでは、アンロックオプションを有効にして下記のコマンドを入力しれください。
>geth --networkid "15" --nodiscover --datadir "C:\Users\ユーザー名\Geth\private_net" console 2>> C:\Users\ユーザー名\Geth\private_net\error.log --unlock 0x342537f3d666eebc4e695a0d25ade66a2d206482,0x83138fd7bc7799f90bdde00dd460e995b1ef337a,0xd2bbdb4f934b00e3970ec6893164523b5dc53a72 --password C:\Users\ユーザー名\Geth\private_net\password.txt
//アカウント2が持っているetherを確認する
>web3.fromWei(eth.getBalance(eth.accounts[2]),"ether")
0
//アカウント0からアカウント2に送金する。
>eth.sendTransaction({from: eth.accounts[0] , to: eht.accounts, value:web3.toWei(5,"ether")})
今度はアカウントロックを解除せずに起動します。
まずはトランザクションを確認しましょう。
下記コマンドを入力してください。
> eth.getTransaction("0xf69dd01d6e8eeba3dc4da3563edf4e06b01ca8d0ea8c2931b540760b0f3cc492")
{
blockHash: null,
blockNumber: null,
from: "0x342537f3d666eebc4e695a0d25ade66a2d206482",
gas: 21000,
gasPrice: 1000000000,
hash: "0xf69dd01d6e8eeba3dc4da3563edf4e06b01ca8d0ea8c2931b540760b0f3cc492",
input: "0x",
nonce: 2,
r: "0xd3a1095ac60ec432d74f0422503bd758b30a3f42552309e71e57bd6b26dcf9dc",
s: "0x16e4b999ab9a6b4039809eb6b30ca08e422334e02a5117cc3caaa969a8754df9",
to: "0xd2bbdb4f934b00e3970ec6893164523b5dc53a72",
transactionIndex: null,
v: "0x66",
value: 5000000000000000000
}
blockNumberが0になっていると思います。
この時点では、このトランザクションは、ブロックに取り込まれていません。
そのため、送金も実行されていません。
念のため、一度残高を確認しましょう。
> web3.fromWei(eth.getBalance(eth.accounts[2]),"ether")
0
確かに0だね!!
トランザクションをブロックに取り込むためには、マイニングを実行する必要があります。
ここで、マイニングを開始しましょう。
ついでに、残高の確認もします
>miner.start(1)
null
//少し時間を開けてから実行してください
>eth.getTransaction("0xdb03d65cc20356e6e0cf128b1f4bbb2cf3619bbdd089ada52d8173fc5ffc6ee5")
{
blockHash: "0xd7b551dc32a4a3097cb9e09f10bc74d52be1790c7caf2da2abb5f83bb78d2064",
blockNumber: 18,
from: "0x342537f3d666eebc4e695a0d25ade66a2d206482",
gas: 21000,
gasPrice: 1000000000,
hash: "0xdb03d65cc20356e6e0cf128b1f4bbb2cf3619bbdd089ada52d8173fc5ffc6ee5",
input: "0x",
nonce: 3,
r: "0x39249f49e5f54ddc13cb85e0e7c4789f0273391ae9b8187c38b6634b47306350",
s: "0x32d27595c260ee663c14d64ae01ea0c36b22a627357584a74e72de00fac6632b",
to: "0xd2bbdb4f934b00e3970ec6893164523b5dc53a72",
transactionIndex: 3,
v: "0x65",
value: 5000000000000000000
}
blockNumberが入力されました。
これでブロックに取り込まれたことになりました。
ここで、アカウント2の残高を確認してみましょう。
> web3.fromWei(eth.getBalance(eth.accounts[2]),"ether")
5
最後に、ブロックごとの残高を確認して終了します。
以下のコマンドを入力してください。
> web3.fromWei(eth.getBalance(eth.accounts[2],18),"ether")
5
> web3.fromWei(eth.getBalance(eth.accounts[2],17),"ether")
0
Page 5 of 6.
owl
駆け出しエンジニア
だいたいweb系をかじってる
最近ちょとブロックチェーンに興味出てきた