Need help with thor?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

718 Stars 206 Forks GNU Lesser General Public License v3.0 3.0K Commits 13 Opened issues


A general purpose blockchain highly compatible with Ethereum's ecosystem

Services available


Need anything else?

Contributors list

VeChain Thor

A general purpose blockchain highly compatible with Ethereum's ecosystem.

This is the first implementation written in golang.

Go Go Report Card Travis License    TG

Table of contents



Thor requires

1.13+ and
compiler to build. To install
, follow this link.

Getting the source

Clone the Thor repo:

git clone
cd thor

Dependency management

Simply run:

make dep

If you keep getting network errors, it is suggested to use Go Module Proxy. is one option.


To build the main app

, just run

or build the full suite:

make all

If no errors are reported, all built executable binaries will appear in folder bin.

Running Thor

Connect to VeChain's mainnet:

bin/thor --network main

Connect to VeChain's testnet:

bin/thor --network test

or startup a custom network

bin/thor --network 

An example genesis config file can be found at genesis/example.json.

To show usages of all command line options:

bin/thor -h
  • --network value
    the network to join (main|test) or path to genesis file
  • --data-dir value
    directory for block-chain databases
  • --cache value
    megabytes of ram allocated to internal caching (default: 2048)
  • --beneficiary value
    address for block rewards
  • --target-gas-limit value
    target block gas limit (adaptive if set to 0) (default: 0)
  • --api-addr value
    API service listening address (default: "localhost:8669")
  • --api-cors value
    comma separated list of domains from which to accept cross origin requests to API
  • --api-timeout value
    API request timeout value in milliseconds (default: 10000)
  • --api-call-gas-limit value
    limit contract call gas (default: 50000000)
  • --api-backtrace-limit value
    limit the distance between 'position' and best block for subscriptions APIs (default: 1000)
  • --verbosity value
    log verbosity (0-9) (default: 3)
  • --max-peers value
    maximum number of P2P network peers (P2P network disabled if set to 0) (default: 25)
  • --p2p-port value
    P2P network listening port (default: 11235)
  • --nat value
    port mapping mechanism (any|none|upnp|pmp|extip:<IP>) (default: "none")
  • --bootnode value
    comma separated list of bootnode IDs
  • --skip-logs
    skip writing event|transfer logs (/logs API will be disabled)
  • --pprof
    turn on go-pprof
  • --disable-pruner
    disable state pruner to keep all history
  • --help, -h
    show help
  • --version, -v
    print the version


  • solo
    client runs in solo mode for test & dev
# create new block when there is pending transaction
bin/thor solo --on-demand

save blockchain data to disk(default to memory)

bin/thor solo --persist

two options can work together

bin/thor solo --persist --on-demand

  • master-key
    master key management
# print the master address
bin/thor master-key

export master key to keystore

bin/thor master-key --export > keystore.json

import master key from keystore

cat keystore.json | bin/thor master-key --import


Docker is one quick way for running a vechain node:

docker run -d\
  -v {path-to-your-data-directory}/.org.vechain.thor:/root/.org.vechain.thor\
  -p -p 11235:11235 -p 11235:11235/udp\
  --name thor-node vechain/thor --network test

Do not forget to add the

flag if you want other containers and/or hosts to have access to the RESTful API.
binds to
by default and it will not accept requests outside the container itself without the flag.

The Dockerfile is designed to build the last release of the source code and will publish docker images to dockerhub by release, feel free to fork and build Dockerfile for your own purpose.


Testnet faucet



has started, the online OpenAPI doc can be accessed in your browser. e.g. http://localhost:8669/ by default.



A special shout out to following projects:


Thank you so much for considering to help out with the source code! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes!

Please fork, fix, commit and send a pull request for the maintainers to review and merge into the main code base.

Forking Thor

When you "Fork" the project, GitHub will make a copy of the project that is entirely yours; it lives in your namespace, and you can push to it.

Getting ready for a pull request

Please check the following:

  • Code must be adhere to the official Go Formatting guidelines.
  • Get the branch up to date, by merging in any recent changes from the master branch.

Making the pull request

  1. On the GitHub site, go to "Code". Then click the green "Compare and Review" button. Your branch is probably in the "Example Comparisons" list, so click on it. If not, select it for the "compare" branch.
  2. Make sure you are comparing your new branch to master. It probably won't be, since the front page is the latest release branch, rather than master now. So click the base branch and change it to master.
  3. Press Create Pull Request button.
  4. Provide a brief title.
  5. Explain the major changes you are asking to be code reviewed. Often it is useful to open a second tab in your browser where you can look through the diff yourself to remind yourself of all the changes you have made.


VeChain Thor is licensed under the GNU Lesser General Public License v3.0, also included in LICENSE file in repository.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.