Bienvenue sur SanchoNet - votre passerelle vers l'avenir de la gouvernance de Cardano (Partie 2)

Cardanos-New-Era-SanchoNet-Updev Community

Inscription en tant que représentant délégué SanchoNet (DRep)

Pré-requis

  • Adresse de paiement avec les fonds
  • Un nœud SanchoNet

Générer des clés SanchoNet DRep et un identifiant

  1. Générez une paire de clés DRep :

cardano-cli conway governance drep key-gen \ –verification-key-file drep.vkey \ –signing-key-file drep.skey

Expliquer { “type”: “DRepSigningKey_ed25519”, “description”: “Delegate Representative Signing Key”, “cborHex”: “5820eba7053fdc9cb3b8aacf142d3d4ad575bb48fb92f4082d81605ac8e2ccfead5d” }

Expliquer { “type”: “DRepVerificationKey_ed25519”, “description”: “Delegate Representative Verification Key”, “cborHex”: “5820c19e0e939609531cfd04dcfa5bf1a5f3e245aa88e163759341aba296af34cc7e” }

  1. Générez un identifiant SanchoNet DRep :

cardano-cli conway governance drep id \ –drep-verification-key-file drep.vkey \ –out-file drep.id

drep124w9k5ml25kcshqet8r3g2pwk6kqdhj79thg2rphf5u5urve0an

Générer le certificat d’enregistrement

  1. Créer un certificat d’enregistrement SanchoNet DRep

Il existe trois manières de générer le certificat :

  • Utilisation du fichier drep.vkey :

Expliquer cardano-cli conway governance drep registration-certificate \ –drep-verification-key-file drep.vkey \ –key-reg-deposit-amt $(cardano-cli conway query gov-state --testnet-magic 4 | jq -r .enactState.curPParams.dRepDeposit) \ –out-file drep-register.cert

  • Utilisation de la clé de vérification DRep :

Expliquer cardano-cli conway governance drep registration-certificate \ –drep-verification-key “$(cat drep.vkey | jq -r .cborHex | cut -c 5-)” \ –key-reg-deposit-amt $(cardano-cli conway query gov-state --testnet-magic 4 | jq -r .enactState.curPParams.dRepDeposit) \ –out-file drep-register.cert

  • Utilisation de l’ID DRep :

Expliquer cardano-cli conway governance drep registration-certificate \ –drep-key-hash $(cat drep.id) \ –key-reg-deposit-amt $(cardano-cli conway query gov-state --testnet-magic 4 | jq -r .enactState.curPParams.dRepDeposit) \ –out-file drep-register.cert

Chacune des méthodes ci-dessus produit drep-register.cert, qui contient :

Expliquer { “type”: “CertificateShelley”, “description”: “DRep Key Registration Certificate”, “cborHex”: “84108200581c555c5b537f552d885c1959c714282eb6ac06de5e2aee850c374d394e00f6” }

Soumettre un certificat dans une transaction

  1. Soumettez le certificat d’enregistrement SanchoNet DRep dans une transaction.
  • Construire:

Expliquer cardano-cli conway transaction build \ –testnet-magic 4 \ –witness-override 2 \ –tx-in $(cardano-cli query utxo --address $(cat payment.addr) --testnet-magic 4 --out-file /dev/stdout | jq -r ‘keys[0]’) \ –change-address $(cat payment.addr) \ –certificate-file drep-register.cert \ –out-file tx.raw

  • Signe:

Expliquer cardano-cli conway transaction sign \ –tx-body-file tx.raw \ –signing-key-file payment.skey \ –signing-key-file drep.skey \ –testnet-magic 4 \ –out-file tx.signed

  • Soumettre:

cardano-cli conway transaction submit \ –testnet-magic 4 \ –tx-file tx.signed

Déléguer les votes à un DRep

Déléguer votre pouvoir de vote à un représentant délégué de SanchoNet (DRep) fonctionne un peu comme déléguer votre participation à un pool de participation. La délégation du pouvoir de vote implique la délivrance d’un certificat de délégation de votre clé de participation au SanchoNet DRep choisi. Tout comme pour la délégation de participation, le processus de délégation de votes à un SanchoNet DRep n’implique pas de renoncer au contrôle de vos fonds. Au lieu de cela, le certificat de délégation de vote accorde au DRep sélectionné l’autorisation de voter en votre nom.

En plus des DReps SanchoNet enregistrés, le système propose quelques DReps par défaut :

  • –always-abstain : cette option signale votre intention de ne pas participer aux procédures de vote, indiquant un choix de vous abstenir du processus de vote.
  • –toujours-pas de confiance : cette option signifie votre manque de confiance dans le comité constitutionnel actuel, indiquant un vote de défiance dans ses décisions

Prérequis

  • Clés de paiement et adresse avec les fonds
  • Clé de mise
  • Sélection SanchoNet DRep par défaut : --always-abstain ou --always-no-confidence
  • ID SanchoNet DRep (ou clé de vérification) d’un DRep enregistré
  • Un nœud SanchoNet

Génération du certificat de délégation de vote

  1. Générez le certificat de délégation de vote.
  • Déléguer au --always-abstain DRep par défaut :

Expliquer cardano-cli conway stake-address vote-delegation-certificate \ –stake-verification-key-file stake.vkey \ –always-abstain \ –out-file vote-deleg.cert

  • Déléguer au --always-no-confidence DRep par défaut :

Expliquer cardano-cli conway stake-address vote-delegation-certificate \ –stake-verification-key-file stake.vkey \ –always-no-confidence \ –out-file vote-deleg.cert

  • Déléguer à un SanchoNet DRep enregistré :

Expliquer cardano-cli conway stake-address vote-delegation-certificate \ –stake-verification-key-file stake.vkey \ –drep-key-hash $(cat drep.id) \ –out-file vote-deleg.cert

Soumission du certificat dans une transaction

  1. Soumettre le certificat de délégation de vote dans une transaction.
  • Construire:

Expliquer cardano-cli conway transaction build \ –testnet-magic 4 \ –witness-override 2 \ –tx-in $(cardano-cli query utxo --address $(cat payment.addr) --testnet-magic 4 --out-file /dev/stdout | jq -r ‘keys[0]’) \ –change-address $(cat payment.addr) \ –certificate-file vote-deleg.cert \ –out-file tx.raw

  • Signez avec les clés de paiement et de mise :

Expliquer cardano-cli conway transaction sign \ –tx-body-file tx.raw \ –signing-key-file payment.skey \ –signing-key-file stake.skey \ –testnet-magic 4 \ –out-file tx.signed

  • Soumettre:

cardano-cli conway transaction submit \ –testnet-magic 4 \ –tx-file tx.signed

Générer les clés et les certificats des membres du comité

Touches froides des membres du comité

Les personnes qui doivent être nommées membres du comité doivent générer une paire de clés à froid. Cette exigence découle de la nécessité d’inclure la clé de vérification à froid (ou son hachage) dans l’action de gouvernance soutenant leur proposition. Le terme « paire de clés froides » est utilisé pour souligner son stockage intentionnel dans un environnement sécurisé et hors ligne, qui peut inclure des clés USB protégées, des machines informatiques isolées ou des appareils similaires délibérément déconnectés d’Internet pour une sécurité renforcée.

cardano-cli conway governance committee key-gen-cold \ –cold-verification-key-file cc-cold.vkey \ –cold-signing-key-file cc-cold.skey

Générer le hachage de la clé de vérification à froid :

cardano-cli conway governance committee key-hash \ –verification-key-file cc-cold.vkey > cc-key.hash

cat cc-key.hash 89181f26b47c3d3b6b127df163b15b74b45bba7c3b7a1d185c05c2de

Le hachage de clé est généralement utilisé dans l’action de gouvernance du comité de mise à jour qui tente d’ajouter ou de supprimer des membres du CC.

Paire de raccourcis clavier et certificat d’autorisation

Une fois que les nouveaux membres du comité ont été ratifiés par une action de gouvernance, les nouveaux membres du comité doivent générer une paire de touches de raccourci et émettre un certificat d’autorisation de raccourci clavier. Cela leur permet de voter en signant leurs transactions avec leur clé de signature à chaud tout en gardant leur clé de signature froide. clés conservées en toute sécurité dans une chambre froide. Dans le cas où les touches d’accès rapide sont compromises à tout moment, le membre du comité doit générer une nouvelle paire de touches d’accès rapide et émettre un nouveau certificat d’autorisation de raccourci clavier.

cardano-cli conway governance committee key-gen-hot \ –verification-key-file cc-hot.vkey \ –signing-key-file cc-hot.skey

Expliquer cardano-cli conway governance committee create-hot-key-authorization-certificate \ –cold-verification-key-file cc-cold.vkey \ –hot-key-file cc-hot.vkey \ –out-file cc-hot-key-authorization.cert

  • Soumettre le certificat d’autorisation dans une transaction :

Expliquer cardano-cli conway transaction build \ –testnet-magic 4 \ –tx-in “$(cardano-cli query utxo --address “$(cat payment.addr)” --testnet-magic 4 --out-file /dev/stdout | jq -r ‘keys[0]’)” \ –change-address payment.addr \ –certificate-file cc-hot-key-authorization.cert \ –witness-override 2 \ –out-file tx.raw

Expliquer cardano-cli conway transaction sign \ –testnet-magic 4 \ –tx-body-file tx.raw \ –signing-key-file payment.skey \ –signing-key-file cc-cold.skey \ –out-file tx.signed

cardano-cli conway transaction submit \ –testnet-magic 4 \ –tx-file tx.signed

Actions de gouvernance

Aspects communs à tous les types d’actions de gouvernance

Une proposition est le processus de rassemblement de toutes les informations nécessaires pour soumettre une action de gouvernance à la chaîne. Une proposition se compose de :

  • Un dépôt
  • Le compte de récompense qui recevra le retour du dépôt
  • L’action de gouvernance
  • Une ancre optionnelle.

Lorsque vous utilisez cardano-cli pour créer une action de gouvernance, vous remarquerez qu’il crée une proposition.

Identifiants de dépôt et de mise

Tout détenteur d’ada peut soumettre une action de gouvernance à la chaîne. Ils doivent fournir une caution qui sera restituée une fois l’action finalisée (qu’elle soit ratifiée ou expirée). Pour faciliter ce processus, le proposant doit préciser le titre de mise qui recevra le dépôt remboursé.

ID de l’action de gouvernance précédente

Pour éviter les conflits involontaires entre des actions de gouvernance du même type, il est essentiel que chaque action de gouvernance inclut l’ID d’action de gouvernance de l’action la plus récemment adoptée de son type respectif. Notamment, cette exigence ne s’applique pas aux retraits de trésorerie et aux informations actions de gouvernance. .

Vous pouvez obtenir les derniers ID d’action de gouvernance adoptés avec :

cardano-cli conway query gov-state --testnet-magic 4 | jq -r .enactState.prevGovActionIds

Expliquer { “pgaCommittee”: { “govActionIx”: 0, “txId”: “fe2c99fe6bc75a9666427163d51ae7dbf5a60df40135361b7bfd53ac6c7912ec” }, “pgaConstitution”: { “govActionIx”: 0, “txId”: “2bcf2a93cb840d72e6fbbad4d52419fa69a3971dee2e32fab414e32a44ecbaf7” }, “pgaHardFork”: null, “pgaPParamUpdate”: null }

Veuillez noter que le comité de mise à jour et la motion de censure les actions partagent le même espace, appelé « pgaCommittee », » au sein de État de gouvernance. Par conséquent, l’état de gouvernance stocke une valeur unique pour représenter ces deux actions. Le système vérifie également l’un ou l’autre de ces éléments actions contre cette valeur stockée unique.

Ancres

Lors de la proposition d’une action de gouvernance, le proposant peut utiliser une ancre, qui comprend une URL< /span> du document.hachage hébergeant un document qui expose la justification pour les modifications proposées, ainsi que le

Le document à l’URL peut être de forme libre. Il est important qu’il communique aux détenteurs d’ada le quoi et le pourquoi< a i=4> de la proposition. Ce didacticiel utilise principalement ’ https://tinyurl.com/3wrwb2as’ comme exemple.

Vous pouvez utiliser cardano-cli pour obtenir le hachage :

cardano-cli conway governance hash --file-text rationale.txt 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2

Vous pouvez également utiliser b2sum pour hacher le document :

b2sum -l 256 rationale.txt 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 rationale.txt

Vous devrez fournir le hachage du document lors de la création d’une action de gouvernance.

Mettre à jour les actions du comité

Mettre à jour le comité pour ajouter un nouveau membre du CC :

Supposons que vous souhaitiez ajouter trois membres CC, qui ont généré des clés froides et ont fourni leurs hachages de clé :

  • 89181f26b47c3d3b6b127df163b15b74b45bba7c3b7a1d185c05c2de
  • ea8738081fca0726f4e781f5e55fda05f8745432a5f8a8d09eb0b34b
  • 7f6721067362d4ae9ca73469fe983ce5572dad9028386100104b0da0

Vous pouvez créer une proposition pour les ajouter en tant que nouveaux membres du CC avec une époque d’expiration (--epoch) pour chacun d’eux. C’est le bon moment pour revoir le quorum. Supposons que les 2/3 du comité doivent accepter la proposition :

Recherchez le dépôt actuel requis pour une action de gouvernance :

govActDeposit=“$(cardano-cli conway query gov-state --testnet-magic 4 | jq -r ‘.enactState.curPParams.govActionDeposit’)”

Créer la proposition d’action de gouvernance :

Expliquer cardano-cli conway governance action update-committee \ –testnet \ –governance-action-deposit ${govActDeposit} \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –add-cc-cold-verification-key-hash 89181f26b47c3d3b6b127df163b15b74b45bba7c3b7a1d185c05c2de \ –epoch 100 \ –add-cc-cold-verification-key-hash ea8738081fca0726f4e781f5e55fda05f8745432a5f8a8d09eb0b34b \ –epoch 95 \ –add-cc-cold-verification-key-hash 7f6721067362d4ae9ca73469fe983ce5572dad9028386100104b0da0 \ –epoch 90 \ –quorum 2/3 \ –out-file update-committee.action

  • Remarque : S’il existe une action de gouvernance déjà adoptée pour mettre à jour le comité, la proposition doit également inclure --governance-action-tx-id et --governance-action-index.

Mettre à jour le comité pour supprimer un membre existant du CC :

Supposons que vous souhaitiez supprimer le membre CC avec le hachage de clé 89181f26b47c3d3b6b127df163b15b74b45bba7c3b7a1d185c05c2de. Vous pouvez le faire avec :

Expliquer cardano-cli conway governance action update-committee \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –remove-cc-cold-verification-key-hash 89181f26b47c3d3b6b127df163b15b74b45bba7c3b7a1d185c05c2de \ –quorum 1/2 \ –governance-action-tx-id fe2c99fe6bc75a9666427163d51ae7dbf5a60df40135361b7bfd53ac6c7912ec \ –governance-action-index 0 \ –out-file update-committee.action

Mettre à jour le comité pour modifier uniquement le quorum :

Expliquer cardano-cli conway governance action update-committee \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –quorum 60/100 \ –governance-action-tx-id fe2c99fe6bc75a9666427163d51ae7dbf5a60df40135361b7bfd53ac6c7912ec \ –governance-action-index 0 \ –out-file update-committee.action

Mise à jour de la constitution

Si vous décidez de proposer une mise à jour de la constitution de SanchoNet, veuillez noter que toutes les règles et principes décrits pour SanchoNet doivent être fictifs et sans rapport avec les règles réelles de la blockchain Cardano. Citations directement de Don Quichotte sont encouragés, ainsi que des règles dans un esprit similaire qui ne sont pas directement extraites du livre. SanchoNet n’est pas l’espace pour des discussions sérieuses sur la future gouvernance de Cardano. Pour des conversations substantielles, veuillez visiter le forum dédié pour explorer les questions importantes de la constitution de Cardano avec la profondeur qu’elles méritent. Forum Cardano

  • Trouvez la dernière action de gouvernance adoptée de ce type :

cardano-cli conway query gov-state --testnet-magic 4 | jq .enactState.prevGovActionIds.pgaConstitution

Expliquer { “govActionIx”: 0, “txId”: “00caeb6c2db4575acc43be3e8f87b881dccb86283daf16aa2707275cbe7f3451” }

  • Rédigez une mise à jour de la constitution et enregistrez-la dansconstitution.txt
  • Téléchargez le fichier constitution.txt vers une URL afin que tout le monde puisse le lire, par exemple https://tinyurl.com/mr3ferf9
  • Vérifiez le hachage du constitution.txt fichier à l’aide de b2sum.

wget https://tinyurl.com/mr3ferf9 -O constitution.txt

cardano-cli conway governance hash --file-text constitution.txt 5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d

ou

b2sum -l 256 constitution.txt 5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d constitution.txt

Créer la proposition de mise à jour de la constitution :

Expliquer cardano-cli conway governance action create-constitution \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash “52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2” \ –constitution-url https://tinyurl.com/mr3ferf9 \ –constitution-hash “5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d” \ –governance-action-tx-id “00caeb6c2db4575acc43be3e8f87b881dccb86283daf16aa2707275cbe7f3451” \ –governance-action-index 0 \ –out-file constitution.action

Motion de censure

  • Retrouvez la dernière action de gouvernance édictée de ce type :

cardano-cli conway query gov-state --testnet-magic 4 | jq -r ‘.enactState.prevGovActionIds.pgaCommittee’

Expliquer { “govActionIx”: 0, “txId”: “fe2c99fe6bc75a9666427163d51ae7dbf5a60df40135361b7bfd53ac6c7912ec” }

Créez une action de gouvernance de censure :

Expliquer cardano-cli conway governance action create-no-confidence \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –governance-action-tx-id fe2c99fe6bc75a9666427163d51ae7dbf5a60df40135361b7bfd53ac6c7912ec \ –governance-action-index 0 \ –out-file no-confidence.action

Retrait du Trésor

En plus des informations d’identification de mise requises pour obtenir un remboursement de dépôt, le proposant doit également fournir des informations d’identification de mise pour recevoir des fonds du trésor dans le cas où l’action de gouvernance est approuvée.

Créez la proposition de retrait de trésorerie :

Expliquer cardano-cli conway governance action create-treasury-withdrawal \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –funds-receiving-stake-verification-key-file stake.vkey \ –transfer 50000000000 \ –out-file treasury.action

  • Notez que vous n’avez pas besoin de fournir un identifiant d’action de gouvernance préalable sur les retraits de trésorerie.

Informations

Créer le fichier ‘info’ action de gouvernance :

Expliquer cardano-cli conway governance action create-info --testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/yc74fxx4 \ –anchor-data-hash \ –out-file info.action

Mettre à jour les paramètres du protocole pour modifier --key-reg-deposit-amt

Expliquer cardano-cli conway governance action create-protocol-parameters-update \ –testnet \ –governance-action-deposit 1000000000 \ –deposit-return-stake-verification-key-file stake.vkey \ –anchor-url https://tinyurl.com/3wrwb2as \ –anchor-data-hash 52e69500a92d80f2126c836a4903dc582006709f004cf7a28ed648f732dff8d2 \ –key-reg-deposit-amt 1000000 \ –out-file pp-update.action

  • Remarque : S’il existe une action de gouvernance déjà adoptée pour mettre à jour les paramètres du protocole, la proposition doit également inclure --governance-action-tx-id et --governance-action-index.

Soumission du *.action fichier d’action dans une transaction

Soumettre le fichier *.action à la blockchain est l’étape essentielle pour donner vie à votre proposition et la rendre accessible à la communauté pour participer au processus de vote. Ce processus transforme essentiellement votre proposition d’une idée conceptuelle en un élément exploitable. Une fois soumis, il fait partie du grand livre public, tout en permettant également aux membres des organes de gouvernance d’examiner, de discuter et finalement de voter sur son approbation ou son rejet.

  • Notez que vous pouvez également utiliser build-raw et calculate-min-fee pour créer des transactions dans un environnement hors ligne. L’exemple ci-dessous utilise le pratique build :

Expliquer cardano-cli conway transaction build \ –testnet-magic 4 \ –witness-override 2 \ –tx-in “$(cardano-cli query utxo --address “$(cat payment.addr)” --testnet-magic 4 --out-file /dev/stdout | jq -r ‘keys[0]’)” \ –change-address $(cat payment.addr) \ –proposal-file info.action \ –out-file tx.raw

Expliquer cardano-cli conway transaction sign \ –testnet-magic 4 \ –tx-body-file tx.raw \ –signing-key-file payment.skey \ –signing-key-file stake.skey \ –out-file tx.signed

cardano-cli conway transaction submit \ –testnet-magic 4 \ –tx-file tx.signed

Recherche de l’ID d’action de gouvernance de votre proposition

Vous souhaiterez peut-être trouver votre identifiant d’action de gouvernance pour le partager avec d’autres sur Discord1 et solliciter leur soutien. L’ID de transaction et l’index de la transaction qui a soumis le La proposition sert d’identifiant d’action. Un moyen efficace de trouver votre ID d’action de gouvernance consiste à interroger l’état de gouvernance et à filtrer par hachage de clé de mise (du proposant).

Tout d’abord, trouvez votre hachage de clé avec :

cardano-cli conway stake-address key-hash --stake-verification-key-file stake1.vkey

8e0debc9fdc6c616ac40d98bf3950b436895eea9cccf0396a6e5e12b

Utilisez jq pour filtrer la sortie gov-state en fonction du hachage de la clé de mise. Le résultat contient toutes les informations pertinentes sur vos actions de gouvernance, notamment actionId :

cardano-cli conway query gov-state --testnet-magic 4 \ | jq -r --arg keyHash “8e0debc9fdc6c616ac40d98bf3950b436895eea9cccf0396a6e5e12b” ‘.proposals | to_entries | select(.value.returnAddr.credential.keyHash | contains($keyHash)) | .value’

Expliquer { “action”: { “contents”: [ [ { “credential”: { “keyHash”: “7249a71391f08399f06b492eae7892a33191699625cff50b7dee55c6” }, “network”: “Testnet” }, 20388738581 ] ], “tag”: “TreasuryWithdrawals” }, “actionId”: { “govActionIx”: 0, “txId”: “4fcd92abf2ce3d6796c5fae51ea83d563ca8611359c9624fd1cecd7fa1ce71cc” }, “committeeVotes”: { “keyHash-23e05ad2b71317a6348ce4b68dae37aa1c0e545cdea740b23c21742e”: “VoteNo”, “keyHash-540bedcd4bdcbf523e899c3ef43f2b96ecec4f6303af58d15a413ed1”: “VoteYes”, “keyHash-6c1d098a366f2274651943a7f778b3b5459c129f0407a0db2902253a”: “VoteYes” }, “dRepVotes”: { “keyHash-13797df5308dfebf2348fa58b312a177cf97939f5f7d21168e1a54db”: “VoteYes”, “keyHash-9853551d8b99884f51608822e012bbf0d444eb7bea2807ee664f1241”: “Abstain”, “keyHash-cf09b59e134fa14e48da39b552c02299a054d7c8b895b3d827453672”: “VoteNo” }, “deposit”: 1000000000, “expiresAfter”: 34, “proposedIn”: 33, “returnAddr”: { “credential”: { “keyHash”: “8e0debc9fdc6c616ac40d98bf3950b436895eea9cccf0396a6e5e12b” }, “network”: “Testnet” }, “stakePoolVotes”: {} }

Vote sur les actions de gouvernance

Pré-requis

  • Paire de clés de paiement
  • Adresse avec fonds
  • Clés de pool CC chaudes, DRep OU mises
  • Un nœud SanchoNet

Pour voter sur les actions de gouvernance, suivez ce processus :

  1. Obtenez l’ID d’action d’une action de gouvernance en cours depuis Discord ou interrogez l’état de gouvernance.
  2. Déterminez votre position de vote ; engager une discussion si nécessaire
  3. Construisez votre fichier de vote via la CLI Cardano. L’exemple ci-dessous montre le vote --yes, bien que les options pour --no ou --abstain soient également disponibles.

Vérifier le contenu de l’action de gouvernance

Supposons que nous ayons reçu l’ID d’action df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79#0 pour une nouvelle proposition de constitution.

  1. Obtenez l’URL et le hachage de la nouvelle proposition de constitution auprès de l’État de gouvernance :

cardano-cli conway query gov-state --testnet-magic 4 | \ jq -r --arg govActionId “df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79” ‘.proposals | to_entries | select(.value.actionId.txId | contains($govActionId)) | .value’

Expliquer { “action”: { “contents”: [ null, { “anchor”: { “dataHash”: “5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d”, “url”: “https://tinyurl.com/mr3ferf9” } } ], “tag”: “NewConstitution” }, “actionId”: { “govActionIx”: 0, “txId”: “df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79” }, “committeeVotes”: { “keyHash-c8ac605b25d6084c2ceb28043c8f01b62629966d038a249c7847d66d”: “VoteYes”, “keyHash-d13507f7e7fb8ac3ce2094187c9d99d4601021e9ef5a5f310567765d”: “VoteYes” }, “dRepVotes”: { “keyHash-16faaf6daa2635bbf53bbbaf38b3a6040adf7ced2f7f08952592cf5b”: “VoteYes”, “keyHash-57cb90cfb635e76af648abf1b6a91519218a5919b3cba2527e3725d1”: “VoteYes”, “keyHash-7d84808d563f0f258ad7e4337c2c4bd13010930ebdf7b86c3bfd9ef8”: “VoteYes” }, “deposit”: 0, “expiresAfter”: 80, “proposedIn”: 78, “returnAddr”: { “credential”: { “keyHash”: “f925cbd4eb78aad49ec7bf9b4ddfa4cc4486c967e392699d143c81aa” }, “network”: “Testnet” }, “stakePoolVotes”: {} }

  1. Téléchargez le fichier à partir de l’URL enregistrée sur l’état du grand livre :

wget https://tinyurl.com/mr3ferf9 -O constitution.txt

  1. Vérifiez que le hachage du fichier correspond à l’dataHashde l’état du grand livre :

b2sum -l 256 constitution.txt 5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d constitution.txt

Tout est en ordre; le texte de l’URL correspond au dataHash, confirmant que le texte de l’URL correspond précisément à ce pour quoi nous votons.

À l’avenir, les applications de vote, les explorateurs, les portefeuilles et d’autres outils pourraient effectuer le filtrage, garantissant qu’ils affichent uniquement les actions dont le contenu de l’URL a été vérifié par rapport au hachage de l’état du grand livre.

Créer le fichier de vote

  1. Votez avec les clés DRep :

Expliquer cardano-cli conway governance vote create \ –yes \ –governance-action-tx-id “df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79” \ –governance-action-index “0” \ –drep-verification-key-file drep.vkey \ –out-file df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79-constitution.vote

  1. Votez avec les touches de raccourci CC :

Expliquer cardano-cli conway governance vote create \ –yes \ –governance-action-tx-id “df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79” \ –governance-action-index “0” \ –cc-hot-verification-key-file cc-hot.vkey \ –out-file df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79-constitution.vote

  1. Votez avec les clés SPO :

Expliquer cardano-cli conway governance vote create \ –yes \ –governance-action-tx-id “df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79” \ –governance-action-index “0” \ –cold-verification-key-file cold.vkey \ –out-file df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79-constitution.vote

Inclure le vote dans une transaction

  • Construisez la transaction :

Expliquer cardano-cli conway transaction build --testnet-magic 4 \ –tx-in “$(cardano-cli query utxo --address $(cat payment.addr) --testnet-magic 4 --out-file /dev/stdout | jq -r ‘keys[0]’)” \ –change-address $(cat payment.addr) \ –vote-file df58f714c0765f3489afb6909384a16c31d600695be7e86ff9c59cf2e8a48c79-constitution.vote \ –witness-override 2 \ –out-file vote-tx.raw

  • Signez-le avec la clé DRep :

Expliquer cardano-cli transaction sign --tx-body-file vote-tx.raw \ –signing-key-file drep.skey \ –signing-key-file payment.skey \ –testnet-magic 4 \ –out-file vote-tx.signed

  • OU signez-le avec la touche de raccourci CC :

Expliquer cardano-cli transaction sign --tx-body-file vote-tx.raw \ –signing-key-file cc-hot.skey \ –signing-key-file payment.skey \ –testnet-magic 4 \ –out-file vote-tx.signed

  • OU signez-le avec la touche froide SPO :

Expliquer cardano-cli transaction sign --tx-body-file vote-tx.raw \ –signing-key-file cold.skey \ –signing-key-file payment.skey \ –testnet-magic 4 \ –out-file vote-tx.signed

  • Soumettez la transaction :

cardano-cli transaction submit --testnet-magic 4 --tx-file vote-tx.signed

Filtres jq utiles

jq est comme sed pour les données JSON : vous pouvez l’utiliser pour découper, filtrer, mapper et transformer données structurées avec la même facilité que sed, awk, grep et Friends vous permettent de jouer avec le texte.

Installer jq.

Vous trouverez ci-dessous quelques filtres jq utiles pour analyser l’état de gouvernance.

Afficher les actions de gouvernance qui expireront à la fin de l’époque actuelle :

current_epoch=$(cardano-cli query tip --testnet-magic 4 | jq .epoch)

Expliquer cardano-cli conway query gov-state --testnet-magic 4 \ | jq --argjson epoch “$current_epoch” ‘.proposals | to_entries | select(.value.expiresAfter == $epoch)’

Afficher les actions de gouvernance proposées à l’époque actuelle :

current_epoch=$(cardano-cli query tip --testnet-magic 4 | jq .epoch)

Expliquer cardano-cli conway query gov-state --testnet-magic 4 \ | jq -r --argjson epoch “$current_epoch” ‘.proposals | to_entries | select(.value.proposedIn == $epoch)’

Trier les actions de gouvernance en fonction du nombre de votes DRep :

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r ’ .proposals | to_entries | {govActionId: .key, type: .value.action.tag, drepVoteCount: (.value.dRepVotes | keys | length)} ’ | jq -s ‘sort_by(.voteCount) | reverse

Trier par nombre de votes SPO :

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r ’ .proposals | to_entries | {govActionId: .key, type: .value.action.tag, spoVoteCount: (.value.stakePoolVotes | keys | length)} ’ | jq -s ‘sort_by(.voteCount) | reverse

Trier par nombre de votes CC :

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r ’ .proposals | to_entries | {govActionId: .key, ccVoteCount: (.value.committeeVotes | keys | length)} ’ | jq -s ‘sort_by(.voteCount) | reverse

Filtrer les actions qui expirent au cours de l’époque actuelle et des deux époques suivantes, y compris les informations sur tous les rôles & #39; votes, triés par époque d’expiration :

current_epoch=$(cardano-cli query tip --testnet-magic 4 | jq .epoch)

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r --argjson current_epoch “$current_epoch” ’ .proposals | to_entries | select(.value.expiresAfter >= ($current_epoch | tonumber) and .value.expiresAfter <= ($current_epoch + 2)) | { govActionId: .key, type: .value.action.tag, expiresAfter: .value.expiresAfter, committeeVotesCount: (.value.committeeVotes | length), dRepVotesCount: (.value.dRepVotes | length), stakePoolVotesCount: (.value.stakePoolVotes | length) } ’ | jq -s ‘sort_by(.expiresAfter)’

Afficher les actions pour lesquelles une clé DRep spécifique a voté, en indiquant le vote du DRep et le nombre total de votes reçus pour cette action :

Remplacez 058b60ead63f667c0ff5b40e269dd1f05ce3a804256735ad4eddce20 par l’ID DRep hexadécimal qui vous intéresse.

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r --arg dRepKey “keyHash-058b60ead63f667c0ff5b40e269dd1f05ce3a804256735ad4eddce20” ’ .proposals | to_entries | select(.value.dRepVotes[$dRepKey] != null) | { govActionId: .key, type: .value.action.tag, dRepVote: .value.dRepVotes[$dRepKey], expiresAfter: .value.expiresAfter, committeeVotesCount: (.value.committeeVotes | length), dRepVotesCount: (.value.dRepVotes | length), stakePoolVotesCount: (.value.stakePoolVotes | length) } ’

Afficher les actions pour lesquelles la clé DRep donnée n’a pas encore voté :

Remplacez 058b60ead63f667c0ff5b40e269dd1f05ce3a804256735ad4eddce20 par l’ID DRep hexadécimal qui vous intéresse.

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r --arg dRepKey “keyHash-058b60ead63f667c0ff5b40e269dd1f05ce3a804256735ad4eddce20” ’ .proposals | to_entries | select(.value.dRepVotes[$dRepKey] == null) | { govActionId: .key, type: .value.action.tag, expiresAfter: .value.expiresAfter, committeeVotesCount: (.value.committeeVotes | length), dRepVotesCount: (.value.dRepVotes | length), stakePoolVotesCount: (.value.stakePoolVotes | length) } ’

Afficher le nombre total de « oui », « non » et « s’abstenir » vote pour un ID d’action de gouvernance donné :

Remplacez cf2dce795cef4f8e92f0ab062a5dae0c1f7d8891d943ced9c2eeda9a62d8f092#0 par l’ID d’action de gouvernance qui vous intéresse.

Expliquer cardano-cli conway query gov-state --testnet-magic 4 | jq -r --arg actionId “cf2dce795cef4f8e92f0ab062a5dae0c1f7d8891d943ced9c2eeda9a62d8f092#0” ’ .proposals | to_entries | select(.key == $actionId) | { govActionId: .key, dRepVoteYesCount: (.value.dRepVotes | with_entries(select(.value == “VoteYes”)) | length), dRepVoteNoCount: (.value.dRepVotes | with_entries(select(.value == “VoteNo”)) | length), dRepAbstainCount: (.value.dRepVotes | with_entries(select(.value == “Abstain”)) | length), stakePoolVoteYesCount: (.value.stakePoolVotes | with_entries(select(.value == “VoteYes”)) | length), stakePoolVoteNoCount: (.value.stakePoolVotes | with_entries(select(.value == “VoteNo”)) | length), stakePoolAbstainCount: (.value.stakePoolVotes | with_entries(select(.value == “Abstain”)) | length), committeeVoteYesCount: (.value.committeeVotes | with_entries(select(.value == “VoteYes”)) | length), committeeVoteNoCount: (.value.committeeVotes | with_entries(select(.value == “VoteNo”)) | length), committeeAbstainCount: (.value.committeeVotes | with_entries(select(.value == “Abstain”)) | length) } ’

Afficher les treasury withdrawal actions de gouvernance actives et leur nombre de votes actuel :

Expliquer current_epoch=$(cardano-cli query tip --testnet-magic 4 | jq .epoch) cardano-cli conway query gov-state --testnet-magic 4 | jq -r --arg currentEpoch “$current_epoch” ’ .proposals | to_entries | select(.value.expiresAfter > ($currentEpoch | tonumber) and .value.action.tag == “TreasuryWithdrawals”) | { govActionId: .key, type: .value.action.tag, expiresAfter: .value.expiresAfter, dRepVoteYesCount: (.value.dRepVotes | with_entries(select(.value == “VoteYes”)) | length), dRepVoteNoCount: (.value.dRepVotes | with_entries(select(.value == “VoteNo”)) | length), dRepAbstainCount: (.value.dRepVotes | with_entries(select(.value == “Abstain”)) | length), committeeVoteYesCount: (.value.committeeVotes | with_entries(select(.value == “VoteYes”)) | length), committeeVoteNoCount: (.value.committeeVotes | with_entries(select(.value == “VoteNo”)) | length), committeeAbstainCount: (.value.committeeVotes | with_entries(select(.value == “Abstain”)) | length) } ’ | jq -s ‘sort_by(.expiresAfter)’

Afficher les update committee actions de gouvernance actives et leur nombre de votes actuel :

Expliquer current_epoch=$(cardano-cli query tip --testnet-magic 4 | jq .epoch) cardano-cli conway query gov-state --testnet-magic 4 | jq -r --arg currentEpoch “$current_epoch” ’ .proposals | to_entries | select(.value.expiresAfter > ($currentEpoch | tonumber) and .value.action.tag == “UpdateCommittee”) | { govActionId: .key, type: .value.action.tag, expiresAfter: .value.expiresAfter, dRepVoteYesCount: (.value.dRepVotes | with_entries(select(.value == “VoteYes”)) | length), dRepVoteNoCount: (.value.dRepVotes | with_entries(select(.value == “VoteNo”)) | length), dRepAbstainCount: (.value.dRepVotes | with_entries(select(.value == “Abstain”)) | length), stakePoolVoteYesCount: (.value.stakePoolVotes | with_entries(select(.value == “VoteYes”)) | length), stakePoolVoteNoCount: (.value.stakePoolVotes | with_entries(select(.value == “VoteNo”)) | length), stakePoolAbstainCount: (.value.stakePoolVotes | with_entries(select(.value == “Abstain”)) | length) } ’ | jq -s ‘sort_by(.expiresAfter)’

Requêtes CLI utiles

Interroger la constitution :

Expliquer cardano-cli conway query constitution --testnet-magic 4 { “anchor”: { “dataHash”: “5d372dca1a4cc90d7d16d966c48270e33e3aa0abcb0e78f0d5ca7ff330d2245d”, “url”: “https://tinyurl.com/4xdkkjm3” } }

Interrogez l’état DRep pour tous les DRep :

Expliquer cardano-cli conway query drep-state --testnet-magic 4 [ [ { “keyHash”: “1da9afe241a10fe5ee9590843134d0eebd4a32af448c9ec91db2e863” }, { “anchor”: null, “deposit”: 2000000, “expiry”: 177 } ], [ { “keyHash”: “480036de36a123e98663370e4829ebd43aa9bb06ec4b6b25f3e178db” }, { “anchor”: null, “deposit”: 2000000, “expiry”: 176 } ], [ { “keyHash”: “5b440956e056c96c74d4820b39b4f91cc45bb2b46024c96a594bb2ed” }, { “anchor”: null, “deposit”: 2000000, “expiry”: 176 } ] ]

Interroger l’état DRep pour un DRep individuel :

Expliquer cardano-cli conway query drep-state --drep-key-hash 1da9afe241a10fe5ee9590843134d0eebd4a32af448c9ec91db2e863 --testnet-magic 4 [ [ { “keyHash”: “1da9afe241a10fe5ee9590843134d0eebd4a32af448c9ec91db2e863” }, { “anchor”: null, “deposit”: 2000000, “expiry”: 188 } ] ]

Interrogez la répartition des parts du DRep (pouvoir de vote) :

Expliquer cardano-cli conway query drep-stake-distribution --testnet-magic 4 [ [ “drep-keyHash-13797df5308dfebf2348fa58b312a177cf97939f5f7d21168e1a54db”, 500000000000 ], [ “drep-keyHash-9853551d8b99884f51608822e012bbf0d444eb7bea2807ee664f1241”, 495790521257 ], [ “drep-keyHash-cf09b59e134fa14e48da39b552c02299a054d7c8b895b3d827453672”, 500000000000 ] ]

Interroger l’état du comité :

Expliquer cardano-cli conway query committee-state --testnet-magic 4 { “committee”: { “keyHash-5e86313210aef13297187c38c98abb632678906230f555a1bf0a647a”: { “expiration”: 161, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “e394a160b9f1345b7b84cd25f0a3f1d12cb0c9835a4167f7dc5b52ca” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” }, “keyHash-8be41436ce39ca3c2f3e4255e17fc6c11581ef6787bccf9ab60f39dd”: { “expiration”: 181, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “e6442af170fabe877ba6b23136ffb32026e9ed927158ecdda2ef0e18” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” }, “keyHash-da9f5c5c94a6709a9188838ce8cd7fe1c39a1923de4933c16d67c1e0”: { “expiration”: 201, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “f380b5c4f245f9987645023e39b487e11a7d2337aea91dde628d04ed” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” } }, “epoch”: 86, “quorum”: 0.6666666666666666666 }

Interroger l’état du hachage de clé d’un comité individuel :

Expliquer cardano-cli conway query committee-state --cold-verification-key-hash da9f5c5c94a6709a9188838ce8cd7fe1c39a1923de4933c16d67c1e0 --testnet-magic 4 { “committee”: { “keyHash-da9f5c5c94a6709a9188838ce8cd7fe1c39a1923de4933c16d67c1e0”: { “expiration”: 201, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “f380b5c4f245f9987645023e39b487e11a7d2337aea91dde628d04ed” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” } }, “epoch”: 89, “quorum”: 0.6666666666666666666 }

Interroger les membres du comité expirés

Expliquer cardano-cli conway query committee-state --expired --testnet-magic 4 { “committee”: { “keyHash-059349cd1e77dc3e500d3ffc498adb7307001ecc022c8b083faaa48b”: { “expiration”: 161, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “23e05ad2b71317a6348ce4b68dae37aa1c0e545cdea740b23c21742e” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Expired” } }, “epoch”: 169, “quorum”: 0.6 }

Rechercher les membres actifs du comité

Expliquer cardano-cli conway query committee-state --active --testnet-magic 4 { “committee”: { “keyHash-059349cd1e77dc3e500d3ffc498adb7307001ecc022c8b083faaa48b”: { “expiration”: 161, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “23e05ad2b71317a6348ce4b68dae37aa1c0e545cdea740b23c21742e” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” }, “keyHash-337e0a7fd01c7a7c27e8bac17e40db182bc2a774467795af1e3fe8a9”: { “expiration”: 201, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “540bedcd4bdcbf523e899c3ef43f2b96ecec4f6303af58d15a413ed1” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” }, “keyHash-9c2aabae5d9187a76ed6b04b40e91ecb4ce3171611c3fd4ec6c6a607”: { “expiration”: 181, “hotCredsAuthStatus”: { “contents”: { “keyHash”: “6c1d098a366f2274651943a7f778b3b5459c129f0407a0db2902253a” }, “tag”: “MemberAuthorized” }, “nextEpochChange”: “NoChangeExpected”, “status”: “Active” } }, “epoch”: 105, “quorum”: 0.6 }

Interroger les clés de comité non reconnues

Expliquer cardano-cli conway query committee-state --unrecognized --testnet-magic 42 { “committee”: {}, “epoch”: 106, “quorum”: 0.6 }

Ressources : https://sancho.network/tutorials/drep-registration

1 Like