ఇనిట్ కోడ్ హాష్ అనేది ప్రాథమికంగా కాంట్రాక్ట్ బైట్కోడ్ యొక్క keccak256 హాష్. ఇనిట్ కోడ్ యొక్క ఉపయోగం
ఇనిట్ కోడ్ హాష్ అవసరం "ఎందుకంటే చిరునామా గణన ఇనిట్ కోడ్ను హాష్ చేయడంపై ఆధారపడి ఉంటుంది. ఇనిట్ కోడ్ అనేది అమలు చేయబడినప్పుడు, స్టేట్లో ఉంచబడే రన్టైమ్ బైట్కోడ్ను ఉత్పత్తి చేసే కోడ్, మరియు ఇది సాధారణంగా హై లెవల్ లాంగ్వేజ్లు 'కన్స్ట్రక్టర్'ను అమలు చేయడానికి ఉపయోగిస్తారు." "EIP-1014: Skinny CREATE2," Ethereum Improvement Proposals, no. 1014, April 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1014.
ఇనిట్ కోడ్ యొక్క ఉపయోగం ఇనిట్ కోడ్ యొక్క ప్రధాన ఉపయోగం చిరునామాలను మైనింగ్ చేయడం. కాంట్రాక్ట్ డిప్లాయ్మెంట్ కోసం మరింత సమర్థవంతమైన చిరునామాలను 'మైన్' చేయడానికి మనం CREATE2 మరియు కాంట్రాక్ట్ యొక్క ఇనిట్ కోడ్ను ఎలా ఉపయోగించవచ్చో ఒక ఉదాహరణ కోసం https://github.com/0age/create2crunch చూడవచ్చు. మీ కోసం కోడ్ ఇనిట్ హాష్ను రూపొందించడానికి forgeని ఉపయోగించే ఒక సాధారణ bash స్క్రిప్ట్ ఇక్కడ ఉంది:
https://github.com/sambacha/foundry-scripts/tree/master/scripts/deploy
స్క్రిప్ట్ #!/usr/bin/env bash
exit_on_error() { echo "Error: $1" exit 1 }
usage() { echo "Usage: $0 <contract_path> <contract_name> [-v]" echo " <contract_path> : Path to the Solidity contract file" echo " <contract_name> : Name of the Solidity contract" echo " -v : Enable verbose output (optional)" exit 1 }
if ! command -v forge &> /dev/null; then exit_on_error "Foundry is not installed. Please install it first." fi
if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then usage fi
CONTRACT_PATH=$1 CONTRACT_NAME=$2 VERBOSE=false
if [ "$#" -eq 3 ] && [ "$3" == "-v" ]; then VERBOSE=true fi
if [ ! -f "$CONTRACT_PATH" ]; then exit_on_error "Contract path '$CONTRACT_PATH' does not exist or is not a file." fi
CONTRACT_DIR=$(dirname "$CONTRACT_PATH")
CONTRACT_FILE=$(basename "$CONTRACT_PATH")
cd "$CONTRACT_DIR" || exit_on_error "Failed to change directory to '$CONTRACT_DIR'."
echo "Compiling the contract..." if $VERBOSE; then forge build --contracts . || exit_on_error "Failed to compile the contract." else forge build --contracts . > /dev/null 2>&1 || exit_on_error "Failed to compile the contract." fi
echo "Generating init code..." INIT_CODE=$(forge inspect "$CONTRACT_NAME" bytecode) || exit_on_error "Failed to generate init code."
echo "Calculating init code hash..." INIT_CODE_HASH=$(echo -n "$INIT_CODE" | keccak-256sum | cut -d' ' -f1) || exit_on_error "Failed to calculate init code hash."# దశ 4: ఇనిట్ కోడ్ హాష్ను ఫైల్కు రాయండి OUTPUT_FILE="${CONTRACT_NAME}_INIT_CODE_HASH.txt" echo "$INIT_CODE_HASH" > "$OUTPUT_FILE" || exit_on_error "ఇనిట్ కోడ్ హాష్ను ఫైల్కు రాయడంలో విఫలమైంది."
echo "ఇనిట్ కోడ్ హాష్ $OUTPUT_FILE కు రాయబడింది" if $VERBOSE; then echo "ఇనిట్ కోడ్: $INIT_CODE" echo "ఇనిట్ కోడ్ హాష్: $INIT_CODE_HASH" fi
cd - > /dev/null || exit
మూలాన్ని వీక్షించండి CC BY-SA 4.0