LogoLogo
  • 🚀DeSo Vision
  • 🪙DeSo Tokenomics
    • No Equity, Just Coins and Code
    • Current DESO Supply
    • Initial DESO Distribution
    • DESO Sinks
    • The BMF: Burn-Maximizing Fee Mechanism
    • Designed for the End-Game
  • 🏛️DeSo Governance
  • ⭐DeSo Tutorial (Build Apps)
  • 🖥️Node Architecture Overview
    • Setup a Node & Frontend Locally
    • Making Your First Changes
  • 📅DeSo Roadmap
  • 🔍DeSo Block Explorer
  • 💸DeSo Wallet
  • 💬DeSo Chat Protocol
  • 👽Openfund
  • 👀Focus
  • 🛠️DeSo Tech Stack
  • 🌐DeSo Applications
  • DeSo Blockchain
    • 1️⃣Bare Metal
    • 2️⃣Scaling Roadmap
    • 3️⃣Content Moderation
    • 4️⃣Infinite-State
    • 5️⃣On-Chain Data
    • 6️⃣Smart Services
    • 7️⃣User Security
  • DeSo Features
    • 1️⃣Associations
    • 2️⃣Creator Coins
    • 3️⃣Feeds & Moderation
    • 4️⃣Social NFTs
    • 5️⃣Social Tipping
  • DeSo Identity
    • 1️⃣Identity: Overview
      • Core Concepts
      • Mobile Integration
    • 2️⃣Identity: iFrame API
      • Overview
      • Endpoints
    • 3️⃣Identity: Window API
      • Overview
      • Endpoints
  • DESO FRONTEND
    • 1️⃣Frontend: Get Started
    • 2️⃣Frontend: React Example
  • DESO BACKEND
    • 1️⃣Backend: Config
      • Onboarding
      • Phone Number Verification
      • Global State
      • Admins
      • Web Security
      • Media
        • Images
        • Videos
      • Hot Feed
      • Selling $DESO
        • Wyre - Buy with USD
        • Buy with BTC
        • Buy with ETH
      • Analytics
      • Emails
      • Supply Monitoring
    • 2️⃣Construct: API
      • Social Transactions API
      • NFT Transactions API
      • Financial Transactions API
      • Derived Keys Transaction API
      • DeSo Tokens Transactions API
      • Associations Transactions API
      • Access Groups API
    • 3️⃣Data: API
      • Admin Endpoints
      • Associations Endpoints
      • DeSo Tokens Endpoints
      • Media Endpoints
      • Miner Endpoints
      • Notification Endpoints
      • NFT Endpoints
      • Social Endpoints
      • Referral Endpoints
      • Tutorial Endpoints
      • Meta Data Endpoints
      • Transaction Spending Limits Endpoints
      • User Endpoints
      • Post Endpoints
      • Messages Endpoints
      • Access Group Endpoints
    • 4️⃣Transactions: API
  • DeSo Exchange Listings
    • 1️⃣Exchange Listing: API
  • DeSo Nodes
    • 2️⃣Node: Setup
    • 3️⃣Node: Staying Up-To-Date
    • 4️⃣Node: FAQ
  • DESO VALIDATORS
    • 1️⃣Run a Validator
  • Openfund
    • What is Openfund?
    • Openfund Tokenomics
    • Openfund Governance
    • Algorithmic Trading
      • The DeSo Python SDK
    • The DeSo Python SDK
      • Getting Help from the Community
      • Creating DeSo Testnet Accounts
      • Debugging Tips and Code Walkthrough
      • Write Blockchain Bots with AI
      • Market-Making Bots
      • Social AI Agents
      • AI-Generating Your Code
    • How Do the Advanced AMMs Work?
  • Focus
    • The Crypto Social Network
    • Next-Generation Token Mechanics
      • Launching Your Token
      • How the Order-Book AMMs Work
    • Crypto-Native Monetization
    • Focus Tokenomics
    • The Social Airdrop
    • Decentralizing Social Media
  • Contact And Media
    • ☀️DeSo Website
    • 📑DeSo Blog
    • 💻DeSo Github
    • 💎DeSo Diamond
    • 🐦DeSo Twitter
    • 📺DeSo YouTube
    • 📬Contact US
    • ⚠️Reporting an Account or Post
  • 中文
    • 什么是DeSo? (What is DeSo?)
    • 愿景 (The Vision)
Powered by GitBook
On this page
  • Getting Help from the Community
  • Video Walkthroughs
  • Getting Started
  • Resources
  • Staking Your $DESO
  • Unstaking your $DESO
  • Running a Node
  • Minimum Requirements
  • Node Setup (Using Docker)
  • Node Setup (From Source)
  • Running a Validator

Was this helpful?

  1. DESO VALIDATORS

Run a Validator

Instructions on how to stake/unstake $DESO and run a validator

PreviousNode: FAQNextWhat is Openfund?

Last updated 4 months ago

Was this helpful?

Getting Help from the Community

If you get stuck at any point, .

Video Walkthroughs

    • For Mainnet, use

    • For Testnet, use

    • IMPORTANT:

Getting Started

  • Background:

    • (Coming Soon!)

      • 1 second confirmation times

      • 500 posts per second (~10% of Twitter Scale)

      • 20% APY

      • No slashing

      • Quick-unstaking

      • Burn-maximizing fees

      • Fully permission-less and decentralized

  • Staking:

  • Running a Node & Validator

Resources

  • Block explorers:

    • Note: The legacy explorer is more accurate, but much less readable. If you run into an issue with the main explorer, always check back with the legacy explorer for now.

  • Validator Hubs:

  • Managing funds, managing identity, and generating transactions:

      • Every DeSo app, including the wallet, has access to the same blockchain data, so it doesn’t matter which app you use to manage your account.

    • Enter your phone number on the testnet node to get 1 testnet $DESO to test your apps with

  • Other recommended nodes:

    • You can also run your own node locally on your own computer!

    • Use CTRL+K to find documentation on any transaction type, or any other information you may need.

    • These docs will be refreshed after the launch of Revolution PoS on mainnet so note that some things may be out of date!

    • Good starting points:

    • $DESO can be listed on any exchange permissionlessly using this guide.

Staking Your $DESO

  • Revolution Proof of Stake makes a lot of improvements over state-of-the-art PoS systems, including Cosmos, Solana, and Ethereum. Some benefits of staking with Revolution are listed below:

    • No slashing. Revolution does not require slashing of stake. Instead, validators who are unresponsive are automatically “jailed” for a period of time, preventing them from harming consensus until they have resolved their issues. The only risk of staking to a bad validator is that you will miss out on rewards if they have downtime.

    • Quick unlocks. Unlocking one’s stake takes only two hours, compared to weeks to months with other protocols. And this amount will be decreased even further in the future.

    • Fully permissionless and decentralized. Revolution is permissionless and does not require a minimum amount of stake to become a validator. The idea was to reproduce the level of permission-lessness of Proof of Work systems, but in a Proof of Stake context.

Staking your $DESO:

  • For Testnet only:

    • Pick up some free testnet $DESO

      • Create an account

      • When creating an account you can enter your phone number to get 1 free testnet $DESO from the faucet

      • Note that testnet $DESO does not have any value outside of the test environment!

  • Now that you have $DESO, head to the block explorer

  • Login to the block explorer by hitting “Login” in the top-right and selecting the account that holds your $DESO

  • After logging in, select Validators > Stats from the top menu

    • Note the APY at the top. This amount will change depending on how many people are staking

  • Choose a validator to stake to and click on their username

    • Note that you can sort validators by their Commission percentage, the number of stakers, and their total staked

  • Once on the validator’s page, click “Stake” and fill in the amount you want to stake

  • That’s it!

Unstaking your $DESO

  • Go back to the main validator page on the block explorer

  • Make sure you are logged in with the account that originally staked the $DESO

  • Click “Unstake” on the /validators page

  • Select the amount of stake you want to remove

  • Hit “Update Stake”

  • After you unstake, your stake appears as a “Locked Stake Entry” and is locked for a 3 hour cooldown period. This prevents anyone from gaming the leader selection algorithm. You can see how much time is left before you can unlock by clicking “View Details.”

    • Note that other protocols require weeks or months of cooldown, but Revolution PoS only requires three hours, and we aim to decrease this even further over time.

  • After the cooldown period is over, you just hit “Unlock” on the locked stake entry to get your $DESO

Running a Node

A node on the DeSo network is any machine that has a full copy of the blockchain, and that other nodes can sync from. When you run a node, you start by syncing data from other nodes on the network until you have a full copy of the network’s “state.” Once you’re up-to-date, you stay online and get new blocks as they’re proposed. Note that you don’t need to participate in consensus in order to run a node. You just need to stay up to date by downloading all the new blocks as they’re proposed.

A validator is a node that participates in consensus. With Revolution, validators vote on each new block that is proposed and propose blocks when it’s their turn to be “leader.” Being a validator means that you take on the responsibility of validating blocks but it also means you can earn a commission from anyone who stakes to you.

Minimum Requirements

  • Mainnet

    • Minimum:

      • RAM: 32GB

      • CPU: 4 cores (less may be OK)

      • Disk: 200GB

      • Notes

        • If you are running the minimum configuration, you must use --sync-type=blocksync. This is because using --sync-type=hypersync or --sync-type=hypersync-archival will cause you to exceed your RAM requirements

    • Recommended:

      • RAM: 64GB - 256GB

        • 128GB will be the safest bet, and will allow you to run with --sync-type=hypersync and --sync-type=hypersync-archival, which will sync your node much faster. However, if you’re building a machine from scratch to be a validator, we’d recommend you make it upgrade-able to 256GB in case we decide to increase requirements in the future. We have a recommended build below that achieves this.

      • CPU: 8 cores (less may be OK)

      • Disk: 500GB (less may be OK)

      • Recommended build (premium):

        • If you want, you can order less RAM to make the build a bit cheaper. The CPU is tough to downsize, though, because there aren’t many that support 8 RAM slots, which is what we want everyone to have for future-proofing.

  • Testnet

    • Minimum and recommended:

      • RAM: 32gb

      • CPU: 2 cores

      • Disk: 50gb

    • Notes

      • Testnet currently requires --sync-type=blocksync, but this should be fixed soon.

  • Validator Requirements

    • In order to be a validator, your node must have a static IP and, ideally, a human-readable domain attached to that IP. We walk through setting that up in the video tutorial.

Node Setup (Using Docker)

  • Get a machine. First, you need to provision a machine with the minimum requirements. We walk through that in the video tutorial.

    • We recommend you run your machine from your house for maximum decentralization (and fun!). But provisioning a node on AWS or Google Cloud works great too.

    • Whatever you do, we recommend you run Ubuntu to minimize issues, but note that many members of the core team run nodes on Mac OS.

    • We have not tested thoroughly on Windows, but it should work. And if you run into issues you can always run your node from an Ubuntu virtual machine on Windows, e.g. using VirtualBox.

    • Start by cloning the run repo onto your node.

      • It sets up a service named backend. This is the service that will connect to the rest of the network and sync data from it. The backend service has two ports: a “protocol” port 18000, where other nodes connect to it, and an “API” port 18001, which exposes a bunch of convenience endpoints and powers the frontend.

      • It also sets up a service called “frontend” and “nginx” service. This allows you to visually manipulate your node.

  • Run your node! To run your node, all you have to do is type “make testnet” (if you have a permission error, use “sudo make testnet”). This will automatically run the testnet.docker-compose.yml and set up the backend+frontend+nginx services.

    • If you run into issues or you want to start “from scratch”, the Makefile also defines a command called “make testnet-wipe”, which will wipe everything your node has done and start over.

    • To run a mainnet node, simply run “make mainnet” instead of “make testnet”.

      • Note that this will leverage the mainnet.docker-compose.yml instead.

  • Access your node’s frontend. Once your docker-compose is running, you can access your node using its reference frontend at yournodesdomain.com:8080. To properly access your frontend, you need to visit this address and set a key-value in local storage that tells your frontend the address of your node’s API endpoint. The key is “lastLocalNodeV2” and the value should be "yournodesdomain.com:18001" if you ran make testnet and "yournodesdomain.com:17001" if you ran make mainnet. See screenshot below for an example from the video. Once you set this, you can access your node’s frontend at yournodesdomain.com:8080 and tweak it via the Admin panel. We will have improved docs on this soon!

Node Setup (From Source)

TODO: Make this more clear and show a video doing this on a new node from scratch.

  • After that you should have *at least* the following repos locally:

    • core

    • backend

    • frontend

  • cd backend/scripts/nodes

  • For mainnet run ./n0. For testnet run ./n0_test

  • If you want, you can play with all the flags in those files to get different behavior.

Running a Validator

A validator on the DeSo network is responsible for voting on new blocks as they’re proposed, and for proposing valid blocks when it’s their turn to be leader. Validators can be staked to by anyone on the network, and they earn a commission on the rewards that accrue to all of the $DESO that is staked to them.

Below are the instructions for setting up a validator. We assume you’ve read through how to set up a node in the previous sections:

  • Testnet only:

    • First, pick up some free testnet $DESO

    • Create an account

    • When creating an account you can enter your phone number to get 1 free testnet $DESO from the faucet

    • Note that testnet $DESO does not have any value outside of the test environment!

  • Now that you have $DESO, head to the block explorer

  • Login to the block explorer by hitting “Login” in the top-right and selecting the account that holds your $DESO

  • After logging in, select Validators > Stats from the top menu

    • Note the APY at the top. This amount will change depending on how many people are staking

  • Register your validator. To register your validator, hit the “Run a Validator” button in the top right.

  • Registering your validator consists of broadcasting a transaction on-chain signed by your validator private key. The UI in the block explorer helps you form this transaction, but you can also do it permissionlessly with a script if you prefer. This tutorial will focus on using the UI to do it.

  • Getting all of the fields right. The registration transaction requires a bunch of fields shown on the “Run a Validator” page. We walk through each one and how to set it up below.

    • Add Domain.

      • Static IP (covered in the video tutorial). First, your validator must have a static IP address for your node and it should ideally have a domain associated with that IP address. AWS and Google Cloud make it very easy to have a static IP, but setting one up for your home is easy as well (and fun), although you will have to call your cable provider to do it.

      • Registering a domain (covered in the video tutorial). Once you have an IP address associated with your node, you can associate a domain with it simply by setting a single A record on your DNS settings just like you would for a normal website. See sirstakesalot.com for an example.

      • Default ports. By default, your testnet node will expose a protocol port on 18000 and an API port on 18001. For mainnet, the default ports are 17000 and 17001.

        • The protocol port is the one that matters for consensus, as it’s what nodes use to connect to you and send you blocks. The API port is mainly used to power a frontend that you can use to manage your node.

        • When you register your validator, you need to include the protocol port, and so your registration string will look like “example.com:18000” for testnet or “example.com:17000” for mainnet.

        • You can also change the ports to whatever you want, just as long as the string in your registration transaction matches what your node is actually doing.

      • Run your node and make sure it’s exposed to the outside world. Once you have your static IP and domain, you can use the validator registration UI to check your node’s connection. You can also use this curl command, but replace your domain and port with what your node is running on (for mainnet, node you must use port 17001):

          • Note this is querying the API port 18001 not the protocol port. This is usually fine but the UI will actually check your protocol port.

    • Setting up your voting public key. Once your validator is reachable by the outside world, you need to set up your voting public key. This is the key that you’ll use to sign consensus messages like votes or block proposals. Below we explain how to generate this keypair.

      • First, generate a seed. Your validator keypair can be generated from an ordinary 12-word seed phrase, just like the one you get on any DeSo app. You can either use one that’s associated with an existing profile or a brand new one that you designate just for PoS messages.

        • Why is this necessary? The reason is that your validator keys are BLS keys, while your standard DeSo keys are ECDSA private keys. BLS keys allow for “signature aggregation,” which is needed by Revolution PoS, and hence even if you use the same seed for both your DeSo account and your validator, you will need to use this script to generate a voting public key that is distinct from your DeSo public key.

        • The other benefit of having a script to generate the pubkey+authorization is that it allows for totally offline generation of validator pubkey and authorization, which is needed by custodians and exchanges that want to stake.

    • Commission. This is what percentage of the staking rewards you get to keep. A lower commission will attract more people to stake with you.

    • Delegated stake. If you disable this, nobody will be able to stake to your validator except you. This is useful if you just want to run a validator to manage your own stake.

    • Announcements and Discussion Telegrams. Please join these telegrams to get your passwords! You can register without joining these, but then you may miss out on critical updates.

  • Time to register! Once you’ve filled in all the fields, hit the “Register Validator” button. This will construct and submit a transaction that links your voting public key with your node’s public domain+port and your DeSo profile (the one that you’re logged-in with). Linking all of these together on-chain makes it so that 1. other nodes can connect to your validator node and 2. people can stake to your validator node. Exciting!

Once your validator is registered, it should appear immediately on the validators page. You can then stake to it following the prior instructions.

()

()

(and the )

You can manage your funds here, or using the reference nodes listed below, or using any app built on DeSo, including , , and (Coming Soon!).

Technically, your DeSo public/private keys are managed locally in your browser by the , which allows you to sign transactions on any app on the web (with approval). It’s exactly like MetaMask, only it doesn’t require you to install a browser extension, and it can do much more than send/receive funds.

(and the )

The reference nodes can generate the full set of DeSo transactions, including making posts, following users, etc…, which the wallet app may not be able to do. You can also try other nodes like , , or (Coming Soon!)

, , , (Coming Soon!)

(Getting Started)

$DESO is currently listed on , , and .

It can also be traded permissionlessly via the DeSo DEX on or .

Some info about staking with :

20% APY to start. The APY for staking your $DESO starts at 20% and adjusts depending on how much $DESO is staked on the network. You can always see an updated APY on the validators page on the block explorer (, )

Learn more about Revolution and its many other breakthroughs by reading .

Visit

You will also need

Clone the run repo. contains everything you need to get a node running with, a frontend interface attached. Some notes on using the run repo:

This branch has several docker-compose files. Let’s take a look at :

Update the value for "lastLocalNodeV2"

If you’re interested in a walkthrough of the code, check out our

Visit

Click Run a Validator

curl

Click "Test"

Next, get the public key and authorization bytes. Once you have a seed phrase you like, you need to use script to generate a voting public key and a voting authorization, which you will enter into the UI.

Set POS_VALIDATOR_SEED in your config. Note that there is one missing step in the video, which is you need to set your POS_VALIDATOR_SEED in the testnet.docker-compose.yml or mainnet.docker-compose.yml file to be equal to the seed you used with the . This is how your validator becomes capable of signing blocks with its bls keypair.

Keeping your validator up. If your validator is down for a 12-hour period, it will be “jailed.” You will see this in the validator UI. To unjail your validator, you will need to go back to the after you’ve fixed your node and hit “Unjail Validator.” Note that there will be a cooldown of a few hours before your validator is able to vote in consensus again.

1️⃣
go here for help
An Overview of DeSo
Staking and Unstaking $DESO
explorer.deso.com/validators
explorer-testnet.deso.com/validators
Running a Node and Validator
See updates and extra notes here
What is DeSo?
Our vision
Current roadmap
Focus
What is Revolution Proof of Stake?
Resources
Staking Your $DESO
Unstaking your $DESO
Running a Node
Running a Validator
deso.com
Current roadmap
Mainnet block explorer
legacy explorer
Testnet block explorer
legacy explorer
Mainnet validator hub
Testnet validator hub
The DeSo Wallet
Testnet DeSo Wallet
Diamond
Openfund
Focus
DeSo Identity iFrame
Mainnet Reference Node
Testnet Reference Node
Diamond
Openfund
Focus
Diamond
DeSocialWorld
Openfund
Focus
The DeSo Docs
Current Roadmap
List of Notable DeSo Apps
Building a DeSo App
Architecture Overview
Exchange listing API
Coinbase
Gate
Huobi
Openfund
HeroSwap
About Revolution Proof of Stake
Revolution Proof of Stake
mainnet
testnet
the docs here
https://test.deso.org
Testnet link
Mainnet link
Testnet link
Mainnet link
24-core/48-thread, 256GB RAM, 4TB NVME ssd
this Enermax cooler for your CPU
The “run” repo here
testnet.docker-compose.yml
Go through this tutorial and checkout all the repos listed
Architecture Overview
https://test.deso.org
Testnet link
Mainnet link
http://sirstakesalot.com:18001/api/v0/health-check
this validator key generator
validator key generator
Discussion Telegram
Announcements Telegram
validator registration page