Init code hash shine ainihin keccak256 hash na bytecode ɗin kwangilar. Amfani da Init Code
Ana buƙatar init code hash "Tunda lissafin adireshi ya dogara da hashing init code. Init code shine lambar da, idan an aiwatar da ita, tana samar da runtime bytecode wanda za'a sanya cikin jihar, kuma wanda yawanci manyan harsuna ke amfani da shi don aiwatar da 'constructor'." "EIP-1014: Skinny CREATE2," Shawarwarin Inganta Ethereum, no. 1014, Afrilu 2018. [Kan layi serial]. Akwai a: https://eips.ethereum.org/EIPS/eip-1014.
Amfani da Init Code Babban amfani da init code shine don haƙo adireshi. Kuna iya duba https://github.com/0age/create2crunch don misalin yadda za mu iya amfani da CREATE2 da init code na kwangila don 'haƙo' adireshi mafi inganci don turawa kwangila. Ga wani sauƙi bash script wanda ke amfani da forge don samar muku da code init hash:
https://github.com/sambacha/foundry-scripts/tree/master/scripts/deploy
Script #!/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."# Mataki na 4: Rubuta hash ɗin init code zuwa fayil OUTPUT_FILE="${CONTRACT_NAME}_INIT_CODE_HASH.txt" echo "$INIT_CODE_HASH" > "$OUTPUT_FILE" || exit_on_error "An kasa rubuta hash ɗin init code zuwa fayil."
echo "An rubuta hash ɗin init code zuwa $OUTPUT_FILE" if $VERBOSE; then echo "Init code: $INIT_CODE" echo "Init code hash: $INIT_CODE_HASH" fi
cd - > /dev/null || exit
Duba madogara CC BY-SA 4.0