6.5 KiB
Installation - Testnet
Notes
- This installation assumes you're using Ubuntu or similar
- You need a non-root user that belongs to the sudo group.
Required software install procedure
- Install Ethereum
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt install ethereum
- Install NodeJS using NVM (Check NVM repo for updated procedure)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source .bashrc
nvm install --lts
- Install Python and other software
sudo apt install python build-essential
Clone the repo
git clone https://github.com/status-im/snt-gas-relay.git
cd snt-gas-relay/gas-relayer
npm install
Setup geth for Whisper
- Verify
geth
light mode starts successfully. Exit geth when you see everything is ok
geth --testnet --syncmode=light console
> exit
- Create an account (at the moment, this install procedure has only been tested with Ropsten testnet). It will ask you for a password
geth --testnet account new
- Create a file
geth_pass
that will contain the password. Ensure the permissions are read/write for the owner. This file can be put in any secure folder you determine. YOu need access to this file from the folder where the gas-relayer will execute
echo "MyPassword" > testnet_password
chmod 600 testnet_password
- There aren't enough geth peers with Whisper enabled to guarantee that messages will arrive from one node to other. We need to create a
static-nodes.json
file in~/.ethereum/testnet/geth/
.vi ~/.ethereum/testnet/geth/
This file needs to contain the following array:
[
"enode://436cc6f674928fdc9a9f7990f2944002b685d1c37f025c1be425185b5b1f0900feaf1ccc2a6130268f9901be4a7d252f37302c8335a2c1a62736e9232691cc3a@174.138.105.243:30404",
"enode://5395aab7833f1ecb671b59bf0521cf20224fe8162fc3d2675de4ee4d5636a75ec32d13268fc184df8d1ddfa803943906882da62a4df42d4fccf6d17808156a87@206.189.243.57:30404",
"enode://7427dfe38bd4cf7c58bb96417806fab25782ec3e6046a8053370022cbaa281536e8d64ecd1b02e1f8f72768e295d06258ba43d88304db068e6f2417ae8bcb9a6@104.154.88.123:30404",
"enode://ebefab39b69bbbe64d8cd86be765b3be356d8c4b24660f65d493143a0c44f38c85a257300178f7845592a1b0332811542e9a58281c835babdd7535babb64efc1@35.202.99.224:30404",
"enode://a6a2a9b3a7cbb0a15da74301537ebba549c990e3325ae78e1272a19a3ace150d03c184b8ac86cc33f1f2f63691e467d49308f02d613277754c4dccd6773b95e8@206.189.243.176:30304",
"enode://207e53d9bf66be7441e3daba36f53bfbda0b6099dba9a865afc6260a2d253fb8a56a72a48598a4f7ba271792c2e4a8e1a43aaef7f34857f520c8c820f63b44c8@35.224.15.65:30304",
"enode://c42f368a23fa98ee546fd247220759062323249ef657d26d357a777443aec04db1b29a3a22ef3e7c548e18493ddaf51a31b0aed6079bd6ebe5ae838fcfaf3a49@206.189.243.162:30504",
"enode://7aa648d6e855950b2e3d3bf220c496e0cae4adfddef3e1e6062e6b177aec93bc6cdcf1282cb40d1656932ebfdd565729da440368d7c4da7dbd4d004b1ac02bf8@206.189.243.169:30504",
"enode://8a64b3c349a2e0ef4a32ea49609ed6eb3364be1110253c20adc17a3cebbc39a219e5d3e13b151c0eee5d8e0f9a8ba2cd026014e67b41a4ab7d1d5dd67ca27427@206.189.243.168:30504",
"enode://7de99e4cb1b3523bd26ca212369540646607c721ad4f3e5c821ed9148150ce6ce2e72631723002210fac1fd52dfa8bbdf3555e05379af79515e1179da37cc3db@35.188.19.210:30504",
"enode://015e22f6cd2b44c8a51bd7a23555e271e0759c7d7f52432719665a74966f2da456d28e154e836bee6092b4d686fe67e331655586c57b718be3997c1629d24167@35.226.21.19:30504",
"enode://531e252ec966b7e83f5538c19bf1cde7381cc7949026a6e499b6e998e695751aadf26d4c98d5a4eabfb7cefd31c3c88d600a775f14ed5781520a88ecd25da3c6@35.225.227.79:30504"
]
These enodes were extracted from https://github.com/status-im/status-go/blob/develop/params/cluster.go.
Setup the gas relayer
Before executing this program, config/config.json
must be setup and npm install
needs to be executed. Important values to verify are related to the node configuration, just like:
- Host, port and protocol to connect to the geth node
- Host, port and protocol Ganache will use when forking the blockchain for gas estimations and other operations
- Wallet account used for processing the transactions
- Symmetric key used to receive the Whisper messages
- Accepted tokens information
- Contract configuration
- For testnet, a config file is provided with the required configuration.
cd config
rm config.js
mv config.testnet.js config.js
- A node that wants to act as a relayer only needs to have a geth node with whisper enabled, and an account with ether to process the transactions. This account needs to be configured in
./config/config.js
. Edit this file and set the account:
"blockchain": {
"account": "your account here"
},
Launching the relayer
A launch-geth-testnet.sh
script is provided in the snt-gas-relayer/gas-relayer
folder. You need to edit this file and set the --unlock
option with the address used for procesing the transactions, and also the --password
with the path to the password file. This script assumes the password file is called testnet_password
and it's located in the same folder of the gas-relayer service.
After editing the file, assuming your account has eth, launch geth:
chmod +x ./launch-geth-testnet.sh
./launch-geth-testnet.sh
you may use any of the following three commands to launch the relayer.
npm start
node src/service.js
nodemon src/service.js
Using the testdapp with testnet
The test dapp may be used for testnet from your computer. It requires a provider that allows websockets:
- Start by executing
launch-geth-testnet.sh
in thetest-dapp
folder to start the geth node with the required config to communicate with the status cluster via whisper. - Execute
embark run testnet
to launch the dapp connected to testnet - Navigate in your browser to http://localhost:8000. Remember to disable Metamask (The provider injected by Metamask does not support Whisper)
- You're now able to use the dapp normally. The status for the relayer that can be seen in the footer of the dapp won't reflect accurate information, since the relayers account are not deterministic anymore since you're not in a development environment
NOTE
For using Identity operations, or of you wish to use the functionality to generate tokens, and sending ether, you need to configure config/contracts.js
to add a private key you control, and from which the SNTController and the Identity Contract was deployed.
Work is in progress for using the test-dapp inside status.
testnet: {
accounts: [
{
privateKey: "your_private_key_here"
}
],
....