ወደ ዋና ይዘት ዝለል
iCute Financeዲጂታል ንብረቶች · የገበያ ምልከታ
አማርኛ
የምርምር ማውጫ
iCute Finance

ዋና አሰሳ

ዋና አሰሳ

ዲጂታል ንብረቶች · የገበያ ምልከታ

INIT_CODE_HASH ምንድነው እና በDeFi ስማርት ኮንትራክቶች ውስጥ እንዴት ይሰላል / ጥቅም ላይ ይውላል

የ Init code hash በመሠረቱ የኮንትራቶች ባይትኮድ keccak256 ሃሽ ነው። የ Init Code አጠቃቀም

Init code hash ያስፈልጋል "የአድራሻ ስሌት የ init code ሃሽን ስለሚወስን። Init code የሚፈጽምበት ጊዜ ወደ state የሚገባውን runtime bytecode የሚያመነጭ ኮድ ነው፣ እናም በተለምዶ በከፍተኛ ደረጃ ቋንቋዎች 'constructor' ለመተግበር ያገለግላል።" "EIP-1014: Skinny CREATE2," Ethereum Improvement Proposals, no. 1014, April 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1014.

የ Init Code አጠቃቀም የ init code ዋና አጠቃቀም አድራሻዎችን ለማግኘት ነው። CREATE2 እና የኮንትራት init code እንዴት ተጠቅመን ለኮንትራት ማሰማራት የበለጠ ቀልጣፋ አድራሻዎችን 'ማግኘት' እንደምንችል ምሳሌ ለማየት https://github.com/0age/create2crunch ይመልከቱ። የኮድ init hash ለእርስዎ ለማመንጨት 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: የ init ኮድ ሃሽን ወደ ፋይል ይጻፉ OUTPUT_FILE="${CONTRACT_NAME}_INIT_CODE_HASH.txt" echo "$INIT_CODE_HASH" > "$OUTPUT_FILE" || exit_on_error "የ init ኮድ ሃሽን ወደ ፋይል መጻፍ አልተሳካም።"

echo "የ init ኮድ ሃሽ ወደ $OUTPUT_FILE ተጽፏል" if $VERBOSE; then echo "Init ኮድ: $INIT_CODE" echo "የ init ኮድ ሃሽ: $INIT_CODE_HASH" fi

cd - > /dev/null || exit

ምንጭ ተመልከት CC BY-SA 4.0