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

Bitcoinだけでスマートコントラクト.pdf

akatsukinewgrad
May 20, 2022
480

 Bitcoinだけでスマートコントラクト.pdf

akatsukinewgrad

May 20, 2022
Tweet

Transcript

  1. Bitcoinだけで
    スマートコントラクト
    23卒内定者 たかやま

    View Slide

  2. 高山 柊
    crimeth.ink/profile
    しゅう

    View Slide

  3. 誤解
    ● Bitcoinはデジタルゴールド
    ● Bitcoinは送金しかできない
    ● スマートコントラクト = Ethereum上で動くプログラム

    View Slide

  4. 誤解
    ● Bitcoinはデジタルゴールド
    Bitcoinは通貨
    ● Bitcoinは送金しかできない
    BitcoinにはScriptという機能がある
    ● スマートコントラクト = Ethereum上で動くプログラム
    原義は「当事者が契約を実行するためのプロトコルを含む、デジタル形式で指定された
    一連の契約(contract)」(1996、ザボ)

    View Slide

  5. BitcoinのScript

    View Slide

  6. BitcoinのScript
    = コインを引き出せる者を定義するミニプログラム
    例:入力を電子署名として解釈し、公開鍵Pに対応していたら引き出せる
    →Pの秘密鍵を持つ者がコインを引き出せる

    View Slide

  7. BitcoinのScriptで可能なこと
    ● ハッシュ演算
    例:ハッシュ値0x1234……efに対応する原像を提出すると引き出せる
    ● タイムロック
    例:24時間後までは誰も引き出せない、24時間後からAliceが引き出せる
    ● 条件分岐
    例:0を入力するとAliceが、1を入力するとBobが引き出せる

    View Slide

  8. BitcoinのScriptで不可能なこと
    ● 前方ジャンプやループ
    計算量 = O(スクリプト長)
    特に停止性が保証される
    ● ブロックハッシュなどの環境値の取得
    信頼できる第三者を使えば可能

    View Slide

  9. Bitcoinだけでギャンブルコントラクト

    View Slide

  10. Bitcoinだけでギャンブルコントラクト
    2人参加のコイントス型ギャンブル契約
    1. AliceとBobはそれぞれ秘密の文字列c
    A
    ,c
    B
    を決める
    2. c
    A
    ,c
    B
    を同時に言う
    3. c
    A
    ,c
    B
    がどちらも20文字以下またはどちらも20文字以上ならばAliceの勝ち、 そう
    でなければBobの勝ち
    4. 勝者が掛け金を得る
    ↑これをBitcoinで実装

    View Slide

  11. Bitcoinだけでギャンブルコントラクト
    1. 秘密の文字列c
    A
    ,c
    B
    を決める
    2. Hash(c
    A
    ),Hash(c
    B
    )を公開する
    3. 掛け金を引き出せる者を次のようなScriptで定義:
    入力1がHash(c
    A
    )の原像でなければエラー
    入力2がHash(c
    B
    )の原像でなければエラー
    入力がどちらも20文字以下またはどちらも20文字以上ならばAliceが、そうでなければBobが
    引き出せる
    4. c
    A
    ,c
    B
    を公開する
    5. c
    A
    ,c
    B
    を用いて掛け金を引き出す

    View Slide

  12. Bitcoinだけでギャンブルコントラクト
    Q. Aliceがサボってc
    A
    を公開しない場合は?
    A. 保証金を預けることとし、保証金を引き出せる者を次のようなScriptで定義:
    入力がHash(c
    A
    )の原像であればAliceが引き出せる
    入力がHash(c
    A
    )の原像でなくとも24時間後ならばBobが引き出せる
    →c
    A
    を公開しないと保証金が没収される

    View Slide

  13. Bitcoinだけでギャンブルコントラクト
    Alice
    Bob

    View Slide

  14. Bitcoinだけでギャンブルコントラクト
    Bob
    Alice

    View Slide