Exploitation d’un pool de participation(Stake pool) | Partie 2.3

Gestion des pools de participations et délégation pour les échanges

De nombreuses bourses sont impatientes de participer à la gestion d’un pool de participations ou de déléguer leur participation à des pools existants.

Ces informations sont destinées aux échanges et aux développeurs d’échanges qui ont déjà migré avec succès de l’ère pré-hard fork de Byron vers l’ère post-hard fork Shelley et répondent à certaines des questions les plus fréquemment posées concernant ce processus, y compris comment démarrer, et limites actuelles.

Les échanges devront utiliser le réseau principal Shelley comme environnement de production pour obtenir les dernières fonctionnalités de la blockchain Cardano. Cette intégration est rendue possible en utilisant cardano-wallet , cardano-node et cardano-cli , qui fournissent le point de communication pour les échanges. En tant qu’échange, vous devrez démarrer votre nœud Cardano , disposer d’un portefeuille Shelley avec des fonds et sélectionner un pool de participations avant de commencer le processus de délégation de participation.

Remarque : cardano-sl est obsolète et ne fonctionnera plus après le hard fork de Shelley. Les échanges ou les portefeuilles tiers utilisant cardano-sl devraient passer à une version de Cardano prise en charge par Shelley, comme le cardano-node récemment publié.

Portefeuille Cardano et binaires de nœud

Téléchargez les binaires pour le cardano-wallet :

Téléchargez les binaires pour le cardano-node :

Déléguer la participation

Avant de déléguer, vous devrez utiliser un portefeuille de l’ère Shelley et configurer votre propre itération du portefeuille Cardano en utilisant docker, docker-compose, en construisant à partir de la source ou en téléchargeant des fichiers binaires de version.

Pour participer à la délégation de participation, chaque bourse doit disposer des types de clés d’adresse suivants :

  • Clé de paiement - une paire de clés d’adresse unique pour générer des adresses UtxO.
  • Clé de mise - une paire de clés d’adresse de mise/récompense pour générer des adresses de compte/récompense pour participer au processus de délégation de mise.

Les principales étapes de la délégation de participation sont :

  • Créer les clés de mise
  • Créer les clés de paiement
  • Enregistrez l’adresse de mise sur la blockchain
  • Créer et soumettre le certificat de délégation de pieu

Ces étapes sont décrites en détail dans les sections suivantes.

1. Créer des clés de participation

L’échange doit créer des clés de mise pour générer les adresses de récompense du délégué pour la collecte des récompenses de mise.

Tout d’abord, vous devez créer les clés de paiement et de mise pertinentes, ainsi que les adresses associées pour le délégué. L’adresse de paiement est ensuite utilisée pour payer la transaction qui envoie le certificat d’enregistrement à la chaîne.

cardano-cli stake-address key-gen \ –verification-key-file stake.vkey \ –signing-key-file stake.skey Construisez l’adresse du participation : cardano-cli stake-address build \ –staking-verification-key-file stake.vkey --out-file stake.addr --mainnet

2. Création des clés de paiement

Pour générer les adresses de paiement d’un délégué, vous devez créer des clés de paiement. Ceci est requis pour les paiements utilisés pour participer à la délégation de participation, ainsi que pour le dépôt de fonds :

cardano-cli address key-gen \ –verification-key-file pay.vkey \ –signing-key-file pay.skey Créez l’adresse de paiement : cardano-cli address build \ –payment-verification-key-file pay.vkey \ –staking-verification-key-file stake.vkey --out-file pay.addr --mainnet

3. Enregistrement de l’adresse de mise sur la blockchain

Ensuite, enregistrez l’adresse de participation sur la blockchain avec un dépôt de clé, qui est requis pour participer à la délégation de participation. Tout d’abord, vous devrez générer le certificat d’enregistrement de l’adresse du pieu à l’aide de la clé de vérification du pieu :

cardano-cli stake-address registration-certificate \

--staking-verification-key-file stake.vkey \

--out-file stake.cert

Tout certificat d’enregistrement de clé de participation nécessite un acompte pour les frais de suivi de la clé et du compte de récompense correspondant. De plus, il ne nécessite aucun témoin pour enregistrer le certificat, mais seulement le témoin pour les frais de saisie de la transaction.

Enregistrez la clé de jalonnement du délégué sur la blockchain avec une simple transaction en utilisant n’importe quelle adresse de paiement :

# Get param files export CARDANO_NODE_SOCKET_PATH=/opt/cardano/fnf/sockets/node0.socket cardano-cli query protocol-parameters \ --mainnet \ --out-file params.json # Build cardano-cli transaction build-raw \ --tx-in "$INPUT" \ --tx-out "${FROM}+${CHANGE}" \ --tx-out "${TO}+${AMOUNT}" \ --ttl $(expr $(CARDANO_NODE_SOCKET_PATH=/opt/cardano/fnf/sockets/node0.socket ./cardano-cli query tip --mainnet | jq ".slotNo" --raw-output) + 20000) \ --fee "$FEE" \ --tx-body-file stake-cert-tx # Sign cardano-cli transaction sign \ --tx-body-file stake-cert-tx \ --signing-key-file /opt/cardano/fnf/addresses/genesis.skey \ --signing-key-file stake.skey \ --tx-file stake-cert-tx \ --mainnet # Submit STAKE_ADDR=$( cut -c 9- stake.addr ) # Before export CARDANO_NODE_SOCKET_PATH=/opt/cardano/fnf/sockets/node0.socket cardano-cli query ledger-state --mainnet | grep "$STAKE_ADDR" cardano-cli transaction submit \ --tx-file signed-stake-key-registration.tx \ --mainnet cardano-cli query ledger-state --mainnet 42 | grep "$STAKE_ADDR" # Ready to delegate now.

4. Création et soumission du certificat de délégation de participation

Créez et soumettez le certificat de délégation de participation par adresse pour le pool sélectionné. Notez que 100 % de l’ada de l’adresse sera déléguée au pool que vous sélectionnez) :

cardano-cli stake-address delegation-certificate \ –staking-verification-key-file stake.vkey \ –stake-pool-verification-key-file ~/cold-keys/pool.vkey \ –out-file pool-delegation.cert # Build cardano-cli transaction build-raw \ –tx-in “$INPUT” \ –tx-out “$OUTPUT” \ –ttl 500000 \ –fee “$FEE” \ –tx-body-file pool-delegation.tx \ –certificate pool-delegation.cert # Sign cardano-cli transaction sign \ –tx-body-file pool-delegation.tx \ –signing-key-file stake.skey \ –signing-key-file pay.skey \ –mainnet \ –tx-file signed-pool-delegation.tx # Submit cardano-cli transaction submit \ –tx-file signed-pool-delegation.tx \ –mainnet

Limites actuelles

Vous ne pouvez pas effectuer de délégation à partir de plusieurs adresses dans le portefeuille Cardano. Une fois que vous décidez d’effectuer la délégation, vous acceptez de déléguer 100 % de votre participation actuelle dans ce portefeuille.

Pour diviser votre délégation de participation, vous devrez diviser les avoirs ada en soumettant différentes transactions à différentes adresses de portefeuille, puis en déléguant ces adresses individuellement. L’autre option consiste à appliquer le concept de jalonnement en tant que service où vous transférez tous les fonds vers un ou plusieurs portefeuilles chauds, puis effectuez la délégation de participation.

En d’autres termes, il n’est actuellement pas possible de déléguer ada d’une adresse ou d’un portefeuille unique à plusieurs pools. Par exemple, l’ada conservée en chambre froide à l’aide d’une seule adresse ne peut être déléguée qu’à un seul pool de jalonnement. Comme un échange aurait généralement de grandes quantités d’ada à un moment donné, le jalonnement de l’intégralité de son ada dans un seul pool de participation entraînerait probablement une saturation du pool.

Remarque : si vous déléguez une énorme quantité d’ada (environ 100 millions d’ada ou plus), vous n’obtiendrez pas les récompenses maximales en raison de la sursaturation du pool, car le pool de mises aura plus de mise déléguée que ce qui est idéal pour le réseau. Pour résoudre ce problème, vous pouvez exécuter plusieurs portefeuilles chauds ou froids pour la délégation, comme indiqué ci-dessus, ou vous pouvez utiliser plusieurs adresses pour déléguer à plusieurs pools.

Mise en place d’un pool de mise

Vous pouvez également créer votre propre pool de mises, ou plusieurs pools de mises, et déléguer la mise à vos propres pools. Pour cela, vous fixeriez les frais du pool de mise à 100 %, ce qui créerait essentiellement un pool privé. Pour démarrer un pool de mises, vous devez suivre les étapes suivantes :

  1. Obtenez des binaires sur votre serveur.
  2. Configurez les nœuds de production de blocs et de relais.
  3. Configurez le pare-feu.
  4. Créer des clés.
  5. Générer le certificat opérationnel.
  6. Démarrez les nœuds.

Mise en place de nœuds de production de blocs et de relais

En tant qu’opérateur de pool de mises, vous devrez exécuter deux types de nœuds, chaque nœud sur un serveur distinct :

  • Bloquer les nœuds producteurs.
  • Nœuds relais.

Le pool de mise doit avoir au moins un nœud producteur de blocs connecté à au moins un nœud relais qui est contrôlé par l’opérateur du pool de mise. De plus, votre pool de mises doit respecter les exigences minimales.

Mise en place des fichiers de configuration

Création de dossiers

Créez deux dossiers distincts - “production de blocs” et “relais” - pour chaque nœud et copiez les fichiers de configuration dans leurs répertoires comme expliqué ci-dessus.

Modification du fichier de configuration de la topologie

Modifiez le fichier mainnet-topology.json du producteur de blocs pour parler uniquement au nœud relais :

{ “Producers”: [ { “addr”: “relays-new.cardano-mainnet.iohk.io or put your public IP”, “port”: 3001, “valency”: 2 } ] }

Modifiez le fichier mainnet-topology.json du relais pour parler au producteur de blocs et à un nœud externe :

{ “Producers”: [ { “addr”: “put your public IP” “port”: 3000, “valency”: 1 }, { “addr”: “relays-new.cardano-mainnet.iohk.io”, “port”: 3001, “valency”: 1 }

Configuration du pare-feu

Configurez le pare-feu pour vos nœuds :

  • Connectez-vous uniquement avec des clés SSH
  • Configurez les connexions SSH sur un port différent du port par défaut “22”
  • Autorisez les connexions uniquement à partir de vos nœuds de relais en ajoutant leurs adresses IP.
  • Ouvrez uniquement les ports nécessaires pour les nœuds de relais.

Création de clés

Sur le répertoire cardano-node :

  • Générez une paire de clés de paiement (généralement pour générer des adresses UtxO) :

cardano-cli address key-gen \ –verification-key-file payment.vkey \ –signing-key-file payment.skey

  • Générez la paire de clés KES :

cardano-cli node key-gen-KES \ –verification-key-file kes.vkey \ –signing-key-file kes.skey

  • Générer une paire de clés VRF

cardano-cli node key-gen-VRF \ –verification-key-file vrf.vkey \ –signing-key-file vrf.skey

  • Générez des Cold Keys et un fichier Cold_counter :

cardano-cli node key-gen \ –cold-verification-key-file cold.vkey \ –cold-signing-key-file cold.skey \ –operational-certificate-issue-counter coldcounter

  • Génération du certificat opérationnel

Ce certificat est nécessaire pour exploiter un nœud en tant que pool de participations. Tout d’abord, vous devez obtenir les créneaux par période KES à partir du fichier genesis :

cat mainnet-shelley-genesis.json | grep KESPeriod

  • Maintenant, vous pouvez générer le certificat opérationnel :

cardano-cli node issue-op-cert \ –kes-verification-key-file kes.vkey \ –cold-signing-key-file cold.skey \ –operational-certificate-issue-counter coldcounter \ –kes-period 120 \ –out-file opcert

Délégation pour les propriétaires de pool de participations

En tant que propriétaire de pool, vous devez créer un certificat de délégation de mise pour déléguer au moins un montant de mise en gage à partir de la clé de mise du propriétaire spécifiée dans le certificat de pool. De plus, vous devrez comprendre comment une transaction est créée, signée et soumise à la blockchain en consultant les documents de transaction.

En bref, le propriétaire délègue les fonds au pool qu’il possède. Le certificat suivant délègue les fonds de toutes les adresses de pieu associées à la clé pieu.vkey au pool.vkey.

cardano-cli stake-address delegation-certificate \ –staking-verification-key-file staking.vkey \ –stake-pool-verification-key-file ~/cold-keys/pool.vkey \ –out-file owner-delegation.cert

Démarrage des deux nœuds

Démarrez le nœud de production de blocs et le nœud de relais sur n’importe quel port, mais sachez que les deux nœuds doivent s’exécuter sur des ports différents, les ports 3000 et 3001 sont utilisés dans l’exemple suivant :

cardano-node run \ –topology block-producing/mainet-topology.json \ –database-path block-producing/db \ –socket-path block-producing/db/node.socket \ –host-addr “your public IP” \ –port 3000 \ –config block-producing/mainnet-config.json

Démarrer le nœud de relais :

cardano-node run \ –topology relay/mainet-topology.json \ –database-path relay/db \ –socket-path relay/db/node.socket \ –host-addr “your public IP” \ –port 3001 \ –config relay/mainnet-config.json

Source : https://docs.cardano.org/development-guidelines/operating-a-stake-pool/about-stake-pools