[Ethereum] EIP1559 네워크축 구축을 위한 제네시스 설정방법
geth를 이용하여 노드를 구축할 때 EIP1559 사용가능한 형태로 노드를 띄우는 방법을 알아보겠습니다.
본론으로 들어가기 앞서서 EIP1559 방식이 무엇인지 궁금하다면 다음 링크에서 EIP1559가 무엇인지 간략하게 알 수 있습니다.
2022.08.28 - [블록체인] - [Ethereum] EIP1559 GETH, Ganache-cli 사용해보기
EIP1559 방식을 사용하기 위해선 geth 프로그램 1.10.8 버전이후여야 합니다. 사실 앞의 블로그를 작성할 땐 geth 1.10.7 버전이었는데 해당 버전의 깃허브 README에서 genesis 정보를 제대로 알려주지 않아 EIP1559 방식의 트랜잭션을 발생할 수 없었습니다. 물론 README가 정리되어 있지 않더라도 코드(parmas/config.go)에서 어떤 설정값들을 넣어줘야 하는지 알 수 있습니다.
하지만 최신버전을 확인하면 다음과 같이 config에 londonBlock이 추가된 모습을 볼 수 있습니다.
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 구축하기
● 트랜잭션 발생
트랜잭션 발생할 때 기존 방식(Legacy)은 gas와 gasPrice를 전달합니다. 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
Ethash는 POW로 동작하는 네트워크 입니다.
Clique는 POA로 동작하는 네트워크입니다.