Minimahack

バリキャリの妻を支えつつ,自分の仕事とを100%やりきるための,ミニマルなライフハックを発信

仮想通貨(暗号資産)を学ぶ | ブロックチェーンの仕組み

ビットコインを含む仮想通貨はブロックチェーンという技術に支えられている.本記事ではブロックチェーンの中身について理解していく.

自律分散管理

f:id:takuma0121:20201231150232p:plain
自律分散管理

ブロックチェーンのネットワークに参加しているメンバは,取引履歴を含むブロックチェーン(台帳)を管理する.ある取引が発生すると,各参加者のトランザクションプールに溜め込まれる.承認済のトランザクションはプールから取り除かれるため,「二重支払」というトラブルが防がれる.一定のタイミングで複数のトランザクションがまとめて検証(=マイニング)される.最も早くマイニングできた人がブロックを作り,チェーンに組み込む.

ブロックチェーンの仕組み

f:id:takuma0121:20201231141040p:plain
ブロックチェーンの概要

ブロックチェーンは,トランザクション(=取引)を含むブロックをチェーン状につなげることに由来している.

ブロックには,トランザクション・ナンス値・ハッシュ値が含まれる.トランザクションはいわゆる「取引」のことで,例えば,AさんがBさんに1000円送金などである.ナンス値はマイニングのときに設定する値である(こちらは後述).ハッシュ値はハッシュ関数によって出力される値のことである(こちらも後述).

ハッシュ関数は入力が変わると出力も変わる特徴がある.ブロックチェーンの特徴として改ざんが困難であることが挙げられる.このブロックチェーンの特徴はハッシュ関数の特徴に由来する.上図において,例えば,一番左の取引履歴(=トランザクション)を改ざんしたとすると,「ハッシュ値 N」は現在のハッシュ値 Nから変わる.ハッシュ値 Nが変わると,ハッシュ値 Nを入力としているハッシュ値 N+1も変わる.つまり,取引履歴を改ざんした以降のハッシュ値(=ブロック)が全て変わることになる.

ブロックチェーンは分散管理されており,他のユーザがハッシュ値の違いを検知できる.そのため,改ざんされたブロックはチェーンに組み込まれない.

トランザクション

仮想通貨の種類によって,コインの管理方法(トランザクションの記載方法)が異なる.ビットコインでは UTXO (Unspent Transaction Output) を採用している.UTXO はインプットとアウトプットの2つで構成される.

f:id:takuma0121:20201231183334p:plain
引用:https://bit.ly/34WzJer

一方で,イーサリアムでは単純にアドレスの残高を直接データとして記録し管理する方法をとっている.データ量を減らせることやシステム実装量を減らせるメリットがあるが,残高データと取引データを両方を同時に管理しなければならないデメリットがある.

ハッシュ関数

f:id:takuma0121:20201231152838p:plain
ハッシュ関数の仕組み

ハッシュ関数は任意の文字・数列を,固定長の文字・数列に変換できる.また,変換は不可逆で出力から入力を知ることはできない.

ナンス値

ナンス値(ノンス値)とは,特定の条件を満たすハッシュ値を出力するための任意の整数値のことである.マイニング(=取引の検証)では,このナンス値を探す計算を行っている.

マイニング

マイナー(ブロックチェーンのネットワークに参加しているノード)は,報酬(=ビットコインなどの仮想通貨)を目的にマイニング(=取引の検証)を行う.報酬は大きく分けて2種類.

  1. ビットコインなどの仮想通貨の採掘
  2. 取引(=トランザクション)手数料

1は予め決められているが,2は取引を行う人が決定できる.そのため,決済スピードを重視する場合は取引手数料を高く設定する必要がある.

マイニングの具体例

こちらのサイトでマイニングの具体例を示す.

f:id:takuma0121:20201231180852p:plain
マイニング前の状態.マイニング前でナンス(ノンス)値が設定されていない.

f:id:takuma0121:20201231181023p:plain
マイニング後の状態.整数値を繰り返し試して,先頭が0x4個となるハッシュ値(特定の条件を満たすハッシュ値)を探索した結果が格納されている.