ਮੁੱਖ ਸਮੱਗਰੀ 'ਤੇ ਜਾਓ
iCute Financeਡਿਜੀਟਲ ਸੰਪਤੀਆਂ · ਬਾਜ਼ਾਰ ਨਿਰੀਖਣ
ਪੰਜਾਬੀ
ਖੋਜ ਡਾਇਰੈਕਟਰੀ
iCute Finance

ਮੁੱਖ ਨੈਵੀਗੇਸ਼ਨ

ਮੁੱਖ ਨੈਵੀਗੇਸ਼ਨ

ਡਿਜੀਟਲ ਸੰਪਤੀਆਂ · ਬਾਜ਼ਾਰ ਨਿਰੀਖਣ

INIT_CODE_HASH ਕੀ ਹੈ ਅਤੇ ਇਹ DeFi ਸਮਾਰਟ ਕੰਟਰੈਕਟਾਂ ਵਿੱਚ ਕਿਵੇਂ ਗਿਣਿਆ ਜਾਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ

Init code hash ਮੂਲ ਰੂਪ ਵਿੱਚ ਕੰਟਰੈਕਟ ਦੇ ਬਾਈਟਕੋਡ ਦਾ keccak256 ਹੈਸ਼ ਹੁੰਦਾ ਹੈ। Init Code ਦੀ ਵਰਤੋਂ

Init code hash ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ "ਕਿਉਂਕਿ ਐਡਰੈੱਸ ਗਣਨਾ init code ਨੂੰ ਹੈਸ਼ ਕਰਨ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। Init code ਉਹ ਕੋਡ ਹੁੰਦਾ ਹੈ ਜੋ, ਐਗਜ਼ੀਕਿਊਟ ਹੋਣ 'ਤੇ, ਉਹ ਰਨਟਾਈਮ ਬਾਈਟਕੋਡ ਪੈਦਾ ਕਰਦਾ ਹੈ ਜੋ ਸਟੇਟ ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਅਤੇ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਹਾਈ ਲੈਵਲ ਭਾਸ਼ਾਵਾਂ ਦੁਆਰਾ 'ਕੰਸਟ੍ਰਕਟਰ' ਲਾਗੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।" "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 ਦੀ ਮੁੱਖ ਵਰਤੋਂ ਐਡਰੈੱਸ ਮਾਈਨਿੰਗ ਲਈ ਹੈ। ਤੁਸੀਂ https://github.com/0age/create2crunch ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਅਸੀਂ CREATE2 ਅਤੇ ਇੱਕ ਕੰਟਰੈਕਟ ਦੇ init code ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਕੰਟਰੈਕਟ ਡਿਪਲੌਇਮੈਂਟ ਲਈ ਵਧੇਰੇ ਕੁਸ਼ਲ ਐਡਰੈੱਸ 'ਮਾਈਨ' ਕੀਤੇ ਜਾ ਸਕਣ। ਇੱਥੇ ਇੱਕ ਸਧਾਰਨ bash ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਤੁਹਾਡੇ ਲਈ forge ਦੀ ਵਰਤੋਂ ਕਰਕੇ 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."# ਕਦਮ 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