项目创意
ZooBC 没有虚拟机,所以没有人向它部署合约。它提供的是一大组现成的交易类型,好的项目会把它们组合起来:链是裁判和账本,应用是门面,通常只是一个网页(用一个 HTML 页面构建应用)。下面的每个创意都只使用节点已经能执行的交易类型,并且各附有开发者应当知道的注意事项。
支付
流水支付
LiquidPayment(类型 6)锁定一笔 ZBC 或代币,在所选的 complete_minutes 内把它均匀地归属给接收方;到期时全部金额自动支付。LiquidPaymentStop(类型 262)可由任一方发送,它支付截至当时已归属的份额,并退还其余部分。页面只需画出水位。须知: 分配依据两笔交易时间戳之间的时间,接收方的份额向上取整:10,000,000 个单位、为期 3 分钟、66 秒后停止,接收方得到 3,666,667 个单位,6,333,333 个单位退回(流动支付(流式支付))。
损坏押金
租客以带托管的 SendZBC 发送押金,其中指定一名审批人、一笔佣金和一个截止期限(托管)。审批人可以批准,金额归房东;也可以拒绝,金额退还租客;无论哪种情况,审批人都拿走佣金。如果没有人采取行动,截止期限过后的第一个区块会把金额和佣金退还给租客。注意: 托管租金在创建时支付,永不退还;截止期限如果超出修剪所及的范围就会被拒绝,除非该交易的存续押金足以支付保存这么久的费用。
家庭账户
LinkAccount(55)、SetMemberPermissions(57)、UnlinkAccount(56)和 TransferGroupControl(58)让一个家庭在最多 100 个地址背后共用一个余额(账户组)。注意: 加入需要加入地址的同意,并会把它拥有的一切转入该组;新成员在控制者授予权限之前只能收款;退出的成员什么也带不走。
游戏
骰子游乐场
CreateApp 配合类型 16 到 19(双骰子、抛硬币、轮盘和老虎机)与应用池对赌。页面大约 30 秒后显示结果,并可读取 /api/v1/apps/pool 来显示每种游戏允许的最大赌注。注意: 最大赔付超过池中 5% 的投注会被拒绝,而一笔非常大的奖金可能分多个区块支付(单人投注)。
井字棋小站
类型 1,使用 CreateApp、JoinApp、AppMove 和 ClaimAppTimeout(多人应用)。注意: 每一步走子都是一笔交易,要付手续费,也要等待出块;中途离开的玩家会把游戏占住 240 个区块,之后另一方才能申领;使用以太坊式或比特币式密钥的账户不能入座。
闪电对决
一种用 SettleApp 结算的双人通道游戏(通道应用):走子以签名凭证的形式在玩家之间飞速传递,链上只看到赌注和结算。注意: 你的应用必须在玩家之间传递走子(官方钱包使用中继),保留收到的每一步签名走子,并留意 240 个区块的挑战窗口。
代币与交易
咖啡集章卡
IssueToken(类型 10)创建一种 0 位小数的印章代币,因此它以整数单位转移;TransferToken(11)把一枚印章交给顾客;BurnToken(13)在柜台消费印章(发行代币)。注意: BurnToken 只适用于以可赎回方式发行的代币,而且只有某个单位的持有者才能销毁它;此外,代币只有在其维护费得到支付期间才存续(代币维护费(存续))。
兑换小站
CreateSwapOffer(18)、AcceptSwapOffer(19)和 CancelSwapOffer(20)组成一块在任意两种资产之间进行原子互换的报价板(兑换报价)。注意: 一名吃单方支付所需一方的全部金额,没有部分成交;而报价的有效期只阻止接受,因此过期的报价会一直锁定,直到挂单方取消它。
记录与消息
哈希存证
消息中携带某个文件 SHA-256 的交易,可以证明该文件在那个区块产出时就已存在,而一笔 FundLongevity(52)或存续字段可以让它在修剪之后仍被保存(付费保存数据(存续))。网关的 /verify 页面在浏览器中计算哈希,并在链上搜索它(校验下载的文件)。注意: 没有存续押金时,普通节点会在 30 到 60 天后修剪这条存证,而首笔 FundLongevity 必须在一个快照周期(约 30 天)之内到来。
密封明信片
一条标记为“ZBE1”、用接收方密钥密封的加密消息,最多可以携带 268 字节的文本(签名消息与加密消息)。注意: 只有文本被密封;交易本身,连同其发送方、接收方和时间,与其他任何交易一样公开。
用 ZooBC 登录
网站显示一个一次性挑战值,用户用公开工具把它作为 ZBC-MSG-v2 消息签名,即对 SHA3-256("ZBC-MSG-v2" ‖ 创世哈希 ‖ 消息) 的 Ed25519 签名,网站再用该账户的密钥核对签名。注意: 消息签名不属于共识,节点也没有为它提供路由,因此网站要自行验证;而且官方网页钱包不签署消息。
需要修改节点的项目
- 自动做市商。 ZooBC 按决定不设 AMM 流动性池;它的交易所是订单簿加兑换报价(市场与订单)。
- Solidity 或任何 EVM 合约。 没有虚拟机。
- 一种新游戏,例如扑克。 游戏规则不能以脚本形式上传;新游戏需要在节点中加入新规则。
- 带兑现按钮的 crash 游戏。 crash 是一种目标预先固定的单人投注;没有用于兑现的走子。