Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
May 20, 2022
0
220
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
May 20, 2022
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
齋田.pdf
akatsukinewgrad
0
290
_美馬さん_入門_ビット演算.pdf
akatsukinewgrad
0
290
_Gunso_AktskGeekLive_LT会資料_20220224_スライド用.pptx.pdf
akatsukinewgrad
0
290
2月下旬開催_エンジニア職LT会_なかひこくん_.pdf
akatsukinewgrad
0
290
アカツキLT_2022_02_24..pdf
akatsukinewgrad
0
290
GeekLive_長期運用_安定リリースのための自動実機テスト__1_.pptx.pdf
akatsukinewgrad
0
310
WebExtensions の力で_不満を解消したい!_Google Cloud編
akatsukinewgrad
0
450
インターンでハチナイのAPIを高速化しました!
akatsukinewgrad
0
440
Railsのrenderをちょっと速くしました
akatsukinewgrad
0
440
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
14
36k
Designing the Hi-DPI Web
ddemaree
272
32k
Done Done
chrislema
174
14k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
37
3.2k
Why Our Code Smells
bkeepers
PRO
324
55k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
10
3.3k
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
The Power of CSS Pseudo Elements
geoffreycrofte
46
3.9k
Design by the Numbers
sachag
271
17k
Adopting Sorbet at Scale
ufuk
63
7.6k
Transcript
Bitcoinだけで スマートコントラクト 23卒内定者 たかやま
高山 柊 crimeth.ink/profile しゅう
誤解 • Bitcoinはデジタルゴールド • Bitcoinは送金しかできない • スマートコントラクト = Ethereum上で動くプログラム
誤解 • Bitcoinはデジタルゴールド Bitcoinは通貨 • Bitcoinは送金しかできない BitcoinにはScriptという機能がある • スマートコントラクト =
Ethereum上で動くプログラム 原義は「当事者が契約を実行するためのプロトコルを含む、デジタル形式で指定された 一連の契約(contract)」(1996、ザボ)
BitcoinのScript
BitcoinのScript = コインを引き出せる者を定義するミニプログラム 例:入力を電子署名として解釈し、公開鍵Pに対応していたら引き出せる →Pの秘密鍵を持つ者がコインを引き出せる
BitcoinのScriptで可能なこと • ハッシュ演算 例:ハッシュ値0x1234……efに対応する原像を提出すると引き出せる • タイムロック 例:24時間後までは誰も引き出せない、24時間後からAliceが引き出せる • 条件分岐 例:0を入力するとAliceが、1を入力するとBobが引き出せる
BitcoinのScriptで不可能なこと • 前方ジャンプやループ 計算量 = O(スクリプト長) 特に停止性が保証される • ブロックハッシュなどの環境値の取得 信頼できる第三者を使えば可能
Bitcoinだけでギャンブルコントラクト
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で実装
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 を用いて掛け金を引き出す
Bitcoinだけでギャンブルコントラクト Q. Aliceがサボってc A を公開しない場合は? A. 保証金を預けることとし、保証金を引き出せる者を次のようなScriptで定義: 入力がHash(c A )の原像であればAliceが引き出せる
入力がHash(c A )の原像でなくとも24時間後ならばBobが引き出せる →c A を公開しないと保証金が没収される
Bitcoinだけでギャンブルコントラクト Alice Bob
Bitcoinだけでギャンブルコントラクト Bob Alice