상승 중인 이더리움: EIP-1559 이후 EIP-3074
Ropsten 테스트넷은 6월 24일 블록 높이 10,499,401로 시작되었습니다.
배포 이후 1억 7,760만 달러 상당의 약 88,500개의 테스트넷 이더가 소각되었습니다.
Eth2가 출시될 무렵, 2억 달러 상당의 100,000 ETH가 Eth2의 스테이킹 계약에 예치되었습니다.
스폰서 트랜잭션(메타 트랜잭션이라고도 함): 다른 계정의 트랜잭션에 대해 가스를 지불합니다. 또한 이더가 없는 주소에서 토큰을 보낼 수 있습니다.
일괄 거래: 한 번의 호출로 여러 거래를 보냅니다. 이는 둘 이상의 트랜잭션이 동일한 블록에서 실행되도록 보장하고 트랜잭션 수수료도 줄입니다.
향상된 사용자 경험(UX): 예를 들어 단일 트랜잭션 내에서 승인 및 transferFrom을 호출할 수 있습니다.
AUTH(0xf6) - 서명 및 커밋을 기반으로 외부 소유 계정에 권한을 부여합니다. 커밋 및 서명 yParity, r 및 s의 네 가지 입력 매개 변수를 허용합니다.
AUTHCALL(0xf7) - 승인된 EOA 컨텍스트에서 호출(트랜잭션)을 보냅니다. 8개의 입력 매개변수(gas, addr, value, valueExt, argsOffset, argsLength, retOffset, retLength)를 허용합니다. 이는 기존 CALL opcode와 유사합니다.
EOA 서명 승인 정보
EOA 또는 기타 가스 지불인은 트랜잭션 데이터 및 승인 정보를 호출자 계약에 보냅니다.
호출자 계약은 AUTH를 사용하여 권한 부여를 수행하고 AUTHCALL을 사용하여 트랜잭션을 보냅니다.
이더리움 개선 제안서 EIP-1559가 마침내 이더리움의 다가오는 런던 업그레이드를 위해 Ropsten 테스트넷에 배포되었습니다. 며칠 전, 런던 하드포크에 대한 3개의 이더리움 테스트넷 출시 날짜가 발표되었습니다. Ethereum 핵심 개발자인 Tim Beiko는 Ropsten, Goerli 및 Rinkeby 테스트넷의 블록 높이가 결정되었다고 발표했습니다. Ropsten의 높이는 10499401이며 6월 24일에 출시되었습니다. 반면 Goerli는 6월 30일에, Rinkeby는 7월 7일에 있습니다.
EIP-1559의 소각 메커니즘은 토큰 가격에 도움이 될 수 있습니다.
런던 하드포크에는 5개의 이더리움 개선 제안이 있지만 EIP-1559가 모든 관심을 끌었습니다. 새로운 업그레이드는 네트워크에서 거래 수수료를 소비할 것으로 예상됩니다. EIP-1559 추적 사이트인 Watch the Burn에 따르면 Ropsten 테스트넷이 런던에서 업그레이드된 이후 약 88,500개의 테스트넷 이더가 소각되었으며 이는 1억 7760만 달러에 해당합니다. 그러나 EIP-1559에 의해 소각된 대량의 이더리움은 Eth2 오버홀 디플레이션에 대한 논의를 다시 촉발시켰습니다. Ether는 연소 메커니즘으로 인해 순환 공급보다 빠르게 연소됩니다. 이것은 ETH 가격에 매우 유리할 수 있습니다.
EIP-1559 이후 커뮤니티는 보안 문제 해결을 목표로 하는 EIP-3074에 집중했습니다.
하지만 이더리움 커뮤니티가 주목하는 EIP는 EIP-1559만이 아니다. EIP-3074는 업그레이드에서 커뮤니티가 크게 기대하는 또 다른 개선 제안입니다. David Mihal과 그의 트윗에 따르면 Ethereum이 간과한 주요 보안 문제 중 하나는 ERC20 승인입니다. 그는 ERC777을 추진했으며 이를 고칠 수 있는 유일한 기회는 EIP-3074라고 덧붙였습니다. 이더리움 개선 제안을 통해 사용자는 단일 트랜잭션에서 전송을 승인하고 조치를 실행하며 승인을 취소할 수 있습니다.
이전에 이더리움 개발자들은 EIP-1559가 가스 비용을 줄이기 위해 설계되지 않았다고 언급했지만 많은 사람들은 여전히 이 제안이 확실히 가스 비용을 크게 줄일 것이라고 믿고 있습니다. 이것은 심지어 광부들의 수입을 50%까지 감소시킬 수 있었고 결국 "광부들의 봉기"로 이어졌지만 결국 실패했습니다. 그럼에도 불구하고 런던의 업그레이드는 Ethereum의 강세 추세를 높일 것으로 예상됩니다. 유명한 암호화 분석가인 CryptoQuant는 Eth2가 출시될 무렵 Eth2의 서약 계약에 2억 달러 상당의 100,000 이더리움이 예치되었다고 지적했습니다. 현재 ETH 공급량의 5% 이상이 약 117억 5000만 달러 상당의 락업 상태입니다.
EIP-3074란 무엇입니까?
토큰을 스마트 계약으로 보내려면 일반적으로 두 가지 트랜잭션을 수행해야 합니다. 첫 번째 트랜잭션 승인은 토큰을 사용하는 계약이고 두 번째 트랜잭션은 토큰을 계약으로 보내는 transferFrom입니다.
EIP-3074는 스마트 계약이 외부 소유 계정(EOA 또는 단순히 일반 이더리움 주소)에서 트랜잭션을 전송하는 방법을 도입하여 문제를 해결합니다.
이 EIP는 두 개의 EVM 명령인 AUTH 및 AUTHCALL을 소개합니다. 첫 번째는 ECDSA 기반 서명에 대해 *authorized* 컨텍스트 변수를 설정합니다. 두 번째는 호출을 *권한*으로 보냅니다. 이것은 본질적으로 EOA의 제어를 [a] 스마트 계약에 위임합니다.
AUTH 및 AUTHCALL EVM 명령(opcode라고도 함)을 사용하면 스마트 계약이 서명된 메시지를 기반으로 EOA를 승인하고 해당 EOA에서 트랜잭션("호출")을 보낼 수 있습니다. 이것은 다음과 같은 많은 가능성을 열어줍니다.
보조 제목
AUTH 및 AUTHCALL opcode
EIP-3074는 스마트 계약에서 호출할 수 있는 두 가지 새로운 opcode를 정의합니다.
EOA를 승인하려면 해당 EOA에서 서명된 메시지가 필요합니다. AUTH를 호출하는 스마트 계약은 메시지 서명에서 서명자를 복구한 다음 메시지 서명을 인증된 EVM 컨텍스트 변수로 설정할 수 있습니다. 이제 스마트 계약이 AUTHCALL을 호출할 때마다 호출자는 승인된 주소로 설정됩니다. 호출된 스마트 계약이 CALLER를 호출하면(예: Solidity의 msg.sender를 통해) 이제 이것은 호출을 수행한 스마트 계약의 호출자의 주소가 아니라 EOA를 승인하는 주소입니다.
하나 이상의 트랜잭션을 보내는 기본 흐름은 다음과 같습니다.
호출자 계약이 여러 트랜잭션을 보내는 기본 EIP-3074 흐름입니다.
보조 제목
인증 메시지 및 커밋
이미지 설명
(참고: ||는 바이트 연결 연산자로 사용됨)
이미지 설명
제출할 수 있는 예제를 포함한 인증 메시지 형식
커밋은 EOA가 커밋하는 개체를 설명하며 호출의 특정 속성(예: 주소, 값)을 기반으로 계산할 수 있습니다. 호출자 계약은 제공된 속성을 기반으로 제출을 다시 계산할 수 있으며 해당 필드가 올바른 경우 권한 부여가 수행됩니다.
예를 들어 다음 트랜잭션(JSON으로 표시됨)을 전송한다고 가정합니다.
이러한 필드를 해시하고(예: 결정론적 방식으로 함께 연결하거나 EIP-712와 같은 것을 사용) 커밋으로 사용할 수 있습니다.
우리는 이 JSON 데이터에 표시된 것처럼 스마트 계약으로 전송되는 트랜잭션 및 인증 메시지의 서명을 제공할 수 있습니다. 계약 기능은 다음과 같습니다.
스마트 계약은 커밋 트랜잭션을 다시 계산하고 이 커밋(서명과 함께)을 AUTH 호출에 제공합니다. 이렇게 하면 서명자의 주소 복구를 시도하고 커밋이 유효하지 않은 경우 서명에서 잘못된 주소가 복구되어 트랜잭션이 실패합니다.
텍스트
제한 사항 및 보안 문제
EIP-3074는 서명을 기반으로 CALLER를 변경할 수 있으며 이는 EVM 작동 방식을 크게 변경합니다. 이로 인해 신규 및 기존 계약에 잠재적인 취약점이 생길 수 있습니다. 따라서 EIP-3074가 감사됩니다.
텍스트
약한 커밋 및 재생 공격
위에서 언급한 바와 같이 EIP-3074는 제출을 위한 표준화된 형식을 정의하지 않습니다. 호출자는 원하는 방식으로 자유롭게 구현할 수 있습니다. 이는 호출자가 (예를 들어) 재생 공격에 대해 적절한 보호를 제공할 책임이 전적으로 있음을 의미합니다.
커밋에 nonce가 포함되어 있지 않으면 서명된 메시지를 가져와서 호출자에게 다시 보낼 수 있습니다. 악의적인 호출자는 커밋을 전혀 확인하지 않음으로써 EOA를 제어할 수 있습니다. 우리는 메시지에 서명할 때 항상 주의해야 합니다.
인증 메시지에 발신자의 주소를 포함함으로써 EIP-3074는 재생 공격에 대한 기본적인 보호 기능을 제공합니다. 이렇게 하면 한 호출자의 인증 메시지를 다른 호출자에게 재생할 수 없습니다.
업그레이드 가능한 발신자
EIP-3074는 호출자가 업그레이드할 수 없어야 한다고 명시적으로 명시합니다. 콜아웃을 업그레이드할 수 있는 경우 누군가 커밋의 유효성을 검사하지 않는 콜아웃의 다른 버전을 배포하여 계약에 EOA를 완전히 제어할 수 있습니다.
재진입 공격
현재 스마트 계약은 거래가 EOA(다른 계약이 아님)에서 전송되었는지 여부를 확인하는 require(tx.origin == msg.sender)를 사용할 수 있습니다. 이는 컨트랙트가 함수를 호출하는 것을 방지하므로 재진입 방지를 쉽게 할 수 있습니다.
결론적으로
결론적으로
EIP-3074는 이더리움에 많은 흥미로운 새로운 가능성을 제공합니다. AUTH 및 AUTHCALL을 사용하면 EOA가 스마트 계약 호출자에게 계정 제어를 위임하여 배치 트랜잭션, 스폰서 트랜잭션 등을 보낼 수 있습니다. 그러나 이더리움에서 트랜잭션이 작동하는 방식에 몇 가지 중요한 변화를 가져오므로 EIP-3074가 메인넷에서 활성화되기 전에 보안에 대해 더 많은 생각을 해야 합니다.


