アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【仮想通貨UbuntuDebian
Ubuntu Server 21.10でイーサリアムブロックチェーン【その3】
POSTED BY
2023-03-25

Ubuntu Server 21.10でイーサリアムブロックチェーン【その1】
Ubuntu Server 21.10でイーサリアムブロックチェーン【その2】

続きです。では前回採掘で得たイーサリアムを、2番目のアカウントに送金してみます。

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
4502

4502ETHも貯まっている…ので、1000ETHほどアカウント2(eth.accounts[1])に送ってみましょう。

web3.fromWei(eth.getBalance(eth.accounts[1]),"ether")
0

アカウント2の残高はゼロです。

1、送金元アカウントのアンロック

送金等の操作をするには、アカウントのロックを解除する必要があります。送金元のaccounts[0]のロックを外します。

personal.unlockAccount(eth.accounts[0])
Unlock account 0x36d9643d7fdb4ed786293133cf9bc721509660b5
Passphrase:
true

2、送金トランザクションの発行

それではアカウント2に1000ETH送金します。

eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(1000, "ether")})
"0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383"

eth.getTransaction("0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383")
{
  blockHash: null,
  blockNumber: null,
  from: "0x36d9643d7fdb4ed786293133cf9bc721509660b5",
  gas: 21000,
  gasPrice: 1000000000,
  hash: "0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383",
  input: "0x",
  nonce: 2,
  r: "0x6e7036be4e9bdf681a73e0fdf45811b7e844092e1c47847d82e267095c5164e8",
  s: "0x114fbb3f833ef0446b62dcf18c96cd5dcf3fdfc760d057d485665eda592a63d8",
  to: "0x1a8355a4ae7465f7bf867a1a0ea88932b1c19891",
  transactionIndex: null,
  type: "0x0",
  v: "0x42",
  value: 1e+21
}

トランザクションIDが発行され、getTransactionで内容が見れるようになっています。また、geth_err.logにも発行ログが出ています。

tail /home/hogeuser/eth_test/geth_err.log

INFO [03-22|14:46:33.044] Submitted transaction                    hash=0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383 from=0x36D9643D7fDb4ED786293133CF9bc721509660B5 nonce=2 recipient=0x1a8355A4ae7465f7Bf867a1A0ea88932b1c19891 value=1,000,000,000,000,000,000,000

3、送金トランザクションの実行

このままでは何もされず、送金もされません。トランザクションはマイニング(採掘)の一環として処理されるので、マイニングを開始してやる必要があります。
※マイニングにはPCの大量の電力を消費します。自己責任注意※

miner.start()

するとログにはトランザクションを処理したと思われるログが出ました。

tail /home/hogeuser/eth_test/geth_err.log

INFO [03-22|14:52:56.400] Updated mining threads                   threads=4
INFO [03-22|14:52:56.400] Transaction pool price threshold updated price=1,000,000,000
INFO [03-22|14:52:56.401] Commit new sealing work                  number=2252 sealhash=7f58fb..55a0f3 uncles=0 txs=0 gas=0 fees=0 elapsed="224.647μs"
INFO [03-22|14:52:56.401] Commit new sealing work                  number=2252 sealhash=e14ee4..3680d1 uncles=0 txs=1 gas=21000 fees=2.1e-05 elapsed="708.784μs"

マイニングを終了して確認してみましょう。

miner.stop()

web3.fromWei(eth.getBalance(eth.accounts[1]),"ether")
1000

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
3544

eth.getTransaction("0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383")
{
  blockHash: "0x45e9a0a8825c469af690789ac9e56a9943a37111c043b201a4cb389f3dc263c1",
  blockNumber: 2252,
  from: "0x36d9643d7fdb4ed786293133cf9bc721509660b5",
  gas: 21000,
  gasPrice: 1000000000,
  hash: "0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383",
  input: "0x",
  nonce: 2,
  r: "0x6e7036be4e9bdf681a73e0fdf45811b7e844092e1c47847d82e267095c5164e8",
  s: "0x114fbb3f833ef0446b62dcf18c96cd5dcf3fdfc760d057d485665eda592a63d8",
  to: "0x1a8355a4ae7465f7bf867a1a0ea88932b1c19891",
  transactionIndex: 0,
  type: "0x0",
  v: "0x42",
  value: 1e+21
}

eth.getBlock(2252)
{
  difficulty: 368572,
  extraData: "0xd883010a11846765746888676f312e31372e35856c696e7578",
  gasLimit: 14868757,
  gasUsed: 21000,
  hash: "0x45e9a0a8825c469af690789ac9e56a9943a37111c043b201a4cb389f3dc263c1",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x36d9643d7fdb4ed786293133cf9bc721509660b5",
  mixHash: "0x8fc6d73227e12cd200fede709e6bc7ebd9ecc8235902114ba2c1395e00ba120d",
  nonce: "0x4fc5e78740efb0f4",
  number: 2252,
  parentHash: "0x332ead2b5fc9ec955e9beb17bd8137d32ad8b79215629f670bc92b2ad7f58178",
  receiptsRoot: "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 651,
  stateRoot: "0x68a710014fe845df5b721f0eab2632ab58c5c2224e80638cd37fac42215818dc",
  timestamp: 1647928376,
  totalDifficulty: 534565491,
  transactions: ["0xb514f0f3fe5a55f0b588cdc2479412bd4edbb4af9f16315b6ba73515ecfb2383"],
  transactionsRoot: "0x6e9c87237f12835cb03362a89c3a5864068fcef70a93c573d8d912dc4552830e",
  uncles: []
}

アカウント2に1000ETH無事に着金してることが確認できました。また、処理前には無かったブロック番号が割り当てられ、中身を確認することができるようになっています。

4、受け取ったETHから500ETH送り返してみる

今度は、アカウント2から、受け取った1000ETHのうちの半額=500ETHを、アカウント1に逆に送金してみましょう。

personal.unlockAccount(eth.accounts[1])
Unlock account 0x1a8355a4ae7465f7bf867a1a0ea88932b1c19891
Passphrase:
true

eth.sendTransaction({from: eth.accounts[1], to: eth.accounts[0], value: web3.toWei(500, "ether")})
"0x4071661aeae2e3403a29443dc0ad146f2ed8faed1f9d5c3641a40122a8d24a48"

miner.start()
null

miner.stop()
null

web3.fromWei(eth.getBalance(eth.accounts[1]),"ether")
499.999979

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
4050.000021

eth.getBalance(eth.accounts[1])
499999979000000000000

ここで注目すべきは、アカウント2の残高が1000 - 500 = 500ETHでは無いという点です。ガス代=トランザクション処理手数料=が引かれています。

0.000021ETHほどかかっているようです。今現在、1ETHは日本円にして35万円ほどですから、350000×0.000021=7.35日本円かかった、ということになります。

次回は他のgeth起動オプションやブロックの関係を見てみます。

Ubuntu Server 21.10でイーサリアムブロックチェーン【その4】

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】