ブロックチェーンの理解に必要なことをざっくりまとめてみる

Blockchain

こんにちは。
泡アハです。

暗号資産ベンチャー企業に転職したことで、
ブロックチェーンへの興味がふつふつとわいています。

ブロックチェーンについては、全くのド素人だったため、
いろいろ調べたり、業務をしていくなかで少しずつ覚えていきました。

最低限ここだけ抑えておけば、
ブロックチェーンがふんわり理解できるというところまで、
説明できればと思います。

ブロックチェーンとは?

ブロックチェーンとは、情報を「ブロック」と呼ばれる単位に分け、それらを鎖のように連なる形で管理する技術のこと。
ブロックには、トランザクション(後述)、や前のブロックのハッシュが含まれており、
自身のブロック情報をハッシュ化したブロックハッシュも持っている。
自身のブロック情報には、前のブロックのハッシュを含んでおり、そのブロック情報を元にブロックハッシュを算出しているため、
前のブロックが改ざんされ、前のブロックのハッシュが変更された場合、後続のブロックすべてのハッシュの計算が必要になる。
この性質より、ブロックチェーンと呼ばれる。

explorer

bitcoinなどパブリックなブロックチェーンの情報は、すべて公開されている。
そのため、explorerと呼ばれるブロックの情報を確認するサイトを見れば、どのブロックにどんな情報が入っているかわかる。

bitcoin
https://www.blockchain.com/explorer/blocks/btc/801415
ethereum
https://etherscan.io/

トランザクション

トランザクションとは、アドレス間の取引のこと。
どのアドレスからどのアドレスに向けて、いくつ送金したかを表している。
例によって、explorerを確認すれば、トランザクションの中身がわかる。
https://www.blockchain.com/explorer/transactions/btc/650f174d8594abe4cd4ce9ce3ef02b762e61c2f5722caec71423f2c75402dc28

アドレス

ブロックチェーン上の口座番号のようなもの。
アドレスは、秘密鍵→公開鍵から導出される。
アドレスもexplorerで確認することができる。
https://www.blockchain.com/explorer/addresses/btc/bc1qamun47x67apk7ecquenmzalfu57w0neeedc3z0

UTXO型

UTXOとは、"Unspent Transaction Output"の略で、
まだ使用されていないTransaction Outputのことを表す。

UTXO型は、以下の図がわかりやすい。
https://developer.bitcoin.org/devguide/block_chain.html#id2
Transactionには、inputとoutputを含んでいる。
inputとoutputは、それぞれ

input=どのtransaction outputを利用するか
output=どのアドレス宛にいくら送られたか

となっており、transactionは、各outputを次のtransactionのinputとして使うことで金銭の取引を表している。
この仕組みは、現金に近い動きとされる。

soffyが1000円を持っていて、harryに200円おくりたい場合、transactionでは、以下のように表される。
(送金手数料は、10円とする。)

{
    "txid": "2",
    "input": [
        {
            "txid": "1",
            "output": 1,
            "address": "soffyのアドレス",
            "value": 1000
        }
    ],
    "output": [
        {
            "address": "harryのアドレス",
            "value": 200
        },
        {
            "address": "soffyのアドレス",
            "value": 790
        }
    ]
}

inputの部分は、txidとoutputが指定されている。
これは、どのtxidのoutputを元に送金するかを表している。

outputの部分は、2つになっている。
1つ目のvalue: 200の部分は、harryのアドレスへの送金を表している。
2つ目のvalue: 790の部分は、soffyのアドレスへのおつりを表している。
もしこのおつりを使いたければ、次のtransactionでは、txid:2、output:1を指定すれば使うことができる。
送金手数料は、inputのvalueの総和-outputのvalueの総和で算出される。
その送金手数料は、ブロックをマイニングした人(miner)の報酬になる。

アカウント型

Ethereum等で採用されている方式で、1つのアドレスに残高を蓄えておき、
その残高を送金することで実現される。

UTXO型が現金であれば、アカウント型は、電子マネーのイメージに近い。
https://etherscan.io/address/0xc76592655397bbb781509b92ee8f09eca361c397

まとめ

ざっくりまとめてみましたが、
まだまだ全容は説明しきれないですね。。。

それだけ多くの知識が必要ということでもありますが、
学ぶべきことがたくさんあることは、エンジニア冥利につきるような気がします。

これからも引き続きブロックチェーンについての理解を深めていきたいと思います。

コメント

タイトルとURLをコピーしました