Lottery Demo dApp

これは、レイヤー1プルーフ・オブ・ステーク(PoS)であるCasper Network上にビルドした分散型アプリケーション(dApp)の一例です。誰も真似ることができない結果を出力することにより信用性の高いブロックチェーンの値をお見せするためにLotteryゲーム理論をチェーン上に実装しました。

ロッテリーに参加するには、Casper Networkのネイティブトークンを使用してチケットを購入する必要があります。手数料を支払った後、アプリケーションは報酬プールというプレーヤーに報酬を支払う工程へと入ります。誰かがジャックポットで勝った際は、ゲームは限界なく新しいロッテリーの回をスタートします。

Casper Testnetにデプロイされたロッテリーは、https://lottery-demo.casper.networkにて試していただけます。Faucetを使用してテストトークンを取得してください。

Toolset

このアプリケーションは、Casper blockchainのソフトウエア開発者や一般のWeb3アーキテクチャ向けに作成されました。昔ながらのWeb2アプリケーションとは異なり、Web3ではユーザーがブロックチェーンと直接やり取りをすることもあります。通説であるユーザー間もしくはアプリケーションといかに情報流通やネットワーク状態の監視や反応に対応するかを変更させます。

統合を簡単にする為にこのサンプルを大まかな概要となるヘルプと共に開発しWeb3開発へのそれら特定のチャレンジを対応し開発経験値を向上させるものとなっています。

  • CSPR.click は、web3の認証レイヤーを担っておりエンドユーザーとブロックチェーンの疎通を行います。Casper Ecosystem内の全てのウォレットとの疎通とユーザへSingle-Sign-Onの様な体験を提供します。
  • Odra は、Rustで書かれたスマートコントラクトのフレームワークでして、よく知られているOOPインターフェイスを背景にしたチェーン独特の詳細について要約しています。
  • CSPR.cloudは、Casper Networkのミドルウェアレイヤーです。ネットワークのアクティビティの監視やインデックス作成、そしてスケーラブルなREST APIとリアルタイムのWebSocketサブスクリプションを提供します。

Architecture(設計)

Lottery Demoは、互いにやり取りする4つのコンポーネントにて成り立つWebです:

  • Smart Contractは、Casper Network上で実行され、ロッテリーのロジックを実装します。 
  • Event Listenerは、コントラクトのチェーン上のアクティビティをリッスンし、それをAPI経由のアクセスをより速くするためにデータベースに集約させます。
  • APIは、チェーン上に集約されたデータを読み取りWeb Clientに提供します。また、Web ClientにCSPR.cloudへのアクセス許可をアクセスキーを露出させずに行えるようにCSPR.cloud APIのproxyとして動作します。
  • Web Clientは、スマートコントラクトを直接呼び出し過去の実行分の情報を表示することでユーザーがロッテリーを実行することを可能としています。ロッテリーデータをAPIからフェッチし、APIにてエクスポーズされたCSPR.cloudのproxyエンドポイントを介してCSPR.cloudからブロックチェーンデータをフェッチします。

各コンポーネントのコードは、このモノレポジトリの呼応している区分されたディレクトリに収まっています。Event ListenerAPIは、両方のserverインフラストラクチャとなっています。

実行

Docker composeを使用してアプリケーションのデモを実行可能です。

まず初めに、アプリケーションをビルドします:

docker compose -f infra/local/docker-compose.yaml --project-name lottery build

そして、下記コマンドを使用して実行します:

docker compose -f infra/local/docker-compose.yaml --project-name lottery up -d

Makefileにショートカットもご用意しています:

make build-demo
make run-demo

Develop(開発)

コードを触りたい場合やご自身のdApp構築のスタートポイントとして活用したい場合は下記ステップに従ってください。

CSPR.build

CSPR.buildアカウントを登録しCSPR.clickとCSPR.cloudのアクセスキーを作成してください。

Smart contract

ここに記載している通りに、スマートコントラクトをビルドしCasper Testnetへデプロイします。このステップをスキップしデフォルト設定として提供している既存のTestnet smart contractパッケージハッシュ8efc85466cf4054f47eb009b683b611fa63cccd14f074bf78f1e9404dc52a347を使用することも可能です。

ご自身のスマートコントラクトを書きテストしたい場合は、smart contract documentationをご確認ください。

Server(サーバー)

サーバー手順に従い、設定やビルド、Event ListenerとAPIを実行します。

Web Client

Web Client手順に従い、設定やビルド、アプリケーションを実行します。

About Casper

Casperは、セキュリティと分散型を重視したレイヤー1 プルーフ・オブ・ステーク (PoS) ブロックチェーンです。Casperは開発者のニーズに沿ってビルドされ、スマートコントラクトのアップグレードやプロトコルレベルでの複数署名トランザクションなどの機能をサポートしています。Casperのスマートコントラクトは、WASM仮想マシンにて実行され、スマートコントラクトの開発に使用される幅広い様々な言語の可能性を創造しています。

Community

Casper Developers Telegram チャネルに参加し他開発者とつながりましょう。