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

Let's Write Bitcoin Script #TokyoBitcoinHackathon

Shun Usami
September 22, 2018

Let's Write Bitcoin Script #TokyoBitcoinHackathon

BitcoinKit
- たった10行でウォレットアプリが開発できる!

TokyoBitcoinHackathon
- 日本初の連続ビットコインハッカソン
- ビットコイン開発者を増やす

Yenom
- とびきりやさしいビットコインウォレット
- やさしすぎてお母さんでも使える

Bitcoin Script
- Lock ScriptとUnlock Scriptの二つだけ!
- Anyone Can Spend
- P2PK (Pay To Public Key)
- P2PKH (Pay To Public Key Hash)
- Lock Until (Lock Time)
- P2SH (Pay To Script Hash)

Dappsについて
- デジタルの世界に価値を生み出し、デジタル革命をドライブする

Shun Usami

September 22, 2018
Tweet

More Decks by Shun Usami

Other Decks in Programming

Transcript

  1. Ex. 2 3 5 Add 2 3 2 3 2

    5 5 3 2 Add 8 2
  2. Ex. 3 20 8 Add 3 8 20 3 28

    3 Mul 84 Mul 20 8 Add
  3. Bitcoinのアンロック 1. Unlock Script を実⾏ 結果、TRUE が返ってくれば そのコインはアンロック成功 ! 2.

    Lock Script を実⾏ TRUE が返ってくれば スクリプトの実⾏後 スタックの⼀番上に 残っている値が TRUE であれば =
  4. ? Unlock Script 2 Lock Script 3 Add Equal ①

    ② ⬅何が⼊るでしょう?
  5. 5 Unlock Script 2 Lock Script 3 Add Equal 5

    3 5 3 2 5 5 5 TRUE 2 Add Equal ① ②
  6. Ex. sig A pubkey A CHECKSIG sig A pubkey A

    sig A TRUE pub key A sig A CHECKSIG OP_CHECKSIGについて
  7. P2PK ( Pay to Public Key ) Unlock Script Lock

    Script sig A pub A CHECKSIG
  8. P2PKH ( Pay to Public Key Hash) Unlock Script Lock

    Script sig A pub A DUP HASH160 pubhash A EQUAL_VERIFY CHECKSIG
  9. DUP Hash160 sig A sig A pub A DUP HASH160

    EQUALVERIFY CHECKSIG pubhash A Ex. ➡ ➡ pub A sig A pub A pub A sig A pubhash A pub A sig A pub A P2PKHについて
  10. CHECKSIG pubhash A pubhash A pub A sig A HASH160

    ➡ pub A sig A TRUE EQUALVERIFY ➡ P2PKHについて sig A pub A DUP HASH160 EQUALVERIFY CHECKSIG pubhash A Ex.
  11. OP_CLTVについて exp_time exp_time CLTV ➡ Fail !! ➡ exp_timeを 過ぎているとき

    ※OP_CHECKLOCKTIMEBERIFY の略です。 例: exp_time = 2018/08/31 exp_timeが まだ来ていないとき 例: exp_time = 2020/09/23
  12. Lock Until について Unlock Script Lock Script sig A pub

    A 2020/01/01 CLTV DROP P2PKH(A) さっきのP2PKHと同じもの
  13. 2020/01/01 CLTV sig A sig A pub A 2020/01/01 CLTV

    P2PKH(A) DROP Ex. ➡ pub A sig A 2020/01/01 pub A sig A 2020/01/01 pub A sig A pub A CLTVについて DROP pub A sig A ➡ ➡
  14. sig A pub A 2020/01/01 CLTV P2PKH(A) DROP Ex. DUP

    Hash160 ➡ pub A pub A sig A pubhash A pub A sig A pubhash A CHECKSIG ➡ pub A sig A TRUE EQUALVERIFY ➡ pubhash A pubhash A pub A sig A ➡ CLTVについて
  15. OP_CHECKMULTISIG について CHECKMULTISIG 3 pub C pub B pub A

    2 sig B sig A Unlock Script Lock Script TRUE ➡
  16. 5 Unlock Script 2 Lock Script 3 Add Equal ①

    ② 先ほどやった、これのP2SHをみていきましょう!
  17. 5 Unlock Script 2 3 Add Equal ① Lock Script

    ② 先ほどやった、これのP2SHをみていきましょう! Add ややこしい Script
  18. のP2SH 5 Unlock Script 2 Lock Script 3 Add Equal

    ① ② Add ややこしい Script 5 ややこしい Script HASH160 EQUAL Script hash Lock Script ② Unlock Script ① 「ややこしいScript」のハッシュ
  19. 5 ややこしいScript ➡ 5 5 HASH 160 EQUAL ➡ Script

    hash Script hash 5 TRUE 5 Script hash ➡ Script hash 5 ➡ ややこしいScript 普通はここでアンロック成功して終了
  20. 5 ややこしいScript ➡ 5 5 HASH 160 EQUALVERIFY ➡ Script

    hash Script hash 5 TRUE 5 Script hash ➡ Script hash 5 ➡ ややこしいScript 普通はここでアンロック成功して終了 EQUAL TRUE 5 フェーズ 1 終了時点 ➡
  21. 5 ややこしいScript ➡ 5 5 HASH 160 EQUALVERIFY ➡ Script

    hash Script hash 5 TRUE 5 Script hash ➡ Script hash 5 ➡ ややこしいScript 普通はここでアンロック成功して終了 EQUAL TRUE 5 左上へ移動 ⬅
  22. の実⾏ 2 3 Add Equal 2 ➡ 5 5 EQUAL

    ➡ 5 5 TRUE ➡ 3 2 5 ➡ 2 3 ADD