Aller au contenu principal
iCute FinanceACTIFS NUMÉRIQUES · OBSERVATION DU MARCHÉ
Français
Répertoire de recherche
iCute Finance

Navigation principale

Navigation principale

ACTIFS NUMÉRIQUES · OBSERVATION DU MARCHÉ

Qu'est-ce que INIT_CODE_HASH et comment est-il calculé/utilisé dans les contrats intelligents DeFi

Le hachage du code d'initialisation est essentiellement le hachage keccak256 du bytecode des contrats. Utilisation du code d'initialisation

Le hachage du code d'initialisation est nécessaire "Puisque le calcul de l'adresse dépend du hachage le code d'initialisation. Le code d'initialisation est le code qui, une fois exécuté, produit le bytecode d'exécution qui sera placé dans l'état et qui est généralement utilisé par les langages de haut niveau pour implémenter un « constructeur ». «EIP-1014 : Skinny CREATE2», Propositions d'amélioration d'Ethereum, no. 1014, avril 2018. [Série en ligne]. Disponible : https://eips.ethereum.org/EIPS/eip-1014.

Utilisation du code d'initialisation L'utilisation principale du code d'initialisation concerne l'exploration d'adresses. Vous pouvez consulter https://github.com/0age/create2crunch pour un exemple de la façon dont nous pouvons exploiter CREATE2 et le code d'initialisation d'un contrat pour « exploiter » des adresses plus efficaces pour le déploiement du contrat. Voici un simple script bash qui utilise forge pour générer le hachage d'initialisation du code pour vous :

https://github.com/sambacha/foundry-scripts/tree/master/scripts/deploy

Scénario #!/usr/bin/env bash

exit_on_error() { echo "Erreur : $1" sortie 1 }

utilisation() { echo "Utilisation : $0 <chemin_contrat> <nom_contrat> [-v]" echo " <contract_path> : Chemin d'accès au fichier du contrat Solidity" echo " <contract_name> : Nom du contrat Solidity" echo " -v : Activer la sortie détaillée (facultatif)" sortie 1 }

si ! commande -v forge &> /dev/null; alors exit_on_error "Foundry n'est pas installé. Veuillez d'abord l'installer." fi

si [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; alors utilisation fi

CONTRACT_PATH=1 $ CONTRACT_NAME=2$ VERBEUX = faux

if [ "$#" -eq 3 ] && [ "$3" == "-v" ]; alors VERBOSE = vrai fi

si [ ! -f "$CONTRACT_PATH" ]; alors exit_on_error "Le chemin du contrat '$CONTRACT_PATH' n'existe pas ou n'est pas un fichier." fi

CONTRACT_DIR=$(répertoire "$CONTRACT_PATH")

CONTRACT_FILE=$(nom de base "$CONTRACT_PATH")

cd "$CONTRACT_DIR" || exit_on_error "Échec du changement de répertoire vers '$CONTRACT_DIR'."

echo "Compilation du contrat..." si $VERBOSE ; alors forger la construction --contracts . || exit_on_error "Échec de la compilation du contrat." sinon forger la construction --contracts . > /dev/null 2>&1 || exit_on_error "Échec de la compilation du contrat." fi

echo "Génération du code d'initialisation..." INIT_CODE=$(forge inspecte le bytecode "$CONTRACT_NAME") || exit_on_error "Échec de la génération du code d'initialisation."

echo "Calcul du hachage du code d'initialisation..." INIT_CODE_HASH=$(echo -n "$INIT_CODE" | keccak-256sum | cut -d' ' -f1) || exit_on_error "Échec du calcul du hachage du code d'initialisation."

OUTPUT_FILE="${CONTRACT_NAME}_INIT_CODE_HASH.txt" écho "$INIT_CODE_HASH" > "$OUTPUT_FILE" || exit_on_error "Échec de l'écriture du hachage du code d'initialisation dans le fichier."

echo "Le hachage du code d'initialisation a été écrit dans $OUTPUT_FILE" si $VERBOSE ; alors echo "Code d'initialisation : $INIT_CODE" echo "Hash du code d'initialisation : $INIT_CODE_HASH" fi

cd -> /dev/null || sortie

Voir la source CC BY-SA 4.0