A discussion about how it wouldn’t be possible to establish a standard for Bitcoin, much less an RFC, got the wheels going. I wondered just how hard could it be to specify Bitcoin using Google’s protocol buffer language as a starting point?

After working through the Bitcoin messaging documentation, for maybe an hour, I got a pretty good start on it.

What this exercise showed me is a few things:

Thanks largely to Bitcoin’s Creator, Satoshi Nakamoto, Bitcoin is not a particularly difficult or complex messaging protocol There are not that many fields that need deep constraints, but these additional validity rules will need to be specified in some formal way When stated as protobufs, there’s obvious room for improvement that would be consistent with the intent of the protocol

I think this may just be the first pass, since I see value in taking it further.

Update: So I did!