Qu’est-ce qu’un white paper en matière de crypto et comment le rédiger ?
Traditionnellement utilisé en politique, le white paper a peu à peu fait son apparition dans le monde des affaires. Un white paper correspond à un document d’information s’agissant d’un projet à venir.
En matière de cryptomonnaies, le white paper est généralement utilisé dans le cadre de levées de fonds en cryptomonnaies et en particulier pour des Initial Coin Offerings (ICO), mais également pour des Initial Exchange Offering (IEO), Initial Dex Offering (IDO), Initial Farm Offering (IFO) ou encore en matière de Security Token Offering (STO).
Le white paper décrit le projet ou encore les moyens mis en œuvre pour le réaliser.
Comment rédiger un white paper en matière de crypto actifs ?
En pratique, lorsque l’on souhaite rédiger un white paper, les porteurs de projet doivent décrire de manière efficace les éléments suivants :
- L’identité de l’équipe en charge du projet (sauf à utiliser des pseudonymes pour des projets en DEX) ;
- La feuille de route du projet ;
- La faisabilité technique qui se traduit par une preuve de concept (Proof of Concept) ;
- Un business plan élaboré avec les buts du projet ;
- Un échéancier et calendrier du projet avec ses différentes phases ;
- Le nombre total de tokens qui est mis en circulation ;
- Le prix du token ;
- Les droits qui sont attachés au token ;
- L’utilisation des fonds ;
- Les risques inhérents au projet ainsi qu’au marché secondaire ;
Pour bien rédiger un white paper, les porteurs de projets peuvent s’inspirer des projets solides qui ont connu un succès important. On pense notamment au white paper du bitcoin, créé par Satoshi Nakamoto. On peut également s’inspirer du white paper d’Ethereum, publié en 2014 par Vitalik Buterin. La version française de ce « livre blanc » est disponible ici.
Chaque partie du white paper doit être travaillée et développée. Le but est d’apporter le maximum d’information aux futurs acheteurs de vos tokens.
Le white paper est d’une grande importance, tant pour les porteurs de projets que pour les investisseurs. En effet, il confère une certaine crédibilité au projet lorsqu’il est bien conçu. Il convient donc de soigner sa forme lors de la rédaction.
Bon à savoir : pour les projets les plus sérieux, une consultation juridique (legal opinion en anglais) est réalisée afin de qualifier juridiquement le token et prévoir la fiscalité applicable au projet.
Exemple relatif à la partie « Exécution de code » dans le white paper d’Ethereum
Voici comment est décrit, par exemple, dans le white paper d’Ethereum, la partie relative à l’éxécution du code dans les contrats Ethereum.
« Le code dans les contrats Ethereum est écrit dans un langage bas niveau à bytecode orienté pile, appelé « code Ethereum Virtual Machine » ou « code EVM ». Le code se compose d’une série d’octets où chaque octet représente une opération. En général, l’exécution de code est une boucle infinie qui consiste à effectuer l’opération présente au compteur de programme actuel (qui commence à zéro), puis à incrémenter le compteur de programme jusqu’à la fin du code, une erreur ou la détection d’une instruction STOP
ou RETURN
. Les opérations ont accès à trois types d’espace pour stocker des données :
- La stack (pile), un conteneur premier-entré-premier-sorti auquel on peut ajouter et retirer des valeurs ;
- La memory (mémoire), un tableau d’octets extensible à l’infini ;
- Le storage (stockage) à long terme du contrat, un tableau de clés/valeurs. Contrairement à la pile et à la mémoire, qui sont réinitialisées après exécution, le stockage est conservé dans le temps.
Le code peut aussi accéder à la valeur, à l’expéditeur et aux données du message reçu, ainsi qu’aux données des en-têtes de bloc. Le code peut aussi renvoyer des données sous forme d’un tableau d’octets en sortie.
Le modèle d’exécution formelle du code EVM est étonnamment simple. Alors que la machine virtuelle Ethereum est en cours d’exécution, son état interne complet peut être défini par le tuple (block_state, transaction, message, code, memory, stack, pc, gas)
, où block_state
est l’état global contenant tous les comptes et comprenant les soldes et le stockage. Au début de chaque étape d’exécution, l’instruction en cours est trouvée en lisant l’octet à la position pc
du code
(ou 0 si pc >= len(code)
), et chaque instruction a sa propre définition quant à la manière d’affecter le tuple. Par exemple, ADD
extrait deux éléments de la pile et insère leur somme, réduit gas
de 1 et incrémente pc
de 1, tandis que SSTORE
extrait les deux éléments supérieurs de la pile et insère le deuxième élément dans l’espace de stockage du contrat à l’index spécifié par le premier élément. Bien qu’il existe de nombreuses façons d’optimiser l’exécution de la machine virtuelle Ethereum via la compilation à la volée, une implémentation de base d’Ethereum peut être réalisée en quelques centaines de lignes de code. »
On le voit, la description du code est largement développée et est sérieuse. De même, outre la description du projet, Vitalik Buterin a pris le soin de développer les parties relatives aux frais, au minage, aux systèmes d’identité et de réputation, etc.