Slide 1

Slide 1 text

NFT Baseball Game 2022.5.7 第2回ゆるNFTオンラインハッカソン! Yushi Ara

Slide 2

Slide 2 text

そもそものきっかけ

Slide 3

Slide 3 text

そもそものきっかけ せっかくこういう NFT あるから これ使って遊びたい!野球盤とかイイじゃん! ランダム要素つかいたい!

Slide 4

Slide 4 text

課題意識 ブロックチェーンで乱数つくるのはたいへん  ↓ 自前オラクル?・・・❌ 運営依存 オラクル・サービス?・・・❌ コスト Commit-Reveal 方式?・・・❌ UX

Slide 5

Slide 5 text

アイデア 未来のブロックハッシュを乱数として使ったらどう? 0x253.. 0x123.. ???

Slide 6

Slide 6 text

アイデア 未来のブロックハッシュを乱数として使ったらどう? 0x253.. 0x123.. ??? ここでトリガー 参照予定

Slide 7

Slide 7 text

アイデア 未来のブロックハッシュを乱数として使ったらどう? 0x253.. 0x953.. 0x123.. ??? 次(以降)のトランザクションで結果が決まる 参照

Slide 8

Slide 8 text

NFT Baseball の概要 ・・・ 1 2 3 4 5 持ってる NFT が バッターになる

Slide 9

Slide 9 text

NFT Baseball の概要 2 3 4 5 プレイ!

Slide 10

Slide 10 text

NFT Baseball の概要 ・・・ 3 4 5 プレイ! この時点で1つ前 の結果が決まる 結果は次のいずれか ● シングル ● ツーベース ● スリーベース ● ホームラン ● アウト

Slide 11

Slide 11 text

NFT Baseball の概要 ・・・ 4 5 ランナーは 前に押し出される プレイ!

Slide 12

Slide 12 text

NFT Baseball の概要 ・・・ 5 ホームインすると スコアの数だけ NFT をもらえる! プレイ!

Slide 13

Slide 13 text

スコアを取るともらえる NFT

Slide 14

Slide 14 text

おもしろさ、よいところ ● 既存 NFT の活用 ● 出塁状態で 期待値が変化 ● ゲームの ライフログ ● 運営に依存しない 乱数

Slide 15

Slide 15 text

デモ https://nftbb-3pt283r74-0xys.vercel.app Mumbai テストネットで試してね

Slide 16

Slide 16 text

展望 ● バッターの NFT によって ヒット確率を変える ● バッターの NFT を ホワイトリスト 化 ● もらえる NFT の メタデータを拡張 (ゲーム結果を入れる、フルオンチェーンにする) ● NFT のコミュニティごとに戦うのもおもしろそう

Slide 17

Slide 17 text

補足

Slide 18

Slide 18 text

ソースコード github.com/avcdsld/baseball-board-game ● コントラクト(Solidity, Hardhat) ● フロントエンド(Next.js, Vercel) Mumbai テストネットにデプロイ済み

Slide 19

Slide 19 text

1つ先のブロックハッシュを乱数として使うコード https://github.com/avcdsld/baseball-board-game/blob/main/packages/contracts/contracts/BaseballBoardGame.sol#L65

Slide 20

Slide 20 text

出塁の状態はビットで表現 https://github.com/avcdsld/baseball-board-game/blob/main/packages/contracts/contracts/BaseballBoardGame.sol#L113-L139

Slide 21

Slide 21 text

QA ● ブロックハッシュを使ってる時点で、未来だろうがそうでなか ろうが、乱数の質は変わらないのでは? → けっこう違いそう。現在ブロックのハッシュを使う場合、   マイナーがブロックに入れる機会を伺えてしまう。   (ダメなら入れない、いけるときだけ入れる)   未来のブロックのハッシュを使えば、機会を選べない。   つまり、マイナーが結果を操作できる可能性が低くなる。

Slide 22

Slide 22 text

QA ● 次の人がプレイしなかったらどうなる? → 結果を確定させるだけの、誰でも呼べる関数も用意してる