StarkExchange : Retraits rapides à l'aide de bocaux de cookies

Initialement publié en anglais par StarkWare le 22 juillet, 2019

Un mécanisme trustless qui brise la barrière du "temps de preuve".

Il y a quelques semaines, nous avons décrit StarkExchange, notre moteur de scalabilité pour les transactions sans garde dans les échanges centralisés. Dans la conception originale, la vitesse des retraits sur StarkExchange était limitée par :

  • le temps de génération de la preuve
  • le temps de rassembler un lot de transactions
  • calculer une preuve attestant de leur validité
  • faire accepter la preuve on-chain (ce qui prend plusieurs minutes)

Nous proposons ci-dessous une amélioration : un mécanisme trustless qui permet des retraits beaucoup plus rapides, limités uniquement par la durée de la transaction sur Ethereum.

Avantage : Coût du capital plus faible et réponse plus rapide aux opportunités du marché
Des retraits plus rapides signifient un coût du capital plus faible pour les traders : un trader a besoin de moins de capital pour participer au marché, car il est plus facile/rapide pour lui de déplacer des fonds pour profiter des opportunités d'arbitrage.

      Table 1: Comparaison des Exchange Solutions
Table 1: Comparaison des Exchange Solutions

Discussion technique

Modifications du système StarkExchange :

  • Paiement conditionnel : Intuitivement, il s'agit d'un paiement d'Alice à Bob qui n'est effectué que si une certaine condition est satisfaite.
    Nous utilisons les paiements conditionnels comme une primitive de "preuve de la blockchain" un moyen de garantir que l'état on-chain contrôle l'état off-chain. Plus précisément, un paiement est effectué off-chain (c'est-à-dire inclus dans un lot attesté par une preuve STARK), uniquement si un certain enregistrement apparaît on-chain.
    Les paiements conditionnels sont déjà utilisés dans StarkExchange, lorsque nous déplaçons les dépôts des utilisateurs off-chain : un dépôt ne peut pas être inclus dans une preuve (qui atteste d'un changement dans l'état off chain), à moins qu'un dépôt correspondant soit observé dans la blockchain.
    Les nombreux avantages des paiements conditionnels seront abordés dans un article de blog séparé.
  • Le contrat Cookie Jar : L’exchange met en place un smart contract supplémentaire, à partir duquel elle effectue des retraits rapides. Notez que ce contrat peut bénéficier du modèle de conception de registre de faits, afin de stocker l'historique évolutif des paiements effectués on-chain aux parties participantes.

Un seul flux de retrait rapide :

  1. L'utilisateur envoie à l’exchange une demande de retrait rapide : un paiement conditionnel signé transférant le montant que l'utilisateur souhaite retirer à l’exchange (off-chain), à condition que le même montant soit transféré à l'utilisateur on-chain.
  2. L'exchange en supposant que l'utilisateur a effectivement les fonds dans son solde off-chain, et que l'échange a suffisamment de fonds disponibles dans le Cookie Jar - donne l'instruction au contrat de transférer les fonds demandés à l'utilisateur, et de marquer le retrait rapide comme terminé.
  3. L'exchange soumet le paiement conditionnel au prouveur. Comme la condition de ce paiement est satisfaite (un paiement correspondant à l'utilisateur peut être observé on-chain), le prouveur l'inclut dans sa prochaine preuve, et par conséquent les fonds sont transférés off-chain du compte de l'utilisateur vers le compte de l'échange.

L’exchange réapprovisionne son Cookie Jar on-chain à partir de son solde off-chain (en fait, elle recycle les fonds entre ses soldes on-chain et off-chain). Le réapprovisionnement peut être effectué périodiquement, ou peut être déclenché lorsque les fonds disponibles (par token) atteignent un certain montant/valeur seuil minimum.

Il convient de noter que plus le réapprovisionnement est fréquent, plus le coût du capital de l'échange est faible pour supporter les retraits rapides. Par exemple : considérons un pot à biscuits duquel x tokens/heure sont retirés. S'il est réapprovisionné quotidiennement, l’exchange doit bloquer 24x tokens dans le Cookie Jar (ou un montant plus élevé qui inclut une marge de sécurité). Si, au contraire, il est réapprovisionné toutes les heures, alors l’exchange doit garder seulement x tokens dans le Cookie Jar. Le coût du capital est déterminé par la fréquence de réapprovisionnement.

Nouvelle source de revenus pour les exchanges

Les retraits rapides peuvent être tarifés en fonction de différents niveaux de service. En tant que tels, ils représentent une opportunité commerciale intéressante pour les exchanges, qui permet de faire une distinction de prix entre les professionnels (arbitres, par exemple) qui paieront pour un service de qualité supérieure, et les clients de détail.

Note historique

Une proposition similaire de retraits rapides sur Plasma a été présentée en juin 2018. Ce mécanisme s'appuyait sur des preuves de fraude, et non sur des Validity proofs (preuves de validité), ce qui donnait lieu à un protocole plus complexe. Il est important de noter que le "contrat de liquidité" présenté là-bas (le contrat Cookie Jar, dans notre proposition), devait couvrir la période de contestation des fraudes (de l'ordre de deux semaines, par rapport à notre délai d'une heure), ce qui entraîne un coût du capital beaucoup plus élevé (environ 200X plus élevé).

Résumé

StarkExchange V1.0 a été conçu pour permettre des échanges liquides en auto-dépositaire.

Avec les retraits rapides, StarkExchange offre :

Pour l'utilisateur : un coût du capital plus faible

Pour l’exchange : un plus grand potentiel de revenus (par exemple en permettant de nouveaux niveaux de prix, en attirant les arbitres, etc.)

Pour toutes les parties : peu coûteux et trustless. Ni l’exchange ni l'utilisateur ne peuvent voler les fonds de l'autre partie.

Le coût supplémentaire du retrait rapide pour les utilisateurs est uniquement le coût du capital des fonds limités bloqués dans le Cookie Jar ; les autres coûts (coût du gas et coût de la génération de preuves) restent essentiellement inchangés.

Tom Brand, Avihu Levy, et Michael Riabzev

StarkWare

Traduction faite par Valentin Negro

Subscribe to Starknet France
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.