저자: 리
저자: 리
가스비 문제는 현재 이더리움 1.0 체인이 직면한 가장 심각한 문제 중 하나인데, 이더리움은 컴퓨팅 파워가 많지만 블록체인의 구조적 문제로 인해 작업 용량이 부족합니다(모든 풀 노드가 동일한 데이터를 계산하고, 그래서 작업이 쇄도하고 있습니다) 단일 노드의 컴퓨팅 리소스), 이더리움은 많은 수의 작업을 처리할 때 정체될 것이며 정체 후에 가스 요금이 높아질 것입니다.
DeFi 애플리케이션의 폭발적인 성장은 이러한 현상을 더욱 심화시켰습니다. 여기서 언급하고 싶은 것은 이더리움은 블록체인 트랜잭션을 패키징하는 것 외에도 체인에 스마트 계약을 게시하므로 스마트 계약은 체인에서 실행될 때 리소스를 소비하므로 사용자가 DeFi에서 수행하는 거의 모든 단계에서 가스를 지불해야 합니다. 이는 가스 모델의 문제이기도 합니다.
최근 이더리움 커뮤니티에서 EIP-1559에 대한 논의가 더욱 치열해졌는데, 이는 많은 마이닝 풀이 이 제안을 배포하는 데 동의하지 않기 때문입니다. 이 제안은 가스 요금 구성을 조정합니다. 높은 가스 요금 문제를 해결할 수는 없지만, 그것은 가스 요금의 비용을 증가시킬 수 있습니다.예상, 완벽한 경험.
최근 관련 소식도 있는데요, 지난 3월 16일 이더리움 개발자인 Philippe Castonguay는 블록 가스 한도를 블록당 12,500,000 가스로 고정할 것을 제안하는 또 다른 제안 EIP-3382를 제안했습니다. 그리고 블록 검증 규칙을 업데이트하십시오. 가스 한도가 12,500,000이 아니면 블록이 유효하지 않습니다. 이는 블록 가스 한도에 대한 합의를 이루기 위한 것으로 채굴자에 의해 제한되지 않습니다.
원래 규칙에서 블록 가스 한도는 이더리움에서 노드의 합의에 의해 결정되지 않는 유일한 데이터 부분이며 채굴자가 선택한 매개변수입니다. 그는 이것을 네트워크의 나머지 부분에 있는 소수의 참가자에 의해 부과된 갑작스러운 유해한 변경을 피하기 위해 노드 합의가 필요한 핵심 매개변수로 보고 있습니다.
EIP1559, EIP-3382와 같이 Gas Fee를 조정하자는 제안이 많이 나오는데, 이는 Gas Fee가 Ethereum의 운영에 있어서 중요한 위치를 차지하기 때문에 Gas Fee에 대한 역사적 이야기가 많기 때문입니다. fee , 가스비 해결이 쉽지 않음을 알 수 있습니다.
가스비가 궁금하시다면 TXStreet의 다이내믹한 이미지에서 생생하게 이해하실 수 있습니다.
이미지 설명
TXStreet는 Ethereum 블록 패키징 프로세스를 운송 수단으로 시각화합니다.
자동차가 이동하는 도로는 기본 자원이며 "통행료"는 통행료를 지불해야 하는 반면 포장에 필요한 가스 요금은 "가스 요금"입니다. 그래서 Gas fee(가스 수수료)는 이더리움의 자원 사용에 대한 최종 지불금입니다.
보조 제목
초기 가스에 대한 첫 번째 열쇠
Gas의 개념은 컴퓨터 분야에서 온다 Ethereum에서 볼 수 있다 Ethereum Yellow Paper에서 처음 나왔다 Yellow Paper의 저자는 Polkadot의 설립자인 Gavin이다 이론적으로 더 많기 때문에 임의의 값이다 처리할 트랜잭션, 최대 2^256(알려진 우주에 있는 거의 모든 트랜잭션을 처리할 수 있음).
이 버전이 확정되기 전에 또 다른 흥미로운 세부 사항이 있는데, Vitalik이 설계한 이더리움 가스 모델에서 가스 요금 지불 프로세스는 계약에서 기본적으로, 즉 계약 실행 중에 계약의 잔액이 감소합니다. 실행 소모로 잔액이 부족할 경우 계약이 정지됩니다.
이미지 설명
이후 개빈은 이더리움에 참여하기 시작했고, 진입 후 Gas의 지불 메커니즘을 이 계약 실행 지불에서 양도인 지불, 즉 계약 실행자 지불로 수정했습니다. Vitalik은 각 개별 거래 단계에 대해 한 번에 약간의 ETH를 받는 대신 "계약 지불" 접근 방식에서 "송신자 지불" 접근 방식으로의 이동을 설명합니다.
이미지 설명
이더리움 초창기에는 비탈릭과 개빈이 미니 해커톤을 했고 중간에 마스터는 제프리였다.
이것이 알기 쉬운 "가스 요금 지불"입니다. 좀 더 세부적인 부분을 해부하자면 옐로페이퍼의 가스 관련 부분을 봐야 한다.
Gas는 Ethereum의 모든 계산의 계산 단위이며 Ethereum에서 더 많은 계산을 수행할수록 더 많은 Gas를 지불해야 합니다.
이 사용자 결제 모드는 리소스 남용을 방지할 수 있습니다. 개발자가 각 작업에 대해 비용을 지불하면 가능한 한 간결하고 효율적으로 코드를 작성한다는 것을 이해할 수 있습니다.또한 Gas의 존재는 공격자가 잘못된 작업을 전달하는 것을 방지할 수 있습니다(그래서 많은 작업에 Gas가 사용됨). 공격은 Fang 네트워크에서 이루어지며, 아래에 카운트된 EIP는 계정 접근에 대한 Gas 값을 높여 공격 가능성을 줄이기 위한 것입니다.
가스를 지불할 위치를 아는 것 외에도 GasPrice 및 GasLimit도 이해해야 합니다.
GasPrice는 트랜잭션 발신자가 가스 단위당 지불할 용의가 있는 가격(Wei로 측정)이며 트랜잭션 발신자는 트랜잭션 발신자가 지불할 의사가 있는 가스 단위당 가격을 사용자 정의할 수 있습니다. 거래 비용이 10 Gas이고 발신자가 3 Wei/Gas를 지불할 용의가 있다고 가정하면 총 거래 비용은 30 Wei입니다. 사용하는 지갑에서 가스 요금을 조정하는 고급 옵션이 있습니다.
또한 GasLimit은 선불 Gas로 정의할 수도 있습니다. 노드가 트랜잭션을 검증할 때 먼저 GasPrice에 GasLimit를 곱하여 트랜잭션의 고정 비용을 계산합니다. 거래 발신인의 계정 잔액이 거래의 고정 비용보다 적으면 거래가 무효로 간주됩니다. 트랜잭션이 실행된 후 남은 Gas는 보낸 사람의 계정으로 반환되기 때문에 MetMask를 사용하여 계약을 실행할 때 Gas는 매우 비싸지만 실행 가격은 그리 높지 않다고 추정합니다.
이미지 설명
블록에 포함된 콘텐츠
블록에 내재된 내용인데 트랜잭션 부분에는 237개의 이체와 39개의 내부 컨트랙트 트랜잭션이 있는데 트랜잭션을 구체적으로 보면 좀 더 자세한 가스비를 볼 수 있습니다. 글 초반에 언급한 EIP-3382에서 각 블록의 Gas limit가 12500000으로 제한되어 있는 것을 볼 수 있는데 바로 이 부분이다. 이러한 방식으로 각 블록에서 얻은 보상의 합계를 더 잘 제어할 수 있습니다.
내재 비용 =
Gtransaction+Gtxdatazero*Nzeros+Gtxdatanonzero* Nnonzeros+Gtxcreate
안에:
Gtransaction=21,000Wei
Gtxcreate=32,000Wei
Gtxdatazero=4Wei
안에:
다음 opcode에 자리를 잡을 수 있습니다.
이미지 설명
위의 서론에 따르면 Gas fee는 이더리움 체인의 리소스를 사용하여 생성되는 것으로 기본적으로 이해할 수 있습니다.계산이 많을수록 Gas가 높아집니다.스마트 계약 운영에서 각 개별 단계는 필요합니다. 유료 가스. 또한 발신자가 가스를 매우 높게 설정하면 채굴자가 특정 트랜잭션을 먼저 패키징하도록 선택할 수 있기 때문에 채굴자는 트랜잭션 실행에 우선 순위를 부여한다는 점을 추가해야 합니다.
보조 제목
가스 요금과 밀접하게 관련된 20개의 EIP
다음으로 가스에 대한 EIP 제안을 자세히 살펴볼 수 있습니다. 제안은 대략 시간순으로 정렬됩니다.
EIP-5: RETURN 및 CALL의 가스 사용량 조정
이 EIP를 사용하면 문자열 및 기타 동적으로 크기가 조정된 배열을 RETURN하는 함수를 호출할 수 있습니다. 현재 이더리움 가상 머신 내에서 다른 계약/함수를 호출할 때 출력 크기를 미리 지정해야 합니다. 또한 기록되지 않은 메모리에 대한 비용을 지불해야 하므로 동적으로 크기가 조정된 데이터를 반환하는 데 비용이 많이 들고 융통성이 없어 실질적으로 사용할 수 없게 됩니다. 이 EIP에서 제안하는 솔루션은 CALL이 반환될 때 실제로 쓰여진 메모리에 대해서만 비용을 지불하는 것입니다.
EIP-150: 다수의 IO 작업에 대한 가스 비용 변경
EXTCODESIZE의 가스 비용이 20에서 700으로 증가했습니다.
EXTCODECOPY의 기본 가스 비용이 20에서 700으로 증가했습니다.
BALANCE의 가스 비용이 20에서 400으로 증가했습니다.
SLOAD 가스 비용이 50에서 200으로 증가했습니다.
CALL, DELEGATECALL, CALLCODE의 가스 수수료를 40에서 700으로 인상합니다.
SELFDESTRUCT의 가스 비용이 0에서 5000으로 증가했습니다.
SELFDESTRUCT가 새로 생성된 계정에 도달하면 25000의 추가 가스 수수료가 발생합니다(CALL과 유사).
제안된 가스 한도 목표를 550만 개로 늘렸습니다.
EIP-158: 상태 정리
어쨌든 콜 잔액이 0인 계정은 더 이상 25,000 계정 생성 Gas 비용을 소비하지 않습니다.
EIP-1108: alt_bn128 사전 컴파일된 가스 비용 절감
사전 컴파일된 타원 곡선 계산은 현재 고가입니다. 사전 컴파일 가격을 다시 책정하면 Ethereum의 많은 개인 정보 보호 및 확장 솔루션에 큰 도움이 될 것입니다. 이더리움 기반 zk-SNARK 기반 프로토콜의 경우 EIP-1108은 zk-SNARK 검증의 가스 비용을 크게 줄일 뿐만 아니라 여러 zk-SNARK 증명을 일괄적으로 결합하는 데 도움이 됩니다. 이것은 또한 모놀리식 zk-SNARK 회로를 개별 회로 크기가 더 작은 zk-SNARK 배치로 분할하는 데 사용할 수 있는 기술로, 두 zk-SNARK를 더 쉽게 구성하고 배포할 수 있습니다.
현재 이러한 거래 비용은 약 6,000,000 Gas입니다. 이 EIP는 1,000,000Gas로 줄일 수 있어 프로토콜을 보다 실용적으로 만듭니다.
EIP-1283: SSTORE opcode에 대한 가스 조정
이 EIP는 계약 스토리지의 새로운 사용을 가능하게 하고 대부분의 구현이 작동하는 방식과 일치하지 않는 과도한 가스 비용을 줄이기 위해 SSTORE opcode에 대한 측정 변경을 제안합니다. 이것은 EIP-1087의 대안이 될 수 있으며, 캐시 변경을 위해 다른 최적화 전략을 사용하는 구현에 더 친숙해지려고 노력했습니다.
EIP-2028: 트랜잭션 데이터 가스 비용 절감
Calldata(GTXDATANONZERO)의 Gas cost를 현재 68byte에서 16byte로 줄이고 수학적 모델링과 실증적 추정을 통해 지원하는 것을 추천한다.
EIP-2200: Net Gas Metering의 구조적 정의
이 EIP는 SSTORE opcode에 대한 순 가스 측정 변경의 구조화된 정의를 제공하여 계약 스토리지의 새로운 사용을 가능하게 하고 대부분의 구현이 작동하는 방식과 일치하지 않는 과도한 가스 비용을 줄입니다. 이는 EIP-1283과 EIP-1706의 조합으로 볼 수 있습니다.
EIP-2565: ModExpGas 비용
ModExp 사전 컴파일의 실제 운영 비용을 정확하게 반영하기 위해 이 EIP는 Gas 비용을 계산하는 알고리즘을 지정합니다. 알고리즘은 곱셈 복잡성 비용을 추정하고 지수화를 수행하는 데 필요한 반복 횟수의 근사치를 곱합니다.
EIP-1559: ETH 1.0 체인의 수수료 시장 변화
이더리움은 간단한 경매 메커니즘을 사용하여 과거 가격으로 거래 수수료를 책정하고, 사용자는 거래를 입찰가로 보내고("가스프라이스"), 채굴자는 가장 높은 입찰가를 가진 거래를 선택하고, 포함된 거래는 지정된 입찰가로 지불합니다. 이로 인해 비효율이 발생합니다.
이 EIP의 제안은 네트워크의 혼잡을 기반으로 프로토콜에 의해 하향 조정되는 기본 수수료 금액으로 시작하는 것입니다. 기본 요금은 네트워크가 Gas 블록당 목표 사용량을 초과하면 약간 증가하고 용량이 목표량 미만으로 떨어지면 약간 감소합니다.
이러한 기본 수수료의 변동이 제한적이기 때문에 서로 다른 블록 간의 기본 수수료의 최대 차이를 예측할 수 있습니다. 이를 통해 지갑은 매우 안정적인 방식으로 사용자의 가스 요금을 자동으로 설정할 수 있습니다. 대부분의 사용자는 활성 네트워크 활동 기간 동안에도 가스 요금을 수동으로 조정할 필요가 없을 것으로 예상됩니다. 대부분의 사용자의 경우 기본 요금은 지갑에 의해 추정됩니다.
EIP-2929: 상태 액세스 opcode에 대한 가스 비용 증가
가스 비용 SLOAD(0x54)가 2100으로 증가하고 *CALL opcode family(0xf1, f2, f4, fA), BALANCE 0x31 및 EXT* opcode family(0x3b, 0x3c, 0x3f), 2600 CD-free(i) 사전 컴파일됨. 또한 이러한 SELFDESTRUCT opcode에 내재된 "실제 스토리지 로드"의 올바른 가격 책정을 보장하도록 SSTORE 측정을 개혁할 수 있습니다.
일반적으로 opcode의 가스 비용의 주요 기능은 해당 opcode를 처리하는 데 걸리는 시간을 추정하는 것입니다. 가스 제한을 블록을 처리하는 데 걸리는 시간 제한과 일치하게 만드는 것이 목표입니다. 그러나 저장소 액세스 opcode(SLOAD 및 *CALL, BALANCE 및 EXT* opcode)는 역사적으로 과소 평가되었습니다. 2016년 상하이 DoS 공격에서 가장 심각한 클라이언트 측 버그를 수정한 후 공격자가 항상 사용했던 전술 중 하나는 단순히 많은 수의 계정에 액세스하거나 호출할 수 있는 트랜잭션을 보내는 것이었습니다.
제안된 EIP는 이러한 opcode의 비용을 약 3배 증가시켜 최악의 경우 처리 시간을 약 7-27초로 줄입니다. Merkle 트리로 건너뛰는 대신 스토어를 직접 읽도록 클라이언트를 재설계하는 것과 관련된 데이터베이스 레이아웃의 개선은 이러한 기술을 완전히 롤아웃하는 데 오랜 시간이 걸릴 수 있지만 스토리지 IO 오버헤드에 액세스하면 이를 더욱 줄여야 합니다. 도 상당하다.
EIP-1077: 계약 통화용 가스 릴레이
DApp 채택의 주요 장애물은 체인 작업을 수행하기 위해 여러 토큰이 필요하다는 것입니다. 사용자는 실행 의도를 표시하기 위해 메시지에 서명할 수 있지만 제3자 중계자가 메시지를 실행하도록 허용하면 이 문제를 피할 수 있습니다. 이더리움 트랜잭션에는 항상 ETH가 필요하지만 스마트 계약은 EIP-191 서명을 채택하고 지불 인센티브를 ETH 파티에서 신뢰할 수 없도록 할 수 있습니다. 트랜잭션을 실행합니다. 표준화할 수 있는 공통 형식과 사용자가 트랜잭션을 토큰으로 지불할 수 있도록 허용하는 방식은 응용 프로그램 개발자에게 많은 유연성을 제공하고 응용 프로그램 사용자가 블록체인과 상호 작용하는 기본 방법이 될 수 있습니다.
EIP-1087: SSTORE 작업을 위한 가스 계량
이 EIP는 불필요한 가스 비용을 줄이고 계약 저장을 위한 새로운 사용 사례를 제공하기 위해 EVMSSTORE 운영에 대한 가스 충전 방법에 대한 변경을 제안합니다.
EIP-1285: CALL opcode에 GcallstipendGas 추가
Gcallstipend는 CALL opcode의 수수료 매개변수를 2,300에서 3,500 가스 단위로 늘립니다.
EIP-1380: 내부 통화의 가스 비용 감소
Solidity 및 Vyper와 같은 스마트 계약 언어는 opcode를 사용하기 위해 JUMP 내부 작업 호출 대신 CALL을 사용할 수 있도록 내부 호출의 가스 비용을 줄이는 데 큰 도움이 됩니다.
EIP-1613: 주유소 네트워크
계약이 "COI"를 수락하고 가스 비용을 지불하도록 허용하여 비 ETH 사용자가 스마트 계약(예: dapp)에 액세스할 수 있도록 합니다.
dapp과 통신하려면 현재 가스 요금을 ETH로 지불해야 하므로 dapp 채택은 Ethereum 사용자로만 제한됩니다. 따라서 계약 소유자는 사용자 획득을 늘리기 위해 가스 비용을 지불하거나 사용자가 가스 비용을 명목 화폐로 지불하도록 할 수 있습니다. 또는 제3자가 특정 계약의 가스 비용을 보조하기를 원할 수 있습니다. EIP-1077에 설명된 솔루션은 ETH를 포함하지 않는 주소의 트랜잭션을 허용할 수 있습니다.
EIP-1930: 엄격한 가스 시맨틱으로 호출합니다. 가스가 충분하지 않으면 되돌리기
특정 양의 Gas로 CALL을 실행하는 스마트 계약 기능을 추가합니다. 이것이 가능하지 않으면 실행이 반환되어야 합니다.
EIP-2045: EVM opcode에 대한 세분화된 가스 비용
컴퓨팅 EVM opcode(ADD, SUB, MUL 등)는 일반적으로 opcode(SLOAD, SSTORE 등)를 저장하는 데 사용되는 I/O에 비해 과대 평가됩니다. 현재 가장 작은 가스 비용은 1(즉, 가스 단위)이며 대부분의 컴퓨팅 opcode는 비용이 1에 가깝기 때문에(예: 3, 5 또는 8) 비용을 줄일 수 있는 데에는 한계가 있습니다. 가스의 일부인 "과립"이라고 하는 새로운 최소 가스 단위는 가스 비용의 범위를 확장하여 현재 최소 가스 아래로 낮출 수 있습니다.
EIP-2046: 사전 컴파일에 대한 정적 호출에 대한 가스 비용 감소
사전 컴파일된 STATICCALL 호출의 기본 가스 비용을 700에서 40으로 줄였습니다. 이렇게 하면 총 비용이 700 미만인 사전 컴파일뿐만 아니라 사전 컴파일을 보다 효율적으로 사용할 수 있습니다.
EIP-2542: 새 opcode TXGASLIMIT 및 CALLGASLIMIT
스마트 계약이 현재 트랜잭션 및 실행 프레임에 대한 가스 한도에 대한 정보에 액세스할 수 있습니다. 릴레이, 메타 트랜잭션, 가스 수수료 및 계정 추상화와 같은 개념이 인기를 얻으면서 특정 계약에서 가스 지출을 절대적으로 정확하게 추적할 수 있는 것이 중요해졌습니다.
EIP-3322: 계정 가스 저장 opcode
수요가 적은 블록에서 수요가 많은 블록으로 Gas를 이동함으로써 가스 공급 탄력성과 가격 안정성을 가져옵니다. 불행히도 이것은 불필요한 상태 성장을 보상합니다. 고급 가스 저장 메커니즘을 도입함으로써 가스 시장은 저장 및 계산이 덜 필요합니다.
EIP-2780: 내부 트랜잭션 가스 감소
내부 거래 비용을 21,000에서 7,000 Gas로 줄였습니다.
현재 21,000건의 거래에 대한 가스 비용으로 인해 ETH를 보내는 데 비용이 많이 들고 작은 배치(수십 달러)의 비용은 일반적으로 엄청나게 높습니다. 다른 EIP(예: EIP-1559)도 가스 가격 및 첫 번째 가격 경매 변경을 고려하지만 안전한 방식으로 수행된다면 ETH 전송 비용을 대폭 줄이고 더 많은 거래를 가능하게 하는 것이 긍정적일 것입니다.
두 번째 핵심: 롤업 및 가스
초기 가스 이야기는 이더리움 가스 수수료 모델의 공식화에 관한 것이었습니다.현재 가스 수수료를 줄이는 것 외에도 가스 수수료를 확장하고 줄이는 가장 좋은 방법은 트랜잭션 데이터를 압축하는 것입니다.
이것은 롤업과 많은 관련이 있습니다.
간단한 이더리움 거래(ETH 전송)에는 약 110바이트가 소요됩니다. 그러나 Rollup에서의 ETH 전송은 12바이트밖에 걸리지 않기 때문에 Rollup은 기본 체인의 확장성을 약 10배 정도 높일 수 있으며, 구체적인 계산에서는 Rollup을 사용하면 확장성을 100배 이상까지 높일 수 있습니다.
이것은 절대적으로 인상적인 성과이며 Eth2.0이 롤업 중심 개발 경로가 된 이유입니다.


