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