Qlyphs 文档

买卖

为指定买家预留一份代币,再通过一笔购买交易将其换成 QTC。

问题

如何把代币卖给某一个人换取 QTC,而双方都无需信任对方?

QLYP-v1 支持双边出售:卖家以固定的 QTC 价格和一个到期高度,为一位指定买家预留一份代币。 其他账户无法购买这份预留。不支持部分成交。面向任意买家的市场,即公开挂单(open listings), 仍处于开发中。

当前可用情况

购买需要一个配有两个受信任见证者的开发部署,以及一个构建时内置其信任策略的钱包。主网上的购买仍处于停用状态。 下面的流程描述的是该开发协议,而不是经过验证、已在主网上线的市场。

预留一份代币

卖家和买家首先需要一个原生 2-of-2 交易账户,每个买家只需设置一次。随后,卖家为一个报价提案签名,该提案承诺资产、数量、买家、收款地址、价格、1% 费用和到期高度。 QLYP 接受该报价后预留这些代币。已预留的代币不能转账到别处。 交易账户不持有任何购买本金。可能产生原生账户与提案费用,以及网络费;挂单不收取 Qlyphs 费用。

挂单
一份代币
1,000 GLYF
价格
5 QTC
状态
账户就绪
凭证 · 原生提案
签名者
你
签名者
签名前指定
阈值
2
提案 ID
打包时分配
  1. 01 / 04

    从一个交易账户开始

    卖家和指定买家使用一个原生 2-of-2 交易账户。创建这个账户与提出报价是两回事,并且可能产生原生费用。它不持有任何购买本金。

  2. 02 / 04

    提出确切的报价

    卖家为一份报价提案签名:以 5 QTC 出售 1,000 GLYF。提案的条款不可更改,写明了买家、收款账户、Qlyphs 费用和到期。卖家和买家是这个现有交易账户的两位签名者。

  3. 03 / 04

    确定提案

    原生提案在该交易账户内获得一个 ID。这个 ID 连同网络和多签账户,一起标识这笔预留。钱包在构建购买之前会核对这份确切的提案。

  4. 04 / 04

    等待预留最终确认

    QLYP 接受这笔有效报价并预留代币。买家等待最终确认,然后在购买批处理中核实并批准这份确切的提案。取消和到期都可以释放尚未结算的预留。

购买已预留的代币

指定买家先等待预留最终确认。买家的钱包会验证见证证明、检查原生提案,并按提案承诺的条款构建购买交易。

给这位买家的报价
QRKS2501.2 QTCTrade
GLYF1,0005 QTCTrade
LTTC400.8 QTCTrade
你的钱包
  • 已由两位见证者证明
  • 仍然有效,已在链上检查
  • 条款由你的钱包构建
  1. 01 / 05

    你点击「Trade」

    一笔报价以 5 QTC 为你预留了 1,000 GLYF。只有指定买家可以接受它。你的应用凭预留键请求一次购买;钱包独立获取并核实其条款。

  2. 02 / 05

    钱包要求提供证明

    钱包要求一份证明,外加两个运营方的签名;这两个运营方必须是编译进钱包的开发信任策略所允许的。两者必须绑定同一个状态根和已最终确认的检查点。见证者有各自独立的代码;基础设施是否独立,必须由运营方核实。

  3. 03 / 05

    它亲自检查链上状态

    证明描述的是一个检查点。钱包还会通过其配置的节点读取原生提案,检查确切的调用、成员、批准和到期。在你的交易打包之前,状态仍可能变化。

  4. 04 / 05

    它构建付款

    钱包根据核实过的报价构建这笔购买,然后显示这份代币、付给卖家的款项、1% Qlyphs 费用和网络费。一次购买批准的是一个已有的提案;它不会创建新的凭证,也不会另收一笔固定的凭证费用。

  5. 05 / 05

    一次签名,完成

    你的签名授权一个原子批处理:批准提案、付款给卖家、向 Qlyphs 付款。QLYP 只为匹配的有效购买交付代币。请跟踪它的打包、原生结果、QLYP 接受情况和最终性;仅凭已提交的哈希并不代表成功。

购买是一个原生原子批处理:批准这个确切的提案、向卖家付款、支付 Qlyphs 费用。只有当这一规范的购买批处理成功并产生所需事件时, QLYP 才会把已预留的代币记入买家账户。买家在价格之外另付 1%,向上取整到 QTC 最小单位,另加网络费;卖家收到全额价格。

原生原子性保护的是批准和 QTC 付款。代币交付是一条叠加层规则,因此还取决于有效的报价数据、对链上数据的正确摄取,以及正确的协议解释。 手动转账 QTC 不算受保护的代币购买。

成功的购买无法重复支付

指定买家的首次原生批准只能给出一次。对同一提案的第二次购买尝试会在付款之前失败,但仍可能扣除网络费。

原始购买
  1. 批准已有提案
  2. 向卖家支付 5 QTC
  3. 向 Qlyphs 支付 0.05 QTC
已提交
同一买家的重复尝试
  1. 批准已有提案
  2. 向卖家支付 5 QTC
  3. 向 Qlyphs 支付 0.05 QTC
已提交
  1. 01 / 05

    一位买家,两次购买尝试

    设想指定买家针对同一个已最终确认的预留,用不同的原生 nonce 提交了两次购买。这里演示的是协议层的拦截;钱包不得自动重发结果不确定的交易。

  2. 02 / 05

    第一笔开始执行

    第一笔交易用已承诺的确切调用批准这个已有提案。原生 pallet 记录下指定买家的首次批准。

  3. 03 / 05

    顺利通过

    同一个原子批处理向卖家付款,并支付 1% 的 Qlyphs 费用。有了一笔匹配的有效购买,QLYP 就把预留结算给买家。代币层面的解释与原生执行彼此独立。

  4. 04 / 05

    第二笔撞上了锁

    重复的那笔交易试图再次批准该提案。原生批准会失败:这位买家已经批准过,或者提案已被移除。批处理走不到任何一笔付款。

  5. 05 / 05

    整体取消

    失败的重复交易既不付款给卖家,也不支付 Qlyphs 成交费。仍可能扣除网络费。请保留原始交易哈希并跟踪其结果,不要重试购买。

这是同一买家重复购买的示例,而不是不同买家之间的抢购竞争。 如果某次提交的结果不确定,请保留它的哈希并查看状态,不要重新发送。

取消或到期

卖家可以取消仍有效的提案。如果取消先于购买得到处理,批准会失败,也不会支付任何购买价格。如果购买先成功,之后的清理无法再把已售出的代币退还给卖家。 仍有效的预留会在严格晚于到期高度的第一个区块被释放。取消和失败的尝试可能产生网络费。

本页内容