项目
面向开发者
FAIRDRUM 的代码以 MIT 许可证开源:合约、网站、上线脚本和测试都放在同一个 仓库(发布后链接会出现在这里) 中。这里简要说明整体结构,以及如何运行你自己的副本。
结构
| 文件夹 | 内容 |
|---|---|
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 和主网(mainnet)上的分步上线流程,含命令和常见错误分析:见仓库中的 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。
代码验证
如果网站 fairdrum.to 无法访问
你的代币不会消失。
游戏余额保存在合约中,而不是网站上。网站只是一层方便的外壳,用它的任何副本都可以提取。
- 请检查地址是否输入正确,并通过书签打开网站。如果只有它打不开,请稍等:托管服务有时会出现临时故障。
- 打开网站的副本:仓库是公开的,而网站只是普通文件。下载离线版本,或自己构建(
npm run build),在旁边放一个写有真实程序地址的config.json(可在“官方链接”页面和区块浏览器中核对该地址),再通过任意简单的网页服务器打开,例如npx vite preview。 - 连接同一个钱包。余额、等级和连续天数会从合约读取,提取的方式与主站相同。
- 不要在任何“镜像站”上输入助记词。网站从不索要助记词:任何索要助记词的副本都是假的。
来自他人渠道的网站副本请先验证:把代码与项目仓库对比。否则你并不知道自己将要签署的究竟是什么。自己构建更可靠。
许可证
MIT:代码可以阅读、复制、修改和运行,包括用于商业目的,但须保留许可证文本。许可证只涉及代码,不涉及名称和地址 fairdrum.to:采用不同规则的分叉版本不得冒充本项目。