저자: Samuel Okediji 편집: Cointime.com 237
블록체인 기술 분야에서 이더리움은 계속 확장되는 사용자 기반을 해결하고 트랜잭션 처리량을 늘리며 비용을 줄이기 위해 노력해 왔습니다. 장기적인 확장성을 달성하기 위해 Ethereum은 데이터 샤딩 개념을 사용합니다. 완전한 샤딩 구현을 위한 중간 단계로 Ethereum Improvement Proposal 4844(EIP-4844)가 도입되었습니다. 이 제안은 이더리움이 보안과 탈중앙화를 유지하면서 약 100,000 TPS(초당 트랜잭션)의 더 높은 처리량을 달성할 수 있도록 하는 것을 목표로 합니다.
EIP 표준 및 EIP-4844의 중요성 이해:
EIP(Ethereum Improvement Proposal)는 이더리움 프로토콜의 개선 사항, 새로운 기능 또는 변경 사항을 설명하는 공식 문서입니다. 이더리움 커뮤니티 구성원이 잠재적 개선 사항을 제안하고 논의할 수 있는 방법을 제공합니다.
EIP-4844는 주로 샤드 블롭 트랜잭션을 이더리움 네트워크에 통합하는 것과 관련이 있습니다. 샤딩은 효율성과 성능을 향상시키기 위해 데이터베이스를 더 작은 파티션(일명 샤드)으로 나누는 것입니다. 샤딩된 Blob 트랜잭션을 구현함으로써 Ethereum은 트랜잭션 비용을 개선하고 전체 처리량을 높이는 것을 목표로 합니다. EIP-4844는 완전한 샤딩 솔루션은 아니지만 광범위한 채택을 촉진하는 데 필요한 확장성과 비용 효율성을 달성하기 위한 중요한 단계를 나타냅니다.
이 기사에서는 EIP-4844와 이더리움 확장성에 미치는 영향에 대해 자세히 설명합니다. 샤딩의 개념을 설명하고, EIP 표준의 역할에 대한 통찰력을 제공하고, 이더리움 생태계에서 샤딩 블롭 트랜잭션의 중요성에 대해 밝힐 것입니다. 또한 Blob을 수반하는 트랜잭션, 가스 청구, EIP-4844와 본격적인 샤딩 간의 관계를 포함하여 EIP-4844에 도입된 주요 기능과 메커니즘을 살펴볼 것입니다. 이 기사를 읽으면 EIP-4844와 EIP-4844가 확장성을 개선하고 거래 비용을 줄이기 위한 이더리움의 지속적인 노력에 대한 포괄적인 이해를 얻게 될 것입니다.
이 탐색을 통해 다음과 같은 통찰력을 얻을 수 있습니다.
샤딩의 개념과 이더리움의 확장성에 대한 중요성 .
완전한 샤딩을 향한 중간 단계로서의 EIP-4844의 역할.
EIP-4844에 도입된 기능 및 메커니즘(예: BLOB 및 가스 청구를 수반하는 트랜잭션).
EIP-4844가 이더리움의 확장성 및 비용 절감 로드맵과 어떻게 일치하는지.
사용자는 EIP-4844 구현으로 더 빠른 거래와 더 낮은 수수료를 기대할 수 있습니다.
이 기사를 읽으면 EIP-4844의 중요성과 EIP-4844가 확장성과 광범위한 채택에 미치는 이더리움의 영향을 완전히 이해하고 감사할 수 있습니다.
EIP-4844란 무엇입니까?
EIP-4844는 이더리움 네트워크에서 샤드 블롭 트랜잭션을 통합하는 데 중점을 둡니다. 샤딩은 효율성과 성능을 향상시키기 위해 데이터베이스를 더 작은 파티션 또는 샤드로 나누는 것입니다. Ethereum의 맥락에서 샤딩은 트랜잭션 비용을 개선하고 처리량을 높이는 것을 목표로 합니다. 이더리움은 이더리움의 TPS를 약 100,000으로 크게 높일 것으로 예상되는 댄크 샤딩(특정 유형의 샤딩)을 구현할 계획입니다.
EIP-4844는 이더리움 네트워크에서 샤드 블롭 트랜잭션을 통합하는 데 중점을 둡니다. 샤딩은 효율성과 성능을 향상시키기 위해 데이터베이스를 더 작은 파티션 또는 샤드로 나누는 것입니다. Ethereum의 맥락에서 샤딩은 트랜잭션 비용을 개선하고 처리량을 높이는 것을 목표로 합니다. 이더리움은 이더리움의 TPS를 약 100,000으로 크게 높일 것으로 예상되는 댄크 샤딩(특정 유형의 샤딩)을 구현할 계획입니다.
이전 이더리움 및 비이더리움 샤딩 제안과 비교하여 덩크 샤딩은 몇 가지 혁신을 도입합니다. 트랜잭션뿐만 아니라 데이터 블롭에 더 많은 공간을 제공하는 데 중점을 둡니다. 또한 댄크 샤딩은 한 제안자가 모든 샤드에 대한 트랜잭션을 선택하는 통합 수수료 시장을 구현하여 각 샤드가 자체 제안자를 가질 필요가 없습니다. 최대 추출 가능 가치(MEV) 문제를 해결하기 위해 제안자/빌더 분리 접근 방식도 도입되었습니다.
EIP-4844(Proto-Danksharding)
proto-dank sharding으로도 알려진 EIP-4844는 본격적인 dank sharding을 향한 중간 단계입니다. TPS를 약 1,000으로 늘리는 것을 목표로 하고 "블롭 운반 트랜잭션"이라는 새로운 트랜잭션 유형을 도입합니다. 이러한 트랜잭션에는 본격적인 댄크 샤딩의 핵심 요소인 "블롭" 데이터가 포함됩니다. EIP-4844의 시행은 2023년 하반기에 이루어질 것으로 예상되지만 지연될 수 있습니다.
EIP-4844는 어떻게 작동합니까?
EIP-4844는 일반 트랜잭션과 유사하지만 "블롭"이라는 이진 대형 개체가 추가된 블롭이 있는 트랜잭션을 도입합니다. 이러한 Blob은 블록에 추가되어 Blob을 전달하는 블록의 데이터 용량을 늘립니다. 단순히 블록 크기를 늘리는 것과는 달리 Blob을 포함하여 중앙 집중화 및 계산 요구 사항과 같은 문제로 인해 Ethereum에서 블록 크기를 늘리는 관행을 피할 수 있다는 점은 주목할 가치가 있습니다.
Blob은 블록과 다른 속성을 가지고 있습니다. 블록은 무기한으로 저장되며 EVM(Ethereum Virtual Machine)에 표시되는 반면 Blob은 수명이 제한되어 EVM에 표시되지 않습니다. Blob은 실행 계층이 아닌 이더리움 합의 계층에 존재하므로 스토리지 비용이 절감됩니다. EIP-4844에는 또한 실행 계층 논리, 유효성 검사 규칙, 다차원 수수료 시장 및 향후 본격적인 댄크 샤딩에 필요한 기타 시스템 변경 사항이 포함되어 있습니다.
EIP-4844는 실제로 샤딩을 구현하지 않지만 이더리움을 광범위한 채택을 달성하는 데 필요한 확장성 및 비용 수준에 더 가깝게 만든다는 점에 유의해야 합니다. EIP-4844는 본격적인 단크 샤딩을 구현하지 않아도 확장성과 비용 절감 이점을 제공합니다.
EIP-4844는 사용자에게 어떤 이점이 있습니까?
EIP-4844는 이더리움의 롤업 중심 로드맵에 부합하는 프로토콜 업그레이드입니다. 구현 준비가 빠르게 진행되고 있으며 개발 네트워크가 이미 실행 중이며 업그레이드 사양이 거의 마무리 단계에 있습니다.
EIP-4844 구현 후 사용자는 주로 더 빠른 거래와 낮은 수수료의 형태로 상당한 개선을 기대할 수 있습니다. 성공적인 구현은 또한 암호화폐 공간에서 이더리움의 경쟁력을 강화할 것입니다.
삭제된 오래된 Blob의 데이터에 액세스하는 데 관심이 있는 사용자의 경우 Blob이 몇 주 후에 삭제되더라도 해당 데이터는 Ethereum 합의 계층에서 유지 관리하는 장기 스토리지에서 계속 사용할 수 있어야 합니다.
블롭 트랜잭션
EIP-4844는 EIP-2718 표준을 기반으로 하는 "BLOB 트랜잭션"이라는 새로운 트랜잭션 유형을 도입합니다. Blob 트랜잭션의 TransactionType은 BLOB_TX_TYPE이고 TransactionPayload는 TransactionPayloadBody의 RLP 직렬화이며 chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_data_gas, blob_versioned_hashes, y_parity, r 및 에스.
일반 생성 트랜잭션과 달리 Blob 트랜잭션의 "to" 필드는 20바이트 주소를 나타내야 하며 nil일 수 없습니다.
Blob 트랜잭션의 EIP-2718 ReceiptPayload는 status, cumulative_transaction_gas_used, logs_bloom 및 RLP로 인코딩된 로그로 구성됩니다.
Blob 트랜잭션 형식:
Blob 트랜잭션의 EIP-2718 ReceiptPayload는 status, cumulative_transaction_gas_used, logs_bloom 및 RLP로 인코딩된 로그로 구성됩니다.
Blob 트랜잭션 형식:
징후
blob 트랜잭션에 대한 y_parity, r 및 s 서명 값은 특정 다이제스트에 secp256k1 서명을 작성하여 계산됩니다. 다이제스트는 keccak256 해싱 알고리즘을 사용하여 BLOB_TX_TYPE 및 chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_data_gas 및 blob_versioned_hashes의 RLP 직렬화를 연결 및 해싱하여 얻습니다.
서명 계산:
다이제스트 = keccak256(BLOB_TX_TYPE || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_data_gas, blob_versioned_hashes]))
서명 = secp256k1_sign(다이제스트, private_key)
y_parity, r, s = extract_signature_parts(서명) 헤드 익스텐션
EIP-4844는 두 개의 새로운 64비트 부호 없는 정수 필드인 data_gas_used 및 extra_data_gas를 도입하여 현재 헤더 인코딩을 확장합니다. data_gas_used 필드는 블록 내 트랜잭션이 소비한 데이터 가스의 총량을 나타냅니다. extra_data_gas 필드는 최소 0으로 목표 값을 초과하는 데이터 가스의 누적 값을 추적합니다. 목표 데이터 가스 소비를 초과하는 블록은 overflow_data_gas 값을 증가시키고 목표 값 미만인 블록은 감소시킵니다.
헤더 코드:
버전 해시를 얻기 위한 opcode
EIP-4844는 버전이 지정된 해시를 얻기 위해 BLOBHASH(HASH_OPCODE_BYTE를 opcode 바이트로 사용)라는 새로운 opcode를 도입합니다. 이 opcode는 스택에서 big-endian uint256 인덱스를 읽고 인덱스가 blob_versioned_hashes 목록 범위 내에 있는 경우 tx.blob_versioned_hashes[index]로 바꿉니다. 그렇지 않으면 인덱스는 값이 0인 바이트32로 대체됩니다. 이 opcode가 소비하는 가스는 HASH_OPCODE_GAS로 정의됩니다.
BLOBHASH 연산 코드:
BLOBHASH 연산 코드:
도트 평가 사전 컴파일
KZG 증명의 유효성을 검사하기 위해 POINT_EVALUATION_PRECOMPILE_ADDRESS에 새로운 사전 컴파일을 도입했습니다. Promise로 표현된 blob이 특정 지점에서 주어진 값으로 평가됨을 증명이 보여줍니다. 이 사전 컴파일은 POINT_EVALUATION_PRECOMPILE_GAS 비용으로 수행되며 제공된 versioned_hash와 커밋의 연관성을 확인하고 커밋, 포인트 및 증명 값을 사용하여 KZG 증명을 확인합니다.
pip 평가 프리컴파일:
def point_evaluation_precompile(입력: 바이트) -> 바이트:
versioned_hash = 입력[:32]
z = 입력[32:64]
y = 입력[64:96]
헌신 = 투입[96:144]
증명 = 입력[144:192]
어설션 kzg_to_versioned_hash(약속) == versioned_hash
assert verify_kzg_proof(약속, z, y, 증명)
반환 바이트(U256(FIELD_ELEMENTS_PER_BLOB).to_be_bytes32() + U256(BLS_MODULUS).to_be_bytes32()) 가스 계산
EIP-4844는 일반 가스와 독립된 새로운 유형의 데이터 가스를 도입합니다. EIP-1559와 유사하게 데이터 가스는 자체 대상 규칙을 따릅니다. extra_data_gas 헤더 필드는 데이터 가스 가격을 계산하는 데 필요한 영구 데이터를 저장합니다. 현재 Blob 가격만 데이터 가스를 사용합니다.
가스 계산 공식:
data_fee = calc_data_fee(헤더, tx)
total_data_gas = get_total_data_gas(tx)
data_gasprice = get_data_gasprice(헤더)
calc_data_fee(헤더, tx) = get_total_data_gas(tx) * get_data_gasprice(헤더)
get_total_data_gas(tx) = DATA_GAS_PER_BLOB * len(tx.blob_versioned_hashes)
get_data_gasprice(헤더) = fake_exponential(MIN_DATA_GASPRICE, header.excess_data_gas, DATA_GASPRICE_UPDATE_FRACTION) 합의 계층 검증
get_data_gasprice(헤더) = fake_exponential(MIN_DATA_GASPRICE, header.excess_data_gas, DATA_GASPRICE_UPDATE_FRACTION) 합의 계층 검증
컨센서스 레이어에서 Blob은 참조되지만 비콘 블록 내에서 완전히 인코딩되지는 않습니다. 대신 "우회" 형식으로 전파됩니다. 컨센서스 계층은 Blob의 가용성을 보장하고 업데이트된 비콘 블록의 처리, 비콘 블록 유형 및 새로운 Blob 우회 전파 및 동기화, 연결된 Blob 우회로 비콘 블록 생성을 처리합니다.
실행 계층 검증
실행 계층은 extra_data_gas 업데이트, blob 트랜잭션을 위한 충분한 균형, 최소 하나의 blob 존재, 버전이 지정된 blob 해시 확인, 현재 데이터 가스 가격이 충족되었는지 확인, 총 데이터 가스 소비 추적 및 각각의 시행을 포함하여 블록에 대한 유효한 조건을 적용합니다. 블록에 대한 최대 데이터 가스 한도.
회로망
Blob 트랜잭션에는 PooledTransactions 및 BlockBodies라는 두 가지 네트워크 표현이 있습니다. PooledTransactions는 EIP-2718 TransactionPayload, blob, 확약 및 증명을 포함한 래퍼 형식을 사용합니다. 이러한 요소는 Blob 트랜잭션의 유효성을 검사하는 데 필요한 필수 데이터를 캡슐화합니다. 콘텐츠 검색 응답을 위한 BlockBodies는 표준 EIP-2718 BLOB 트랜잭션 TransactionPayload 형식을 따릅니다.
노드는 Blob 트랜잭션을 피어에 자동으로 브로드캐스트하지 않습니다. 대신 이러한 트랜잭션은 NewPooledTransactionHashes 메시지를 사용하여 광고되며 GetPooledTransactions를 사용하여 수동으로 요청할 수 있습니다.
결론적으로
EIP-4844는 롤업을 위한 임시 확장을 제공하려는 이더리움의 목표와 일치하는 완전한 샤딩을 향한 중요한 단계입니다. EIP-4844를 사용하면 최종 샤딩 사양에서 예상되는 형식을 준수하는 Blob 트랜잭션을 도입하여 롤업이 슬롯당 최대 0.375MB까지 확장할 수 있습니다. 시스템이 제한적으로 사용되는 동안 수수료를 낮게 유지하는 독립적인 수수료 시장을 설정합니다.
EIP-4844의 설계는 결과 달성과 향후 개발 부담 감소 간의 균형을 유지합니다. 새로운 트랜잭션 유형, 실행 레이어 로직, 합의 교차 검증, 비콘 블록 로직 및 Blob에 대한 적응형 독립 가스 가격을 포함하여 전체 샤딩을 구현하는 데 필요한 작업을 크게 발전시킵니다.
완전한 샤딩을 가능하게 하기 위한 추가 작업에는 2D 샘플링 확장, 데이터 가용성 샘플링 구현, 제안자/빌더 분리 및 검증자에 대한 관리 증명 요구 사항이 포함됩니다.
EIP-4844는 또한 기본 기본 요금 계산에 가스 가격 업데이트 규칙을 적용하는 것과 같이 향후 프로토콜 개선 및 정리를 위한 길을 열어줍니다.
모든 댓글