Proposal: A move to Goerli

infrastructure

#1

All,

I’d like to remove our dependance up on Rinkeby and Rompsten test networks, and move all testing to the Goerli testnet.

Why?

  • syncing these clients is a nightmare. They require constant maintanence from an infrastructure point of view and has two effects: takes time away from whoever is currently on-call in infrastructure monitoring to constantly check bogus alerts and node upkeep, and “crying wolf” with the same people when something actually happens because they assume it is a noisy testnet client.
  • They also cost quite a bit to maintain all these clients. A move to only Goerli would save Status ~$410 USD/month. You can check out the breakdown of clients in this breakdown

What I’d like to know:

  • What work would need to be done in order to make this happen? What do we use these testnets for, and what work would be required to switch to a better performing test network.
  • Do we need to support these in app?
  • Is anyone opposed to this and why?

For those that don’t know, we already have the network up and running with a faucet that has a ton of funds in it. It follows the same methodology of the other test networks, but doesn’t require much of anything to host.


#2

The technical side of this has been kinda discussed here:


One thing that we needed to do is deploy the SNT contract, which @ricardo3 said he would, but not sure if he had the time to get around to it.

From what I understand the bulk of the work required would be in making the App be able to make use of Goerli network.


#3

One of the largest benefit of supporting Ropsten is the faucet which gives ability to automate wide scope of tests related to transactions: sending/receiving of ETH/tokens, transacting in Dapp, transaction history

In order to switch to Goerli we need:

  1. To have faucet in Goerli. Already DONE!

  2. To have several ERC20 contracts, including Status test contract, with different decimals deployed to Goerli network.

  • STT with 18 decimals

  • one token with no decimals

  • one token with 2 decimals

  • one token with 8 decimals

  1. Add these tokens with different decimals in the ‘Default tokens’ list of Status app under Goerli network.

We also depend from SimpleDApp (https://status-im.github.io/dapp/ ) for DApp testing and faucets under test network. Once we have three items above done we’ll need to update SimpleTestDApp too. I may need help from devs to update some items there (hope @andrey/@julien can support with it). So:

  1. Update https://github.com/status-im/status-dapp to support Goerli

  2. Update e2e tests to use Goerli (includes changing of DEFAULT_NETWORK in .e2e.env)

  3. Remove our dependance up on Rinkeby and Ropsten. But I’m not sure with the reason why not to not support these in-app (we still may use these networks for tests, plus, for instance, I’ve seen some Dapps support Rinkeby which may be handy, again, to test).


#4

Goerli STT address is 0x86e5C5c884740894644dAD30021aAaAdE2B7bAbd
To Mint STT you need to call this contract 0x2B3845b982B147A0436e3766EAE06936f4E271a0
Making a transaction with no value to this address will mint 1000 tokens to transaction sender, as specified in the default function.
There is a function called generateTokens(address who, uint256 amount) that allows anyone to mint any amount of STT to any account.

STT address should not change, but the minting address might change as the controller of the contract will eventually be upgraded for new features, however the current contract will detect this change and forward the minting to the new contract by using the generateTokens(address who, uint256 amount) of the new minter, so scripts can safely always use 0x86e5C5c884740894644dAD30021aAaAdE2B7bAbd for minting.

We can setup a Multisig for being the owner of the current deployed system, to be safe of eventual private key losses.