Testnet Docs

From Mina Wiki
Jump to navigation Jump to search

Section 1: Vue d'ensemble

Qu'est-ce que Mina ?

Mina est le premier protocole de cryptomonnaie avec une blockchain succincte. Les cryptomonnaies actuelles comme Bitcoin et Ethereum, stockent des centaines de gigaoctets de données et, avec le temps, la taille de leurs blockchains ne feront qu'augmenter. Tandis qu’avec Mina, peu importe la croissance d'utilisation, sa blockchain reste toujours de la même taille - soit environ 20 kilo-octets (la taille de quelques tweets). Cela signifie que Mina peut être accessible en toute confiance depuis n'importe quel appareil, y compris les téléphones et les navigateurs, et permet aux développeurs l’intégration de la cryptomonnaie dans leurs applications.

Cette avancée est rendue possible grâce aux zk-SNARKs - un type de preuve cryptographique succincte. Chaque fois qu'un nœud Mina produit un nouveau bloc, il génère également une preuve SNARK vérifiant la validité du bloc. Tous les nœuds du réseau peuvent alors stocker cette preuve, sans avoir à se soucier des données brutes du bloc. En n'ayant pas à se préoccuper de la taille des blocs, le protocole Mina permet un débit beaucoup plus élevé dans le réseau et d’avoir une blockchain décentralisée à l'échelle.

Essayez Mina

La version bêta du réseau test public de Mina est en ligne ! Rendez-vous sur la page d'accueil du réseau test pour en savoir plus et sur la manière de participer.

Si vous êtes prêt à installer Mina et à lancer un nœud, rendez-vous sur la page de démarrage.

Section 2: Pour commencer

Cette section vous guidera à travers les exigences nécessaires pour faire fonctionner un nœud de protocole Mina sur votre machine locale et vous connecter au réseau.

Note
Cette documentation est destinée à la version bêta. Les commandes et les API peuvent

changer avant la version finale. Ce document a été mis à jour pour la version : 0.0.13-beta.

Cette documentation est destinée à la version bêta. Les commandes et les API peuvent changer avant la version finale. Ce document a été mis à jour pour la version : 0.0.13-beta.

Prérequis

Logiciel : macOS ou Linux (supporte actuellement Debian 9 et Ubuntu 18.04 LTS) Note : Windows n'est pas officiellement pris en charge pour le moment. Cependant, les membres de la communauté ont réussi à mettre en place des nœuds utilisant le sous- système Windows pour Linux. Cliquez ici pour obtenir des instructions sur l'utilisation de Windows créées par la communauté.

Matériel : L'envoi et la réception de Mina ne nécessitent pas de matériel spécial, mais l'exécution d'un producteur de blocs sur le réseau Mina exige actuellement :

  • au moins un processeur à 4 cœurs
  • au moins 8 Go de RAM

Notez que si vous prévoyez de faire fonctionner un noeud snark, vous aurez peut-être besoin de plus de RAM - 16 Go sont recommandés. Les GPU ne sont pas nécessaires actuellement, mais pourraient l'être pour les opérateurs de nœuds lorsque le protocole sera mis à jour.

Réseau : Connexion d'au moins 1 Mbps Machine Virtuelle : O(1) Labs a testé des nœuds en cours d'exécution sur plusieurs fournisseurs de cloud computing, et recommande les instances suivantes pour les besoins de base des opérateurs de nœuds. Gardez à l'esprit que des exigences personnalisées ainsi que des contraintes de coût différentes peuvent nécessiter un type d'instance différent.

  • AWS - c5.2xlarge
  • BPC - c2-standard 4
  • Azur - Standard_F8s_v2
  • Digital Ocean- c-8-16gib

Installation

Les dernières versions binaires sont disponibles ci-dessous. Des instructions sont fournies pour macOS et Linux ci-dessous :

Il s'agit d'un gros téléchargement d’environ 1 Go, donc l'installation peut prendre un certain temps. Attention Si vous avez installé mina d'une version précédente, vous devrez le mettre à jour afin de ne pas être banni par le réseau pour avoir utilisé un client plus ancien. Voir les instructions ci-dessous pour la mise à jour des versions MacOS et Linux.

macOS

Installez en utilisant Homebrew.

brew install minaprotocol/mina/mina

Si vous avez déjà installé une version précédente, exécutez :

brew upgrade mina

Vous pouvez lancer la commande mina -help pour vérifier si l'installation est réussie.

Ubuntu 18.04 / Debian 9

Ajoutez le répertoire de Mina Debian et installez :

sudo apt-get remove mina-testnet-postake-medium-curves
sudo apt-get remove mina-kademlia
echo "deb [trusted=yes] http://packages.o1test.net release main" | sudo tee
/etc/apt/sources.list.d/mina.list
sudo apt-get update
sudo apt-get install -t release mina-testnet-postake-medium-curves

Si vous avez déjà installé le mina d'une version précédente, l'exécution des commandes ci- dessus devrait automatiquement désinstaller et réinstaller la dernière version. Si vous installez Mina à partir de zéro, vous pouvez voir l’erreur suivante lorsque vous exécutez la première commande : E: Unable to locate package mina-testnet-postake-medium-curves. Vous pouvez ignorer cette erreur - cela signifie simplement qu'aucune version antérieure n'a été installée. Vous pouvez lancer mina -help pour vérifier si l'installation est réussie.

Windows

Windows n'est pas encore pris en charge. Si vous êtes intéressé par le développement de Mina sur Windows, veuillez contacter support@o1labs.org ou le serveur Discord.

Construire à partir des sources

Si vous utilisez une autre distribution Linux ou une version différente de MacOS, vous pouvez essayer de construire Mina à partir du code source. Veuillez noter que les autres systèmes d'exploitation n'ont pas été testés de manière approfondie et peuvent présenter des problèmes. N'hésitez pas à partager vos logs et à obtenir de l'aide pour résoudre votre problème sur le serveur Discord.

Configurer la redirection de port et les pare-feux

Si vous utilisez un pare-feu, vous devez autoriser le trafic sur le port TCP 8303. De plus, à moins que le signal -external-ip YOUR_IP ne soit fourni, le daemon utilisera HTTPS (443) et HTTP (80) pour essayer de déterminer sa propre adresse IP. Vous devrez peut-être configurer la redirection des ports de votre routeur pour permettre le trafic entrant vers les ports suivants via votre adresse IP externe.

Port TCP 8302 et 8303

Pour les instructions pas-à-pas, voir ce guide.

Ensuite

Maintenant que vous avez installé Mina et configuré votre réseau, passons à la partie la plus amusante : l'envoi d'une transaction !

Section 3: Ma première transaction

Dans cette partie, nous allons faire notre première transaction sur le réseau Mina. Après avoir installé le logiciel, nous allons avoir besoin de créer un nouveau compte afin d’envoyer et recevoir des mina. Commençons par lancer le nœud de façon à pouvoir envoyer des commandes.

Démarrer un nœud

Lancer les commandes suivantes pour démarrer l’instance d’un nœud Mina et se connecter au réseau:

mina daemon \
-external-port 8302 \
-discovery-port 8303 \
-peer /dns4/seed-one.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWP7fTKbyiUcYJGajQDpCFo2rDexgTHFJTxCH8jvcL1eAH \
-peer /dns4/seed-two.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWL9ywbiXNfMBqnUKHSB1Q1BaHFNUzppu6JLMVn9TTPFSA

La machine et le port spécifiés ci-dessus se réfèrent à l'adresse du serveur d’initialisation de départ - il s'agit du point initial auquel nous nous

connecterons sur le réseau. Étant donné que Mina est un protocole peer- to-peer, il n'y a pas de serveur centralisé unique sur lequel nous comptons.

Si vous avez fait une redirection de ports spécifique (autre que les ports 8302 et 8303), vous aurez besoin de remplacer les ports par défaut avec ceux que vous avez configurés dans la redirection. Le processus daemon doit être en fonctionnement quand vous lancer des commandes commençant par mina client, vérifiez donc de ne pas l’avoir terminé par erreur.

Regardez ici les erreurs classiques lorsqu’on lance un nœud pour la première fois.

Vérification de la connectivité

Maintenant que nous avons démarré un nœud et que le daemon Mina est lancé, ouvrez un autre shell et exécutez la commande suivante :

mina client status

Cela peut prendre jusqu'à une minute avant que mina client status se connecte au daemon au premier démarrage. Par conséquent, si vous voyez Error: daemon not running. See mina daemon, attendez un petit peu puis essayez à nouveau.

Nous aurons probablement une réponse qui inclut les champs suivants :

...
Peers: Total: 4 (...)
...
Sync Status: Bootstrap

Si vous voyez Sync Status: Bootstrap,cela signigie que le noeud mina est en cours de démarrage et à besoin de se synchroniser avec le reste du réseau.

Vous devrez peut-être être patient ici, car cette étape peut prendre un certain temps avant que le nœud obtienne toutes les données dont il a besoin. Lorsque l'état de synchronisation devient Synced et que le nœud est connecté à 1 ou plusieurs serveurs, cela signifie que nous nous sommes connectés avec succès au réseau. Nous verrons également une entrée dans le log du daemon une fois la synchronisation terminée: [Info] Mina daemon is now synced.

Créer un nouveau compte

Une fois notre nœud synchronisé, nous créerons une paire de clés publique / privée afin de pouvoir signer des transactions et générer une adresse pour recevoir les paiements. Pour des raisons de sécurité, nous souhaitons placer les clés dans un répertoire plus difficile d'accès pour les attaquants.

Exécutez la commande suivante qui créera une clé publique et privée dans ~/.mina-config/wallets/store:

mina accounts create

Si vous exécutez le nœud sur une machine virtuelle, assurez-vous de copier votre fichier de clé privée généré sur votre machine locale. Vous pouvez le faire avec la commande scp <source> <destination>. Dans le cas où votre machine s'arrête, vous devrez importer le fichier de clé privée à l'aide de la commande et les options suivantes:

mina accounts import -privkey-path <PRIVATE-KEY-FILE>

Vous pouvez également exécuter la commande mina accounts -help pour en savoir plus sur l'utilisation de la commande.

La clé publique peut être partagée librement avec n'importe qui, mais soyez très prudent avec votre fichier de clé privée. Ne partagez jamais cette clé privée avec qui que ce soit, car c'est l'équivalent d'un mot de passe pour vos fonds.

La réponse de cette commande ressemblera à ceci :

Keypair generated
Public key:
4vsRCVbLm6LvUyzYWT95WaCzyi4D4UHxRpLBhMn7q2mRPgNCgRG3Jr3tDuhgQdmzbvCcBxhUwB3
REpY2Dyf1NAxSSs8Q2vdJX93pT7eyqcyRU2S9UpDddDgovj46BSknNjzydKoopebp5Kva

Étant donné que la clé publique est assez longue et difficile à mémoriser, enregistrons-la en tant que variable d'environnement :

export MINA_PUBLIC_KEY=<YOUR-PUBLIC-KEY>

Désormais, nous pouvons y accéder partout en tant que $MINA_PUBLIC_KEY - vérifiez quelle a été enregistré correctement en essayant echo $MINA_PUBLIC_KEY. Enregistrons également le chemin d’accès du fichier de notre clé privée :

export MINA_PRIVATE_KEY_FILE=~/.mina-config/wallets/store/$MINA_PUBLIC_KEY

Notez que ces variables d'environnement ne seront enregistrées que pour la session shell actuelle, donc si vous souhaitez les enregistrer pour une utilisation future, vous pouvez les ajouter à ~/.profile ou ~/.bash_profile.

Demander des mina

Le distributeur est actuellement en panne pour maintenance, veuillez demander des mina dans le canal #faucet , et un membre de l'équipe principale ou un membre de la communauté vous enverra quelques jetons rapidement.

Afin d'envoyer notre première transaction, nous devons d'abord obtenir des mina pour jouer avec. Rendez-vous sur le serveur Mina Discord et rejoignez la chaîne #faucet . Une fois là-bas, demandez des minas au chien Tiny (vous en recevrez 100). Voici un exemple:

$request <YOUR-PUBLIC-KEY>

Une fois qu'un modérateur du distributeur approuve votre demande, gardez un œil sur le canal Discord pour voir quand la transaction se déroulera. Cela peut prendre quelques minutes pour que vos fonds apparaissent.

Nous pouvons vérifier notre solde pour nous assurer que nous avons bien reçu les fonds en exécutant la commande suivante, en indiquant notre clé publique:

mina client get-balance -public-key $MINA_PUBLIC_KEY

Vous pourriez voir Balance: 0 mina. En fonction du trafic sur le réseau, cela peut prendre quelques blocs avant que votre transaction ne soit effectuée.

Astuce: vous pouvez consulter les nouveaux blocs générés dans les logs du daemon. Exécutez mina client status pour voir le numéro du bloc actuel.

Faire un paiement

Nous arrivons enfin aux choses intéressantes en effectuant notre première transaction! Avant d'envoyer un paiement, vous devrez déverrouiller votre compte:

mina accounts unlock -public-key $MINA_PUBLIC_KEY

À des fins de test, un service d'écho a été mis en place et vous remboursera immédiatement votre paiement excepté les frais de transaction.

Actuellement, il existe un problème connu avec le service d'écho qui l'empêche de renvoyer correctement votre paiement! Ne vous inquiétez pas, nous vous donnerons toujours des points Testnet * pour avoir relevé le défi.

Envoyons une partie des mina fraichement reçue à ce service pour voir à quoi ressemble un paiement:

mina client send-payment \
-amount 10 \
-receiver
4vsRCVNep7JaFhtySu6vZCjnArvoAhkRscTy5TQsGTsKM4tJcYVc3uNUMRxQZAwVzSvkHDGWBmv
hFpmCeiPASGnByXqvKzmHt4aR5uAWAQf3kqhwDJ2ZY3Hw4Dzo6awnJkxY338GEp12LE4x \
-fee 5 \
-sender $MINA_PUBLIC_KEY

Si vous vous demandez ce que nous avons transmis aux commandes ci- dessus:

  • Pour amount, nous indiquons un montant de test d’une valeur de 10 mina
  • Le receiver est la clef publique du service d’écho
  • Pour fee, utilisons des frais de transfert au taux du marché actuel de 5 mina
  • Le sender est la clef publique complète, par exemple 4vsRCVQq9Ai12E3acB1rymUK8PBifcpscd9u6DsmMWMAZWz2ABH4DXTQoCmGuvG6Q72vBQ1h9yNH2VcZsoQN2DGjVjHr2qVvtAkVfaoUXnPbgsWrTeP5RqobbQGFAju2rKGtGEQchQEay18G

Si cette commande est formatée correctement, nous devrions obtenir une réponse qui ressemble à ce qui suit

Dispatched payment with ID
3XCgvAHLAqz9VVbU7an7f2L5ffJtZoFega7jZpVJrPCYA4j5HEmUAx51BCeMc232eBWVz6q9t62
Kp2cNvQZoNCSGqJ1rrJpXFqMN6NQe7x987sAC2Sd6wu9Vbs9xSr8g1AkjJoB65v3suPsaCcvvCj
yUvUs8c3eVRucH4doa2onGj41pjxT53y5ZkmGaPmPnpWzdJt4YJBnDRW1GcJeyqj61GKWcvvrV6
KcGD25VEeHQBfhGppZc7ewVwi3vcUQR7QFFs15bMwA4oZDEfzSbnr1ECoiZGy61m5LX7afwFavi
yUwjphtrzoPbQ2QAZ2w2ypnVUrcJ9oUT4y4dvDJ5vkUDazRdGxjAA6Cz86bJqqgfMHdMFqpkmLx
CdLbj2Nq3Ar2VpPVvfn2kdKoxwmAGqWCiVhqYbTvHkyZSc4n3siGTEpTGAK9usPnBnqLi53Z2bP
PaJ3PuZTMgmdZYrRv4UPxztRtmyBz2HdQSnH8vbxurLkyxK6yEwS23JSZWToccM83sx2hAAABNy
nBVuxagL8aNZF99k3LKX6E581uSVSw5DAJ2S198DvZHXD53QvjcDGpvB9jYUpofkk1aPvtW7QZk
cofBYruePM7kCHjKvbDXSw2CV5brHVv5ZBV9DuUcuFHfcYAA2TVuDtFeNLBjxDumiBASgaLvcdz
GiFvSqqnzmS9MBXxYybQcmmz1WuKZHjgqph99XVEapwTsYfZGi1T8ApahcWc5EX9
Receipt chain hash is now
A3gpLyBJGvcpMXny2DsHjvE5GaNFn2bbpLLQqTCHuY3Nd7sqy8vDbM6qHTwHt8tcfqqBkd36LuV
4CC6hVH6YsmRqRp4Lzx77WnN9gnRX7ceeXdCQUVB7B2uMo3oCYxfdpU5Q2f2KzJQ46

Il se peut que vous ne voyiez pas le Receipt chain hash sur la première transaction du compte, mais dans les transactions suivantes, cela vous montrera l’entête de la liste de hachage de la chaîne de réception.

Vérifier le solde du compte

Maintenant que nous pouvons envoyer des transactions, il pourrait être utile de connaître notre solde, afin de ne pas dépenser nos jetons du testnet avec trop de négligence! Vérifions notre solde actuel en exécutant la commande suivante indiquant la clé publique du compte que nous avons généré:

mina client get-balance -public-key $MINA_PUBLIC_KEY

Nous obtiendrons une réponse qui ressemble à ceci:

Balance: 50 mina

Une fois que vous vous sentirez à l'aise avec les bases de la création d'une adresse, de l'envoi et de la réception de mina, nous pouvons passer aux parties unique du réseau Mina - participer au consensus et contribuer à compresser la blockchain.

Section 4: Devenir opérateur d’un nœud

Maintenant que nous avons configuré notre nœud Mina et envoyé notre première transaction, tournons notre attention vers les autres façons dont nous pouvons interagir avec le réseau Mina - à savoir, participer au consensus et aider à compresser les données en générant des zk-SNARK. En exploitant un nœud qui aide à sécuriser le réseau, vous pouvez recevoir des mina pour votre soutien.

Participer au consensus

Le réseau Mina est sécurisé par un consensus de preuve d’enjeu (proof-of- stake). Avec cette méthode de consensus, vous n'avez pas besoin d'avoir

un équipement spécifique comme dans le cas du minage Bitcoin. En conservant nos mina dans notre portefeuille, nous pouvons choisir de les verrouiller nous-mêmes (staking) ou de les déléguer à un autre nœud. Voyons d'abord comment verrouiller nous-mêmes les mina:

Mettre en jeu les mina

Puisque nous avons des fonds dans notre portefeuille depuis l'étape précédente, nous pouvons maintenant démarrer le daemon avec l'indicateur -propose-key pour commencer à mettre en jeu les mina. Arrêtons le daemon actuel et redémarrons-le avec la commande suivante, en passant le chemin d’accès du fichier de la clé privée associée (par défaut, les paires de clés sont situées dans ~/mina-config/wallets/store). Comme nous l'avons configuré en tant que variable d'environnement à l'étape précédente, nous pouvons exécuter la commande suivante:

mina daemon \
-external-port 8302 \
-discovery-port 8303 \
-peer /dns4/seed-one.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWP7fTKbyiUcYJGajQDpCFo2rDexgTHFJTxCH
8jvcL1eAH \
-peer /dns4/seed-two.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWL9ywbiXNfMBqnUKHSB1Q1BaHFNUzppu6JLM
Vn9TTPFSA \
-propose-key $MINA_PRIVATE_KEY_FILE

Vous pouvez fournir une liste de fichiers de clés pour activer la mise en jeu de plusieurs comptes en même temps

Nous pouvons toujours vérifier quels comptes nous utilisons actuellement, en utilisant la commande : mina client status :

mina client status
Mina daemon status
-----------------------------------
Global number of accounts: 372
Block height: 20
Max observed block length: 20
Local uptime: 1m48s
Ledger Merkle root: ...
Protocol state hash: ...
Staged Hash: ...
Git SHA-1: ...
Configuration directory: ...
Peers: 5 (...)
User_commands sent: 0
SNARK worker: None
SNARK work fee: 1
Sync status: Synced
Block producers running: 1 (...)
Best tip consensus time: epoch=0, slot=133
Next proposal: None this epoch... checking at in 5.284h
Consensus time now: epoch=0, slot=134
Consensus mechanism: proof_of_stake
Consensus configuration:
...
Addresses and ports:
...
Libp2p PeerID: ...

Le champ Block producers running dans la réponse ci-dessus indique le nombre de comptes mise en jeu actuellement, avec la clé associée.

Avertissement
Gardez à l'esprit que si vous mettez en jeu vous-mêmes les fonds d’un compte, de manière

indépendante, vous devrez rester connecté au réseau continuellement pour réussir à produire des blocs. Si vous devez vous déconnecter fréquemment, il serait peut-être préférable de déléguer le verrouillage.

Déléguer les mina

La délégation de mina est une option alternative à la mise en jeu directe, avec l'avantage de ne pas avoir à rester continuellement connecté au réseau. Cependant, gardez à l'esprit que:

  • vous devrez payer une petite commission sur la transaction pour effectuer un changement de délégué, car ce changement est effectué par une transaction sur la blockchain
  • le délégué mettant en jeu pour vous peut décider de vous facturer une commission pour le service rendu

Assurez-vous d'abord d'avoir déverrouillé votre compte:

mina account unlock -public-key $MINA_PUBLIC_KEY

Exécutez ensuite cette commande pour déléguer vos fonds :

mina client delegate-stake \
-delegate <delegate-public-key> \
-privkey-path <file> \
-fee <fee>

Les champs de cette commande:

  • L'indicateur delegate nécessite la clé publique du délégué que vous avez choisi
  • privkey-path est le chemin d’accès au fichier de votre clé privée des fonds que vous souhaitez déléguer
  • fee sont les frais de transaction pour enregistrer votre transaction sur la blockchain

Déléguer vos fonds peut être utile si vous êtes intéressé par:

  • Gérer votre propre nœud de verrouillage qui utilisera les fonds d'un «portefeuille déconnecté» (cold wallet)
  • Déléguer à un «pool» qui fournira des paiements périodiquement

Il y a une période d'attente d'un jour avant que ce changement n'entre en vigueur pour éviter des abus du réseau

Compression des données dans le réseau Mina

Le protocole Mina est unique du fait qu'il ne nécessite pas de nœuds pour maintenir l'historique complet de la blockchain comme les autres protocoles de crypto-monnaie. En utilisant des preuves cryptographiques récursives, le protocole Mina comprime efficacement la blockchain à une taille constante. Nous appelons cela une compression, car elle réduit des téraoctets de données à seulement quelques kilo-octets.

Cependant, il ne s'agit pas d'enminage ou de compression de données au sens traditionnel, mais plutôt de nœuds "compressant" les données du réseau en générant des preuves cryptographiques. Les opérateurs de nœuds jouent un rôle crucial dans ce processus en se désignant comme des « snark-workers » qui génèrent des zk-SNARK pour les transactions qui ont été ajoutées aux blocs.

Lorsque vous démarrez le daemon, indiquez ces arguments supplémentaires pour démarrer également un Snark-Worker:

mina daemon \
-external-port 8302 \
-discovery-port 8303 \
-peer /dns4/seed-one.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWP7fTKbyiUcYJGajQDpCFo2rDexgTHFJTxCH
8jvcL1eAH \
-peer /dns4/seed-two.genesis-
redux.o1test.net/tcp/10002/ipfs/12D3KooWL9ywbiXNfMBqnUKHSB1Q1BaHFNUzppu6JLM
Vn9TTPFSA \
-run-snark-worker $MINA_PUBLIC_KEY \
-snark-worker-fee <fee>

En tant que « snark-worker », vous avez droit à une partie de la récompense de bloc pour les transactions qui se trouvent dans les blocs que vous avez compressées. Le producteur de blocs est responsable de la collecte des transactions compressées avant de les inclure dans un bloc, et il sera incité par le protocole à récompenser les « snark-worker ».

Voilà les rôles et responsabilités en tant qu'opérateur de nœud de Mina. Étant donné que Mina est un réseau peer-to-peer sans autorisation, tout est géré et exécuté de manière décentralisée par des nœuds du monde entier. De même, le projet Mina est également distribué et tout le monde peut contribuer. Le code est entièrement open source, et il y a beaucoup de travail à effectuer, aussi bien sur la partie technique que sur la partie non technique. Pour en savoir plus sur la façon dont vous pouvez vous impliquer sur le projet Mina, consultez la section Contribuer à Mina.