블록체인

[Ethereum] EIP1559 네워크축 구축을 위한 제네시스 설정방법

멍개. 2022. 8. 28. 07:10

geth를 이용하여 노드를 구축할 때 EIP1559 사용가능한 형태로 노드를 띄우는 방법을 알아보겠습니다.

본론으로 들어가기 앞서서 EIP1559 방식이 무엇인지 궁금하다면 다음 링크에서 EIP1559가 무엇인지 간략하게 알 수 있습니다.

2022.08.28 - [블록체인] - [Ethereum] EIP1559 GETH, Ganache-cli 사용해보기

 

[Ethereum] EIP1559 GETH, Ganache-cli 사용해보기

현재 이더리움은 EIP1559 적용이 되었습니다. ​ EIP1559 적용 후 트랜잭션 발생시 gas 사용방법이 바뀌었습니다. ​ ▶ before(Legacy) { from, to, gas: 25000, gasPrice: '21000000000', value: '1000000000000..

meongae.tistory.com

EIP1559 방식을 사용하기 위해선 geth 프로그램 1.10.8 버전이후여야 합니다. 사실 앞의 블로그를 작성할 땐 geth 1.10.7 버전이었는데 해당 버전의 깃허브 README에서 genesis 정보를 제대로 알려주지 않아 EIP1559 방식의 트랜잭션을 발생할 수 없었습니다. 물론 README가 정리되어 있지 않더라도 코드(parmas/config.go)에서 어떤 설정값들을 넣어줘야 하는지 알 수 있습니다.

버전: 1.10.7

하지만 최신버전을 확인하면 다음과 같이 config에 londonBlock이 추가된 모습을 볼 수 있습니다.

버전: 1.10.8

londonBlock이 있어야 EIP1559 방식으로 트랜잭션을 발생할 수 있습니다.

{
  "config": {
    "chainId": "임의의 값",
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "londonBlock": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0x2fefd8",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

네트워크 구축 하는 방법은 기존에 방법과 동일하므로 다음 링크를 참고해주세요

 

2022.08.27 - [블록체인] - [ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기

 

[ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기

Geth를 이용하여 Ethash(POW) 기반 private network 구축하는 방법을 알아보겠습니다. ​ Geth는 POW(Ethash), POA(Clique), POS(Caspre)를 선택적으로 운용가능합니다. ​ 여기선 개념적인 내용보다 방법론적인..

meongae.tistory.com

● 트랜잭션 발생

트랜잭션 발생할 때 기존 방식(Legacy)은 gasgasPrice를 전달합니다. EIP1559는 gasPrice 대신 maxFeePerGas, maxPriorityFeePerGas를 전달합니다.

· Legacy

> eth.sendTransaction({
    from: eth.accounts[0],
    to: eth.accounts[1],
    gas: 25000,
    gasPrice: '21000000000',
    value: '10000000'
})

· EIP1559

eth.sendTransaction({
    from: eth.accounts[0],
    to: eth.accounts[1],
    gas: 25000,
    maxFeePerGas: "0xb2d05e00",         // 3000000000 = 3Gwei
    maxPriorityFeePerGas: "0xb2d05e00", // 3000000000 = 3Gwei
    value: '10000000'
})

● 트랜잭션 조회

트랜잭션을 조회하면 type으로 Legacy, EIP1559 트랜잭션을 구분할 수 있습니다.

· Legacy

· EIP1559

EIP1559도 gasPrice가 존재합니다. Legacy와 다르게 사용자가 지정하지 않고 프로토콜 레벨에서 결정됩니다. 마치 블록 생성시 difficulty가 블럭생성 주기를 결정하기 위해 증가/감소 되는 것 처럼 특정 알고리즘에 의해 결정합니다.

● genesis config 확인

추가적으로 각 네트워크 별 genesis설정은 깃허브에서 확인가능합니다.

https://github.com/ethereum/go-ethereum/blob/master/params/config.go

 

GitHub - ethereum/go-ethereum: Official Go implementation of the Ethereum protocol

Official Go implementation of the Ethereum protocol - GitHub - ethereum/go-ethereum: Official Go implementation of the Ethereum protocol

github.com

 

main network
ropsten network

Ethash는 POW로 동작하는 네트워크 입니다.

rinkeyby network
goerli network

Clique는 POA로 동작하는 네트워크입니다.