gsrpc

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2019 License: GPL-3.0 Imports: 2 Imported by: 0

README

Go Substrate RPC Client (GSRPC)

GoDoc Reference Build Status codecov Go Report Card

Substrate RPC client in Go. It provides APIs and types around Polkadot and any Substrate-based chain RPC calls. This client is modelled after polkadot-js/api.

State

This package is actively developed. The first stable release is expected in November 2019.

Documentation & Usage Examples

Please refer to https://godoc.org/github.com/centrifuge/go-substrate-rpc-client

Contributing

  1. Install dependencies by running make followed by make install
  2. Run tests make test
  3. Lint make lint (you can use make lint-fix to automatically fix issues)

Run tests in a Docker container against the Substrate Default Docker image

  1. Run the docker container make test-dockerized

Run tests locally against the Substrate Default Docker image

  1. Start the Substrate Default Docker image: make run-substrate-docker
  2. In another terminal, run the tests against that image: make test
  3. Visit https://polkadot.js.org/apps for inspection

Run tests locally against any substrate endpoint

  1. Set the endpoint: export RPC_URL="http://example.com:9933"
  2. Run the tests make test

Documentation

Overview

Package gsrpc (Go Substrate RPC Client) provides APIs and types around Polkadot and any Substrate-based chain RPC calls. This client is modelled after polkadot-js/api(https://github.com/polkadot-js/api).

Calling RPC methods

Simply instantiate the gsrpc with a URL of your choice, e. g.

api, err := gsrpc.NewSubstrateAPI("wss://poc3-rpc.polkadot.io")

and run any of the provided RPC methods from the api:

hash, err := api.RPC.Chain.GetBlockHashLatest()

Further examples can be found below.

Types

The package [types](https://godoc.org/github.com/centrifuge/go-substrate-rpc-client/types/) exports a number of useful basic types including functions for encoding and decoding them.

To use your own custom types, you can simply create structs and arrays composing those basic types. Here are some examples using composition of a mix of these basic and builtin Go types:

1. Vectors, lists, series, sets, arrays, slices: https://godoc.org/github.com/centrifuge/go-substrate-rpc-client/types/#example_Vec_simple

2. Structs: https://godoc.org/github.com/centrifuge/go-substrate-rpc-client/types/#example_Struct_simple

There are some caveats though that you should be aware of:

1. The order of the values in your structs is of relevance to the encoding. The scale codec Substrate/Polkadot uses does not encode labels/keys.

2. Some types do not have corresponding types in Go. Working with them requires a custom struct with Encoding/Decoding methods that implement the Encodeable/Decodeable interfaces. Examples for that are enums, tuples and vectors with any types, you can find reference implementations of those here: types/enum_test.go , types/tuple_test.go and types/vec_any_test.go

For more information about the types sub-package, see https://godoc.org/github.com/centrifuge/go-substrate-rpc-client/types

Example (SimpleConnect)
package main

import (
	"fmt"

	gsrpc "github.com/centrifuge/go-substrate-rpc-client"
	"github.com/centrifuge/go-substrate-rpc-client/config"
)

func main() {
	api, err := gsrpc.NewSubstrateAPI(config.NewDefaultConfig().RPCURL)
	if err != nil {
		panic(err)
	}

	hash, err := api.RPC.Chain.GetBlockHashLatest()
	if err != nil {
		panic(err)
	}

	fmt.Println(hash.Hex())
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type SubstrateAPI

type SubstrateAPI struct {
	RPC    *rpc.RPC
	Client *client.Client
}

func NewSubstrateAPI

func NewSubstrateAPI(url string) (*SubstrateAPI, error)

Directories

Path Synopsis
rpc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL