تخطَّ إلى المحتوى الرئيسي
iCute Financeالأصول الرقمية · مراقبة السوق
العربية
دليل الأبحاث
iCute Finance

التنقل الرئيسي

التنقل الرئيسي

الأصول الرقمية · مراقبة السوق

ما هو INIT_CODE_HASH وكيف يتم حسابه / استخدامه في العقود الذكية للتمويل اللامركزي

تجزئة كود التهيئة هي أساسًا تجزئة keccak256 للبايت كود الخاص بالعقد. استخدام كود التهيئة

تجزئة كود التهيئة مطلوبة "نظرًا لأن حساب العنوان يعتمد على تجزئة كود التهيئة. كود التهيئة هو الكود الذي، عند تنفيذه، ينتج البايت كود وقت التشغيل الذي سيتم وضعه في الحالة، والذي يُستخدم عادةً بواسطة اللغات عالية المستوى لتنفيذ 'المُنشئ'." "EIP-1014: Skinny CREATE2," Ethereum Improvement Proposals, no. 1014, April 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1014.

استخدام كود التهيئة الاستخدام الأساسي لكود التهيئة هو لتعدين العناوين. يمكنك الاطلاع على https://github.com/0age/create2crunch للحصول على مثال لكيفية استفادتنا من CREATE2 وكود تهيئة العقد 'لتعدين' عناوين أكثر كفاءة لنشر العقود. إليك نص bash بسيط يستخدم forge لإنشاء تجزئة كود التهيئة لك:

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