Skip to content

Latest commit

 

History

History
888 lines (628 loc) · 23.1 KB

README-en.md

File metadata and controls

888 lines (628 loc) · 23.1 KB

Agora Chain

English | 한국어

Abort

Agora-el is an execution client that has an EVM.
Agora-el was forked from Ethereum's execution client, ethereum/go-ethereum version 1.10.23.
We implemented the function of issuing commons budget in Agora-el.

Agora-cl is a consensus client with a focus on usability, security, and reliability.
Agora-cl was forked from Ethereum's consensus client, prysmaticlabs/prysm version 3.1.1.
We modified the block confirmation rewards in Agora-cl.

Install Docker Engine

To run the Agora node, you must first install the Docker Engine.
See here for instructions on how to install the Docker Engine
https://docs.docker.com/engine/install/

For Linux or MacOS users

Install for Linux or MacOS

  • Install

    mkdir agora-chain
    cd agora-chain
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/agora.sh)"
  • Change to BOSagora main network

    ./agora.sh network mainnet
  • Change to BOSagora test network

    ./agora.sh network testnet
  • Change to BOSagora development network

    ./agora.sh network devnet
  • Available commands and descriptions of agora.sh

    ./agora.sh 
    agora.sh version 2.0.0
    Usage: ./agora.sh PROCESS FLAGS.
    PROCESS can be el-node, cl-node, validator, docker-compose, docker-compose-monitoring, start, stop, exec, upgrade
    
    ./agora.sh network <network to change>
           - <network to change> is one of mainnet, testnet, and devnet, and the default is mainnet.
           - If <network to change> is not specified, it shows the currently set up network.
    
    ./agora.sh el-node ( init, run )
        el-node init
           - Initialize agora-el. At this point, all existing block data is deleted.
        el-node run
           - Run agora-el.
    
    ./agora.sh cl-node ( run, clear-db )
        cl-node run
           - Run agora-cl.
        cl-node clear-db
           - Clear stored data of agora-cl.
    
    ./agora.sh validator ( accounts, exit, withdraw, slashing-protection-history, wallet )
    
    ./agora.sh validator accounts ( import, list, backup )
        validator accounts import <validator keys folder>
           - Add the validator's keys to the local wallet.
        validator accounts list
           - Show the validator's keys stored in the local wallet.
        validator accounts delete
           - Delete the validator's keys from the local wallet.
        validator accounts backup <validator keys folder>
           - Back up the validator's keys stored in the local wallet.
    
        validator exit
           - Used to voluntarily exit the validator's function. After this is done, you will see a screen where you select the validator's keys.
        validator withdraw <data folder>
           - Send pre-created withdrawal address registration data to the network.
           - Currently, only devnet is supported. Other networks will be supported later.
    
    ./agora.sh validator slashing-protection-history ( export, import ) 
        validator slashing-protection-history export <data folder>
           - Save the information that the verifiers worked on as a file. At this point, the validator on the current server must be stopped.
           - One validator must validate only once per block. Otherwise, the validator may be slashed.
               - If a validator runs on multiple servers, that validator may violate the above condition.
               - If a validator's server is changed to another server, the validator may violate the above condition.
               - To avoid this, you need to transfer the block verification information that the validators has performed so far.
        validator slashing-protection-history import <data folder>
           - Register block verification information performed by validators.
    
    ./agora.sh validator wallet ( create, recover )
        validator wallet create <wallet folder>
           - Create an HD wallet.
        validator wallet recover <wallet folder>
           - Recovery an HD wallet.
    
    ./agora.sh deposit-cli ( new-mnemonic, existing-mnemonic, generate-bls-to-execution-change )
        deposit-cli new-mnemonic
           - This command is used to generate keystores with a new mnemonic.
        deposit-cli existing-mnemonic
           - This command is used to re-generate or derive new keys from your existing mnemonic.
        deposit-cli generate-bls-to-execution-change <data folder>
           - Generates the data required to register the address to which the validator's amount will be withdrawn.
           - Currently, only devnet is supported. Other networks will be supported later.        
    
    ./agora.sh docker-compose ( up, down )
        docker-compose up
           - Run agora-el, agora-cl, validator.
        docker-compose down
           - Stop agora-el, agora-cl, validator.
    
    ./agora.sh docker-compose-no-validator ( up, down )
        docker-compose-no-validator up
           - Run agora-el, agora-cl.
        docker-compose-no-validator down
           - Stop agora-el, agora-cl.
    
    ./agora.sh docker-compose-monitoring ( up, down )
        docker-compose-monitoring up
            - Run agora-el, agora-cl, validator, and containers required for monitoring.
        docker-compose-monitoring down
           - Stop agora-el, agora-cl, validator, and containers required for monitoring.
    
    ./agora.sh start
           - Run agora-el, agora-cl, validator, and containers required for monitoring.
           - It's the same as './agora.sh docker-compose-monitoring up'
    
    ./agora.sh stop
           - Stop agora-el, agora-cl, validator, and containers required for monitoring.
           - It's the same as './agora.sh docker-compose-monitoring down'
    
    ./agora.sh exec ( el-node, cl-node, cl-validator, cl-ctl )
        exec el-node ...
           - Run agora-el-node with user-entered parameters.
        exec cl-node ...
           - Run agora-cl-node with user-entered parameters.
        exec cl-validator ...
           - Run agora-cl-validator with user-entered parameters.
        exec cl-ctl ...
           - Run agora-cl-ctl with user-entered parameters.
    
    ./agora.sh upgrade
           - The latest version is installed, at which point the user data is preserved.

Upgrade and Migration for Linux or MacOS

Go to the path that was installed first. If the installed folder is agora-chain-main, use the command below to move the path

cd agora-chain-main

If the installed folder is agora-chain, use the command below to move the path

cd agora-chain

The following commands then run inside the installed folder to upgrade the nodes and migrate block data and validator information.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/upgrade.sh)"

Execution Layer for Linux or MacOS

  • Init execution node

    ./agora.sh el-node init
  • Run execution node

    ./agora.sh el-node run

Consensus Layer for Linux or MacOS

  • Run consensus node

    ./agora.sh cl-node run

Validator accounts for Linux or MacOS

  • Generate your validator keys when you don't have mnemonic

    ./agora.sh deposit-cli new-mnemonic
  • Generate your validator keys when you have mnemonic

    ./agora.sh deposit-cli existing-mnemonic
  • Import your key stores

    ./agora.sh validator import <your key stores folder>

    or

    ./agora.sh validator accounts import <your key stores folder>

    <your key stores folder> is where the validator keys are stored. The default folder is ./validator_keys

  • List your key stores in your wallet

    ./agora.sh validator accounts list
  • Backup your key stores in your wallet

    ./agora.sh validator accounts backup <folder>

    <folder> is where the backup key is stored. The default folder is ./backup-wallet

Validator execution for Linux or MacOS

  • Run validator

    ./agora.sh validator run

Validator exit for Linux or MacOS

  • Voluntary exit of the validator

    ./agora.sh validator exit

Validator withdrawals for Linux or MacOS

  • Generate the SignedBLSToExecutionChange data to enable withdrawals

    ./agora.sh deposit-cli generate-bls-to-execution-change <folder>

    <folder> is where the SignedBLSToExecutionChange data is stored. The default folder is ./bls_to_execution_changes

  • Send the SignedBLSToExecutionChange data to enable withdrawals

    ./agora.sh validator withdraw <folder>

    <folder> is where the SignedBLSToExecutionChange data is stored. The default folder is ./bls_to_execution_changes

Validator slashing protection for Linux or MacOS

  • export

    ./agora.sh validator slashing-protection-history export <folder>

    <folder> is where the slashing protection history data is stored. The default folder is ./slashing-protection-export

  • import

    ./agora.sh validator slashing-protection-history import <folder>

    <folder> is where the slashing protection history data is stored. The default folder is ./slashing-protection-export

Using docker-compose for Linux or MacOS

  1. Init the execution node
./agora.sh el-node init
  1. Import your key stores
./agora.sh validator import <your key stores folder>

or

./agora.sh validator accounts import <your key stores folder>
  1. Edit wallet password
nano ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
nano ./root/config/cl/proposer_config.json
  1. Run docker-compose
./agora.sh docker-compose up
  1. Stop docker-compose
./agora.sh docker-compose down

Using docker-compose with monitoring for Linux or MacOS

  1. Init the execution node
./agora.sh el-node init
  1. Import your key stores
./agora.sh validator import <your key stores folder>

or

./agora.sh validator accounts import <your key stores folder>
  1. Edit wallet password
nano ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
nano ./root/config/cl/proposer_config.json
  1. Run docker-compose
./agora.sh docker-compose-monitoring up

or

./agora.sh start
  1. Stop docker-compose
./agora.sh docker-compose-monitoring down

or

./agora.sh stop

Using docker-compose that do not run validator for Linux or MacOS

  1. Init the execution node
./agora.sh el-node init
  1. Import your key stores
./agora.sh validator import <your key stores folder>

or

./agora.sh validator accounts import <your key stores folder>
  1. Edit wallet password
nano ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
nano ./root/config/cl/proposer_config.json
  1. Run docker-compose
./agora.sh docker-compose-no-validator up
  1. Stop docker-compose
./agora.sh docker-compose-no-validator down

For Windows users

Install for Windows

  • Install

    mkdir agora-chain
    cd agora-chain
    curl -S -L -o agora.bat https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/agora.bat
    call agora.bat
  • Change to BOSagora main network

    agora.bat network mainnet
  • Change to BOSagora test network

    agora.bat network testnet
  • Change to BOSagora development network

    agora.bat network devnet
  • Available commands and descriptions of agora.bat

    agora.bat
    agora.bat version 2.0.0
    Usage: agora.bat PROCESS FLAGS.
    PROCESS can be el-node, cl-node, validator, docker-compose, docker-compose-monitoring, start, stop, exec, upgrade
    
    agora.bat network <network to change>
           - <network to change> is one of mainnet, testnet, and devnet, and the default is mainnet.
           - If <network to change> is not specified, it shows the currently set up network.
    
    agora.bat el-node ( init, run )
        el-node init
           - Initialize agora-el. At this point, all existing block data is deleted.
        el-node run
           - Run agora-el.
    
    agora.bat cl-node ( run, clear-db )
        cl-node run
           - Run agora-cl.
        cl-node clear-db
           - Clear stored data of agora-cl.
    
    agora.bat validator ( accounts, exit, withdraw, slashing-protection-history, wallet )
    
    agora.bat validator accounts ( import, list, backup )
        validator accounts import <validator keys folder>
           - Add the validator's keys to the local wallet.
        validator accounts list
           - Show the validator's keys stored in the local wallet.
        validator accounts delete
           - Delete the validator's keys from the local wallet.
        validator accounts backup <validator keys folder>
           - Back up the validator's keys stored in the local wallet.
    
        validator exit
           - Used to voluntarily exit the validator's function. After this is done, you will see a screen where you select the validator's keys.
        validator withdraw <data folder>
           - Send pre-created withdrawal address registration data to the network.
           - Currently, only devnet is supported. Other networks will be supported later.
    
    agora.bat validator slashing-protection-history ( export, import ) 
        validator slashing-protection-history export <data folder>
           - Save the information that the verifiers worked on as a file. At this point, the validator on the current server must be stopped.
           - One validator must validate only once per block. Otherwise, the validator may be slashed.
               - If a validator runs on multiple servers, that validator may violate the above condition.
               - If a validator's server is changed to another server, the validator may violate the above condition.
               - To avoid this, you need to transfer the block verification information that the validators has performed so far.
        validator slashing-protection-history import <data folder>
           - Register block verification information performed by validators.
    
    agora.bat validator wallet ( create, recover )
        validator wallet create <wallet folder>
           - Create an HD wallet.
        validator wallet recover <wallet folder>
           - Recovery an HD wallet.
    
    agora.bat deposit-cli ( new-mnemonic, existing-mnemonic, generate-bls-to-execution-change )
        deposit-cli new-mnemonic
           - This command is used to generate keystores with a new mnemonic.
        deposit-cli existing-mnemonic
           - This command is used to re-generate or derive new keys from your existing mnemonic.
        deposit-cli generate-bls-to-execution-change <data folder>
           - Generates the data required to register the address to which the validator's amount will be withdrawn.
           - Currently, only devnet is supported. Other networks will be supported later.        
    
    agora.bat docker-compose ( up, down )
        docker-compose up
           - Run agora-el, agora-cl, validator.
        docker-compose down
           - Stop agora-el, agora-cl, validator.
    
    agora.bat docker-compose-no-validator ( up, down )
        docker-compose-no-validator up
           - Run agora-el, agora-cl.
        docker-compose-no-validator down
           - Stop agora-el, agora-cl.
    
    agora.bat docker-compose-monitoring ( up, down )
        docker-compose-monitoring up
            - Run agora-el, agora-cl, validator, and containers required for monitoring.
        docker-compose-monitoring down
           - Stop agora-el, agora-cl, validator, and containers required for monitoring.
    
    agora.bat start
           - Run agora-el, agora-cl, validator, and containers required for monitoring.
           - It's the same as 'agora.bat docker-compose-monitoring up'
    
    agora.bat stop
           - Stop agora-el, agora-cl, validator, and containers required for monitoring.
           - It's the same as 'agora.bat docker-compose-monitoring down'
    
    agora.bat exec ( el-node, cl-node, cl-validator, cl-ctl )
        exec el-node ...
           - Run agora-el-node with user-entered parameters.
        exec cl-node ...
           - Run agora-cl-node with user-entered parameters.
        exec cl-validator ...
           - Run agora-cl-validator with user-entered parameters.
        exec cl-ctl ...
           - Run agora-cl-ctl with user-entered parameters.
    
    agora.bat upgrade
           - The latest version is installed, at which point the user data is preserved.

Upgrade and Migration for Windows

Go to the path that was installed first. If the installed folder is agora-chain-main, use the command below to move the path

cd agora-chain-main

If the installed folder is agora-chain, use the command below to move the path

cd agora-chain

The following commands then run inside the installed folder to upgrade the nodes and migrate block data and validator information.

curl -S -L -o upgrade.bat https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/upgrade.bat
upgrade.bat

Execution Layer for Windows

  • Init execution node

    agora.bat el-node init
  • Run execution node

    agora.bat el-node run

Consensus Layer for Windows

  • Run consensus node

    agora.bat cl-node run

Validator accounts for Windows

  • Generate your validator keys when you don't have mnemonic

    agora.bat deposit-cli new-mnemonic
  • Generate your validator keys when you have mnemonic

    agora.bat deposit-cli existing-mnemonic
  • Import your key stores

    agora.bat validator import <your key stores folder>

    or

    agora.bat validator accounts import <your key stores folder>

    <your key stores folder> is where the validator keys are stored. The default folder is ./validator_keys

  • List your key stores in your wallet

    agora.bat validator accounts list
  • Backup your key stores in your wallet

    agora.bat validator accounts backup <folder>

    <folder> is where the backup key is stored. The default folder is ./backup-wallet

Validator execution for Windows

  • Run validator

    agora.bat validator run

Validator exit for Windows

  • Voluntary exit of the validator

    agora.bat validator exit

Validator withdrawals for Windows

  • Generate the SignedBLSToExecutionChange data to enable withdrawals

    agora.bat deposit-cli generate-bls-to-execution-change <folder>

    <folder> is where the SignedBLSToExecutionChange data is stored. The default folder is ./bls_to_execution_changes

  • Send the SignedBLSToExecutionChange data to enable withdrawals

    agora.bat validator withdraw <folder>

    <folder> is where the SignedBLSToExecutionChange data is stored. The default folder is ./bls_to_execution_changes

Validator slashing protection for Windows

  • export

    ./agora.bat validator slashing-protection-history export <folder>

    <folder> is where the slashing protection history data is stored. The default folder is ./slashing-protection-export

  • import

    ./agora.bat validator slashing-protection-history import <folder>

    <folder> is where the slashing protection history data is stored. The default folder is ./slashing-protection-export

Using docker-compose for Windows

  1. Init the execution node
agora.bat el-node init
  1. Import your key stores
agora.bat validator import <your key stores folder>

or

agora.bat validator accounts import <your key stores folder>
  1. Edit wallet password
notepad ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
notepad ./root/config/cl/proposer_config.json
  1. Run docker-compose
agora.bat docker-compose up
  1. Stop docker-compose
agora.bat docker-compose down

Using docker-compose with monitoring for Windows

  1. Init the execution node
agora.bat el-node init
  1. Import your key stores
agora.bat validator import <your key stores folder>

or

agora.bat validator accounts import <your key stores folder>
  1. Edit wallet password
notepad ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
notepad ./root/config/cl/proposer_config.json
  1. Run docker-compose
agora.bat docker-compose-monitoring up

or

agora.bat start
  1. Stop docker-compose
agora.bat docker-compose-monitoring down

or

agora.bat stop

Using docker-compose that do not run validator for Windows

  1. Init the execution node
agora.bat el-node init
  1. Import your key stores
agora.bat validator import <your key stores folder>

or

agora.bat validator accounts import <your key stores folder>
  1. Edit wallet password
notepad ./root/config/cl/password.txt
  1. Edit transaction fee receiving address
notepad ./root/config/cl/proposer_config.json
  1. Run docker-compose
agora.bat docker-compose-no-validator up
  1. Stop docker-compose
agora.bat docker-compose-no-validator down

Additional Information

Installing the BOSagora's node on Ubuntu on AWS