evm
-
EIP-150 : 이더리움의 63/64 Ruleevm 2024. 2. 22. 21:43
Author : 최원혁 본 내용은 EIP-150에 대한 내용을 다루고 있습니다. Intro 2016년 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 co..
-
EIP-2718 : 이더리움의 트랜잭션 유형별 Type & Payloadevm 2024. 2. 20. 17:37
Author : 최원혁 본 게시글은 EIP-2718 & EIP-1559 & EIP-2930 & EIP-2929에 대한 내용을 다루고 있습니다. Intro 이더리움의 블록체인은 우리가 보내는 트랜잭션에 작성된 내용을 참고하여 우리가 원하는 동작을 수행한다. 해당 내용은 정해진 표준이 존재하며, 여러 가지 유형이 존재한다. 블록체인 노드는 표준에서 벗어난 트랜잭션은 받아들이지 않는다. 때문에 올바른 트랜잭션을 전송하기 위해서는 이더리움에서 인정하는 표준 양식에 대해 숙지하고 있어야 하는 것이 중요하다. 이번 포스트를 통해 이더리움이 어떤 트랜잭션 표준을 따르는지에 대해 알아보자. Transaction Type & Payload 이더리움의 Transaction은 크게 Transaction Type(이하 Typ..
-
EIP-3855 : EVM의 새로운 Opcode PUSH0을 소개합니다evm 2024. 2. 10. 17:34
Author : 최원혁 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이 필..
-
Deploy Smart Contract 원리 및 Opcode 해석 : Creation Code & Runtime Codeevm 2024. 2. 7. 22:53
Author : 최원혁 Intro Remix 또는 Hardhat 같은 프레임워크로 간단하게 스마트 컨트랙트 배포를 경험해본적이 있을 것이다. 하지만 컨트랙트 배포(Deploy)는 Low-Level 수준에서 보면 복잡하고 읽기 힘든 Opcode에 따라 동작하게된다. 이런 복잡하고 머리 아픈 저수준 바이트코드를 왜 해석해야는지 의문이 들수도 있다. 글쓴이는 Factory Pattern에서 다양한 컨트랙트를 개발하는 요즘 트렌드를 보며 Creation Code와 Runtime Code를 저수준에서 해석할수 있는 역량이 필요하다고 생각했다. 또한, Minimal Proxy(ERC-1167)처럼 스마트컨트랙트 로직을 전부 Opcode로 구현하는 경우도 있다. 이러한 계기로 이번 주제를 통해 스마트컨트랙트 배포에 ..