일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스마트 컨트랙트
- Python
- 블록체인
- web3.js
- 트랜잭션
- ERC20
- 솔리디티
- JavaScript
- erc
- server
- blockchain
- github
- 이더리움
- Programming
- 네트워크
- geth
- solidity
- ERC165
- truffle
- erc721
- NFT
- ethers
- Ethereum
- Docker
- web3
- git
- 제어의역전
- MySQL
- tcp
- web
- Today
- Total
멍개의 연구소
[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로 동작하는 네트워크입니다.
'블록체인' 카테고리의 다른 글
[solidity] 에러함수 - require, revert, assert (0) | 2022.08.28 |
---|---|
[Ethereum] genesis 초기화 시 cannot unmarshal 에러 해결법 (0) | 2022.08.28 |
[Ethereum] EIP1559 GETH, Ganache-cli 사용해보기 (0) | 2022.08.28 |
[ethereum] ERC721을 이용한 NFT 만들기 - 1편 (0) | 2022.08.28 |
[ethereum] 이더리움 네트워크 모니터링 시스템 구축 (0) | 2022.08.28 |