Rejoignez-Nous sur

Introduction à la construction sur DeFi avec Ethereum et USDC – Partie 1 | par Coinbase | Juil.2020

1*BZ9FRpViqoeUMgC5AwnbKA

News

Introduction à la construction sur DeFi avec Ethereum et USDC – Partie 1 | par Coinbase | Juil.2020

Coinbase

Par Pete Kim

Chez Coinbase, notre mission est de construire un système financier ouvert. Nous sommes convaincus que l'augmentation de la liberté économique fera du monde un endroit meilleur. La finance décentralisée, ou DeFi pour faire court – une version ouverte, sans frontières et programmable de la finance – est une partie indissociable de cette vision.

Contrats intelligents

DeFi est alimenté par des contrats intelligents fonctionnant sur des réseaux décentralisés tels que Ethereum («la blockchain») et des devises numériques comme USD Coin (USDC), une tokenisation de dollars américains sur la blockchain. L'idée des contrats intelligents est en fait assez simple. Nick Szabo, un pionnier de la monnaie numérique et de la cryptographie qui a initialement eu l'idée en 1997, le distributeur automatique est devenu l'ancêtre des contrats intelligents.

Le distributeur automatique est une version automatisée d'un contrat, exprimé sous forme de matériel électrique:

  1. Vous payez le prix affiché en insérant de l'argent dans la machine, la machine distribue une boisson
  2. Vous ne payez pas le prix affiché, il ne distribue pas de boisson
  3. Si vous avez payé le prix affiché mais que la machine n'a pas distribué de boisson, ou si elle a distribué une boisson même si vous n'avez pas payé le prix affiché, il y a alors violation du contrat

Le distributeur est capable de gérer ses obligations contractuelles de manière totalement autonome sans intervention humaine.

Les contrats intelligents modernes fonctionnent de la même manière, mais les clauses contractuelles sont exprimées sous forme de code informatique exécutable au lieu d'être implémentées dans le matériel. La nature décentralisée du réseau au-dessus duquel les contrats intelligents sont exécutés garantit qu'ils sont exécutés tels qu'ils sont écrits et qu'aucune entité n'est en mesure de contourner les règles ou de manipuler le résultat. Une mise en garde importante est que parce que le réseau exécute le code mot pour mot, un code de contrat intelligent défectueux peut entraîner des conséquences inattendues («le code est loi»).

Pas de meilleur moment que maintenant

Beaucoup de gens trouvent que construire sur la crypto et la blockchain est très intimidant et pensent qu'il n'est accessible qu'aux informaticiens purs et durs. Bien que cela ait pu être vrai il y a quelques années à peine, les outils et l'UX des développeurs se sont considérablement améliorés depuis lors, et toute personne ayant des compétences de base en programmation peut commencer à construire (ou BUIDLing).

L'écosystème DeFi connaît actuellement une croissance explosive. L'USDC a atteint une capitalisation boursière de 1 G $ en moins de 2 anset la valeur totale des actifs stockés dans divers services DeFi a dépassé 2 milliards de dollars en moins de 3 ans. Il n'y a vraiment pas de meilleur moment pour commencer à se développer dans cet espace.

La source: DeFi Pulse

Le didacticiel ci-dessous sert de guide simple pour commencer à développer vos propres contrats intelligents DeFi. Nous espérons qu’un tel guide aidera à démocratiser la création d’un système financier mondial et ouvert.

Cette série de didacticiels suppose que vous avez une certaine expérience avec JavaScript, qui est le langage de programmation le plus utilisé au monde. Vous serez également présenté à Solidité, un langage de programmation de contrat intelligent utilisé sur Ethereum, qui est la blockchain de contrats intelligents la plus utilisée au monde. Enfin, vous pourrez interagir avec USDC, le stablecoin à support fiat le plus largement adopté dans les applications DeFi.

Configuration de l'environnement de développement

Pour commencer, nous aurons besoin d’un environnement de type Unix et Node.js v12.x (la dernière version LTS) installée dessus. macOS est nativement un environnement Unix, et les utilisateurs de Windows peuvent l'obtenir en installant Ubuntu sur WSL à partir du Microsoft Store. Des étapes plus détaillées peuvent être trouvées ici pour macOS, et ici pour Windows. Quant à l'éditeur de texte, Code Visual Studio est fortement recommandé car le modèle de projet que vous allez utiliser est préconfiguré pour celui-ci, mais vous pouvez techniquement utiliser n'importe quel éditeur. Oh, et je préfère Raccourcis clavier Vim sur Emacs.

Mise en place du projet

Il faut du travail pour mettre en place un projet Solidity, et honnêtement se laisser distraire par celui-ci n'est pas très utile pour apprendre à ce stade, donc un modèle préconfiguré a été préparé pour vous.

Exécutez les commandes suivantes dans votre terminal pour télécharger et configurer le modèle:

$ git clone https://github.com/CoinbaseStablecoin/solidity-tutorial.git
$ cd solidity-tutorial
$ npm install -g yarn # Install yarn package manager
$ yarn # Install project dependencies

Vous pouvez voir des erreurs de compilation lorsque le fil essaie de créer des extensions natives. Ceux-ci sont facultatifs et il est prudent d'ignorer les erreurs. Tant que vous voyez le message "Terminé" à la fin, vous êtes prêt à partir.

Ouverture du projet dans Visual Studio Code

Ouvrez le dossier du projet (tutoriel solidité) dans Visual Studio Code. La première fois que le projet est ouvert, Visual Studio Code peut vous inviter à installer des extensions. Allez-y et cliquez sur «Tout installer», cela ajoutera diverses extensions utiles telles que le formatage automatique du code et la coloration syntaxique Solidity à l'éditeur.

Avant de pouvoir faire quoi que ce soit sur Ethereum, vous devez avoir un compte. Les comptes sont souvent appelés «portefeuilles», car ils peuvent contenir des actifs numériques tels que ETH et USDC. Les utilisateurs finaux créent généralement des comptes en utilisant une application de portefeuille Ethereum comme Portefeuille Coinbase ou Métamask, mais la création d'un compte par programme est également très simple, en utilisant l'excellent ethers.js bibliothèque livrée préinstallée avec le modèle.

Créez un nouveau fichier JavaScript appelé createWallet.js dans le src dossier et entrez le code suivant:

Enregistrez le fichier et exécutez le code à l'aide de Node.js comme suit:

$ node src/createWallet.jsMnemonic: rabbit enforce proof always embrace tennis version reward scout shock license wing
Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a

Qu'est-ce qui vient juste de se passer? Eh bien, vous avez un nouveau compte Ethereum flambant neuf. Le «mnémonique» ou peut-être plus communément appelé «phrase de récupération» est une représentation lisible par l'homme de la clé cryptographique qui est nécessaire pour effectuer des actions à partir du compte, et l'adresse est le nom et l'identifiant du compte. Copiez-les quelque part. Par ailleurs, le mnémonique indiqué dans cet article a été légèrement modifié pour vous décourager de l'utiliser, veuillez utiliser le vôtre!

Considérez-les comme le mot de passe et le numéro de compte de votre compte bancaire, sauf que vous pouvez en créer un en quelques secondes, et vous n'avez pas eu à remplir un formulaire de demande ou à partager des informations personnelles. Vous pouvez également exécuter ce code où que vous soyez.

⚠️ Le mnémonique du compte doit être gardé secret. Si vous le perdez, vous perdrez l'accès à votre compte et à tous les actifs stockés dans le compte pour toujours et personne ne pourra vous aider! Gardez-le dans un endroit sûr!

ℹ️ Techniquement, vous n'avez pas vraiment "créé" de compte en soi. Au lieu de cela, vous avez créé une paire de clés privée / publique. Si vous êtes curieux de savoir ce qui se passe réellement sous le capot, lisez à propos de cryptographie à courbe elliptique, et les spécifications Bitcoin et Ethereum BIP39, BIP32, EIP55 et leur mise en œuvre Dans ce projet.

À propos du gaz et des mines

Ethereum est un réseau décentralisé de milliers d'ordinateurs à travers le monde, et ils ne fonctionnent pas exactement gratuitement. Pour effectuer tout changement d'état sur la blockchain, comme le stockage et la mise à jour des données, vous devez payer aux opérateurs de réseau des frais de transaction en Ether (ETH), également appelé «gaz» sur Ethereum. Ceci, avec la récompense que les opérateurs reçoivent pour l'ajout de nouveaux blocs à la chaîne, est ce qui les incite à maintenir leurs ordinateurs opérationnels. Ce processus est appelé «minage» et les opérateurs de réseau sont appelés «mineurs». Nous reviendrons sur ce point plus tard dans ce tutoriel (Gas, Gas Price and Gas Limit).

Obtention de Testnet ETH

Maintenant que vous avez un compte, vous devez déposer de l'ETH. Nous ne voulons pas gaspiller d’argent réel lors du développement, nous allons donc obtenir un faux ETH destiné au développement et aux tests sur le réseau de test («testnet»). Il existe de nombreux réseaux de test Ethereum différents, mais nous allons utiliser Ropsten en raison de la facilité d'obtention de jetons de test. Tout d'abord, vérifions votre solde actuel à l'aide de Etherscan, un explorateur de blocs pour Ethereum. Vous pouvez le faire en entrant l'URL suivante dans votre navigateur, en remplaçant VOTRE ADRESSE avec l'adresse que vous avez créée précédemment, en commençant par 0x.

https://ropsten.etherscan.io/address/YOUR_ADDRESS
La source: ropsten.etherscan.io

Vous devriez voir que votre solde est de 0 ETH. Gardez cet onglet ouvert et ouvrez Robinet Ropsten Ethereum dans un onglet différent. Dans la page du robinet, entrez votre adresse et cliquez sur le bouton «Envoyez-moi». La transaction peut prendre de quelques secondes à une ou deux minutes. Vérifiez à nouveau Etherscan dans un instant, et vous devriez voir un nouveau solde de 1 ETH et une transaction entrante dans la liste.

La source: faucet.ropsten.be

Connexion à Ethereum

Il est utile d'utiliser Etherscan pour afficher le solde, mais il est également facile de le visualiser avec du code. Cependant, avant de revenir au code, nous avons besoin d'un moyen de se connecter à Ethereum. Il existe de nombreuses façons de le faire, y compris d'exécuter vous-même un nœud de réseau sur votre ordinateur, mais le moyen de loin le plus rapide et le plus simple est de le faire via un fournisseur de nœuds gérés tel que INFURA ou Alchimie. Dirigez-vous vers INFURA, créez un compte gratuit et créez un nouveau projet pour obtenir la clé API (ID de projet).

ℹ️ Allez Ethereum ("geth") et Open Ethereum (anciennement Parity Ethereum) sont les deux logiciels de nœuds Ethereum les plus utilisés.

Affichage du solde ETH avec code

Commençons par écrire du code qui lit et dérive le compte du mnémonique. Créez un nouveau fichier JavaScript appelé wallet.js dans le src dossier et entrez le code suivant:

Remplacez la chaîne mnémonique du code par la vôtre. Veuillez noter que dans le code de production, le mnémonique ne doit pas être codé en dur comme ça. Au lieu de cela, il doit être lu à partir d'un fichier de configuration ou d'une variable d'environnement, afin qu'il ne soit pas divulgué accidentellement, par exemple en le faisant archiver dans un référentiel de code source.

En exécutant le code, vous devriez pouvoir voir la même adresse que celle que vous avez obtenue précédemment:

$ node src/wallet.jsAddress: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a

Ensuite, créez un nouveau fichier appelé provider.js dans le même dossier. Dans ce fichier, nous initialiserons un objet fournisseur avec la clé API INFURA que nous avons obtenue précédemment. Assurez-vous de remplacer la chaîne de clé API par la vôtre:

Enfin, nous utiliserons les deux wallet.js et provider.js nous avons créé dans un nouveau fichier appelé getBalance.js dans le même dossier pour obtenir le solde ETH:

Exécutez le code et vous verrez votre solde ETH!

$ node src/getBalance.jsAddress: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
ETH Balance: 1.0

Dénominations des jetons

Le code que nous venons de créer est assez explicite, mais vous vous demandez peut-être quoi ethers.utils.formatUnits (balance, 18) Est-ce que. Eh bien, l'ETH est en fait divisible à 18 décimales et la plus petite unité de dénomination est appelée «wei» (prononcé «chemin»). En d'autres termes, un ETH équivaut à 1 000 000 000 000 000 000 de wei. Une autre dénomination couramment vue est Gwei (prononcé «Giga-way»), qui est de 1 000 000 000 de wei. le getBalance Il se trouve que cette méthode renvoie le résultat en wei, nous devons donc le reconvertir en ETH en multipliant le résultat par 10¹⁸. La liste complète des dénominations peut être trouvée ici.

ℹ️ Vous pouvez aussi utiliser ethers.utils.formatEther (équilibre), qui est un raccourci pour ethers.utils.formatUnits (balance, 18).

L'ETH de votre compte se sent un peu seul, alors ajoutons également de l'USDC. J'ai déployé un pseudo Contrat intelligent USDC sur le réseau de test Ropsten. Il n'y a pas de site Web sophistiqué pour les robinets, mais le contrat contient une fonction qui vous donnera un testnet USDC gratuit lors de votre appel. Si vous accédez au onglet code de contrat dans Etherscan et recherchez donne moi en un peu dans le code source du contrat. C’est la fonction que nous allons appeler pour envoyer des USDC sur notre compte.

Effectuer une transaction pour appeler une fonction de contrat intelligent

Dans les contrats intelligents Ethereum, il existe principalement deux types de fonctions: lecture-écriture et lecture seule. Le premier peut entraîner une modification des données stockées dans la blockchain, et le second lit uniquement, mais n'écrit jamais. Les fonctions en lecture seule peuvent être appelées sans créer de transaction et donc sans frais de transaction, sauf si elles sont appelées dans le cadre d'une fonction de lecture-écriture. Les fonctions de lecture-écriture, en revanche, doivent être appelées dans une transaction et les frais de transaction (gaz) doivent être payés. Invoquer le donne moi en un peu La fonction entraîne une modification des soldes USDC stockés dans la blockchain, elle doit donc être appelée dans une transaction.

L'appel d'une fonction de contrat intelligent nécessite quelques étapes supplémentaires, mais ce n'est pas trop difficile. Tout d'abord, nous devons trouver l'interface complète de la fonction que nous aimerions appeler, également appelée signature de fonction ou prototype de fonction. Chercher donne moi en un peu à nouveau dans le code source du contrat et vous constaterez que l'interface est la suivante:

function gimmeSome() external

C'est une fonction vraiment simple qui ne prend aucun argument, et elle est marquée comme externe, ce qui signifie que cette fonction ne peut être appelée que de l'extérieur et non à partir d'autres fonctions de ce contrat. C'est correct car nous appellerons cette fonction directement dans une transaction.

ℹ️ le donne moi en un peu la fonction n'existe pas dans le «Vrai» contrat USDC déployé sur le réseau Ethereum principal, pour des raisons évidentes.

Créez un nouveau fichier appelé getTestnetUSDC.js dans le src dossier et entrez le code suivant:

Le code instancie d'abord un objet de contrat (nouveaux éthers.) avec l'interface de la fonction qui nous intéresse, donne moi en un peu, et le pointe à l'adresse du contrat testnet USDC: 0x68ec ⋯ 69c4. Vous pouvez ensuite appeler l’une des fonctions que vous avez répertoriées. donne moi en un peu La fonction n'accepte aucun argument par elle-même, mais vous pouvez spécifier des options de transaction comme dernier argument. Dans ce cas, nous lui donnons 20 Gwei de prix du gaz, ce qui devrait accélérer la transaction. Toutes les méthodes qui interagissent avec le réseau sont de nature asynchrone et renvoient un Promettre, nous utilisons donc JavaScript attendre expression. Le code imprime ensuite le hachage de la transaction, qui est un identifiant unique de votre transaction qui peut être utilisé pour suivre la progression. Il attend ensuite que la transaction soit confirmée.

Exécutez le code et vous verrez quelque chose comme ce qui suit:

$ node src/getTestnetUSDC.jsAddress: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Transaction hash: 0xd8b4b06c19f5d1393f29b408fc0065d0774ec3b4d11d41be9fd72a8d84cb6208
Transaction confirmed in block 8156350
Gas used: 35121

Voilà! Vous avez effectué votre première transaction Ethereum avec code! Vérifiez votre adresse et le hachage de la transaction dans Ropsten Etherscan. Vous devriez maintenant voir que vous avez maintenant 10 testnet USDC et un peu moins de 1 ETH, en raison du gaz payé pour exécuter la transaction.

ℹ️ Si vous inspectez la transaction dans Etherscan, vous constaterez qu'il s'agit d'une transaction qui envoie zéro (0) ETH à l'adresse du contrat avec 4 octets de données. Si l'appel de fonction avait des arguments, il y aurait plus de 4 octets de données. Si vous souhaitez savoir comment ces données sont encodées, lisez le Spécification ABI du contrat Ethereum.

Gaz, prix du gaz et limite de gaz

Plus tôt, j'ai mentionné que nous donnons à la transaction 20 Gwei de prix du gaz pour accélérer la transaction et le script imprime également la quantité de gaz utilisée. Que signifient toutes ces choses? Eh bien, Ethereum est un réseau composé d'opérateurs de réseau. Considérez-le comme un ordinateur mondial. Ce n'est cependant pas un ordinateur gratuit et chaque instruction que vous exécutez sur cet ordinateur coûte de l'argent. Cet ordinateur est également partagé par tout le monde dans le monde, ce qui signifie que tout le monde doit se faire concurrence pour obtenir son temps sur cet ordinateur.

Comment rendre ce salon équitable? Eh bien, nous pouvons mettre aux enchères du temps sur cet ordinateur, et plus vous êtes prêt à payer pour chaque instruction de calcul que vous exécutez sur cet ordinateur, plus les opérateurs de réseau (mineurs) vous donneront probablement du temps. Ce n'est certainement pas parfait, car cela pourrait avoir un effet où seuls les riches peuvent avoir le privilège d'utiliser ce système. Cependant, c'est la solution la moins mauvaise que nous ayons jusqu'à ce que le système devienne beaucoup plus évolutif et puisse accueillir beaucoup plus de transactions.

Pour en revenir au jargon de la blockchain, le «gaz utilisé» est la quantité de ressources informatiques que vous avez consommées à la suite de l'exécution de la transaction et le «prix du gaz» est le montant que vous êtes prêt à payer par unité de gaz. En général, plus vous êtes prêt à payer, plus votre transaction sera prioritaire et plus vite elle sera confirmée par le réseau. Dans notre cas, nous avons utilisé 20 Gwei comme prix du gaz, et le gaz utilisé était de 35.121 (vous pouvez également le trouver en inspectant la transaction dans Etherscan), de sorte que le coût total du gaz est de 35.121 * 20 Gwei = 702.420 Gwei ou 0.00070242 ETH.

Étant donné que le gaz coûte de l'argent, vous souhaiterez peut-être définir une limite supérieure du gaz maximum que vous êtes prêt à dépenser. Heureusement, vous pouvez définir une «limite de gaz». Si la transaction finit par avoir besoin de plus de gaz que la limite de gaz spécifiée, la transaction échouera au lieu de continuer l'exécution et de consommer plus de gaz que vous n'êtes prêt à payer. Un effet secondaire à prendre en compte est que si l'exécution échoue en raison de la limite, la quantité de gaz déjà dépensée ne vous sera pas remboursée.

Appel d'une fonction de contrat intelligent pour lire des données

Vous avez pu vérifier que vous avez reçu 10 USDC sur Etherscan, mais confirmons cela en vérifiant le solde avec le code.

Modifions le fichier existant getBalance.js dans le src dossier, avec le contenu suivant:

USDC est un jeton ERC20, il contient donc toutes les méthodes définies dans le Spécifications ERC20. équilibre des est l'un d'entre eux, et son interface est tirée directement de la spécification. équilibre des est une fonction en lecture seule, elle peut donc être appelée gratuitement et n'a pas besoin d'être soumise en tant que transaction. Enfin, il est important de noter que l'USDC utilise 6 décimales de précision au lieu de 18 que de nombreux autres jetons ERC20 utilisent.

ℹ️ Vous pouvez en savoir plus sur les fonctions Solidity ici.

Exécutez le code, et maintenant vous verrez également le solde USDC:

$ node src/getBalance.jsAddress: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
ETH Balance: 0.9961879
USDC Balance: 10.0

Voyons maintenant comment nous pouvons dépenser les ETH et USDC que nous avons dans notre compte.

Transfert d'ETH

Créer transferETH.js dans le src dossier et entrez le code suivant:

Ce code, bien que plus long que les précédents, n'est en réalité qu'une combinaison de tout ce que vous avez appris jusqu'à présent. Ce script accepte deux arguments de ligne de commande. Le premier est l'adresse du destinataire et le second est le montant à envoyer. Il s'assure ensuite que l'adresse fournie est valide, que le montant fourni n'est pas négatif et que le compte dispose d'un solde suffisant pour pouvoir envoyer le montant demandé. Il soumet ensuite la transaction et attend qu'elle soit confirmée.

Créez un nouveau compte en utilisant le createWallet.js script que nous avons créé précédemment, et essayez d'envoyer de l'argent à la nouvelle adresse:

$ node src/createWallet.jsMnemonic: napkin invite special reform cheese hunt refuse ketchup arena bag love caution
Address: 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13
$ node src/transferETH.js 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13 0.1Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Transferring 0.1 ETH to 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13...
Transaction hash: 0xa9f159fa8a9509ec8f8afa8ebb1131c3952cb3b2526471605fd84e8be408cebf
Transaction confirmed in block 8162896

Vous pouvez vérifier le résultat dans Etherscan. Testons également le bon fonctionnement de la logique de validation:

$ node src/transferETH.js fooAddress: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Invalid address: foo
$ node src/transferETH.js 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13 0.1.2Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Invalid amount: 0.1.2
$ node src/transferETH.js 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13 -0.1Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Invalid amount: -0.1
$ node src/transferETH.js 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13 100Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Insufficient balance to send 100.0 (You have 0.89328474)

Transfert USDC

Vous pourrez utiliser la majorité du code pour USDC. Les principales différences sont que l'USDC a 6 décimales et que vous devez utiliser le transfert fonction de la spécification ERC20 pour effectuer la transaction. Vous passez également les arguments "à" et "valeur" à la transfert fonction de contrat intelligent, plutôt que la transaction Ethereum elle-même.

Créer transferUSDC.js dans le même dossier et saisissez ce qui suit:

Essayez-le, cela devrait aussi bien fonctionner:

$ node src/transferUSDC.js 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13 1Address: 0xB3512cF013F71598F359bd5CA3f53C1F4260956a
Transferring 1.0 USDC to 0xDdAC089Fe56F0a9C70e6a04C74DCE52F86a91e13...
Transaction hash: 0xc1b2157a83f29d6c04f960bc49e968a0cd2ef884761af7f95cc83880631fe4af
Transaction confirmed in block 8162963

Dans ce didacticiel, vous avez appris à générer un compte, à interroger le solde, à transférer des jetons et à appeler des fonctions de contrat intelligent. Vous pensez peut-être que vous ne savez toujours pas grand-chose sur la cryptographie, mais vous en savez maintenant suffisamment pour pouvoir créer votre propre application de portefeuille cryptographique. Nous avons écrit des scripts de ligne de commande pour garder les choses simples, mais que diriez-vous d'en créer un avec une belle interface graphique Web pour les devoirs?

Dans la prochaine partie de cette série de tutoriels, nous rédigerons notre propre contrat intelligent Ethereum à partir de zéro avec Solidity et apprendrons comment vous pouvez créer votre propre pièce échangeable avec USDC. Nous utiliserons également les techniques apprises aujourd'hui pour interagir avec ce contrat. Restez à l'écoute.





Traduction de l’article de Coinbase : Article Original

BlockBlog

Le Meilleur de l'Actualité Blockchain Francophone & Internationale | News, Guides, Avis & Tutoriels pour s'informer et démarrer facilement avec Bitcoin, les Crypto-Monnaies et le Blockchain. En Savoir Plus sur L'Équipe BlockBlog

Commenter cet Article

Commenter cet Article

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Plus dans News

Les Plus Populaires

Acheter des Bitcoin

Acheter des Alt-Coins

Sécuriser vos Cryptos

Vêtements et Produits Dérivés

Top
Donec suscipit ipsum leo. accumsan et, lectus odio