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

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

E473e5af1263c050599921981db46068?s=47 akatsukinewgrad
May 20, 2022
220

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

E473e5af1263c050599921981db46068?s=128

akatsukinewgrad

May 20, 2022
Tweet

Transcript

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

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

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

  4. 誤解 • Bitcoinはデジタルゴールド Bitcoinは通貨 • Bitcoinは送金しかできない BitcoinにはScriptという機能がある • スマートコントラクト =

    Ethereum上で動くプログラム 原義は「当事者が契約を実行するためのプロトコルを含む、デジタル形式で指定された 一連の契約(contract)」(1996、ザボ)
  5. BitcoinのScript

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

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

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

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

  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で実装
  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 を用いて掛け金を引き出す
  12. Bitcoinだけでギャンブルコントラクト Q. Aliceがサボってc A を公開しない場合は? A. 保証金を預けることとし、保証金を引き出せる者を次のようなScriptで定義: 入力がHash(c A )の原像であればAliceが引き出せる

    入力がHash(c A )の原像でなくとも24時間後ならばBobが引き出せる →c A を公開しないと保証金が没収される
  13. Bitcoinだけでギャンブルコントラクト Alice Bob

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