Introducing ODIN Testnet Validator Program

Odin Protocol
Odinprotocol
Published in
6 min readMay 12, 2021

ODIN protocol launches its testnet (beta version) and a reward program for validators ahead of the ODIN protocol testnet V0.1 planned to launch in June 2021

Validators support the system’s protocol — ensure its operation (reach consensus on its state), and also transfer raw data from sources (generate reports and send them to the input of the corresponding scripts) to the system.

DPoS Consensus

ODIN protocol uses delegated proof of stake as a consensus reaching algorithm. This means that decisions about updating the state of the system can be applied by a limited number of validators chosen during the vote. Validators are selected by network members who own ODIN Tokens and can delegate them in favor of one of the delegates. In this case, the weight of the voter is determined by the number of tokens that they are ready to put on the delegate. After the voting stage, the 30 delegates who received the most votes become validators until the next vote.

Note that the number of validators can be less than 30 (when initiating a platform, it is physically very difficult to connect such a number of parties). Still, in this case, there must be at least four validators (for the functioning of the BFT-based consensus algorithm). With the system's lifetime, this number can increase and change, but the requirements of at least four and no more than 30 must be met.

DPoS algorithm for consensus reaching was chosen for a number of reasons. The first of them is that this consensus allows ensuring the system’s efficient functioning even with many validators (up to a hundred) and high capacity (up to thousands of transactions per second). Moreover, suppose the parties reached a consensus on updating the state of the accounting system (2/3+ validators agreed with the proposal). In that case, this decision can be considered final (there are no forks). At the same time, the voting mechanism will allow validators to compete with each other to secure the votes of the system participants, thereby ensuring a higher level of network reliability. These indicators are also affected by the existence of a mechanism for penalizing validators that violate the protocol, which entails the need for users to select the appropriate delegates carefully.

System requirements to run ODIN node (Both — Validator & Auditor)

  • 2 CPUs processor
  • 4 GB RAM
  • 200 GB free memory space
  • These requirements are sufficient for the early stage of ODIN (before the end of 2021). With the growth of transaction volumes, these conditions may change. (We will keep the node runners informed)
  • 1 ODIN will be required to apply for running a node.

RUNNING ODIN NODE

Now let's get into the technical part of how this all works. We will be publishing step-by-step guides as we move towards the formal launch in June.

Prerequisites: docker and docker-compose installed

Launching audit node

Clone this repository.

The repository contains the docker-compose file for quick launching of the node with preconfigurations on rpc, and genesis.json. Change your current directory to node
Run startup bash script (for linux, mac):

./start.sh

Launching audit node with reporter

./start.sh r

Run following commands (for windows):

docker-compose -f ./docker-compose.yaml down -v --remove-orphansdocker-compose -f ./docker-compose.yaml pulldocker-compose -f ./docker-compose.yaml up -d

For reporter (for windows):

docker-compose -f ./docker-compose-reporter.yaml pulldocker-compose -f ./docker-compose-reporter.yaml up -d

It will start the light node for you, which will ingest all the previous heights

After node is launched, it starts syncing with network.

Note: Check our nodes real-time logs with the following command:

docker-compose logs -f --tail 100 node

[important] Wait for the node to catch up with the remotes, to query it or send transactions

Becoming validator

First of all, you need to log into your docker container

docker exec -it node /bin/bash

Creating wallet

Once logged in, you can use bandd CLI to create a new ODIN wallet address. Please make sure to keep your mnemonic safe! (you can use — keyring-backend test with the following command, for testing purposes)

bandd keys add [[YOUR_WALLET_NAME]] # e.g. user1

The output of this command should look like this:

- name: user1
type: local
address: odin1rcv2d9vljealh8z9sqtnw3ljjchn4k28cgyu7x
pubkey: odinpub1addwnpepqtfj3p0ep5n4clla3gtd9a6czz9lytl59696mu4txx55375ald55c0jz2j9
mnemonic: ""
threshold: 0
pubkeys: []
**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.
man act ride inhale wall success example anxiety damp daring slogan still town smile frame ketchup resemble avocado stairs crater meat aim lumber grace

Getting tokens

After you’ve created wallet, you need tokens there, for these purposes you can either send the following POST request

curl --header "Content-Type: application/json" \
--request POST \
--data '{"address":"<your-wallet>","denom":"loki"}' \
http://34.77.171.169:5005/request

You will be provided with loki tokens.

Checking balance

bandd query bank balances <you-wallet> --chain-id odin-testnet-vale --node http://34.77.171.169:26657

Sending transaction to become a validator

In order to become a validator you should send a create-validator transaction with the command below

bandd tx staking create-validator \
--amount <your-amount-to-stake>loki \
--commission-max-change-rate 0.01 \
--commission-max-rate 0.2 \
--commission-rate 0.1 \
--from <your-wallet-name> \
--min-self-delegation 1 \
--moniker <your-moniker> \
--pubkey $(bandd tendermint show-validator) \
--chain-id odin-testnet-vale

Verifying the result

Perform the following command, and among the validators find the one with your moniker

bandd query staking validators --chain-id odin-testnet-vale --node http://34.77.171.169:26657

Delegating tokens to someone

Getting validator operator address

If the specified validator address is in your keyring:

bandd keys show <your-wallet> --bech val -a

Otherwise

bandd query staking validators --chain-id odin-testnet-vale --node http://34.77.171.169:26657

will return all the system validators, and you can get odinvaloper… address there

bandd tx staking delegate \
--validator-addr <validator-operator-address> \
--amount <your-amount-to-delegate>loki \
--from <your-wallet-name> \
--chain-id odin-testnet-vale \
--node http://34.77.171.169:26657

Development updates

Since the last update on May 20th, here is a short detail of what we have achieved.

We Launched our testnet beta version.

Testnet is now fully functional, some of the code requires front end to be user friendly which will be added by the time we announce the full launch around June 4th.

Deployed bridge service to testnet

We have a functioning BSC to ODIN bridge. In next few days we will release notes & simple front end to be able to move tokens between BSC & ODIN chain.

Created paginated queries for data sources, oracle scripts, reports

Paginated queries allow us to query such things as data sources, oracle scripts and requests partially, splitting long response into pages (useful for front end)

Created design and happy-flows guides

We have created the designs and workflows of how testnet 0.1 UI will look like initially.

Deployed faucet to testnet

The faucet providing testnet Loki token is now live.

We understand that this post may have been a bit too technical for a lot of people. In the coming few days, we will publish an easy-to-follow guide/Videos to run a node. Once the ODIN front end is up, it will be easy to navigate.

Thank you!

About ODIN Protocol
ODIN is a decentralized system designed to build a data oracle network based on an open protocol for interaction between participants and a sustainable economy. In addition to organizing the data oracle network, ODIN involves building a decentralized peer-to-peer data sharing and trading ecosystem for delivering real-world data to onchain for various use cases such as DeFi, betting, forecasting apps, or NFT.

Website | Whitepaper | Telegram | Medium | Twitter | Reddit | Discord

--

--