Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bitcoinだけでスマートコントラクト.pdf
Search
akatsukinewgrad
May 20, 2022
1
730
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
May 20, 2022
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
100
成果発表資料.pdf
akatsukinewgrad
0
1.8k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
450
正規表現とReDoS.pdf
akatsukinewgrad
0
460
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
470
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
430
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
530
7分でわかるアカツキゲームス
akatsukinewgrad
0
470
齋田.pdf
akatsukinewgrad
0
830
Featured
See All Featured
Scaling GitHub
holman
458
140k
The Cult of Friendly URLs
andyhume
78
6k
A Philosophy of Restraint
colly
203
16k
Embracing the Ebb and Flow
colly
84
4.4k
Building Applications with DynamoDB
mza
90
6k
Building an army of robots
kneath
302
42k
Building Adaptive Systems
keathley
38
2.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Producing Creativity
orderedlist
PRO
341
39k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
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