Testing on the first version of REMChain testnet is coming to an end, following our switch to the EOSIO codebase. There has been plenty of testing and development work undertaken during the past two months. Suffice to say, the whole Remme team is excited about the updates we’re bringing to the testnet 2.0.
We’re especially thankful to all community members who played with the network and made further improvements possible during the testing phase. Thanks to your involvement and feedback, we’re now releasing the next enhanced version of the testnet, with the REMChain mainnet launch scheduled for the end of this year.
The great news is that the REMChain testnet 2.0. offers updated reward distribution for Block Producers (BPs) and Guardians, improved block explorer (now with the Swap feature) and much more. The latest testnet version also introduces the concept of five rotating standby producers (top 21-25) that become active in shifts of four hours each. More details on how to join the network are provided below.
Getting started with testnet token faucet bot
The faucet bot helps you get set up and create an account with some tokens in it. With the help of this bot, you will receive the following data about your testnet account:
- Account name
- Public and private keys needed to create transactions
Interaction via a light client (Guardian case)
For those users who do not plan to run their own Block Producer node, a transaction via a light client assumes that they have an external node they can trust (in our example, this is testchain.remme.io).
Guardians that intend to receive staking rewards (60% of rewards) can perform all the actions via a light client as described in this section. There is no need to maintain a node (assuming you trust the website/wallet that you use to operate with the network). One of the client apps/wallets that can play the role of a light client for the Protocol network is the combination of Scatter and block explorer by Remme.
Scatter (the desktop app) manages your keys and helps you sign transactions securely. To get started, follow the instructions below:
- Visit the link to download and install the Scatter app
- Once you are done with the basic setup, go to the Network Settings page within the Administrative section of the menu
- Select EOSIO type of blockchain and click Add Custom Network button


- Pick a name for the network, e.g. REMTestChainV2
- Set the hostname to testchain.remme.io, Protocol to https, Port to 443
- Click the globe to automatically fill in the chain ID or specify it manually:
9af90b3e14ef108e36dbf493d5d1c3fd9d1b2c4eb11d3adcdbc41a7fe5a9ccb8
(means testchain v2)
- Go to the second tab System Token
- Activate the custom system token switch
- Set the Contract field to rem.token
- Set the Symbol to REM and leave Decimals at 4
- Click Save New Network button
- REMTestChainV2 should appear on the supported network list, which means that Scatter is ready to work with it.
To add your existing account (created with the bot) to Scatter:
- Go to the Wallet section and click Import key
- Click the Text button
- Insert the Private Key
- Once you have imported the key, Scatter will automatically fetch your account that is associated with the key
To start interacting with the network, please follow the link. Our block explorer will connect to Scatter once you select to unlock the wallet or perform an action that requires the signature of an account.
Feel free to play with Token Transfer, Staking/Unstaking resources or vote for a Block Producer (in case you have some tokens staked).
If you want to activate and maintain the Guardian status on your account, make sure you:
- Have 250K or more tokens staked
- Vote for one or more BPs that you trust
- Make sure that BPs you vote for are doing a great job and reassess/resubmit your vote at least once a month.
Advanced section
We expect the majority of token holders to be fine with the Guardian role and fulfill the critical mission: to govern the chain and delegate the best BPs to add the blocks and translate the will of their Guardians into governing on-chain actions/transactions.
However, if you are a tech-savvy individual/organization who would like to contribute to the stability of the network, help the REMChain ecosystem by rolling up your sleeves to troubleshoot or fine-tune remnode performance, validate system smart contract updates and instantly react to force majeure events (that by Murphy’s Law always happen when you are asleep) – we need you as a REMChain Block Producer!
Setting up a read-only full node
Install binaries
MacOS
$ brew tap Remmeauth/remprotocol &&
brew install remprotocol
Ubuntu 18.04
$ wget https://github.com/Remmeauth/remprotocol/releases/download/0.2.1/remprotocol_0.2.1-1_amd64.deb && sudo apt install ./remprotocol_0.2.1-1_amd64.deb
CentOS
$ wget https://github.com/Remmeauth/remprotocol/releases/download/0.2.1/remprotocol_0.2.1.el7.x86_64.rpm && sudo yum install ./remprotocol_0.2.1.el7.x86_64.rpm
Boot node and wallet
Get the genesis.json file that contains information about the testchain:
$ wget https://testchain.remme.io/genesis.json
Create config and data directories.
$ mkdir data && mkdir config && touch config/config.ini
In your configuration file (config/config.ini), add these options:
plugin = eosio::chain_api_plugin
plugin = eosio::net_api_plugin
http-server-address = 0.0.0.0:8888
p2p-listen-endpoint = 0.0.0.0:9876
p2p-peer-address = p2p.testchain.remme.io:2087
p2p-peer-address = Add someone else’s node here who you trust
p2p-peer-address = Add someone else’s node here who you trust
p2p-peer-address = Add someone else’s node here who you trust
p2p-peer-address = Add someone else’s node here who you trust
verbose-http-errors = true
chain-state-db-size-mb = 100480
reversible-blocks-db-size-mb = 10480
These config options will get you into the basic operation mode, with your node API available at port 8888. P2p-peer-address points to the other nodes where new blocks are fetched from. Make sure you specify multiple entries that you trust, p2p.testchain.remme.io is the address of a node hosted by Remme. It is fine to have Remme node as the only one in the list, however if it becomes unavailable or goes under maintenance, your node will get isolated and become out of sync.
Run the node
The first run of the node:
$ remnode --config-dir ./config/ --data-dir ./data/ --delete-all-blocks --genesis-json genesis.json
It should start syncing blocks now. Wait until it downloads previous blocks and starts to receive current blocks. Press ctrl+с to stop it.
For subsequent runs of the node, use:
$ remnode --config-dir ./config/ --data-dir ./data/ >> remnode.log 2>&1 &
The command above will run the node in the background and will save its output to the remnode.log file. If you want to stop the node that runs in the background, run this:
$ killall remnode
At this point, you must be ready to start and connect your node to the network. If your node is connected and synced, this command should provide you with information about the chain:
$ remcli get info
{
"server_version": "96796929",
"chain_id": "93ece941df27a5787a405383a66a7c26d04e80182adf504365710331ac0625a7",
"head_block_num": 680455,
"last_irreversible_block_num": 680121,
"last_irreversible_block_id": "000a60b93d787895c905e36d7cf8d37a2bbed21d6f4b04f55645aefe459a32c0",
"head_block_id": "000a62074d3b6919262d90beecdffcc021fca03dc9ecd01ce4bfb91f8af36720",
"head_block_time": "2019-08-12T15:08:58.500",
"head_block_producer": "remproduce21",
...
}
Please check the “head_block_time” parameter: it shows the time your node is currently at. If it shows you a date from the past, it means your node is not yet synced with the network. Before interacting with the network, please wait until this command starts to display the current UTC time, otherwise your transactions may fail.
remcli (analog of cleos in EOSIO terms) is a command-line tool that has a rich variety of functions. It has nearly everything that you may need to interact with the blockchain. You can start familiarizing yourself with it by running remcli --help.
Run the wallet daemon
$ remvault &
Create default wallet
$ remcli wallet create --file walletpass
Unlock wallet
$ remcli wallet unlock < walletpass
Import your account keys (when asked, enter the private key generated by the faucet bot)
$ remcli wallet import
Configure the node as a Block Producer
To become a BP you need to register your on-chain account via a system smart contract by calling the action regproducer, setting up your node as a full node (described above) and preparing it for block production (so it starts to produce blocks in case you make it to the top21); you also need to get enough votes from Guardians. Before running these commands, please make sure your node is in sync with the network.
$ remcli system regproducer YOUR_BPACCOUNT_NAME YOUR_PUBLIC_KEY https://yoursite.com
$ remcli system voteproducer prods YOUR_BPACCOUNT_NAME YOUR_BPACCOUNT_NAME
Make sure your website is correct and has a bp.json file in the root directory (https://yoursite.com/bp.json) and conforms to the standard.
In your node config file, add these options:
plugin = eosio::producer_plugin
plugin = eosio::producer_api_plugin
producer-name = YOUR_BPACCOUNT_NAME
signature-provider = YOUR_PUBLIC_KEY=KEY:YOUR_PRIVATE_KEY
Once you run remnode, these config options should get you into BP operation mode with your node. Once your BP account gets into the top21 list, your node will automatically start producing blocks.
Please be aware that, unlike the EOS network, BPs on REMChain are required to validate token swaps between the chains and have to enable additional plugins that ingest external world data.
As of today, the mandatory external sources are:
- Swap transactions on the Ethereum network.
- Currency exchange rates related to the REM token.
In the future, it will also cover other sources (such as DNS records or URL endpoints).
BPs who do not submit their data or happen to submit incorrect/misleading values are likely to be penalized by the network or voted out by their Guardians.
Configure Swap validation
To activate a plugin which monitors Ethereum Ropsten network (for the testnet case), add these options to the config file:
plugin = eosio::eth_swap_plugin
swap-authority = YOUR_BPACCOUNT_NAME@PERMISSION
swap-signing-key = SWAP_SIGNING_KEY
eth-wss-provider = YOUR_ETHEREUM_NODE_ADDRESS
eth_swap_contract_address=0x39882ab5105b1d627e6aed3ff39c1b004a18e207
return_chain_id=ethropsten
The values of the parameters eth_swap_contract_address and return_chain_id are valid for the testnet only.
SWAP_SIGNING_KEY should be the private key with configured block signing permission. For example, YOUR_PRIVATE_KEY
You can set up your own Ethereum node or use other services like Infura. Check out the tutorial for creating Infura API key.
A link to the Ethereum node should look similar to this:
wss://ropsten.infura.io/ws/v3/<your_infura_id>
or if you setup your own Ethereum node:
wss://<eth_node_ip>:<websocket_port>
Configure exchange rates data feed
To activate the price oracle plugin which monitors the REM token price via CoinGecko and CryptoCompare, add these options to the config file:
plugin = eosio::rem_oracle_plugin
cryptocompare-apikey = YOUR_CRYPTOCOMPARE_API_KEY
oracle-authority = YOUR_BPACCOUNT_NAME@PERMISSION
oracle-signing-key = ORACLE_SIGNING_KEY
To obtain YOUR_CRYPTOCOMPARE_API_KEY, register on CryptoCompare.
ORACLE_SIGNING_KEY should be the private key with configured block signing permission. For example, YOUR_PRIVATE_KEY
Please find an example of a config file here.
It is expected that the community will seek consensus and define trustworthy sources to be monitored by producers. CoinGecko and CryptoCompare sources are integrated into the oracle plugin as an example, and in no way are endorsed by Remme.
For the purposes of distributing infrastructure risks, BPs may split the function of remnode that produces blocks and other plugins (e.g. Swap and Exchange Rate processing plugins) to run on independent machines.
REMChain testnet 2.0. goals
Testnet 2.0. is our last testing iteration before the launch of the mainnet. We’re tasked with closing the issues and making improvements to ensure that the mainnet launch and operation go smoothly. At this point, we’re eager to collect as much feedback from the community as possible to improve Remme Protocol. Please contribute by sharing insights you’ve got to our Telegram group or pull requests on GitHub. With this release, we also launched the bi-directional Swap feature in our Block Explorer (Ethereum <> REMChain), please give it an extensive try.
Happy testing!