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:

Monthly Art #28

This is a monthly “newsletter”, containing a list of what I enjoyed the most last month. Whether it was a full length movie, short film, music album, book or even a painting.

Monthly Art #27

This is a monthly “newsletter”, containing a list of what I enjoyed the most last month. Whether it was a full length movie, short film, music album, book or even a painting.

Monthly Art #26

This is a monthly “newsletter”, containing a list of what I enjoyed the most last month. Whether it was a full length movie, short film, music album, book or even a painting.