Skip to content
This repository has been archived by the owner on Apr 15, 2020. It is now read-only.


Repository files navigation

Tupelo Go SDK

CircleCI Contributor Covenant

The Go SDK for Tupelo is fully functional and available for use. Unfortunately, some of the documentation for it is sparse or not up to date. Please consider joining us in our developer telegram channel if you are interested in using it in your project. We will be more than happy to help.


Before building the project, you should have the following installed:

  • Go >= v1.12
  • Docker
  • GNU Make

Docker Image

In order to build a Docker image, you first have to prepare the vendor tree, so that it contains all the dependencies so we can just copy them into the Docker build process. Our Makefile will take care of this for you though, just invoke make like this:

make docker-image


In order to run the regular test suite (i.e. non-integration tests), execute the following command: make test.

Integration Testing

We run our integration tests in a Docker container, against a network of Tupelo signers (and a bootstrap node) launched via docker-compose. The tests must run in a container in order to connect to the network created by docker-compose.

You can run integration tests against Tupelo master (the default), the latest release of Tupelo, or against your own local working copy of Tupelo (which should be in a sibling directory named tupelo; override the TUPELO_DIR variable if it is somewhere else).

To run the tests against Tupelo...

* master: `make integration-test`
* latest release: `make integration-test TUPELO=latest`
* local working copy: `make integration-test TUPELO=local`

Message Serialization

Before a message gets sent over the wire, it gets serialized to the MessagePack format. The serialized message gets sent along with a code describing its type, so that the recipient knows what type of object to deserialize it to.