兑换报价
兑换报价是在 ZooBC 上进行交易的最简单方式。挂单方锁定一定数量的某种资产,并指明它想换回的另一种资产的数量;由单个吃单方准确支付这一数量,双方资产同时转移。兑换报价适用于任何一对资产(ZBC、创世币或用户代币),无论其小数位数如何,因此也能服务于无法进入订单簿市场的代币。
三种交易
- CreateSwapOffer(类型 18)指明给出的资产(资产种类和数量)、索取的资产(资产种类和数量)、以 Unix 秒计的可选过期时间,以及一个可选的指定交易对手,即唯一可以接受该报价的地址。给出的资产立即离开挂单方的余额,存放在报价中,这样吃单方就知道它确实存在。
- AcceptSwapOffer(类型 19)让一个吃单方支付全部索取的资产。在同一步骤中,挂单方收到索取的资产,吃单方收到给出的资产。挂单方不能接受自己的报价。
- CancelSwapOffer(类型 20)在报价未成交期间随时把给出的资产退还给挂单方。
要么全部,要么全无
没有部分成交:一个吃单方拿走整个报价,否则什么都不会发生。也不存在任何借贷:双方资产同时且永久转移,事后谁也不欠谁。与多个交易对手逐步成交是市场上的订单的做法。
如果两个吃单方试图接受同一个报价,先被应用的那个胜出。第二个已失去意义,成为付费空操作:它支付手续费,不改变任何东西(见 每个账户每个区块一笔交易与批量交易)。
过期与取消
过期只是阻止接受。链永远不会自动清除报价,因此已过期的报价会一直锁定,直到其挂单方取消它并取回给出的资产。兑换报价不支付租金。
兑换报价与市场上的订单
| 兑换报价 | 市场上的订单 | |
|---|---|---|
| 资产 | 任意两种,任意小数位数 | 有 8 位小数的代币 |
| 交易对手 | 一个吃单方,要么全部成交,要么不成交 | 与多笔订单成交 |
| 价格 | 由挂单方的两个数量确定 | 每笔成交按挂单的价格 |
| 租金 | 无 | 市场支付租金 |
与其他功能的配合
- 挂单方或吃单方收到的资产属于入账,因此会经过接收方的分账策略(见 分账策略与交易策略)。
- 交易策略拒绝“交易所”类别的账户既不能创建也不能接受报价。
- 如果未成交报价中的某个代币过期,在分配该代币的 ZBC 储备时,锁定在报价中的单位仍计入挂单方(见 代币维护费(存续))。