Skip to content

Commit f05c916

Browse files
author
sergerad
committed
Initial import
1 parent c5ba367 commit f05c916

File tree

219 files changed

+16520
-826
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+16520
-826
lines changed

CHANGELOG.md

Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to
7+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8+
9+
## [v1.0.0-beta.14]
10+
11+
* Limit the number of bytes read by NR RPC middleware
12+
13+
## [v1.0.0-beta.13]
14+
15+
* Remove deployer allowlist
16+
* Add `GETH_FLAG_IMMUTABLE_LONG_RANGE_SYNC` flag to allow snap sync from genesis
17+
18+
## [v1.0.0-beta.12]
19+
20+
#### Cancun
21+
This release enables Cancun fork on all Immutable zkEVM networks.
22+
| Network | Unix Timestamp | Date |
23+
| -------- | ------- | ------- |
24+
| Devnet | 1724796000 | Tue Aug 27 22:00:00 UTC 2024 |
25+
| Testnet | 1727128800 | Mon Sep 23 22:00:00 UTC 2024 |
26+
| Mainnet | 1728338400 | Mon Oct 7 22:00:00 UTC 2024 |
27+
28+
* Enable `ExcessBlobGas`, `BlobGasUsed`, `ParentBeaconRoot`
29+
* All values are `0x0`
30+
* Enable `WithdrawalsHash`, and `Withdrawals` headers
31+
* `Withdrawals` are empty and `WithdrawalsHash` is the corresponding digest
32+
* Enable `TSTORE`, `TLOAD`, and `MCOPY` op codes
33+
* Enable `BLOBHASH` op code
34+
* Enable Point Evaluation precompile
35+
* Update `SELFDESTRUCT` op code
36+
* Update clique stack to support Cancun
37+
* Disable blob transactions
38+
* Re-order logic that sets blob block headers and beacon root header to after `engine.Prepare` in order to interoperate with clique which produces variable blocktimes (rather than fixed slots)
39+
40+
41+
#### Other
42+
43+
* Add `--gossipdefault` flag to toggle default geth tx gossiping
44+
* Add GETH_FLAG_P2P_SUBNET env var to limit inbound messages based on subnet
45+
* Add specific peer message handling in `eth/handler.go` to disable ingestion of state
46+
* Add `--rpcproxy` flag to toggle RPC proxy forwarding
47+
* Add RPC proxy forwarding to Immutable zkEVM
48+
* Add `--disabletxpoolgossip` flag to disable tx gossiping
49+
* Add `--gossipdefault` flag to toggle default geth tx gossiping
50+
* Add GETH_FLAG_P2P_SUBNET env var to limit inbound messages based on subnet
51+
52+
## [v1.0.0-beta.11]
53+
54+
* Added partner public role to init container logic
55+
56+
## [v1.0.0-beta.10]
57+
58+
* Add log to correlate block period with block number and hash
59+
60+
## [v1.0.0-beta.9]
61+
62+
* Reject forkids that do not contain prevrandao fork
63+
* Disable more RPC namespaces
64+
* Correct the embedded mainnet.toml's price limit value to 10 gwei
65+
66+
## [v1.0.0-beta.8]
67+
68+
* Add prevrandao fork to forkid
69+
* Pull v1.13.15 from upstream: [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)
70+
* Log peer fullnames rather than abbreviated
71+
* Do not rate limit peer connections that match on the supplied networks from the net restrict configuration
72+
* Reduce p2p discv4 default refresh interval
73+
74+
## [v1.0.0-beta.7]
75+
76+
* Create Prevrandao fork
77+
* Fix issues syncing with testnet and mainnet relating to Prevrandao fork
78+
79+
## [v1.0.0-beta.6]
80+
81+
* Update geth version logic to be based on immutable/go-ethereum releases
82+
* Add `downloader/sync` metric
83+
84+
## [v1.0.0-beta.5]
85+
86+
* Pull v1.13.14 from upstream: [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)
87+
* Make `DefaultBaseFeeChangeDenominator` consistent with upstream (8) and mutate it based on chain configuration
88+
* If chain configuration matches Immutable zkEVM network ID and clique settings, set `DefaultBaseFeeChangeDenominator` to 50
89+
* Validate chain configuration based on expected values if Immutable zkEVM network ID is specified
90+
* Use minimum price limit instead of last price to represent the priority fee of each fetched empty block inside suggested tip cap endpoint.
91+
* Add block period, block propagation, and suggested tip cap metrics
92+
93+
## [v1.0.0-beta.4]
94+
95+
- Fix PREVRANDAO opcode on shanghai network by setting random to mixhash
96+
97+
## [v1.0.0-beta.3]
98+
99+
- Testing release flow
100+
101+
## [v1.0.0-beta.2]
102+
103+
- Enforce minimum price limit on suggested tip cap endpoint
104+
105+
## [v1.0.0-beta.1]
106+
107+
This release enables Shanghai fork on all Immutable zkEVM networks.
108+
| Network | Unix Timestamp | Date |
109+
| -------- | ------- | ------- |
110+
| Devnet | 1709067600 | Tue Feb 27 21:00:00 UTC 2024 |
111+
| Testnet | 1710280800 | Tue Mar 12 22:00:00 UTC 2024 |
112+
| Mainnet | 1711490400 | Tue Mar 26 22:00:00 UTC 2024 |
113+
114+
The following changes were made to support the forks:
115+
- Update clique to
116+
- allow for Shanghai to be enabled; and
117+
- log more detail around existence of withdrawals and withdrawals hashes
118+
- Update geth node initialization from genesis
119+
- Add command to be used instead of `geth init`
120+
```sh
121+
geth immutable bootstrap rpc --zkevm testnet --datadir "..."
122+
```
123+
- genesis.json has been removed from Docker image
124+
- Update geth node run configuration
125+
- Add `--zkevm [testnet|mainnet]` flag to automatically configure genesis and fork overrides
126+
127+
## [v0.0.16]
128+
129+
- Add `geth immutable run boot` command for running boot node on cluster
130+
- Move boot node p2p keys to Secrets Manager
131+
- Update logs around allowlists
132+
- Added more logging for ACL initialisation and a log when ACL rejects a TX from pool
133+
134+
## [v0.0.15]
135+
136+
- Re-enabled single sequencer invariants
137+
138+
## [v0.0.14]
139+
140+
- Change pod initialization process to use Put instead of Push
141+
142+
## [v0.0.13]
143+
144+
- Implement Immutable wallet backend
145+
- Add AWS Secrets Manager backend store implementation for private key access via AWS
146+
- Add local keystore backend store implementation for testing purposes
147+
- Add `GETH_FLAG_IMMUTABLE_AWS_REGION` and `POD_NAMESPACE` env var support for configuring aws wallet backend
148+
- Add `GETH_FLAG_PASSWORD_FILEPATH` env var to existing password filepath flag
149+
- Added flag to disable Clique endpoints on RPC server
150+
- Added Clique Client
151+
- Added CLI for Clique Voting
152+
153+
## [v0.0.12]
154+
155+
- Revert dialHistoryExpiration change back to 35s
156+
157+
## [v0.0.11]
158+
159+
- Revert change to always drop peers when find node errors are greater than the threshold
160+
- Reduce dialHistoryExpiration from 35 seconds to 5
161+
162+
## [v0.0.10]
163+
164+
- Decrease `seedMaxAge` to 1 second to ensure that nodes always query boot node for peer IPs
165+
- Always drop peers when find node errors are greater than the threshold
166+
167+
## [v0.0.9]
168+
169+
- Automation / CD updates only. Releasing with latest prod workflows.
170+
171+
## [v0.0.8]
172+
173+
- Added max block range for logs queried using eth_getLogs (#346)
174+
- Default mainnet configuration (`/etc/geth/mainnet.toml`) and genesis (`/etc/geth/mainnet.json`) added to Docker image
175+
176+
## [v0.0.7]
177+
178+
- Automation / CD updates only: immutable init command
179+
180+
## [v0.0.6]
181+
182+
- Automation / CD updates only
183+
184+
## [v0.0.5]
185+
186+
- Reduce price limit 100->10 Gwei
187+
188+
## [v0.0.4]
189+
190+
### Added
191+
192+
- Default testnet configuration (`/etc/geth/testnet.toml`) and genesis (`/etc/geth/testnet.json`) added to Docker image
193+
194+
## [v0.0.3]
195+
196+
### Added
197+
198+
- Add NewRelic agent to geth runtime for application metrics
199+
200+
### Fixed
201+
202+
- Price limit being 100 Gwei rather than 100 Gwei - 1 Wei
203+
- Fixed bug in ACLs that caused transactions to be blocked when they should not have been
204+
205+
## [v0.0.2]
206+
207+
### Changed
208+
209+
- Change to add access control layer to geth legacypool, which safeguards txs
210+
from entering txpool if the sender is part of a collective SDN list (#17)
211+
- Mempool Rebroadcasting: Legacy pool now rebroadcasts pending transactions
212+
whenever a pool reorg is triggered. Pool reorgs are triggered when a new block
213+
is received - (#103)
214+
- Transaction Broadcasting: Transactions are broadcast to all peers, not a
215+
square root. All peers get the transaction, regardless of whether they may
216+
have previously received it. All peers get the full transaction payload, i.e.
217+
no more announcements. (#103)
218+
- Changed `maxUncleDist` from 7 to 0. This means old blocks are rejected,
219+
reducing chance of reorgs. (#156)
220+
- Changed `maxQueueDist` from 32 to 256. This means more blocks in the future
221+
can be received without being rejected. This is to account for our increased
222+
block production due to reduced block time. (#156)
223+
- Changed `blockLimit` from 64 to 256. Since we only have a small amount of
224+
peers, more will come from the same set of peers, so we need to allow for
225+
this. (#156)
226+
- Added invariants to prevents reorgs (#175)
227+
- Added check for NoLocals on legacytxpool to reject underpriced TXs
228+
- Changed the `DefaultBaseFeeChangeDenominator` from 8 to 50. This makes the max
229+
base fee rate of change 2%, instead of 12.5%. With a block time of 2 seconds,
230+
we match Ethereum in that it would take 72 seconds for the base fee to double.
231+
(#178)
232+
- Mine a tx even if its effective tipcap (tipcap-basefee) is less than miner's minimum tipcap (which is pricelimit, or 100 gwei) (#258)
233+
234+
### Added
235+
236+
- CLI commands for bootstrapping local and remote Immutable chains
237+
- Added CLI parameter options for the geth immutable bootstraper, which can
238+
potentially takes in a list of filepaths for blocklists and allowlists (#83)
239+
- Added flags to disable Admin/Txpool/Engine/Debug endpoints on RPC server
240+
241+
### Fixed
242+
243+
[unreleased]: https://github.com/immutable/go-ethereum/compare/v1.11.6-beta.1...HEAD

Dockerfile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,25 @@ RUN apk add --no-cache gcc musl-dev linux-headers git
1212
COPY go.mod /go-ethereum/
1313
COPY go.sum /go-ethereum/
1414
RUN cd /go-ethereum && go mod download
15-
1615
ADD . /go-ethereum
1716
RUN cd /go-ethereum && go run build/ci.go install -static ./cmd/geth
1817

1918
# Pull Geth into a second stage deploy alpine container
20-
FROM alpine:latest
19+
FROM alpine:3.18.4
2120

2221
RUN apk add --no-cache ca-certificates
2322
COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/
2423

25-
EXPOSE 8545 8546 30303 30303/udp
24+
# Default config
25+
RUN mkdir /etc/geth
26+
ADD ./immutable/config/testnet.toml /etc/geth/testnet.toml
27+
ADD ./immutable/config/mainnet.toml /etc/geth/mainnet.toml
28+
29+
# Public config
30+
ADD ./immutable/config/testnet-public.toml /etc/geth/testnet-public.toml
31+
ADD ./immutable/config/mainnet-public.toml /etc/geth/mainnet-public.toml
32+
33+
EXPOSE 8545 8546 30300 30300/udp
2634
ENTRYPOINT ["geth"]
2735

2836
# Add some metadata labels to help programatic image consumption

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ devtools:
4343
@type "solc" 2> /dev/null || echo 'Please install solc'
4444
@type "protoc" 2> /dev/null || echo 'Please install protoc'
4545

46+
# CHANGE(immutable): immutable specific makes
47+
immutable-test:
48+
go test -run Immutable ./... | grep -v "\[no tests to run\]" | grep -v "\[no test files\]"
49+
4650
#? help: Get more info on make commands.
4751
help: Makefile
4852
@echo " Choose a command run in go-ethereum:"

0 commit comments

Comments
 (0)