Skip to content

🕸️ Gossamer: A Go implementation of the Polkadot Host

License

Notifications You must be signed in to change notification settings

LimeChain/gossamer

This branch is 345 commits behind ChainSafe/gossamer:development.

Folders and files

NameName
Last commit message
Last commit date
Nov 25, 2021
Dec 1, 2023
Nov 29, 2023
Nov 21, 2023
Aug 16, 2023
Dec 1, 2023
Jun 7, 2023
Jun 23, 2023
Dec 1, 2023
Dec 1, 2023
Dec 1, 2023
Jul 11, 2023
Aug 16, 2023
May 17, 2023
Aug 12, 2022
Aug 6, 2022
Jan 12, 2022
Jun 10, 2022
Aug 5, 2023
Apr 13, 2021
Nov 23, 2022
Oct 5, 2023
Oct 5, 2023
Jul 19, 2019
Aug 31, 2023
Aug 16, 2023
Nov 23, 2022
Nov 11, 2022
Jun 7, 2023
Dec 1, 2023
Dec 1, 2023

Repository files navigation

Gossamer logo

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.20 or higher of Golang.

Installation

Clone the Gossamer repository and checkout the development branch:

git clone git@github.com: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

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 --chain westend-dev

Now, start Gossamer as a host for the local Westend development chain:

./bin/gossamer --chain westend-dev

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 --chain westend-local --alice
./bin/gossamer init --force --chain westend-local --bob
./bin/gossamer init --force --config westend-local --charlie

Then start the three hosts:

./bin/gossamer --chain westend-local --alice
./bin/gossamer --chain westend-local --bob
./bin/gossamer --chain westend-local --charlie

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


About

🕸️ Gossamer: A Go implementation of the Polkadot Host

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.3%
  • Other 0.7%