#soroban #gaming #web3 #nft #stellar #payment

soroban-snooker

展示 Soroban 在 Stellar 上进行 web3 游戏的智能合约

3 个版本

0.1.4 2024年2月28日
0.1.3 2024年2月7日
0.1.2 2023年12月19日

#2156魔法豆

Download history 24/week @ 2024-04-02

58 每月下载量

自定义许可

475KB
1.5K SLoC

JavaScript 1K SLoC // 0.1% comments Rust 287 SLoC // 0.1% comments

MIT License Twitter

Build Status Current Crates.io Version


Logo

Soroban Snooker

展示 Soroban 在 Stellar 上进行 web3 游戏的智能合约
玩游戏演示 · 开发者视频指南

关于 Soroban Snooker

Soroban Snooker 是一个智能合约,运行在基于 Rust 的智能合约平台 Soroban 上,并在 Stellar 区块链上部署。这个项目包括一个简单的 游戏客户端,旨在展示 Soroban 上 web3 游戏的各种用例和功能,包括

  • 如何实现内购以从玩家那里接收付款。
  • 如何向玩家颁发奖励,例如成就 NFT,作为游戏体验的一部分。
  • 如何实现去中心化的游戏验证,包括池物理和时间检查。
  • 如何使用 auth 和设置管理游戏资产和提款的 admin 功能。
  • 如何利用不同的 Soroban 存储类型来高效管理游戏数据,包括临时、持久和实例存储。
  • 如何利用自定义类型进行客户端合约通信。
  • 如何将 Freighter Stellar 钱包集成到游戏客户端。
  • 如何为没有钱包的玩家实现本地/访客模式。

构建工具

Soroban 智能合约

Rust Javascript

Soroban 智能合约是用 Rust 编写的,以下提供设置说明。

另一方面,游戏客户端是用纯JavaScript编写的,不需要任何外部框架。要开始,只需打开 client/game.js 文件并进行开发。请注意,游戏循环以固定帧率运行,这增强了与智能合约中的池物理验证的互操作性。然而,为了实现更平滑的渲染,可以实现解耦帧率,但实现这一点留给读者作为练习。

入门指南

要开始此项目,请按照以下步骤设置您的环境

先决条件

确保您已安装以下内容

通过执行以上步骤并设置所需先决条件,您将为该项目的工作做好准备。

安装、构建、部署和运行

  1. 克隆存储库

    git clone https://github.com/FredericRezeau/soroban-snooker.git
    
  2. 运行测试

    cargo test -- --nocapture
    
  3. 构建合约

    cargo build --target wasm32-unknown-unknown --release
    
  4. 部署到测试网

    配置测试网网络

    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
    
  5. 初始化合约

    请参考以下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
    
  6. 编辑合约ID

    打开 client/game.js 并编辑以下行以使用您的合约ID。

    const contractId = "CA7VJIGYO6OU5U5BQ77B6YAQDEQQ6E5U5OMVIG5XLHZKCHZLQA3N4Q7N";
    
  7. 可选,对于非Freighter用户

    如果您不使用Freighter,请打开 client/game.js 并编辑以下行以使用您的测试账户密钥种子。

    // Enter a valid secret seed if you need testing without Freighter.
    const testSecret = "S---ECRET";
    

使用智能合约

要测试或只是玩,您有两个主要选项

  1. 使用游戏客户端

    • 启动 client/index.html 文件。为了绕过浏览器的限制,考虑通过 HTTP/S 提供服务 client/index.html 文件。
    • 如果您使用Freighter,请确保您在测试网上。
  2. 使用 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
    

贡献

贡献使开源社区成为一个如此神奇的地方,可以学习、启发和创造。您所做出的任何贡献都将受到高度赞赏。

如果您有改进建议,请将存储库分叉并创建一个拉取请求。您也可以简单地创建一个带有“增强”标签的问题。别忘了给项目加星!再次感谢!

  1. 分叉项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改 (git commit -m '添加一些令人惊叹的功能')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个拉取请求

许可证

在MIT许可证下分发。更多信息请见LICENSE

联系

Fred Kyung-jin Rezeau - @FredericRezeau

Litemint市场: https://litemint.com

查看我们在Stellar上的可交易卡牌游戏:https://litemint.io

加入我们的Discord服务器:https://litemint.gg

依赖项

~11–15MB
~316K SLoC