evm
-
Deep dive into EIP-4844: Blob Carrying Transactionsevm 2025. 7. 26. 16:35
Intro이더리움은 베를린 하드포크(2021-04-15) 이후 EIP1559 transaction(EIP-1559)과 Access List Transaction(EIP-2930)를 도입하며, 기존에 사용하던 transaction(Legacy Transaction)과 함께 3가지의 transaction이 메인넷에 도입됬다. 이때, transaction을 전달받는 네트워크가 transaction를 구분하기 위해 EIP-2718를 도입하여 아래와 같이 type을 지정했다. nametypeLegacy Transaction0x00Access List Transaction0x01EIP-1559 Transaction0x02Blob Carrying Transactions0x03 type은 RLP 인코딩 단계에서 가장 ..
-
Deep dive into EIP-7702evm 2025. 7. 23. 15:29
Intro : Why EIP-7702이더리움 지갑은 ‘0x’로 시작하는 40자리 16진수 문자열, 즉 주소(address)로 식별된다. 이러한 주소 형태를 갖춘 값이라면 코인과 토큰을 보관할 수 있는 지갑이 될 수 있으며, 이더리움에서는 크게 두 가지 방식의 지갑 계정을 정의한다.외부 소유 계정(EOA: Externally Owned Account): 개인키(private key)로부터 파생된 공개키 주소컨트랙트 계정(CA: Contract Account): 스마트 컨트랙트에 할당된 주소 EOA는 고유한 단일 비밀키를 통해 파생되며, 이 키를 소유하고 있는 사람이 지갑의 자산을 관리하는 주인이 된다. 그러나 이러한 구조는 개인키 관리가 매우 불편하며 블록체인 사용자에게 불편한 UX를 야기시킨다. 개인키 ..
-
이더리움 비콘체인의 무작위성 : RANDAO 프로토콜evm 2025. 7. 22. 16:13
Intro무작위성는 보안과 공정성 모두를 위해 무허가형(permissionless) 블록체인 프로토콜의 중요한 부분이다. 때문에 Ethereum의 지분 증명 프로토콜은 위원회 구성원의 역할을 무작위로 선별하여 공정성과 더불어, 예측 불가능한 흐름을 통해 보안성을 제공한다.이더리움 비콘체인은 프로토콜 내 무작위성을 제공하기 위해 RANDAO 메커니즘을 사용한다. 여기서 RANDAO는 단순히 기여자(contributor)가 제공하는 무작위성을 점진적으로 모으는 어큐뮬레이터(accumulator:축적기)를 의미한다. 기여자는 블록을 생성 할 때 마다 기존에 축적된 값(value)에 또 다른 값을 섞어 넣어 무작위성에 기여하게 된다. The RANDAO비콘체인의 모든 블록에는 해당 블록의 제안자가 제공한 (검증..
-
가스비 대납을 위한 메타 트랜잭션(Meta-Transactions)evm 2025. 7. 22. 13:24
Intro현재 Web3 생태계는 Web2 사용자가 쉽게 참여할 수 있도록, 번거로운 진입 장벽을 개선하기 위해 노력하고 있다. 이런 취지로 Web2 사용자가 쉽게 Dapp을 이용할 수 있게 가스비를 대납해주는 방법 또한 관심이 높아지고 있다. 이런 관심 속에서 메타 트랜잭션(Meta-Transactions)라는 개념이 등장한다. 우리가 Dapp의 서비스를 이용하며 On Chain에 어떤 동작을 호출할때, 정해진 가스비가 포함된 트랜잭션(Transaction)을 블록체인 네트워크로 전송한다. 여기서 사용된 트랜잭션을 제3자가 가스비를 대신 지불할 수 있도록 하는 솔루션으로 확장한 개념이 메타 트랜잭션이다. 이더리움은 사용자가 가스비 대납을 요청하는 메타 트랜잭션과, 외부에서 개인키로 서명한 요청을 온체인에..
-
EIP-150 : 이더리움의 63/64 Ruleevm 2024. 2. 22. 21:43
본 내용은 EIP-150에 대한 내용을 다루고 있습니다.Intro2016년 7월 20일에 이더리움 비잔티움 하드포크 당시, 업데이트된 이더리움 개선 제안(EIP)으로 EIP-150가 프로토콜에 반영된 적이 있다. 이는 스마트 컨트랙트의 함수 로직 내부에 외부 함수(다른 컨트렉트의 함수) 호출(external call) 시, 연산되는 가스비를 63/64 Rule 규칙을 도입하여 재정의하자는 내용으로, 이더리움 프로토콜 내에 큰 변화를 주는 의미있는 EIP였다. 지금부터 EIP-150와 63/64 Rule 규칙이 어떤것인지 알아보자. EIP-150이더리움 공식 Github에 나와있는 EIP-150의 제목은 “IO(input/output)이 많은 작업의 가스 비용 변화(Gas cost changes for..
-
EIP-2718 : 이더리움의 트랜잭션 유형별 Type & Payloadevm 2024. 2. 20. 17:37
본 게시글은 EIP-2718 & EIP-1559 & EIP-2930 & EIP-2929에 대한 내용을 다루고 있습니다. Intro이더리움의 블록체인은 우리가 보내는 트랜잭션에 작성된 내용을 참고하여 우리가 원하는 동작을 수행한다. 해당 내용은 정해진 표준이 존재하며, 여러 가지 유형이 존재한다. 블록체인 노드는 표준에서 벗어난 트랜잭션은 받아들이지 않는다. 때문에 올바른 트랜잭션을 전송하기 위해서는 이더리움에서 인정하는 표준 양식에 대해 숙지하고 있어야 하는 것이 중요하다. 이번 포스트를 통해 이더리움이 어떤 트랜잭션 표준을 따르는지에 대해 알아보자. Transaction Type & Payload 이더리움의 Transaction은 크게 Transaction Type(이하 Type) 과Transacti..
-
EIP-3855 : EVM의 새로운 Opcode PUSH0을 소개합니다evm 2024. 2. 10. 17:34
Intro한국 시간 2023년 4월 13일 목요일, 이더리움은 상하이 업그레이드를 통해 실행 레이어(execution layer)에 새로운 표준(EIP)를 반영한다. 이 중에서도 EIP-3855가 추가되어 새로운 Opcode PUSH0를 이더리움 가상 머신(EVM)에 도입한다. Opcode PUSH0상하이 업데이트 이후, geth Github의 opcodes.go를 보면 PUSH0(0x5f)를 확인할 수 있다. 기능은 아주 간단하다. EVM Stack 최상단에 0(0x00)을 추가한다.Bytescode로 컴파일(compile)된 코드에서 Stack 최상단에 0을 추가해야하는 경우는 생각보다 굉장히 빈번하다. 특히, memory나 storage의 offset을 정의할때 0이 필요하다. 예를들어 Opcode..
-
Deploy Smart Contract 원리 및 Opcode 해석 : Creation Code & Runtime Codeevm 2024. 2. 7. 22:53
IntroRemix 또는 Hardhat 같은 프레임워크로 간단하게 스마트 컨트랙트 배포를 경험해본적이 있을 것이다. 하지만 컨트랙트 배포(Deploy)는 Low-Level 수준에서 보면 복잡하고 읽기 힘든 Opcode에 따라 동작하게된다. 이런 복잡하고 머리 아픈 저수준 바이트코드를 왜 해석해야는지 의문이 들수도 있다.글쓴이는 Factory Pattern에서 다양한 컨트랙트를 개발하는 요즘 트렌드를 보며 Creation Code와 Runtime Code를 저수준에서 해석할수 있는 역량이 필요하다고 생각했다. 또한, Minimal Proxy(ERC-1167)처럼 스마트컨트랙트 로직을 전부 Opcode로 구현하는 경우도 있다. 이러한 계기로 이번 주제를 통해 스마트컨트랙트 배포에 사용되는 Opcode를 하나..