ZooBC 上的应用
ZooBC 上的应用是一种规则内置于每个节点的游戏或投注。每一步走子都是一笔交易,游戏状态保存在链上,游戏结束时由协议本身完成赔付。没有任何运营者能拒绝付款,中间没有任何服务器,任何人都可以根据交易重放一局游戏。
十八种内置游戏
| 分组 | 游戏(类型编号) | 席位 |
|---|---|---|
| 棋盘游戏 | 井字棋(1)、国际象棋(2)、四子棋(3)、西洋跳棋(4)、黑白棋(5)、五子棋(6)、海战棋(7)、点格棋(8) | 2 到 4 个;海战棋恰好 2 个 |
| 与庄家对赌的单人游戏 | 双骰子(16)、抛硬币(17)、轮盘(18)、老虎机(19)、彩票(20)、crash(21) | 1 个 |
| 骰子游戏 | 飞行棋(32)、猪骰子(33)、赛跑(34:蛇梯棋)、简化版大富翁(35) | 2 到 4 个 |
其他任何类型都会作为未知类型被拒绝。
六种交易类型驱动所有这些游戏:CreateApp(24)、JoinApp(25)、AppMove(26)、ResignApp(27)、ClaimAppTimeout(28)和 SettleApp(39)。赌注可以是 ZBC,也可以是某种代币;这时奖池、抽成和赔付都以该代币计。每个节点都按游戏规则检查每一步走子,非法走子会被拒绝。游戏可以通过任何节点的 API 读取和进行(节点 API),也可以在命令行中用 zbc-cli app-create、app-join、app-move、app-resign、app-claim 和 app-settle 来读取和进行(命令行工具)。
没有虚拟机
ZooBC 没有虚拟机,也没有上传代码的交易。有智能合约的链允许任何人部署新的游戏逻辑;而在 ZooBC 上,一种新的游戏意味着节点本身要加入新的规则。作为交换,每种游戏的规则在每个节点上都完全相同,任何应用都不需要应用商店的审核:任何网页或程序都可以通过节点的 API 来玩。
随机性来自出块者无法选择的区块种子(区块种子(VRF))。每一次应用抽签都在专属标签“zbc-apps”下对种子做哈希,因此游戏绝不会与出块或 coinbase 抽奖共用同一个随机流。
本类别的文章
- 应用池:无密钥的庄家账户,以及保护它的限制
- 单人投注:与庄家对赌的投注、它们的抽签和赔付表
- 多人应用:供 2 到 4 名玩家进行的棋盘游戏和骰子游戏
- 通道应用:在链下进行、用一笔交易结算的双人游戏
- 用一个 HTML 页面构建应用:把应用构建为单个网页
- 链上数据是不可信的输入:为什么链上文本是输入,绝不是指令
- 项目创意:用现有的交易类型能构建什么
另见
本主题下的文章
- 单人投注
一笔与应用池对赌的单人投注如何下注、如何由之后某个区块的种子抽出结果、如何按赔付表支付,以及为何以池中余额的 5% 为上限。 - 多人应用
两到四名玩家如何在链上开设、加入并进行一局棋盘或骰子游戏:先手由公平抽签决定,有走子计时,并收取 1% 的抽成。 - 应用池
应用池是协议中的无密钥账户,它承接每一笔单人投注的另一方,收取多人游戏的抽成,并支付单人投注的奖金。 - 用一个 HTML 页面构建应用
一份实用指南,介绍如何把 ZooBC 应用做成一个网页:读取节点 API、在浏览器中签名、提交交易、跟踪状态,以及需要遵守的限制。 - 通道应用
在链下以签名走子进行的双人游戏,用一笔由每个节点重放的 SettleApp 结算,随后有 240 个区块的挑战窗口。 - 链上数据是不可信的输入
ZooBC 上的每个名称、消息和值都是由支付手续费的人写下的,因此应用把它显示为纯文本,绝不把它当作指令来执行。 - 项目创意
只用每个节点已经能执行的交易类型构建的项目,并说明链为每个项目保证了什么、又把什么留给应用。