---
# System prepended metadata

title: Specs Danae
tags: [danae]

---

---
title: Specs Danae
tags: danae
lang: fr
breaks: false
---

Specs Danae :writing_hand:
===========


Smart contracts :scroll:
---------------

Un smart contract pour gérer un [token générique, stable (DHI)](#Coin-stable-DHI-) et un ensemble de 
[contrats d'œuvre](#Contrats-d'œuvres). Chaque contrat d'œuvre peut être différent (avec une 
sous-interface commune) et est déployé lorsque la propriété de l'œuvre est
tokenisée sur la blockchain.

*[DHI]: Danae HI token, token stable générique

### Coin stable `DHI` :moneybag:

Token fongile de type ERC223/ERC777:

- version pour [Liquidity/Michelson](https://gitlab.com/dune-network/dune-network/-/merge_requests/131#token-standard-in-liquiditymichelson)
- version pour [Love](https://gitlab.com/o-labs/dune-spice/-/blob/master/contract/dgg/dgg.lov.ml)

#### Échange
==TODO==

Voir [Échanges](#Échanges-)

#### Interface

```ocaml=
contract type DHI = sig

  type storage
  
  (* Entry points *)
  val%entry transfer : address * nat * bytes option
  val%entry burn : nat
  (* ...
     Ajouter d'autres :
     - mint?
     - Manager/owner
     - Achat
     - Vente?
  *)
  
  (* Views *)
  val%view balanceOf : address -> nat
  val%view totalSupply : nat

end
```

### Contrats d'œuvres :frame_with_picture: 

Chaque œuvre tokenisée (en totalité ou même en partie) est représentée
par un smart contract sur la blockchain.

Ce smart contract définit (et gère) :

 - Un **token d'œuvre** (tokens cessibles ou échangeables en DHI)
     - Ces tokens sont "crées" lors du déploiement
     - Initialement répartis au(x) propriétaire(s)
     - Librement échangeables/transférables (_i.e._ cessibles)
     - Représente les droits de suite
         - dividendes/royalties reversés lors de l'édition
           d'une œuvre pour expo, etc.
 - Un **token patrimonial**
     - Représente droits patrimoniaux / droits d'auteurs
     - Non-cessibles librement, mais la propriété peut en être changée
       par un admin (par ex.) lors du décès d'un artiste, etc.
     - Initialement répartis entre :
        - Artiste
        - Danae
        - Conseil général des hauts de seine
        - Galeries représentant l'artiste
     - Donne droit à l'obtention d'une **commission** (en DHI) lorsque des
       **tokens d'œuvre** sont revendus

### Contrat d'échange :currency_exchange:

DEX limité, voir Questions plus bas.


### Collect calls ?

Contrats qui payent les fees, lesquels, pour quelles opérations.

-----------------------------------------------------------------------

Scénarios
---------

- Création/tokenisation d'une nouvelle œuvre
    - Déploiement smart contract (2 tokens)
    - Écriture dans la db
- Distribution (ou vente) des droits de l'œuvre
- Édition d'une œuvre (ex: octroi de droits d'exploitation/exposition dans le monde réel?)
- Revente contre des DHI d'un détenteur de tokens (d'œuvres)
- Don/échange de tokens d'une même œuvre de A à B
- Création/Burn de DHI par les administrateurs?

-----------------------------------------------------------------------

Backend :desktop_computer: 
-------

### Base de données :minidisc:

- Quelles tables ?
- ==TODO== Définition

### Communication avec la blockchain :satellite:

- Spice (Lib) :
  - Utilisation de la lib générée d'appel du contrat (type safe)
  - ==TODO== Définir la finalité (production de soit : operations forgées,
    opérations signées, injectées, etc.)
- Dune client + wrapper
- Metal OCaml lib
- Crawlers

### Crypto :key:

- Authentification
- Gestion des clefs cryptographiques

### Pipeline d'évenements/états :alembic: 

:::warning
==TODO==
Voir avec Max (okkad + distran)
:::


-----------------------------------------------------------------------

Échanges :currency_exchange: 
--------

==TODO==

### Échanges tokens d'œuvre :left_right_arrow: DHI

- DEX

*[DEX]: Decentralized EXchange
*[USDT]: Tether stable coin (repose sur USD)

### Échanges DHI / Fiat :money_with_wings: 

Solution Ad-hoc ou utilisation de plateform/banque en marque blanche comme
[Legolas](https://lgo.group).

==TODO==
Demander fiche d'information de Legolas (LGO) à Laetitia si elle
existe (la fiche d'information)

Pistes possibles : 
  - Legolas
  - Atomic swap avec USDT
  
### KYC

*[KYC]: Know Your Customer

KYC requis pour échanges ?

-----------------------------------------------------------------------


Questions
---------

- où se passent les transferts de token contre DHI ? Au niveau du contrat de l'œuvre ? D'un échange ? Automatisé ou pas (contrôlé manuellement par Danae) ? Sous quelle(s) forme(s) sont définies les règles de distribution de commissions (linéaire, affine, prix plancher) ?

- Place de marché (mettre en relation les vendeurs et les acheteurs?) ou notaire/escrow (un vendeur spécifique face à un acheteur spécifique)? Ou les deux? Si les deux, la place de marché utilise le notaire/escrow comme opération atomique.

- Est-ce que la place de marché est un smart contract ou un backend + site web? (i.e. est-ce que le niveau de confiance va jusqu'à prouver qu'il n'y a pas de favoritisme dans le matching des ordres)

- Proposition: la place de marché contient des ordres prêts à être matchés (sans autorisation supplémentaire de l'acheteur/vendeur). Le matching est fait à l'extérieur (par un bot par exemple).

spec de l'escroc:

```ocaml=
contract type Escrow = sig

  type storage = {
    dhi_contract : address;
    sell_orders : (address * address * nat * nat, address option) big_map;
    buy_orders : (address * address * nat * nat, address option) big_map;
  }
  
  (* Entry points *)
  (* sell_tokens is known by the art works *)
  val%entry sell_tokens : address (* artwork contract *)
                        * address (* seller *)
                        * nat (* number of tokens *)
                        * nat (* number of DHI *)
                        * address option (* buyer if exists *)
                        
  val%entry buy_tokens : address (* artwork contract *)
                       * address (* buyer *)
                       * nat (* number of tokens *)
                       * nat (* number of DHI *)
                       * address option (* seller if exists *)

  val%entry cancel_sell : address (* artwork contract *)
                        * address (* seller *)
                        * nat (* number of tokens *) 
                        
  val%entry cancel_buy : address (* artwork contract *)
                       * address (* buyer *)
                       * nat (* number of tokens *) 

end
```

Dans token artwork :
```
val%entry sell : nat * nat * address option (*TODO*)
```

Déroulement: Alice veut vendre un token de la tour Eiffel au LapinBlanc

1. Alice appelle le contrat TourEiffel en annonçant sa vente et son prix de vente
2. Cet appel déclenche un appel à sell_tokens(TourEiffel,Alice,1,1,Some LapinBlanc) sur Escrow
3. LapinBlanc appelle DHI en annonçant son achat
4. Cet appel déclenche un appel à buy_tokens(TourEiffel,LapinBlanc,1,1,Some Alice)
5. Cet appel déclenche:
  + Un appel à TourEiffel pour connaître les commissions (on est donc en option TTC)
  + Un appel à TourEiffel pour transférer le token à LapinBlanc
  + Un appel à DHI pour transférer le 1 - commissions DHI à Alice

Suite des questions:

- temps d'expiration des ordres ? (+ n'importe qui peut faire rembourser les ordres qui ont expiré)

1. Est-ce que les royalties sont reversées en DHI (le stable coin) ?

2. Est-ce que le prix d'un token d'œuvre est décidé à l'avance, ou
   bien est sujet à spéculation ?

3. Où se passent les échanges de tokens d'œuvres contre DHI ? Sur
   chaîne ou sur une place de marché centralisée ?
   (Notre vision : un échange décentralisé, DEX, avec carnet d'ordres
   et vérification sur chaîne + un oracle de matching off-chain, qui
   demande plus de ressources.)

4. Quelles propriétés attend-on de cet exchange ? Quel volume, nombre
   d'ordres ?

5. Qu'en est-il du KYC ? Est-il requis pour :
     - faire des échanges ?
     - acheter des DHI ?
     - acheter ou vendre des tokens d'œuvre ?

6. Comment les utilisateurs interagissent-ils avec la blockchain ? Au
   travers de la plateforme Danae toujours ?
   (Notre vision : comptes blockchain générés pour les utilisateurs,
   les clefs privées sont gardées chiffrées dans la DB et utilisées
   pour signer les opérations des utilisateurs loggués.)

7. Quels sont les chiffres qui sont fixes ? sont amenés à changer ? ou
   pourront être amenés à changer potentiellement plus tard ? (ex. les
   8%, 50%, 1/3, etc.)

8. Quels sont les paramètres qui sont propres à chaque œuvre ou à la
   plateforme (commissions, nombre de tokens, restrictions, etc.) ?

9. Les tokens d'œuvre ne peuvent pas être échangés librement, sinon
   les utilisateurs peuvent contourner les commissions, donc ils ne
   peuvent pas être sur une plateforme d'échange comme Binance.
   Le token stable, lui, peut-être échangé librement et donc on peut
   envisager une intégration avec un exchange plus tard (par contre il
   faut penser au coût - plusieurs bitcoins, et à la dépendance de cet
   exchange, opacité, dérives, etc.) ? Est-ce critique pour la
   plateforme Danae ?

10. Pourquoi une commission à la fois sur l'achat et la vente de
    tokens d'œuvre ? Ne serait-il pas plutôt possible de tout prélever
    sur la part du vendeur, pour favoriser l'achat de tokens plutôt
    que leur vente (système à la tva en france) ?

11. Pourquoi les royalties ne sont pas reversées en tenant compte
    *seulement* de la répartition des tokens d'œuvre, quitte à en
    distribuer à l'artiste, Danae, etc. ? Existe-t-il une part non
    cessible ?
