Upgrade to Pro — share decks privately, control downloads, hide ads and more …

webエンジニア向けブロックチェーンの技術的「へぇ」 / Blockchain tech tips for web developers

webエンジニア向けブロックチェーンの技術的「へぇ」 / Blockchain tech tips for web developers

hitsuji-haneta

January 16, 2019
Tweet

More Decks by hitsuji-haneta

Other Decks in Technology

Transcript

  1. ϒϩοΫνΣʔϯͱ͸ʁ ヘッダー 取引データ 取引データ ヘッダー 取引データ 取引データ ヘッダー 取引データ 取引データ

    複数の取引データをブロックという単位で ひとかたまりにして、どんどん繋げていく ·ͣ͸௒؆୯ʹ
  2. ϒϩοΫϋογϡ ヘッダー 取引データ 取引データ ヘッダー 取引データ 取引データ ヘッダー 取引データ 取引データ

    ハッシュ化 5eb127… 5eb127… 66f3a2… 66f3a2… 直前のブロックをハッシュ化しヘッダーに保有
  3. ヘッダー 偽データ 取引データ ヘッダー 取引データ 取引データ ヘッダー 取引データ 取引データ ハッシュ化

    3f1a58… 5eb127… 66f3a2… 66f3a2… 過去データを改ざんするとハッシュ値が変わり 後続のブロックと繋がらなくなる ϒϩοΫϋογϡ
  4. 1SPPGPG8PSL 新しいブロックを作る際、ブロックハッシュが規定 値以下でないとチェーンに追加できない ヘッダー 取引データ nonce: 3 66f3a2… 取引データ >

    000100… 既定値 00003f… < 000100… ▶「nonce」という値を変えてブロック化しまくる                 (=マイニング) ヘッダー 取引データ nonce: 5 計算コスト(時間、電気代)がかかるので 不正が見合わない
  5. 6590ϕʔε お金(UTXO)が状態を持ち、人(アドレス)は状態の一つ 主:お金 従:人   ID:1  金額:20コイン 持ち主:Aさん   ID:2  金額:7コイン 持ち主:Aさん   ID:3

     金額:20コイン 持ち主:Bさん 20コイン 7コイン 合計:27コイン 持ち主ごとにお金を合算することで所持金がわかる
  6. UTXOとは? unspent transaction output ະ࢖༻ͷτϥϯβΫγϣϯग़ྗ Aさん Bさん Cさん 10コイン 8コイン

    おつり2コイン (例) 取引1 取引2  金額:10コイン 持ち主:Aさん *OQVU 0VUQVU  金額:10コイン 持ち主:Bさん 取引1  金額:10コイン 持ち主:Bさん *OQVU 0VUQVU  金額:8コイン 持ち主:Cさん 取引2  金額:2コイン 持ち主:Bさん 使用済 未使用 未使用 6590ϕʔε
  7. .FSLMF5SFF Merkle Root Hash01 Hash23 Hash2 Hash3 確認したい データ ※1

    UTXOベースならトランザクション、 アカウントベースなら各アカウント の状態 ※2 ノードにも種類がある。 フルノード:全てのブロックを保有 軽量ノード:一部のブロックのみ Hash0 Hash2 Data0 Data1 Data2 この辺のデータは別にいらない 各データ(※1)のハッシュ値を 全て足し合わせたMerkle Rootが ブロックヘッダーに含まれている 他のノードに もらう(※2) ブロックヘッダー&他ノードとの通信で 確認できるため、全部のデータを持つ必要はない