Choosing a type for blockchain height (beware of unsigned integers)

This article was originally published on Medium.

Before this pull request, it was a mess. ABCI was using a uint64 height on EndBlock. Tendermint Core was using the same type for TxResult. Block and BlockStore, however, were using int heights (remember that int is different depending on the processor architecture: int32 for x86, int64 for amd64). There was no single standard across our repositories as for what type to use for blockchain height.

»

Debugging the Memory Leak in Tendermint

This article was originally published on Medium.

I have spent the last week looking for clues and writing test cases in order to find and fix the memory leak in Tendermint. For those of you who don’t know, Tendermint Core is a Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine — written in any programming language — and securely replicates it on many machines. It is also the foundation of Cosmos — our solution for scaling blockchains.

Finding a memory leak in Go is not an easy task. However, there is a common set of questions, answers to which will hopefully help you identify the source of a leak. Here is the list:

»

Abstracting the logger interface in Go

Wrote a blog post a few days ago for my company’s blog about our experience of moving from a static logger to an interface and adapter for the go-kit log package. https://blog.cosmos.network/abstracting-the-logger-interface-in-go-4cf96bf90bb7 »

Author image Anton Kaliaev on #golang,

CircleCI config for multipackage Golang projects

Multipackage Golang project - project, consisting of several packages. When testing you usually do something like go test ./..., when getting all the dependencies - go get ./.... There may be or may not be a Go package at the root level. Examples: 1, 2.

»