Qlyphs ドキュメント

オープン出品

ロットをまるごと 1 つの価格で出品し、誰でも買えるようにします。1 枚のネイティブなチケットが、支払う買い手をちょうど 1 人にします。

問い

誰でもロットを買えるようにしながら、支払うのが 1 人だけだと保証するにはどうすればよいのでしょう?

開発中

オープン出品は開発用のトラックで作られており、メインネットではまだ有効になっていません。現在のプロトコルは指名した買い手に売る仕組みです。

オープン出品では、指名した買い手の代わりに、誰でも買えるようになります。売り手はロットをまるごと 1 つの合計価格で出品し、最初の有効な購入がそれを手に入れます。解決すべきなのは競争の問題です。1 つのロットに 2 人の買い手が両方とも支払うことは、決してあってはいけません。

競争の流れを 1 歩ずつ

  1. 01 / 05

    売り手がロットをまるごと出品

    署名した LIST が1つで、50,000 GLYF を合計 120 QTC で予約します。何もエスクローされず、出品に Qlyphs の手数料はかかりません。出品はチケットを指しています。まだ存在しない、ネイティブのアカウントアドレスです。

  2. 02 / 05

    2人の買い手が「購入」を押す

    どちらの買い手のウォレットも、同じ3段階のアトミックなバッチに署名します。チケットを作る、売り手に 120 QTC を払う、1% の手数料を払う、の3つです。両方の取引がチェーンに届きます。

  3. 03 / 05

    1人目がチケットを作る

    買い手 A のバッチが先にブロックに入ります。チケットが作られ、2つの支払いが通り、QLYP は予約された 50,000 GLYF を買い手 A に入れます。

  4. 04 / 05

    2人目は支払いの前に失敗

    チケットは1回しか作れません。買い手 B の最初の手順が失敗するので、アトミックなバッチは止まり、どちらの支払いも実行されません。買い手 B が失うのはネットワーク手数料だけです。

  5. 05 / 05

    トレードオフをはっきりと

    誰でもチケットを作れるので、誰でも取引1回分の費用で、買わずに出品を終わらせられます。そのときロットは売り手に戻ります。二重に払う人はいませんが、出品が妨害されることはあります。買い手はロットをまるごと買います。一部だけの約定も、期限もありません。

チケット

チケットはネイティブな Quantus のマルチシグアドレスです。出品の時点で、売り手、出品を含むブロックのハッシュ、そのブロック内での出品の位置から決まります。

ticket = create_multisig(sort([seller, listing_block_hash]), 2, listing_index)
buy    = batch_all([ create(ticket), pay(payout, price), pay(fee account, 1%) ])

Quantus では、このアドレスはちょうど一度しか作れません。このネイティブな性質ひとつがロックの役目を果たします。2 回目の作成は失敗し、購入は 1 つのアトミックなバッチなので、負けた買い手の支払いは実行されません。成功した正規の購入に署名した人が、ロットを受け取ります。

なぜ出品のブロックからチケットを導くのか

チケットは出品より前に存在してはいけません。 もし存在できたら、誰かが先に作っておき、出品が現れた瞬間につぶしてしまえます。

ブロックができる前に、そのハッシュを知る人はいません。 出品のブロックのハッシュと、そのブロック内での位置からチケットを導くので、チケットはこの出品だけのものになり、前もって作ることはできません。

あとからなら誰でも計算できます。 買い手、ウォレット、インデクサーはみな公開データから同じアドレスを導くので、どの買い手も同じ 1 枚のチケットを取り合うことになります。

条件

  • ロットまるごと、1 つの価格。 一部だけの約定はありません。買い手は出品されたものをすべて受け取ります。
  • エスクローなし、出品手数料なし。 単位は QLYP の台帳で予約されます。QTC は買い手から売り手の受取アカウントへ直接送られます。1% の販売手数料は買い手が払います。
  • 期限なし。 出品は、買われるか売り手がキャンセルするまで続きます。
  • 安全性を優先します。 チケットが一度でも使われると、出品は終わります。誰かが購入せずにチケットだけを作った場合、ロットはそのまま売り手に戻ります。何も受け取らずに支払う人はいませんが、取引 1 回分の費用を払う気があれば、誰でも出品を中断できます。

API のチェックだけでは、1 つのロットに 2 人の買い手が支払うことを防げません。1 回しか使えないネイティブなチケットなら防げます。ただしそれは、規格に沿ったウォレットが確定済みの状態をもとに組み立てた購入の場合です。

このページの内容