Testnet-EVM with Address Migration Tool

Friends, Romans lend me your ears! And validators, lend me your time!

The long awaited EVM-testnet upgrade with new features and address migration tool will soon be ready!

The process flow will be as such (all time in GMT+8):

  1. On Thursday 19-May, the team will launch a gov proposal on testnet (this will take 2 days to complete)
    this is to let everyone know of the upgrade and vote for the upgrade
  2. By Saturday 21-May, the proposal will end. If it passes, then everyone has to upgrade their code thereafter
  3. By Tuesday 24-May, validators who have not upgraded their code will not be able to participate in consensus
  4. The team will do a check in on Monday 23-May

The feature upgrades and changes will include:

  • Delete all old EVM data
  • Support for new EVM logic
  • EVM transaction type supports EIP1559 fee calculation rules
  • Account migration support
  • Support WFXERC20
  • Support cross-chain functionalities by calling contracts
  • fxcored CLI will support adding of accounts with eth_secp 256k1
  • Deploy ETH PUNDIX Token, BSC PURSE Token, Tron USDJ, polygon LINK Token

For more information/details, you may either refer to:

The address conversion guide will be up within the next few days, so please be patient!

There will also some changes to the governance parameters. The aim of lowering the initial and total deposits is to allow more developers to launch their proposals which would in turn help us grow our ecosystem.


the voting will be on main net right?

1 Like

On testnet this is pre staging to the real one to check and avoid any faults

yes i understand but the vote for the changes to me is confused to where the vote is being done


In the testnet explorer

On Thursday 19-May, the team will launch a gov proposal on testnet

It is on testnet first.

ok, I don’t see the need to vote in test net sorry, so will only the validators in testnet need to vote on the testnet to make this go though, or are all supporters suppose to vote on the test net, might seem a silly question but if you want things to get done people need to properly understand the action needed.

I don’t know if i even have any FX delegated in testnet anymore to even vote

You don’t have to do anything unless it is on main net.

1 Like

thankyou, I will wait and watch

the reason for this process on Testnet is so that delegators and validators especially know what to expect for mainnet. Testnet is always a place for developers, validators…to do a dry run, test out their code…


I fully understand the reasons for testnet, but not voting on testnet we know that works; just seems like time waisted to me

It isn’t timing wasting, it is to prevent errors from happening.

  • Before you publish a book, you need someone to do proof-reading.
  • Before you release a product, you need a third-party audit company to do quality check control.
  • Before you buy a car, you go for a test drive first.

This is to minimize risk, have better productivity and have better product quality before it is released.


none of which requires a vote on testnet to do, but i do understand it’s a way of making sure validators are paying attention

1 Like

Let’s say that some validators don’t see the proposal and don’t vote, that means they won’t be aware of the necessary work for TestNet (and mater for mainnet).

We need to make sure that all validators are aware of the upgrade to be made.
If the vote fails, that means we’ll need to contact them further the line.
WE cant’ afford to have validators being slashed on the future mainnet upgrade, just because they didn’t care enough.


Voting for EVM-Testnet will commence today 19-May 2.15pm (GMT +8)

  • What happens to validators who do not upgrade their code? What is a hard fork?
    After the node upgrade, the old web3 interface will stop, and the upgrade to complete the new web3 will open; Nodes that are not upgraded will not be affected, but there will be a fork at the upgrade height and stop synchronization

  • Is Governance voting on Mainnet and Testnet the same?
    Testnet and Mainnet voting mechanisms work exactly the same except that the voting period for testnet is 2 days instead of 2 weeks for mainnet. Whoever has FX on mainnet can vote, delegators/validators. Delegators can override their validator’s votes, if not they will assume the validator’s votes. If you have Testnet tokens then you can participate in voting.

  • Why the need for voting on Testnet?
    Reason for mirroring the entire process flow on testnet and calling for voting on Testnet is so that validators and delegators alike know the drill especially when they will be required to replicate this upgrade process eventually on the mainnet.

  • Additional resources for governance/voting:

  1. Governance proposal information
  2. Testnet faucet and guide
  3. Voting through fxcored CLI
  4. Step by step guide on how to vote using f(x)Wallet and the explorer

Good luck guys…make it happen

1 Like

Just attempted to install the new testnet EVM branch.
However, when following EVM upgrade tutorial, and issuing the fxcored network command, I don’t get the result as expected in the guide :

ChainId: dhobyghaut
CrossChainSupportBscBlock: "1"
CrossChainSupportPolygonBlock: "1"
CrossChainSupportTronBlock: "1"
EIP155ChainID: "90001"
EvmSupportBlock: "408000"
GravityPruneValsetsAndAttestationBlock: "1"
GravityValsetSlashBlock: "1"
Network: testnet

Could you please provide further detailed instructions or update the Gitbook ?
Please note that version installed is now testnet-evm-651559e733569514ee66fa490f238ff1822384ed


Alright : actually, everything went fine, but executing fxcored was picking up the former version in [...]/go/bin instead of the one in /usr/bin/
I corrected my paths and everything’s fine now.

[...]:~# fxcored network
ChainId: dhobyghaut
CrossChainSupportBscBlock: "1"
CrossChainSupportPolygonAndTronBlock: "1"
EIP155ChainID: "90001"
EvmV0ClearKVStores: evm,feemarket
EvmV0SupportBlock: "408000"
EvmV1SupportBlock: "2940000"
GravityPruneValsetAndAttestationBlock: "1"
GravityValsetSlashBlock: "1"
Network: testnet
[...]:~# fxcored version

Thanks again @Richard !!


“api”: {
“address”: “tcp://”,
“enable”: false,
“enabled-unsafe-cors”: false,
“max-open-connections”: 1000,
“rpc-max-body-bytes”: 1000000,
“rpc-read-timeout”: 10,
“rpc-write-timeout”: 0,
“swagger”: false
“bypass-min-fee”: {
“msg-types”: []
“evm”: {
“max-tx-gas-wanted”: 500000,
“tracer”: “”
“grpc”: {
“address”: “”,
“enable”: true
“halt-height”: 0,
“halt-time”: 0,
“iavl-cache-size”: 781250,
“index-events”: [],
“inter-block-cache”: true,
“json-rpc”: {
“address”: “”,
“api”: [
“block-range-cap”: 10000,
“enable”: true,
“evm-timeout”: 5000000000,
“feehistory-cap”: 100,
“filter-cap”: 200,
“gas-cap”: 25000000,
“http-idle-timeout”: 120000000000,
“http-timeout”: 30000000000,
“logs-cap”: 10000,
“txfee-cap”: 1,
“ws-address”: “”
“min-retain-blocks”: 0,
“minimum-gas-prices”: “4000000000000FX”,
“pruning”: “default”,
“pruning-interval”: “0”,
“pruning-keep-every”: “0”,
“pruning-keep-recent”: “0”,
“state-sync”: {
“snapshot-interval”: 0,
“snapshot-keep-recent”: 2
“telemetry”: {
“enable-hostname”: false,
“enable-hostname-label”: false,
“enable-service-label”: false,
“enabled”: false,
“global-labels”: [],
“prometheus-retention-time”: 0,
“service-name”: “”
“tls”: {
“certificate-path”: “”,
“key-path”: “”

Mine is like this

@ClaudioxBarros & @Mdmdmd83 i have updated the gitbook for the config app.toml file

api dict should return these 3 items only:

  • eth
  • net
  • web3