3 个版本
0.1.4 | 2024年2月28日 |
---|---|
0.1.3 | 2024年2月7日 |
0.1.2 | 2023年12月19日 |
#2156 在 魔法豆
58 每月下载量
475KB
1.5K SLoC
关于 Soroban Snooker
Soroban Snooker 是一个智能合约,运行在基于 Rust 的智能合约平台 Soroban 上,并在 Stellar 区块链上部署。这个项目包括一个简单的 游戏客户端,旨在展示 Soroban 上 web3 游戏的各种用例和功能,包括
- 如何实现内购以从玩家那里接收付款。
- 如何向玩家颁发奖励,例如成就 NFT,作为游戏体验的一部分。
- 如何实现去中心化的游戏验证,包括池物理和时间检查。
- 如何使用 auth 和设置管理游戏资产和提款的 admin 功能。
- 如何利用不同的 Soroban 存储类型来高效管理游戏数据,包括临时、持久和实例存储。
- 如何利用自定义类型进行客户端合约通信。
- 如何将 Freighter Stellar 钱包集成到游戏客户端。
- 如何为没有钱包的玩家实现本地/访客模式。
构建工具
Soroban 智能合约是用 Rust 编写的,以下提供设置说明。
另一方面,游戏客户端是用纯JavaScript编写的,不需要任何外部框架。要开始,只需打开 client/game.js
文件并进行开发。请注意,游戏循环以固定帧率运行,这增强了与智能合约中的池物理验证的互操作性。然而,为了实现更平滑的渲染,可以实现解耦帧率,但实现这一点留给读者作为练习。
入门指南
要开始此项目,请按照以下步骤设置您的环境
先决条件
确保您已安装以下内容
-
Rust 和 Soroban
按照以下链接中提供的说明,在 Rust 上设置 Soroban 智能合约开发环境:https://soroban.stellar.org/docs/getting-started/setup
-
Stellar
在 Testnet 上创建并资助您的 Stellar 账户以进行测试。您至少需要2个账户:一个管理员账户和一个玩家账户。使用以下链接创建和资助您的账户:https://laboratory.stellar.org/#account-creator?network=test
通过执行以上步骤并设置所需先决条件,您将为该项目的工作做好准备。
安装、构建、部署和运行
-
克隆存储库
git clone https://github.com/FredericRezeau/soroban-snooker.git
-
运行测试
cargo test -- --nocapture
-
构建合约
cargo build --target wasm32-unknown-unknown --release
-
部署到测试网
配置测试网网络
soroban config network add --rpc-url https://soroban-testnet.stellar.org:443 --network-passphrase 'Test SDF Network ; September 2015' TESTNET
为管理员配置身份
soroban config identity add --secret-key ADMIN
使用以下命令部署合约并保存输出值(您的合约ID)
soroban contract deploy --wasm target/wasm32-unknown-unknown/release/soroban_snooker.wasm --source ADMIN --network TESTNET
-
初始化合约
请参考以下URL中的指南,了解如何包装 Stellar 代币用于支付和奖励资产发布的详细信息:https://soroban.stellar.org/docs/advanced-tutorials/tokens#compatibility-with-stellar-assets
如果您想使用原生代币初始化合约,请执行以下命令
soroban contract invoke --network TESTNET --source ADMIN --id YOUR_CONTRACT_ID -- initialize --payment_token CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC --admin ADMIN --payment_amount 10 --reward_token CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC --reward_amount 10
-
编辑合约ID
打开
client/game.js
并编辑以下行以使用您的合约ID。const contractId = "CA7VJIGYO6OU5U5BQ77B6YAQDEQQ6E5U5OMVIG5XLHZKCHZLQA3N4Q7N";
-
可选,对于非Freighter用户
如果您不使用Freighter,请打开
client/game.js
并编辑以下行以使用您的测试账户密钥种子。// Enter a valid secret seed if you need testing without Freighter. const testSecret = "S---ECRET";
使用智能合约
要测试或只是玩,您有两个主要选项
-
使用游戏客户端
- 启动
client/index.html
文件。为了绕过浏览器的限制,考虑通过 HTTP/S 提供服务client/index.html
文件。 - 如果您使用Freighter,请确保您在测试网上。
- 启动
-
使用 Soroban CLI
- 要打开游戏会话并获得球桌,请执行以下命令
soroban contract invoke --network TESTNET --source PLAYER --id YOUR_CONTRACT_ID -- insertcoin --player PLAYER
- 要提取支付,请使用以下命令
soroban contract invoke --network TESTNET --source ADMIN --id YOUR_CONTRACT_ID -- withdraw --account YOUR_STELLAR_ADDRESS --amount 10
贡献
贡献使开源社区成为一个如此神奇的地方,可以学习、启发和创造。您所做出的任何贡献都将受到高度赞赏。
如果您有改进建议,请将存储库分叉并创建一个拉取请求。您也可以简单地创建一个带有“增强”标签的问题。别忘了给项目加星!再次感谢!
- 分叉项目
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 提交您的更改 (
git commit -m '添加一些令人惊叹的功能'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开一个拉取请求
许可证
在MIT许可证下分发。更多信息请见LICENSE
。
联系
Fred Kyung-jin Rezeau - @FredericRezeau
Litemint市场: https://litemint.com
查看我们在Stellar上的可交易卡牌游戏:https://litemint.io
加入我们的Discord服务器:https://litemint.gg
依赖项
~11–15MB
~316K SLoC