질문과 답변

INIT_CODE_HASH는 무엇이며 DeFi 스마트 계약에서 어떻게 계산/사용됩니까?

텍스트 크기
초기화 코드 해시는 기본적으로 계약 바이트코드의 keccak256 해시입니다. 초기화 코드의 사용 초기화 코드 해시가 필요합니다 "주소 계산이 해싱에 따라 다르기 때문에 초기화 코드. 초기화 코드는 실행될 때 다음을 생성하는 코드입니다. 상태에 배치될 런타임 바이트코드 일반적으로 고급 언어에서 '건축자'. "EIP-1014: Skinny CREATE2," 이더리움 개선 제안, no. 1014, 2018년 4월. [온라인 연재물]. 사용 가능: 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 "오류: $1" 1번 출구 } # 사용정보를 표시하는 기능 사용법() { echo "사용법: $0 <계약_경로> <계약_이름> [-v]" echo " : Solidity 계약 파일의 경로" echo " : Solidity 계약의 이름" echo " -v : 자세한 출력 활성화(선택 사항)" 1번 출구 } # Foundry가 설치되어 있는지 확인 만약에! 명령 -v forge &> /dev/null; 그럼 exit_on_error "Foundry가 설치되지 않았습니다. 먼저 설치해 주세요." fi # 올바른 개수의 인수가 제공되었는지 확인 if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; 그럼 사용법 fi # 인수의 변수 CONTRACT_PATH=$1 CONTRACT_NAME=$2 자세한 내용=거짓 # 상세 옵션이 활성화되어 있는지 확인 if [ "$#" -eq 3 ] && [ "$3" == "-v" ]; 그럼 자세한 내용=참 fi # 계약 경로 검증 만일 [ ! -f "$CONTRACT_PATH" ]; 그럼 exit_on_error "계약 경로 '$CONTRACT_PATH'가 존재하지 않거나 파일이 아닙니다." fi # 계약 경로의 디렉터리를 가져옵니다. CONTRACT_DIR=$(디렉터리 이름 "$CONTRACT_PATH") # 쉘체크 비활성화=SC2034 CONTRACT_FILE=$(기본 이름 "$CONTRACT_PATH") # 계약 디렉토리로 변경 cd "$CONTRACT_DIR" || exit_on_error "디렉터리를 '$CONTRACT_DIR'로 변경하지 못했습니다." # 1단계: 계약서 컴파일 echo "계약서를 작성하는 중..." $VERBOSE인 경우; 그럼 forge build --contracts . || exit_on_error "계약서를 컴파일하지 못했습니다." 그렇지 않으면 forge build --contracts . > /dev/null 2>&1 || exit_on_error "계약서를 컴파일하지 못했습니다." fi # 2단계: 초기화 코드 생성 echo "초기 코드 생성 중..." INIT_CODE=$("$CONTRACT_NAME" 바이트코드를 단조로 검사) || exit_on_error "초기화 코드 생성에 실패했습니다." # 3단계: 초기화 코드 해시 계산 echo "초기 코드 해시 계산 중..." INIT_CODE_HASH=$(echo -n "$INIT_CODE" | keccak-256sum | cut -d' ' -f1) || exit_on_error "초기 코드 해시 계산에 실패했습니다." # 4단계: 초기화 코드 해시를 파일에 쓰기 OUTPUT_FILE="${CONTRACT_NAME}_INIT_CODE_HASH.txt" echo "$INIT_CODE_HASH" > "$OUTPUT_FILE" || exit_on_error "초기 코드 해시를 파일에 쓰지 못했습니다." # 임시 파일 정리(있는 경우) # (정리할 임시 파일이 있으면 여기에 명령을 추가하세요) # 5단계: 결과 출력 echo "초기 코드 해시가 $OUTPUT_FILE에 기록되었습니다." $VERBOSE인 경우; 그럼 echo "초기 코드: $INIT_CODE" echo "초기 코드 해시: $INIT_CODE_HASH" fi # 원래 디렉토리로 되돌리기 CD - > /dev/null || 출구
계속 탐색하기데이터 목록검색