Gossamer is an implementation of the Polkadot Host: a framework used to build and run nodes for different blockchain protocols that are compatible with the Polkadot ecosystem. The core of the Polkadot Host is the wasm runtime which handles the logic of the chain.
Gossamer includes node implementations for major blockchains within the Polkadot ecosystem and simplifies building node implementations for other blockchains. Runtimes built with Substrate can plug their runtime into Gossamer to create a node implementation in Go.
For more information about Gossamer, the Polkadot ecosystem, and how to use Gossamer to build and run nodes for various blockchain protocols within the Polkadot ecosystem, check out the Gossamer Docs.
install go version >=1.15
get the ChainSafe/gossamer repository:
git clone git@github.com:ChainSafe/gossamer
cd gossamer
build gossamer command:
make gossamer
initialize default node:
./bin/gossamer --chain gssmr init
start default node:
./bin/gossamer --chain gssmr --key alice
The built-in keys available for the node are alice
, bob
, charlie
, dave
, eve
, ferdie
, george
, and ian
.
The node will not build blocks every slot by default; it will appear that the node is doing nothing, but it is actually waiting for a slot to build a block. If you wish to force it to build blocks every slot, you update the [core]
section of chain/gssmr/config.toml
to the following:
[core]
roles = 4
babe-authority = true
grandpa-authority = true
babe-threshold-numerator = 1
babe-threshold-denominator = 1
Then, re-run the above steps. NOTE: this feature is for testing only; if you wish to change the BABE block production parameters, you need to create a modified runtime.
initialize kusama node:
./bin/gossamer --chain kusama init
start kusama node:
./bin/gossamer --chain kusama
The node may not appear to do anything for the first minute or so (it's bootstrapping to the network.) If you wish to see what is it doing in this time, you can turn on debug logs in chain/gssmr/config.toml
:
[log]
network = "debug"
After it's finished bootstrapping, the node should begin to sync.
initialize polkadot node:
./bin/gossamer --chain polkadot init
start polkadot node:
./bin/gossamer --chain polkadot
- Check out Contributing Guidelines
- Have questions? Say hi on Discord!
Our work on gossamer is funded by grants. If you'd like to donate, you can send us ETH or DAI at the following address:
0x764001D60E69f0C3D0b41B0588866cFaE796972c
We take all security issues seriously, if you believe you have found a security issue within a ChainSafe project please notify us immediately. If an issue is confirmed, we will take all necessary precautions to ensure a statement and patch release is made in a timely manner.
Please email us a description of the flaw and any related information (e.g. reproduction steps, version) to security at chainsafe dot io.
GNU Lesser General Public License v3.0