As intermediate steps towards the goal of building an analytic transaction-throughput model, two previous articles investigated script and witness sizes for the most common Bitcoin transaction types as well as the not yet implemented but highly anticipated Pay-to-Taproot transaction type.

This article builds on previous findings and investigates the sizes of inputs, outputs, and witnesses of different transaction types. To this end, first-principles-based estimates are derived and verified using empirical data. The findings are distilled into libtxsize, a library to give size, weight, and virtual size estimates for transactions with arbitrary inputs, outputs, and witnesses.

This article is structured as…

Photo by André François McKenzie on Unsplash

In a recent article, script and witness sizes for all transaction output types existing as of May 2020 were investigated. This article is a follow-up that addresses the not yet implemented but highly anticipated Pay-to-Taproot (P2TR) transaction output type. To this end, the article begins with a discussion of the proposed Schnorr signature algorithm and its use in Taproot and multi-signatures in order to provide some context for the data found in P2TR locking scripts and witnesses. …

The following investigation deals with the size requirements for scripts and witnesses of different transaction types. Through analysis of first principles and empirical data, a set of estimates is established for scripts and witnesses. These estimates can serve as inputs for quantitative models whose projections might help make future block-size discussions more objective.

This article is structured as follows. The next section contains a brief discussion on relevant terminology. The following two sections focus on the encodings of public keys and signatures used in Bitcoin. Then all Bitcoin transaction output types are discussed individually and in detail. …

In this article, some basics of the Bitcoin network protocol are examined through a practical lens by looking at a Bitcoin node crawler I developed. The node crawler, serpent, is implemented in python and is available on github.


Although Bitcoin has been around for a while now, some of its parts remain poorly documented. For experts, “the source code is the documentation.” But for people taking their first steps into Bitcoin, finding the corresponding piece of code and interpreting it correctly can be quite challenging. In many instances, examining a particular aspect in practice can help clear up these uncertainties…

Dr. Johannes Hofmann

Rogue Scientist

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store