SlideShare a Scribd company logo
ビットバンク株式会社
Daocasino state channel
Yuma Wakimoto
Copyright © bitbank, inc.
アウトライン
1. Daocasinoとは
2. Daocasinoにおけるstate channelとは?
3. シーケンス図
4. ダイスゲームのデモ
5. ダイスゲームを用いた具体的な説明
Copyright © bitbank, inc.
Daocasinoとは
非中央集権なカジノゲーム用のミドルウェアプロトコル
Copyright © bitbank, inc.
Daocasinoにおけるstate channelとは?
1ゲーム毎にゲーム結果を毎回ブロックチェーンに書き込まず、プレイヤー側とカジノ側
双方のアプリケーション上で結果を管理する
- トランザクション手数料を少なくできる
- 承認待ちによる無駄な待ち時間を減らせる
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
ダイスゲーム実演
ダイスゲーム実演
https://github.com/DaoCasino/dc-sdk-example
Copyright © bitbank, inc.
ダイスゲームを用いた具体的な説明
1. ゲーム開始(open channel)
2. Playerが賭け金と出目の予想を決める(play game)
3. ランダムナンバー(出目)の生成 (game state)
4. ゲーム結果判定の授受 (game state)
5. チャンネルステート授受 (cahnel state)
6. Playerが賭け金と出目の予想を決めるに戻るかゲーム終了(close channel)
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
賭け金のデポジット(open channel)
Playerはデポジットとして指定量のBET(Daocasino専用通貨)のアクセス権をコントラク
トに付与する。
- ゲーム終了時にもしPlayer側が損していた場合、ゲームのコントラクトがデポジット
されたBETから損失額を徴収できる
- Playerはデポジットした額以上の損失が出てしまう賭け方はできない
- Playerはデポジット以上の損失が出ない限りゲームを繰り返す事ができる
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
Playerが賭け金と出目の予想を決める(play game)
Playerは賭け金と出目の予想を決めてPlayボタンを押す
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
ランダムナンバー生成(game state)
ゲームの流れは
1. playerが出目の予測を決定する
2. 出目(ランダムナンバー)が決定する
3. 結果判定
従って、以下の条件でランダムナンバーを生成する必要がある
- Player側は生成されるランダムナンバーを事前に予測できない (シードを自由に選
択できない)
- Bankroller側は恣意的にランダムナンバーを決定できない
Copyright © bitbank, inc.
ランダムナンバー生成(game state)
Copyright © bitbank, inc.
ゲーム結果判定の授受 (game state)
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
お互いの残高の授受 (cahnel state)
Copyright © bitbank, inc.
シーケンス図
Copyright © bitbank, inc.
Playerが賭け金と出目の予想を決めるに戻るかゲー
ム終了(close channel)
Playerがゲームを続ける意思がなければゲーム終了となりその時の結果(残高)が
Ethereumのブロックチェーンに書き込まれ、続行するのであれば再度賭け金と出目を
予想しPlayerがゲームを続ける意思が無くなるまで同じ処理を繰り返す。

More Related Content

More from bitbank, Inc. Tokyo, Japan

インフラチームの歴史とこれから
インフラチームの歴史とこれからインフラチームの歴史とこれから
インフラチームの歴史とこれから
bitbank, Inc. Tokyo, Japan
 
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略についてビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
bitbank, Inc. Tokyo, Japan
 
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdfビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdf
bitbank, Inc. Tokyo, Japan
 
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメントビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメント
bitbank, Inc. Tokyo, Japan
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
bitbank, Inc. Tokyo, Japan
 
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdfビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdf
bitbank, Inc. Tokyo, Japan
 
Lightning Network, Swap, Nloop
Lightning Network, Swap, NloopLightning Network, Swap, Nloop
Lightning Network, Swap, Nloop
bitbank, Inc. Tokyo, Japan
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
 
bitbank Corporate Information
bitbank Corporate Informationbitbank Corporate Information
bitbank Corporate Information
bitbank, Inc. Tokyo, Japan
 
ng build --prod & Continuous Delivery
ng build --prod & Continuous Deliveryng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
bitbank, Inc. Tokyo, Japan
 
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計
bitbank, Inc. Tokyo, Japan
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
 
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environmentIntroduction of bitbank frontend development environment
Introduction of bitbank frontend development environment
bitbank, Inc. Tokyo, Japan
 
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかDeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
bitbank, Inc. Tokyo, Japan
 
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介	ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
bitbank, Inc. Tokyo, Japan
 
Ethereumのシャーディング概論
Ethereumのシャーディング概論Ethereumのシャーディング概論
Ethereumのシャーディング概論
bitbank, Inc. Tokyo, Japan
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
bitbank, Inc. Tokyo, Japan
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
 

More from bitbank, Inc. Tokyo, Japan (20)

インフラチームの歴史とこれから
インフラチームの歴史とこれからインフラチームの歴史とこれから
インフラチームの歴史とこれから
 
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略についてビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
 
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdfビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdf
 
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメントビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメント
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
 
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdfビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdf
 
Lightning Network, Swap, Nloop
Lightning Network, Swap, NloopLightning Network, Swap, Nloop
Lightning Network, Swap, Nloop
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
 
bitbank Corporate Information
bitbank Corporate Informationbitbank Corporate Information
bitbank Corporate Information
 
ng build --prod & Continuous Delivery
ng build --prod & Continuous Deliveryng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environmentIntroduction of bitbank frontend development environment
Introduction of bitbank frontend development environment
 
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかDeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
 
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介	ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
 
Ethereumのシャーディング概論
Ethereumのシャーディング概論Ethereumのシャーディング概論
Ethereumのシャーディング概論
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 

Daocasinoにおけるstate channel実装

  • 2. Copyright © bitbank, inc. アウトライン 1. Daocasinoとは 2. Daocasinoにおけるstate channelとは? 3. シーケンス図 4. ダイスゲームのデモ 5. ダイスゲームを用いた具体的な説明
  • 3. Copyright © bitbank, inc. Daocasinoとは 非中央集権なカジノゲーム用のミドルウェアプロトコル
  • 4. Copyright © bitbank, inc. Daocasinoにおけるstate channelとは? 1ゲーム毎にゲーム結果を毎回ブロックチェーンに書き込まず、プレイヤー側とカジノ側 双方のアプリケーション上で結果を管理する - トランザクション手数料を少なくできる - 承認待ちによる無駄な待ち時間を減らせる
  • 5. Copyright © bitbank, inc. シーケンス図
  • 6. Copyright © bitbank, inc. ダイスゲーム実演 ダイスゲーム実演 https://github.com/DaoCasino/dc-sdk-example
  • 7. Copyright © bitbank, inc. ダイスゲームを用いた具体的な説明 1. ゲーム開始(open channel) 2. Playerが賭け金と出目の予想を決める(play game) 3. ランダムナンバー(出目)の生成 (game state) 4. ゲーム結果判定の授受 (game state) 5. チャンネルステート授受 (cahnel state) 6. Playerが賭け金と出目の予想を決めるに戻るかゲーム終了(close channel)
  • 8. Copyright © bitbank, inc. シーケンス図
  • 9. Copyright © bitbank, inc. 賭け金のデポジット(open channel) Playerはデポジットとして指定量のBET(Daocasino専用通貨)のアクセス権をコントラク トに付与する。 - ゲーム終了時にもしPlayer側が損していた場合、ゲームのコントラクトがデポジット されたBETから損失額を徴収できる - Playerはデポジットした額以上の損失が出てしまう賭け方はできない - Playerはデポジット以上の損失が出ない限りゲームを繰り返す事ができる
  • 10. Copyright © bitbank, inc. シーケンス図
  • 11. Copyright © bitbank, inc. Playerが賭け金と出目の予想を決める(play game) Playerは賭け金と出目の予想を決めてPlayボタンを押す
  • 12. Copyright © bitbank, inc. シーケンス図
  • 13. Copyright © bitbank, inc. ランダムナンバー生成(game state) ゲームの流れは 1. playerが出目の予測を決定する 2. 出目(ランダムナンバー)が決定する 3. 結果判定 従って、以下の条件でランダムナンバーを生成する必要がある - Player側は生成されるランダムナンバーを事前に予測できない (シードを自由に選 択できない) - Bankroller側は恣意的にランダムナンバーを決定できない
  • 14. Copyright © bitbank, inc. ランダムナンバー生成(game state)
  • 15. Copyright © bitbank, inc. ゲーム結果判定の授受 (game state)
  • 16. Copyright © bitbank, inc. シーケンス図
  • 17. Copyright © bitbank, inc. お互いの残高の授受 (cahnel state)
  • 18. Copyright © bitbank, inc. シーケンス図
  • 19. Copyright © bitbank, inc. Playerが賭け金と出目の予想を決めるに戻るかゲー ム終了(close channel) Playerがゲームを続ける意思がなければゲーム終了となりその時の結果(残高)が Ethereumのブロックチェーンに書き込まれ、続行するのであれば再度賭け金と出目を 予想しPlayerがゲームを続ける意思が無くなるまで同じ処理を繰り返す。