Warning
The Gossamer Polkadot Host is pre-production software [2022-12-01]
Gossamer is a Golang implementation of the
Polkadot Host: an
execution environment for the Polkadot runtime, which is materialized as a Web
Assembly (Wasm) blob. In addition to running an embedded Wasm executor, a
Polkadot Host must orchestrate a number of interrelated services, such as
networking, block production, block finalization, a
JSON-RPC server, and more.
Getting Started
To get started with Gossamer, follow the steps below to build the source code
and start a development network.
Prerequisites
Git is required
to acquire the Gossamer source code, and
Make
is used to build it. Building Gossamer requires version 1.18 of
Golang.
Warning
Gossamer will NOT work with version 1.19 of Golang.
Installation
Clone the Gossamer repository and
checkout the development branch:
git clone [email protected]:ChainSafe/gossamer
cd gossamer
git checkout development
Build Gossamer:
make gossamer
Or build Gossamer and move the resulting executable to $GOPATH/bin:
make install
To install Gossamer
Troubleshooting for Apple Silicon users
Apple Silicon users may encounter these errors:
undefined: cWasmerImportObjectT
undefined: cWasmerImportFuncT
undefined: cWasmerValueTag
If so, set the following
Golang environment variables:
GOARCH="amd64"
Use Gossamer
A comprehensive guide to
Gossamer's end-user capabilities is located in the
cmd/gossamer directory. What follows is a guide to Gossamer's capabilities as
a Polkadot Host.
Chain Specifications
A chain specification is a JSON document that defines the
genesis block of a
blockchain network, as well as network parameters and metadata (e.g. network
name, bootnodes,
telemetry endpoints,
etc). It is necessary to provide Gossamer with a chain specification in order to
use it as a Polkadot Host. The Gossamer repository includes a number of chain
specifications, some of which will be used in this guide.
Configuration Files
Gossamer exposes a number of configuration parameters, such as the location of a
chain specification file. Although it's possible to use command-line parameters,
this guide will focus on the usage of Gossamer TOML configuration files, which
define a set of configuration values in a declarative, portable, reusable
format. The chain specifications that are used in this guide are each
accompanied by one or more configuration files.
Single-Node Development Network
The name of the Polkadot test network is "Westend", and the Gossamer repository
includes a chain specification and configuration file for a single-node, local
Westend test network.
First, initialize the directory that will be used by the Gossamer node to manage
its state:
./bin/gossamer init --force --config ./chain/westend-dev/config.toml
Now, start Gossamer as a host for the local Westend development chain:
./bin/gossamer --config ./chain/westend-dev/config.toml
Multi-Node Development Network
The multi-node development network includes three participants: the Alice, Bob,
and Charlie test accounts. In three separate terminals, initialize the data
directories for the three Gossamer instances:
./bin/gossamer init --force --config ./chain/westend-local/config-alice.toml
./bin/gossamer init --force --config ./chain/westend-local/config-bob.toml
./bin/gossamer init --force --config ./chain/westend-local/config-charlie.toml
Then start the three hosts:
./bin/gossamer --config ./chain/westend-local/config-alice.toml
./bin/gossamer --config ./chain/westend-local/config-bob.toml
./bin/gossamer --config ./chain/westend-local/config-charlie.toml
Contribute
Donate
Our work on Gossamer is funded by the community. If you'd like to support us
with a donation:
ChainSafe Security Policy
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.
Reporting a Security Bug
Please email us a description of the flaw and any related information (e.g.
reproduction steps, version) to
security at chainsafe dot io.
License
GNU Lesser General Public License v3.0