This is the second release candidate for the upcoming MANDATORY 1.20.0 release of Lotus. This release will deliver the Hygge network upgrade, introducing Filecoin network version 18. The centerpiece of the upgrade is the introduction of the Filecoin Virtual Machine (FVM)’s Milestone 2.1, which will allow for EVM-compatible contracts to be deployed on the Filecoin network. This upgrade delivers user-programmablity to the Filecoin network for the first time!
Note that this release candidate does NOT set the epoch at which mainnet will upgrade; that detail will be finalized in the 1.20.0 release.
The Hygge upgrade introduces the following Filecoin Improvement Proposals (FIPs), delivered in FVM3 (see FVM v3.0.0-rc.1) and builtin-actors v10 (see actors v1.10.0-rc.1):
- FIP-0048: f4 Address Class
- FIP-0049: Actor events
- FIP-0050: API between user-programmed actors and built-in actors
- FIP-0054: Filecoin EVM runtime (FEVM)
- FIP-0055: Supporting Ethereum Accounts, Addresses, and Transactions
- FIP-0057: Update gas charging schedule and system limits for FEVM
Changes since v1.20.0-rc1
- feat: API: Add an endpoint to convert Ethereum-like addresses to Filecoin (f410) addresses (#10286)
- fix: EthAPI: correctly decode EthGetStorageAt output (#10284)
- feat: EthAPI: parse revert data in EthCall (#10295)
- chore: deps: bump go-libipfs to v0.4.1
- feat: EthAPI: return revert data on failed gas estimation #10298
Filecoin Ethereum Virtual Machine (FEVM)
The Filecoin Ethereum Virtual Machine (FEVM) is built on top of the WASM-based execution environment introduced in the Skyr v16 upgrade. The chief feature introduced is the ability for anyone participating in the Filecoin network to deploy their own EVM-compatible contracts onto the blockchain, and invoke them as appropriate.
New Built-in Actors
The FEVM is principally delivered through the introduction of the new EVM actor. This actor “represents” smart contracts on the Filecoin network, and includes an interpreter that implements all EVM opcodes as their Filecoin equivalents, and translates state I/O operations to be compatible with Filecoin’s IPLD-based data model. For more on the EVM actors, please see FIP-0054.
The creation of EVM actors is managed by the new Ethereum Address Manager actor (EAM), a singleton that is invoked in order to deploy EVM actors. In order to make usage of the FEVM as seamless as possible for users familiar with the Ethereum ecosystem, this upgrades also introduces a dedicated actor to serve as “Ethereum Accounts”. This actor exists to allow for secp keys to be used in the Ethereum addressing scheme. The last new built-in actor introduced is the Placeholder actor, a thin “shell” of an actor that can transform into either EVM or EthAccount actors. For more on the EAM, EthAccount, and Placeholder actors, please see FIP-0055.
Calibration nv18 Hygge Upgrade
This release candidate sets the calibration-net nv18 Hygge upgrade at epoch 322354, 2023-02-21T16:30:00Z. The bundle the network will be using is v10.0.0 actors
(located at build/actors/v10.tar.zst
) upon/post migration, manifest CID bafy2bzaced25ta3j6ygs34roprilbtb3f6mxifyfnm7z7ndquaruxzdq3y7lo
.
Node Operators
FVM has been running in lotus since v1.16.0 and up, and the new FEVM does not increase any node hardware spec requirement.
With FEVM on Filecoin, we aim to provide full compatibility with the existing EVM ecosystem and its tooling out of box and thus, lotus now provides a full set of Ethereum-styled APIs for developers and token holders to interact with the Filecoin network as well.
Enable Ethereum JSON RPC API
Note that Ethereum APIs are only supported in the lotus v1 API, meaning that any node operator who wants to enable Eth API services must be using the v1 API, instead of the v0 API. To enable Eth RPC, simply set EnableEthRPC
to true
in your node config.toml file; or set env var LOTUS_FEVM_ENABLEETHRPC
to 1
before starting your lotus node.
Eth tx hash and Filecoin message CID
Most of the Eth APIs take Eth accounts and tx has as an input, and they start with 0x
, and that is what Ethereum tooling support. However, in Filecoin, we have Filecoin account formats where things start with f
(f410
specifically for eth accounts on Filecoin) and the messages are in the format of CIDs. To enable a smooth developer experience, Lotus internally converts between Ethereum address and Filecoin account address as needed. In addition, lotus also keeps a Eth tx hash <> Filecoin message CID map and stores them in a SQLite database as node sees a FEVM messages. The database is initiated and the maps are populated automatically in ~/<lotus_repo>/sqlite/txhash.db
for any node that as Eth RPC enabled. Node operators can configure how many historical mappings they wanna store by configuring EthTxHashMappingLifetimeDays
.
Events
FIP-0049 introduces actor events that can be emitted and externally observable during message execution. An events.db
is created automatically under ~/<lotus_repo>/sqlite
to store these events if the node has Eth RPC enabled. Node operators can configure the events support base on their needs by configuration Events
configurations.
Note: All three features are new and we welcome user feedbacks, create an issue if you have any enhancements that you’d like to see!