Releases: celo-org/celo-blockchain
Celo-Blockchain Release 1.8.7
This release can be skipped for mainnet.
The latest release sets the L2MigrationBlock for Alfajores testnet (already migrated but to keep a clean client):
Block Number: 26384000
Sep-26-2024 08:14:35 AM UTC
Full Changelog: v1.8.5...v1.8.7
Docker Images
- geth: us.gcr.io/celo-org/geth:1.8.7
- geth-all: us.gcr.io/celo-org/geth-all:1.8.7
Celo-Blockchain Release 1.8.5
What's Changed
This release can be skipped for mainnet.
The latest release introduces a new command-line flag, --l2migrationblock
, which expects a (future) block number. When specified, the node will pause at l2migrationblock - 1 block. This feature is designed to assist chain operators with the migration to the new Cel2 architecture.
Full Changelog: v1.8.4...v1.8.5
Docker Images
- geth: us.gcr.io/celo-org/geth:1.8.5
- geth-all: us.gcr.io/celo-org/geth-all:1.8.5
Celo-Blockchain Release 1.8.4
Bug Fixes
The v1.8.3 release introduced a bug in the effectiveGasPrice
calculation for the RPC output. This release fixes that bug. All fee payments have been correct all the time.
Full Changelog: v1.8.3...v1.8.4
Docker Images
- geth: us.gcr.io/celo-org/geth:1.8.3
- geth-all: us.gcr.io/celo-org/geth-all:1.8.3
Celo-Blockchain Release 1.8.3
This release mainly adds features to the JSON RPC.
The finalized
tag was added to the RPC methods for retrieving blocks or headers. The resulting blocks are equivalent to latest
blocks, since CELO has 1-block finality.
Additionally the eth_getBlockReceipts
endpoint has been implemented, providing a more efficient way to receive all block receipts for a block (see ethereum/execution-apis#393)
This release is recommended for users that rely on the eth_getBlockReceipts
endpoint or retrieving finalized
blocks from the RPC.
Enhancements
- Implement
eth_getBlockReceipts
(#2284) - Allow use of
finalized
tag in rpc requests (#2298) - Add
--json
flag to mycelo env (#2300)
Full Changelog: v1.8.2...v1.8.3
Docker Images
- geth: us.gcr.io/celo-org/geth:1.8.3
- geth-all: us.gcr.io/celo-org/geth-all:1.8.3
Celo-Blockchain Release 1.8.2
Celo-blockchain v1.8.2 includes a a collection of bug fixes and improvements in preparation of the launch of new fee currencies.
We highly recommend this update for all users.
Enhancements
- Validate debitGasFees execution in tx pool (#2279)
- Improve error messages for credit/debit reverts (#2271)
- Remove special handling for gas estimation (#2274)
Bug fixes
- fix: Only skip debit/credit on gas estimation (#2273)
- Correct hardcoded gas limit for mainnet (#2272)
- p2p: move ping handling into pingLoop goroutine (#2280)
Docker Images
geth: us.gcr.io/celo-org/geth:1.8.2
geth-all: us.gcr.io/celo-org/geth-all:1.8.2
Celo-Blockchain Release 1.8.1
Celo-blockchain v1.8.1 includes a a collection of bug fixes and enhancements for the blockchain client.
We recommend this update for all users.
Enhancements
- eth/filters: send rpctransactions in pending-subscription (#2252)
- eth/tracers: add txHash field on txTraceResult (#2254)
- eth/filter, ethclient/gethclient: added fullTx-flag to NewPendingTransactions (#2239)
- Implemented the limit per fee currency (#2203)
- Improve performance of answerGetBlockBodiesQuery (#2198)
- build: upgrade to go 1.19 (#2189)
- RSDB: metrics and performance improvements (#2184)
Bug fixes
- Skip debit/credit during gas estimation (#2258)
- Properly create SysCtx in AccessList RPC (#2257)
- Hardcode pre gingerbread block gas limits for existing chains (#2229)
- Fix underpriced check for multi currency (#2230)
- Fix genesis block gingerbread fields (#2245)
- Use glibc for amd64 and muslc for arm64 (#2213)
- Add chain_head_gasprice gauge metric (#2208)
- Handle failing fee conversion (#2159)
- Fix tracing for transactions using on-chain randomness in latest block (#2186)
Docker Images
geth: us.gcr.io/celo-org/geth:1.8.1
geth-all: us.gcr.io/celo-org/geth-all:1.8.0
Celo-Blockchain Release 1.8.1-rc.1
Celo-blockchain v1.8.1-rc.1 includes a a collection of bug fixes and enhancements for the blockchain client.
Enhancements
- eth/filters: send rpctransactions in pending-subscription (#2252)
- eth/tracers: add txHash field on txTraceResult (#2254)
- eth/filter, ethclient/gethclient: added fullTx-flag to NewPendingTransactions (#2239)
- Implemented the limit per fee currency (#2203)
- Improve performance of answerGetBlockBodiesQuery (#2198)
- build: upgrade to go 1.19 (#2189)
- RSDB: metrics and performance improvements (#2184)
Bug fixes
- Skip debit/credit during gas estimation (#2258)
- Properly create SysCtx in AccessList RPC (#2257)
- Hardcode pre gingerbread block gas limits for existing chains (#2229)
- Fix underpriced check for multi currency (#2230)
- Fix genesis block gingerbread fields (#2245)
- Use glibc for amd64 and muslc for arm64 (#2213)
- Add chain_head_gasprice gauge metric (#2208)
- Handle failing fee conversion (#2159)
- Fix tracing for transactions using on-chain randomness in latest block (#2186)
Docker Images
Celo-Blockchain Release 1.8.0-stable
The Mainnet activation block is 21616000
targeting an activation at ~17:15 UTC on Tuesday September 26th.
The Alfajores activation block is 19814000
targeting an activation at ~17:30 UTC on Monday September 11th.
The biggest and most important change in v1.8.0 is the implementation and activation of the Gingerbread Fork
Gingerbread Hardfork
For an overview of all the CIPs included in the hardfork, see CIP-62, the Gingerbread hardfork.
Below follows an overview of changes, which is grouped by affected parts of the protocol rather than the originating CIPs.
Sending transactions
As a result of CIP-57, transactions must not set the fields gatewayFee
or gatewayFeeRecipient
.
A new envelope transaction is added, the CIP-64: New Transaction Type: Celo Dynamic Fee v2, which is the EIP-1559 tx, with the feeCurrency
. Check the deprecation warning on the CIP-62, but this new transaction is going to be the only valid way to pay in a different currency in the future, so we recommend to start migrating the applications that use that feature.
Changing gas costs
CIP-58 changes the gas costs to be more in line with Ethereum. As a result, transactions will have different (usually somewhat higher) gas costs than before.
New block header fields and header hash calculation
The following fields have been added to the block header and the JSON-RPC output in order to increase compatibility with Ethereum:
baseFee
gasLimit
difficulty
(constant)nonce
(constant)uncles
(constant; included in the RPC output, but actually only stored in the block body, not the header)sha3Uncles
(constant)mixHash
(constant)
By adding new fields to the header, the header hash calculation also changes. Fortunately, this allows us to use exactly the same hash calculation as Ethereum. The header is now calculated by hashing the fields in the following order:
- parentHash
- sha3Uncles
- miner
- stateRoot
- transactionsRoot
- receiptsRoot
- logsBloom
- difficulty
- number
- gasLimit
- gasUsed
- timestamp
- extraData
- mixHash
- nonce
- baseFee
New opcodes
Along with the header fields baseFee
and gasLimit
, opcodes for fetching these values are provided:
Opcode name | hex | solidity | CIP |
---|---|---|---|
GASLIMIT | 0x45 | block.gaslimit | CIP-60 |
BASEFEE | 0x48 | block.basefee | CIP-61 |
Removed features
In addition to the changes above, some features have been removed, which should not impact Celo users in any noticeable way:
- CIP-53: Remove minimum client version check
- CIP-54: Remove sending of community rewards to reserve if undercollaterized
- CIP-55: Remove Tobin Tax
- CIP-56: Remove freezable check on epoch rewards
- CIP-63: Remove BLS-12377, BLS-12381, CIP-20 and CIP-25 precompiles
Base fee recipients
Another change that should not be directly noticeable by users, but is interesting enough to call out explicitly is CIP-52: Ultragreen Celo, which burns 80% of each transactions base fee and directs the other 20% to the Green Fund.
Block Data Limit
A limit of 5mb on the transactions' data was added to allow us to increase the block gas limit avoiding some specific attacks that aim to stall the network with bigger blocks. More info in the CIP-65: Total Transaction Data Limit. The actual limit due to our gas limit is less than 5mb, so this change won't affect any functionality, but will give us the tools to increase our throughput.
Flag changes
The following flag has been deprecated and will be removed in a future release.
--disablerpcethcompatibility (all blocks are going to be ethCompatible after the hard fork)
--light.gatewayfee
The following flag has been added
--rpc.gaspricemultiplier value Multiplier applied to the gasPrice rpc call (1 = gasPrice, 1.3 = gasPrice + 30%, etc. Defaults to 2.0) (default: 2)
gaspricemultiplier
was 5 by default to guarantee every tx more time in the tx_pool, but we changed it to settable by node operators request.
Other notable changes
- Fix transfer prestate tracer (#2075)
- Merge native tracer (#2137) (from upstream)
- Fix RPC calls (gasLimit, gasPrice) use the initial state of the block (#2161)
- The RPC block responses were serializing the wrong
gasLimit
and thebaseFeePerGas
. Instead of showing those fields with the initial state of the block, were using the final state, so they were showing the data of the block N+1 for those fields. - The RPC transaction responses for types DynamicFeeTx (
0x02
) or CeloDynamicFeeTx (0x7c
) were serializing the wrong gasPrice. Instead of using thebaseFee
of the initial state of the block, were using the final state, so those transactions were showing the gasPrice calculation with the block N+1 data.
- The RPC block responses were serializing the wrong
Docker Images
geth: us.gcr.io/celo-org/geth:1.8.0
geth-all: us.gcr.io/celo-org/geth-all:1.8.0
Celo-Blockchain Release 1.8.0-beta.2
v1.8.0-beta.2 is the Baklava-only release of v1.8.0, which has the functionalities of the second part of the Gingerbread Hardfork. After testing on the Baklava testnet, it will be followed by v1.8.0-stable which will be intended for both Mainnet and Alfajores networks.
The baklava activation block of the Gingerbread Part 2 is 19157000
targeting an activation at ~14:30 UTC on Friday September 1st.
The biggest and most important change in v1.8.0 is the implementation and activation of the Gingerbread Fork
Gingerbread Hardfork
For an overview of all the CIPs included in the hardfork, see CIP-62, the Gingerbread hardfork (the CIP will be in final stage for the stable version with all the activation blocks).
Below follows an overview of changes, which is grouped by affected parts of the protocol rather than the originating CIPs.
Sending transactions
As a result of CIP-57, transactions must not set the fields gatewayFee
or gatewayFeeRecipient
.
[Gingerbread Part 2] A new envelope transaction is added, the CIP-64: New Transaction Type: Celo Dynamic Fee v2, which is the EIP-1559 tx, with the feeCurrency
. Check the deprecation warning on the CIP-62, but this new transaction is going to be the only valid way to pay in a different currency in the future, so we recommend to start migrating the applications that use that feature.
Changing gas costs
CIP-58 changes the gas costs to be more in line with Ethereum. As a result, transactions will have different (usually somewhat higher) gas costs than before.
New block header fields and header hash calculation
The following fields have been added to the block header and the JSON-RPC output in order to increase compatibility with Ethereum:
baseFee
gasLimit
difficulty
(constant)nonce
(constant)uncles
(constant; included in the RPC output, but actually only stored in the block body, not the header)sha3Uncles
(constant)mixHash
(constant)
By adding new fields to the header, the header hash calculation also changes. Fortunately, this allows us to use exactly the same hash calculation as Ethereum. The header is now calculated by hashing the fields in the following order:
- parentHash
- sha3Uncles
- miner
- stateRoot
- transactionsRoot
- receiptsRoot
- logsBloom
- difficulty
- number
- gasLimit
- gasUsed
- timestamp
- extraData
- mixHash
- nonce
- baseFee
New opcodes
Along with the header fields baseFee
and gasLimit
, opcodes for fetching these values are provided:
Opcode name | hex | solidity | CIP |
---|---|---|---|
GASLIMIT | 0x45 | block.gaslimit | CIP-60 |
BASEFEE | 0x48 | block.basefee | CIP-61 |
Removed features
In addition to the changes above, some features have been removed, which should not impact Celo users in any noticeable way:
- CIP-53: Remove minimum client version check
- CIP-54: Remove sending of community rewards to reserve if undercollaterized
- CIP-55: Remove Tobin Tax
- CIP-56: Remove freezable check on epoch rewards
- CIP-63: Remove BLS-12377, BLS-12381, CIP-20 and CIP-25 precompiles [Gingerbread Part 2]
Base fee recipients
Another change that should not be directly noticeable by users, but is interesting enough to call out explicitly is CIP-52: Ultragreen Celo, which burns 80% of each transactions base fee and directs the other 20% to the Green Fund.
Block Data Limit [Gingerbread P2]
A limit of 5mb on the transactions' data was added to allow us to increase the block gas limit avoiding some specific attacks that aim to stall the network with bigger blocks. More info in the CIP-65: Total Transaction Data Limit. The actual limit due to our gas limit is less than 5mb, so this change won't affect any functionality, but will give us the tools to increase our throughput.
Flag changes
The following flag has been deprecated and will be removed in a future release.
--disablerpcethcompatibility (all blocks are going to be ethCompatible after the hard fork)
--light.gatewayfee
The following flag has been added
--rpc.gaspricemultiplier value Multiplier applied to the gasPrice rpc call (1 = gasPrice, 1.3 = gasPrice + 30%, etc. Defaults to 2.0) (default: 2)
gaspricemultiplier
was 5 by default to guarantee every tx more time in the tx_pool, but we changed it to settable by node operators request.
Other notable changes
- Fix transfer prestate tracer (#2075)
- Merge native tracer (#2137) (from upstream)
- Fix RPC calls (gasLimit, gasPrice) use the initial state of the block (#2161)
- The RPC block responses were serializing the wrong
gasLimit
and thebaseFeePerGas
. Instead of showing those fields with the initial state of the block, were using the final state, so they were showing the data of the block N+1 for those fields. - The RPC transaction responses for types DynamicFeeTx (
0x02
) or CeloDynamicFeeTx (0x7c
) were serializing the wrong gasPrice. Instead of using thebaseFee
of the initial state of the block, were using the final state, so those transactions were showing the gasPrice calculation with the block N+1 data.
- The RPC block responses were serializing the wrong
Docker Images
geth: us.gcr.io/celo-org/geth:1.8.0-beta.2
geth-all: us.gcr.io/celo-org/geth-all:1.8.0-beta.2
Celo-Blockchain Release 1.8.0-beta.1
v1.8.0-beta.1 is the Baklava-only release of v1.8.0. After testing on the Baklava testnet, it will be followed by v1.8.0-stable which will be intended for both Mainnet and Alfajores networks.
The baklava activation block is 18785000 targeting an activation at ~15:03 UTC on Thursday August 10th.
The biggest and most important change in v1.8.0 is the implementation and activation of the Gingerbread Fork
Gingerbread Hardfork
For an overview of all the CIPs included in the hardfork, see CIP-62, the Gingerbread hardfork (the CIP will be merged for the stable version with all the activation blocks).
Below follows an overview of changes, which is grouped by affected parts of the protocol rather than the originating CIPs.
Sending transactions
As a result of CIP-57, transactions must not set the fields gatewayFee
or gatewayFeeRecipient
.
Changing gas costs
CIP-58 changes the gas costs to be more in line with Ethereum. As a result, transactions will have different (usually somewhat higher) gas costs than before.
New block header fields and header hash calculation
The following fields have been added to the block header and the JSON-RPC output in order to increase compatibility with Ethereum:
baseFee
gasLimit
difficulty
(constant)nonce
(constant)uncles
(constant; included in the RPC output, but actually only stored in the block body, not the header)sha3Uncles
(constant)mixHash
(constant)
By adding new fields to the header, the header hash calculation also changes. Fortunately, this allows us to use exactly the same hash calculation as Ethereum. The header is now calculated by hashing the fields in the following order:
- parentHash
- sha3Uncles
- miner
- stateRoot
- transactionsRoot
- receiptsRoot
- logsBloom
- difficulty
- number
- gasLimit
- gasUsed
- timestamp
- extraData
- mixHash
- nonce
- baseFee
New opcodes
Along with the header fields baseFee
and gasLimit
, opcodes for fetching these values are provided:
Opcode name | hex | solidity | CIP |
---|---|---|---|
GASLIMIT | 0x45 | block.gaslimit | CIP-60 |
BASEFEE | 0x48 | block.basefee | CIP-61 |
Removed features
In addition to the changes above, some features have been removed, which should not impact Celo users in any noticeable way:
- CIP-53: Remove minimum client version check
- CIP-54: Remove sending of community rewards to reserve if undercollaterized
- CIP-55: Remove Tobin Tax
- CIP-56: Remove freezable check on epoch rewards
Base fee recipients
Another change that should not be directly noticeable by users, but is interesting enough to call out explicitly is CIP-52: Ultragreen Celo, which burns 80% of each transactions base fee and directs the other 20% to the Green Fund.
Flag changes
The following flag has been deprecated and will be removed in a future release.
--disablerpcethcompatibility (all blocks are going to be ethCompatible after the hard fork)
--light.gatewayfee
The following flag has been added
--rpc.gaspricemultiplier value Multiplier applied to the gasPrice rpc call (1 = gasPrice, 1.3 = gasPrice + 30%, etc. Defaults to 2.0) (default: 2)
gaspricemultiplier
was 5 by default to guarantee every tx more time in the tx_pool, but we changed it to settable by node operators request.
Other notable changes
- Fix transfer prestate tracer (#2075)
- Merge native tracer (#2137) (from upstream)
- Fix RPC calls (gasLimit, gasPrice) use the initial state of the block (#2161)
- The RPC block responses were serializing the wrong
gasLimit
and thebaseFeePerGas
. Instead of showing those fields with the initial state of the block, were using the final state, so they were showing the data of the block N+1 for those fields. - The RPC transaction responses for types DynamicFeeTx (
0x02
) or CeloDynamicFeeTx (0x7c
) were serializing the wrong gasPrice. Instead of using thebaseFee
of the initial state of the block, were using the final state, so those transactions were showing the gasPrice calculation with the block N+1 data.
- The RPC block responses were serializing the wrong
Docker Images
geth: us.gcr.io/celo-org/geth:1.8.0-beta.1
geth-all: us.gcr.io/celo-org/geth-all:1.8.0-beta.1