開発者向け
FAIRDRUMのコードはMITライセンスで公開されています。コントラクト、サイト、起動スクリプト、テストは、1つのリポジトリ(リンクは公開後にここに表示されます)にまとまっています。ここでは、全体の構成と、自分用のコピーを動かす方法を簡単に説明します。
構成
| フォルダー | 内容 |
|---|---|
programs/fairdrum/ | RustとAnchor 1.2.2で書かれたコントラクト。ゲームの数値はconsts.rsに、計算はengine.rsとmath.rsに通常の関数として書かれているため、テストはネットワークなしで実行できます。 |
app/ | サイト:ViteとTypeScript。ページはapp/src/pages/に、コントラクトのクライアントとSwitchboardの処理はapp/src/chain/にあります。サイト上の数値の表はconsts.rsから生成されるため、コントラクトとずれることはありません。 |
scripts/ | 起動:トークンの発行、初期化、保存された設定の確認、devnetでのテスト、運用上の支払い、任意の「キーパー」(常時稼働の補助プログラム)。 |
docs/ | ARCHITECTURE.md(全体の構成)、LAUNCH.md(起動の手順)、AUDIT.md(セキュリティの自己点検と未解決の課題)。 |
e2e/ | 実際のブラウザーで、模擬ウォレットと模擬ネットワークを使って行うサイトのテスト。 |
このプロジェクトにはサーバーもデータベースもありません。サイトは通常のファイルだけで構成され、データはコントラクトから直接読み取ります。
自分で動かす
Node.js 20.19以降と、コントラクトのテスト用にRustが必要です。
npm install
npm run dev # localhost上のサイト(コントラクトなしのデモモード)
npm test # クライアントのテスト
cargo test -p fairdrum --release # コントラクトのテスト
npm run build # dist/フォルダー内のサイト
npm run build:single # オフライン版:個別のHTMLファイルで、ダブルクリックで開けます
devnetとメインネットでの起動手順を、コマンドとよくあるエラーの解説つきで説明したもの:リポジトリ内のdocs/LAUNCH.md。
再ビルドなしで変えられる設定
config.jsonファイルはページと同じ場所にあり、読み込みのたびに読み取られます。そのため、コントラクトのアドレス、ネットワークノード、リンクはビルドなしで変更できます。programIdが空だと、デモモードになります。
{
"programId": "起動後のプログラムのアドレス",
"cluster": "mainnet-beta",
"rpc": "https://...",
"swapUrl": "FAIRDRUMを交換するためのリンク(用意できたときに設定)",
"links": { "github": "...", "telegram": "...", "x": "...", "audit": "..." }
}
サイトのアドレス、ページの説明文、ウェブマスター向けの確認コードはapp/seo.jsonとapp/pages.jsonで設定します。npm run gen:htmlは、これらをもとにページ、サイトマップ、robots.txtを再生成します。
コードの検証
テスト
コントラクトのロジックは、ネットワークなしでテストされています。数万回のランダムな操作を連続して行う「ストームテスト」も含まれ、各操作の後で、ボールト内のトークンが債務とぴったり一致していなければなりません。このテスト自体も「ミューテーション」で検証済みで、計算で最小単位を1つでもずらすと失敗します。
未検証のこと
Solana向けビルド、Switchboardとの実環境での動作、独立監査:プロジェクト状況を参照してください。内部の確認は監査の代わりにはならず、docs/AUDIT.mdには未解決の項目が一覧されています。
ネットワークとの照合
起動後は、「公平性を確認する」の手順で、公開されているコードとネットワーク上のプログラムを照合してください。プログラムとトークンのアドレスは、「公式リンク」のページで確認できます。
サイトfairdrum.toにアクセスできない場合
ゲーム残高はサイトではなく、コントラクトに保管されています。サイトは便利な外側の画面にすぎず、どのコピーからでも出金できます。
- アドレスが正しく入力されているか確認し、ブックマークからサイトを開いてください。このサイトだけにつながらない場合は、しばらく待ってください。ホスティングの一時的な障害が起きることがあります。
- サイトのコピーを開いてください。リポジトリは公開されており、サイトは通常のファイルだけでできています。オフライン版をダウンロードするか、自分でビルドして(
npm run build)、実際のプログラムのアドレスを記したconfig.jsonを横に置き(アドレスは「公式リンク」のページとブロックエクスプローラーで照合できます)、任意の簡易Webサーバー(例:npx vite preview)で開きます。 - 同じウォレットを接続してください。残高、ランク、連続記録はコントラクトから読み込まれ、出金はメインのサイトと同じように動作します。
- どの「ミラー」サイトでも、シードフレーズは入力しないでください。このサイトがシードフレーズを求めることはありません。求めてくるコピーは偽物です。
他人から入手したサイトのコピーは、必ず確認してください。コードをプロジェクトのリポジトリと比較します。確認しなければ、自分が何に署名するのかわかりません。自分でビルドするほうが確実です。
ライセンス
MIT:ライセンス文を残す限り、商用利用を含め、コードを読み、コピーし、改変し、実行できます。ライセンスの対象はコードであり、名称やアドレスfairdrum.toは含まれません。ルールの異なるフォークが、このプロジェクトであるかのように装ってはいけません。