In May '21, we introduced the first public release of TzGo – our low-level Tezos Golang SDK with a focus on correctness, stability, and compliance with the Tezos protocol.

TzGo's initial release included libraries for Tezos types, Micheline decoding, and RPC access. While this read-only functionality sets a crucial foundation to access Tezos on-chain and node-level data, we have been working on upgrading TzGo to support transaction creation, signing, simulation, and injection.

We’re excited to announce the first release candidate for TzGo Version 1.0, the first version of  TzGo that allows you to prepare and send transactions. All types and interfaces are engineered to be easily composable. We start with essential low level types/functions for public and private key handling, operation encoding/signing/broadcasting, and mempool/block monitoring.

This release candidate is already fully functional and ready to be used for sending transactions. Low-level interfaces are stable, however, right now you have to roll your own cost estimations and account status handling, but we're adding this on the way to the final release. We're also going to add support for wallet interactions and a higher-level contract call interface.

Structure

TzGo is structured into packages that provide multiple layers of composable building blocks for maximum freedom of choice and composability. Application programmers can directly use low-level types for greater control of details and communication patterns or use more convenient high-level functionality which hides details and may send a number of RPC calls in the background.  Currently, TzGo contains the following 5 core packages:

  • tzgo/tezos low-level types for hashes, addresses, keys, signatures other types found on-chain
  • tzgo/micheline to decode and translate data found in smart contract calls, storage, and bigmaps
  • tzgo/rpc for accessing the Tezos Node RPC
  • tzgo/codec to construct and serialize all operation types
  • tzgo/wallet for account and operation management
  • helpers like an efficient base58 en/decoder, hash maps, etc.

To simplify complex use cases, we will introduce a lot more higher-order functionality in the next release candidate.

Getting Started

TzGo is free and easy to use. It is open-source software and available on Github, ready for you to get started right away:

Download and install TzGo, import as:

go get -u blockwatch.cc/tzgo
import (
	"blockwatch.cc/tzgo/codec"	
	"blockwatch.cc/tzgo/tezos"
	"blockwatch.cc/tzgo/micheline"
	"blockwatch.cc/tzgo/rpc"
	"blockwatch.cc/tzgo/wallet"	
)

Roadmap

In RC-0 we have focused on low-level support for handling private/public keys, key generation/encryption, transaction creation/sending/validation/broadcasting and mempool monitoring. Throughout Q1 2022 we will enable remote signer and smart contract support and make TzGo's new features even more easier to use. Please consult our official TzGo developer docs roadmap for details. We're also going to extend our developer documentation and post a series of articles with hands-on guides on how to use TzGo.

Just like for our Tezos API, TzIndex indexer, and TzStats explorer, at Blockwatch we are committed to keeping TzGo up to date with the latest Tezos protocol so that you can focus on building your products instead of worrying about protocol upgrades. Protocol Ithaca research is well on its way and we'll be adding Ithaca support to TzGo in a short while.

Developer happiness is at the core of what we do and we hope that using TzGo brings you joy. Be invited to get in touch via Twitter, Discord, or ping us elsewhere. Tell us how you use our software. Share feedback, report bugs, ask for new features.

Have a great day and happy building!