Offres d’échange
Une offre d’échange est la façon la plus simple de négocier sur ZooBC. Un créateur verrouille un montant d’un actif et indique le montant d’un autre actif qu’il veut en retour ; un seul preneur paie exactement ce montant, et les deux côtés changent de mains en même temps. Les offres d’échange fonctionnent avec n’importe quelle paire d’actifs (ZBC, pièces de genèse ou jetons utilisateur), quelles que soient leurs décimales : elles servent donc aussi aux jetons qui ne peuvent pas aller sur un marché à carnet d’ordres.
Les trois transactions
- CreateSwapOffer (type 18) indique le côté donné (un actif et un montant), le côté demandé (un actif et un montant), une heure d’expiration facultative en secondes Unix, et une contrepartie désignée facultative, seule adresse autorisée à accepter. Le côté donné quitte aussitôt le solde du créateur et reste dans l’offre, de sorte qu’un preneur sait qu’il est vraiment là.
- AcceptSwapOffer (type 19) permet à un preneur de payer la totalité du côté demandé. Dans la même étape, le créateur reçoit le côté demandé et le preneur reçoit le côté donné. Un créateur ne peut pas accepter sa propre offre.
- CancelSwapOffer (type 20) rend le côté donné au créateur, à tout moment tant que l’offre est ouverte.
Tout ou rien
Il n’y a pas d’exécution partielle : un seul preneur prend toute l’offre, ou rien ne se passe. Rien n’est prêté non plus : les deux côtés changent de mains en même temps et définitivement, si bien que personne ne doit rien ensuite. S’exécuter petit à petit contre de nombreuses contreparties, c’est ce que font les ordres sur un marché.
Si deux preneurs tentent d’accepter la même offre, le premier appliqué l’emporte. Le second n’a plus de sens et devient une opération nulle payante : il paie ses frais et ne change rien (voir une transaction par compte et par bloc).
Expiration et annulation
L’expiration n’empêche que l’acceptation. La chaîne ne balaie jamais les offres : une offre expirée reste donc verrouillée jusqu’à ce que son créateur l’annule et récupère le côté donné. Les offres d’échange ne paient pas de loyer.
Offres d’échange et ordres sur un marché
| Offre d’échange | Ordre sur un marché | |
|---|---|---|
| Actifs | deux quelconques, toutes décimales | jetons à 8 décimales |
| Contreparties | un seul preneur, tout ou rien | exécutions contre de nombreux ordres |
| Prix | fixé par les deux montants du créateur | chaque exécution au prix de l’ordre en attente |
| Loyer | aucun | le marché paie un loyer |
Avec les autres fonctions
- Les actifs que reçoit un créateur ou un preneur sont des crédits entrants : ils passent donc par la politique de répartition du destinataire (voir les politiques de répartition et de transaction).
- Un compte dont la politique de transaction refuse la catégorie Bourse d’échange ne peut ni créer ni accepter d’offres.
- Si un jeton présent dans une offre ouverte expire, les unités verrouillées dans l’offre comptent quand même pour le créateur lorsque la réserve en ZBC du jeton est répartie (voir l’entretien du jeton).