Dérivés de la blockchain: résoudre le problème pour 500 billions de dollars et remporter le hackathon Consensus 2018

Les 11 et 12 mai 2018, l'équipe 8base en la personne d'Evgeny Semushin, Gabe Kelly et moi avons décidé de tester mes forces et de concourir pour le prix AlphaPoint lors du hackathon Consensus 2018 , qui s'est tenu à New York. Au total, 33 équipes ont participé au hackathon, et parmi ses sponsors se trouvaient des géants tels que CoinDesk, Microsoft, IBM, Hyperledger et Quorum.



Lors du concours AlphaPoint, il était nécessaire d'écrire une application liée à un échange de crypto-monnaie, nous espérions donc que mon expérience dans un hedge fund serait très utile. Nous voulions créer quelque chose de plus qu'un frontal pour la solution de blockchain existante. Notre objectif était de résoudre le vrai problème en appliquant les capacités uniques de l'architecture blockchain, notre propre expérience dans le développement de contrats intelligents et la connaissance de la mécanique interne de la finance.

Nous avons créé un ensemble de contrats intelligents dans le réseau Ethereum, qui vous permet de créer des dérivés décentralisés et de gérer leur fourniture sur la base de la blockchain. Avec notre solution, tout utilisateur peut devenir garant en vertu d'un contrat de vente ou d'achat de tout actif ERC20 sans aucune gestion externe des exigences et de leur réalisation. En conséquence, nous avons remporté le prix principal.

Sous la coupe, les nuances de la mise en œuvre de ce projet.

Le problème


Les produits dérivés sont une chose sérieuse. La capitalisation du marché mondial des dérivés est estimée à près de 500 billions de dollars. Si vous comparez cela avec le marché des crypto-monnaies (environ 0,4 billion de dollars), la trésorerie (environ 40 billions de dollars) et le marché boursier mondial (environ 70 billions de dollars), il devient évident à quel point le rôle des dérivés est important dans l'économie mondiale. Regardez cette infographie . Les banques, les fonds et les entreprises utilisent activement les options, les contrats à terme, les swaps et autres dérivés pour gérer le risque.



Capitalisation boursière de divers actifs:

  • Crypto - crypto -monnaies
  • Argent liquide - espèces
  • Marchés boursiers mondiaux - Bourse mondiale
  • Dérivés - dérivés

La principale difficulté des contrats dérivés est qu'ils utilisent généralement un effet de levier, car les risques potentiels sont plus élevés que les montants réellement détenus par les parties. Pour cette raison, un système complexe de règlements mutuels apparaît, ainsi que des exigences de marge minimale et des demandes d'augmentation des marges: le niveau de garantie doit rester tel que la sortie de la transaction soit toujours plus coûteuse que son exécution.

Tout cela s'est effondré en 2008. Enchevêtrés dans les subtilités des contrats dérivés, les joueurs de Wall Street ont perdu le contrôle de la situation. En conséquence, «l'effet domino» a fonctionné: une vague de demandes d'augmentation des marges et l'incapacité de les satisfaire ont entraîné l'effondrement de Lehman Brothers et d'autres acteurs. Le gouvernement américain a dû intervenir et agir en tant que garant de Wall Street sur les montants gigantesques de contrats de dérivés en cours. Nous savons tous à quoi cela a conduit ...

Solution




BlockSigma est un ensemble de contrats intelligents pour organiser les transactions sur les dérivés de crypto-monnaie et gérer ces transactions. La gestion des garanties est basée sur la blockchain.Par conséquent, pour garantir le respect des exigences de marge minimale pour les fonds enregistrés dans le contrat intelligent, aucun intermédiaire n'est requis.

La principale innovation est la gestion des marges entièrement basée sur la blockchain, sans contrôle centralisé et sans flux prévisionnel de cotations. Pour ce faire, nous avons intégré le protocole Bancor . Le protocole Bancor est déjà activement mis en œuvre dans les opérations de change et de services quotidiens pour des millions de dollars. Bancor utilise une fonction de prix déterministe basée sur le rapport de l'offre et de la demande pour un actif particulier. En conséquence, le prix du jeton de base peut être déterminé directement sur la blockchain, ce qui vous permet de formuler avec précision les exigences pour la marge minimale et à temps pour créer des demandes d'augmentation des marges.

La logique des contrats intelligents est conçue de telle sorte que l'acheteur d'options ferme de force la position dès que la garantie dans le contrat intelligent tombe en dessous de l'exigence de marge minimale obligatoire. La fonction de détermination de la marge minimale tient compte de la réserve excédentaire, ce qui crée des incitations économiques pour l'acheteur de l'option de surveiller étroitement la position et d'obtenir cette réserve (ainsi que l'excédent) lorsqu'il est contraint de fermer en cas de violation de l'exigence de marge minimale. À son tour, le vendeur (garant) de l'option dispose également d'incitations économiques pour reconstituer la garantie à temps si la transaction échoue afin de ne pas perdre la réserve excédentaire.

Implémentation




Le code source de la solution complète est publié dans le référentiel GitHub .

La solution se compose de trois fichiers Solidity principaux: BlockSigmaBase.sol, BlockSigmaCall.sol et BlockSigmaPut.sol. BlockSigmaBase implémente une logique commune, tandis que BlockSigmaCall et BlockSigmaPut en héritent et implémentent la logique des contrats d'achat et de vente, respectivement.

Voici à quoi ressemble l'interface de contrat:

contract BlockSigmaBase is StandardToken { /** * @dev Constructor * @param _underlyingTokenAddress address of the underlying ERC20 token. * @param _currencyTokenAddress address of the currency ERC20 token. * @param _strike option strike denominated in the currency token. * @param _exp expiration timestamp. * @param _minReserve minimum (excess) reserve * @param _underlyingBancorConverter address of the Bancor converter contract that converts underlying token into BNT. * @param _currencyBancorConverter address of the Bancor converter contract that converts currency token into BNT. * @param _issuer address that is allowed to issue(underwrite) new contracts. */ function BlockSigmaBase(address _underlyingTokenAddress, address _currencyTokenAddress, uint256 _strike, uint256 _exp, uint256 _minReserve, address _underlyingBancorConverter, address _currencyBancorConverter, address _issuer) public; /** * @dev get the required maintenance margin level in currency token. */ function getRequiredReserve() public view returns (uint256); /** * @dev Get price of the underlying token expressed in currency token from Bancor */ function getUnderlyingPrice() public view returns (uint256); /** * @dev Ability for writer to issue(underwrite) new contracts * @param amount how many contracts to issue (in wei). */ function issue(uint256 amount) public onlyIssuer returns (bool); /** * @dev Buyer can exercise the option anytime before the maturity. Buyer deposits currency(call) or underlying tokens(put). */ function exercise() public returns (bool); /** * @dev Writer delivers the underlying tokens(call) or currency(put). * @param to which buyer to deliver to. */ function deliver(address to) public onlyIssuer returns (bool); /** * @dev Buyer can force liquidation if exercise is past due or reserve is below requirement */ function forceLiquidate() public returns (bool); /** * @dev Writer can deposit additional reserve * @param amount how much currency token to deposit. */ function depositReserve(uint256 amount) public returns (bool); /** * @dev Writer can withdraw reserve * @param amount how much currency token to withdraw. */ function withdrawReserve(uint256 amount) public onlyIssuer returns (bool); /** * @dev Is reserve below the requirement? */ function isReserveLow() public view returns (bool); /** * @dev Is option series expired? */ function isExpired() public view returns (bool); /** * @dev Can option be liquidated? */ function canLiquidate() public view returns (bool); } 

Considérez maintenant les workflows de base pour un contrat de vente. Prenons, par exemple, un contrat de vente de jetons EOS libellés en DAI, qui vous permet de couvrir efficacement des actifs en EOS contre le dollar américain. Le cycle de vie d'un tel contrat sera le suivant:

  1. Tout utilisateur peut publier un contrat BlockSigmaPut pour un problème d'options spécifique. Lors de la publication, vous devez spécifier: (1) le jeton de base, (2) le jeton de devise, (3) la date d'expiration, (4) la grève, (5) l'adresse de l'émetteur autorisé à agir en tant que garant des contrats dans ce numéro et (6) l'exigence de réserve minimale en vertu du contrat. Exemple: Vente d'EOS avant le 1er juillet 2018 avec une grève de 10 DAI et une réserve minimale de 2 DAI. Un tel contrat donne à l'acheteur le droit de vendre EOS au garant pour 10 DAI à tout moment jusqu'au 1er juillet 2018. Dans ce cas, la marge minimale requise pour chaque contrat sera de 2 + max (0, 10 - prix EOS actuel).
  2. L'émetteur spécifié agit en tant que garant pour un certain nombre de contrats, plaçant la réserve nécessaire dans un jeton de devise. Pour l'exemple ci-dessus, au prix actuel du marché EOS de 12 $, l'émetteur doit placer 2 + max (0, 10 - 12) = 2 DAI pour émettre 1 contrat d'option. Les contrats émis seront considérés comme des jetons ERC20 ordinaires, ce qui leur permettra d'être cotés en bourse pour la vente.
  3. L'acheteur qui souhaite exécuter le contrat doit autoriser le transfert de l'EOS vers le contrat d'option intelligente, puis appeler la méthode d'exercice. Après le début de l'exécution du contrat, le vendeur disposera de 24 heures pour transférer le paiement en jeton de devise. Dans notre exemple, le vendeur doit donner 10 DAI pour chaque jeton EOS.
  4. L'émetteur autorise le transfert de jetons DAI de son compte vers le contrat d'option intelligente et appelle la méthode de livraison. Un contrat intelligent exécuté règle automatiquement la transaction: transfère DAI et EOS à l'acheteur et au vendeur (émetteur), respectivement, et la réserve est retournée au vendeur.
  5. (Facultatif) Si le vendeur n'a pas effectué le paiement dans les 24 heures, l'acheteur peut appeler la méthode forceLiquidate pour retourner l'EOS placé avec la réserve afin de couvrir les actions incorrectes du vendeur.

Considérez maintenant comment la gestion des garanties est mise en œuvre. Dans notre exemple, le prix d'EOS au moment de l'émission du contrat d'option était de 12 $. Supposons qu'elle tombe à 9 $. La réserve nécessaire sera alors de 2 + max (0, 10 - 9) = 3. Cela signifie que le vendeur doit en outre déposer 1 DAI pour chaque contrat en vertu duquel il agit en tant que garant. Si le vendeur ne peut pas le faire, l'acheteur aura une incitation économique à fermer de force la position:

  • Si l'acheteur exerce l'option, il recevra un paiement de 10 - 9 = 1 DAI pour chaque contrat (c'est-à-dire qu'il achètera EOS sur le marché pour 9 $ et le vendra à l'émetteur pour 10 $).
  • En revanche, si l'acheteur ferme la position de force, il recevra l'intégralité de la réserve, qui pour notre exemple est de 2 DAI pour chaque contrat.

Cela motive l'acheteur à fermer de force ses positions le plus tôt possible afin de réaliser rapidement un profit.

Des difficultés


Ce n'est en aucun cas une solution toute faite. Son objectif principal est de montrer les capacités révolutionnaires de la blockchain et des contrats intelligents pour automatiser les règlements mutuels et gérer la fourniture de contrats d'options. Traditionnellement, ces services sont fournis par des intermédiaires et nécessitent également un travail manuel et le paiement de commissions.

Bien que notre solution soit très prometteuse à cet égard, nous voyons un certain nombre de difficultés sérieuses:

  • Le protocole Bancor n'a pas été testé dans des conditions strictes. Il utilise une fonction de prix déterministe qui converge vers les prix de change par arbitrage. On ne sait pas encore comment ce mécanisme fonctionnera avec une volatilité beaucoup plus grande et / ou avec de graves écarts de prix.
  • Le mécanisme de gestion des garanties est instable en raison des écarts de prix marqués. Théoriquement, une situation est possible dans laquelle la responsabilité du garant dépasse la réserve, à cause de laquelle la caution veut rompre la transaction, et l'acheteur ne reçoit pas une compensation complète. Pour éviter cela, vous pouvez augmenter la réserve minimale. De plus, vous pouvez le faire de façon traditionnelle: les utilisateurs du système déposent des fonds dans un «pool d'assurance» distribué, qui couvre automatiquement les pénuries dans des cas exceptionnels.
  • Étant donné que Bancor utilise une fonction de prix déterministe, diverses manipulations sont possibles pour augmenter les paiements d'un côté du contrat d'option au détriment de l'autre. Cela ne peut se produire qu'avec une petite réserve du convertisseur Bancor (c'est-à-dire avec une sensibilité élevée au prix) par rapport au montant de la position des options. Dans ce cas, la manipulation des prix dans Bancor peut s'avérer plus rentable que les paiements d'options résultant d'une telle manipulation. Cependant, ce problème est typique non seulement pour les crypto-monnaies, mais aussi pour les marchés traditionnels (par exemple, incendier une maison pour une assurance).
  • Incertitude dans la réglementation. Nous n'avons pas étudié les aspects réglementaires, car jusqu'à présent notre projet n'a que des objectifs de recherche.

Si vous remarquez des problèmes non répertoriés, écrivez-les dans les commentaires.

Conclusions


La solution décrite en termes généraux reflète les changements fondamentaux que la blockchain apportera au secteur financier au cours des prochaines années. Outre des règlements et une gestion des garanties plus efficaces, cette technologie introduira des règles transparentes, auto-réalisatrices et uniformes pour tous les acteurs du marché.

Notre équipe 8base n'est pas spécialisée dans les solutions et protocoles de niche décrits dans cet article. Nous nous attendons à une croissance explosive de technologies révolutionnaires similaires dans les années à venir sur la vague de la transformation numérique. En conséquence, nous nous concentrons sur la construction du prochain niveau d'infrastructure afin de donner aux utilisateurs professionnels un accès facile à ces technologies et la possibilité de les intégrer dans les logiciels d'entreprise pour atteindre les objectifs commerciaux.
Sources GitHub

Source: https://habr.com/ru/post/fr415755/


All Articles