Gavin Andresen

Bitcoin developer. All-around geek.

Read this first

Keeping it simple

Let’s say you’re the leader of an open source implementation of Bitcoin, and you decide to follow my advice and Know Your Customer.

And you decide your customer is primarily big mining pools and businesses that just want a “full node” that runs on the network. Immediately after making that big decision, you can make your life much simpler by doing a lot less.

You can drop any code related to maintaining a wallet; big businesses and mining pools will have their own multisignature-secure wallets and will have somebody who’s job it is to make sure they stay secure.

You can drop (or drastically cut back) any graphical user interface code, and can drop support for Windows and Mac. Your customers will almost certainly tell you they run Linux boxes maintained by sysadmins who aren’t afraid of terminal windows.

You can drop “deterministic builds” – in fact, you can probably drop packaging

Continue reading →


Know your customer

When Satoshi released the first windows-only Bitcoin binaries to the world, it had to do everything. It was a wallet and a miner and every running node was precious, because with only a handful of nodes the network was fragile.

While I was lead developer even more functionality was added– mostly developer-friendly hooks (additions to the JSON-RPC programming interface) to make it easier for people to build stuff for what was then a tiny community.

I was the only full-time Bitcoin developer for a couple of years, and I tried to write code for things I thought would have the highest impact that other people weren’t already doing. Usually that was something boring but really important (like the testnet, the unit testing framework, or the regression testing framework; my last major code contribution was a performance benchmarking framework). But sometimes I had time to work on new stuff

Continue reading →


Ask a simple question…

This is a conversation with Matt Corallo (Bitcoin Core contributor) that started on twitter and migrated into email:

Matt Corallo @TheBlueMatt - Mar 19
Bitcoin Core does not want to and does not make decisions on Bitcoin’s consensus rules

Gavin Andresen @gavinandresen - Mar 23
Might a small, well-tested patch that added a default-false option to disable block-size checks be accepted by Core?

Matt Corallo
if it a) took HF risks seriously and had protections for then and b) had community consensus to do a HF, sure!

Gavin Andresen
I’ll email you– if you really don’t want to dictate consensus rules, give your users a choice!

Matt Corallo
cool. You may also want to check out some of the HF proposals at https://bitcoinhardforkresearch.github.io

From: Gavin
To: Matt
Subject: Expanding an idea from Twitter…

If Core really wants to avoid taking sides in the Great Scaling Debate, why not

Continue reading →


Other definitions of Bitcoin

Yesterday’s post triggered some interesting discussion on reddit and twitter.

I realize now I should have been more specific– when I said “technical definition of Bitcoin” I meant a couple of things:

I am thinking of what Bitcoin is today and in the near future, not what it might eventually evolve into. While it is fun to talk about what Bitcoin will be in 100 years, that wasn’t the point of my blog post. I didn’t mean to imply that any definition of what Bitcoin is today and in the near future would somehow be iron-clad and binding and never change; thinking you can control how a technology evolves is even sillier than thinking you’ll be able to predict beyond a decade or maybe two.

I also want a definition that could be useful in determining which of two competing ledgers a neutral geek would point at and say “that one is Bitcoin as described in the original Bitcoin whitepaper”. It

Continue reading →


A definition of “Bitcoin”

Engineers are great at not seeing the forest for the trees. They get stuck on details and lose track of the bigger picture.

I’ve seen it most often (and have been guilty myself) when they’re optimizing something to make it faster. They’ll start out OK– “it is taking eleven seconds to agitate the snarks, and seven seconds of that is just precomputing the eigenwidgets!”

So they’ll take a day and make precomputing the eigenwidgets ten times faster.

And then realize with just a little tweaking and a really nifty algorithm and two hundred more lines of code they can make it one hundred times faster!

So they spend a few days making snark agitation take 0.63 seconds faster (4.07 seconds instead of 4.7 seconds), instead of moving on to the next performance bottleneck. They can become focused on one little thing (Performance of this routine! or Security! or Decentralization! or

Continue reading →


Either/or : ignore!

Now that six months have gone past, I’m being asked if I still think Craig Wright was Satoshi.

I think there are two possibilities.

Either he was Satoshi, but really wants the world to think he isn’t, so he created an impossible-to-untangle web of truths, half-truths and lies. And ruined his reputation in the process.

If he was Satoshi, we should respect his wish to remain anonymous, and ignore him.

The other possibility is he is a master scammer/fraudster who managed to trick some pretty smart people over a period of several years.

In which case everybody except the victims of his fraud and law enforcement working on behalf of those victims should ignore him.

So, either he was or he wasn’t. In either case, we should ignore him. I regret ever getting involved in the “who was Satoshi” game, and am going to spend my time on more fun and productive pursuits.

Continue reading →


Bitcoin Protocol Role Models

A couple of months ago, I was having Yet Another Argument with a Bitcoin Core contributor about the one megabyte block size limit.

I had asked: “what other successful Internet protocols impose arbitrary limits on themselves similar to the one-megabyte limit?”

His answer was “there are limits on the size of the global routing table in the Border Gateway Protocol (BGP) protocol.”

BGP is the protocol routers use to decide what to do when they get a data packet bound for an IP address like “111.12.1.1” – they send it to China (111.12.1.1 belongs to the China Mobile Communications Corporation right now).

So I went and skimmed through the BGP protocol documents. Then read the wikipedia page on BGP. And had the opportunity to talk with Justin Newton, who participated in the debates on Internet scalability fifteen years ago.

And found that there are no protocol-level limits on the size of

Continue reading →


Satoshi

I believe Craig Steven Wright is the person who invented Bitcoin.

I was flown to London to meet Dr. Wright a couple of weeks ago, after an initial email conversation convinced me that there was a very good chance he was the same person I’d communicated with in 2010 and early 2011. After spending time with him I am convinced beyond a reasonable doubt: Craig Wright is Satoshi.

Part of that time was spent on a careful cryptographic verification of messages signed with keys that only Satoshi should possess. But even before I witnessed the keys signed and then verified on a clean computer that could not have been tampered with, I was reasonably certain I was sitting next to the Father of Bitcoin.

During our meeting, I saw the brilliant, opinionated, focused, generous – and privacy-seeking – person that matches the Satoshi I worked with six years ago. And he cleared up a lot of mysteries

Continue reading →


Satoshi Roundtable Thoughts

I participated in the “Satoshi Roundtable” event in Florida last weekend on my way home from the Financial Cryptography conference.

The Roundtable is an invitation-only event organized by Bruce Fenton (current Executive Director of the Bitcoin Foundation, but it is not a Foundation event), and I’m told that in past years it was mostly a relaxed networking/socializing event.

This year, discussion of the the block size limit dominated the entire weekend.

All of that discussion happened under the “Chatham House Rule” – “…participants are free to use the information received, but neither the identity nor the affiliation of the speaker(s), nor that of any other participant, may be revealed” – so for the rest of this blog post I will talk about what happened and what was said, but won’t mention any names or affiliations. You can see who attended at the event’s website.

There were a couple

Continue reading →


One-dollar lulz

A couple of months ago, Paul Sztorc published a blog post asking two very good questions:

  1. “Why do you think we have a [maximum] blocksize?”
  2. “What has changed, between the time that the [maximum] blocksize was introduced (July 15th, 2010), and today, which motivates us to make a corresponding change in the constraint?”

For me, personally, the answers are simple. First, the limits were added to prevent a ‘poisonous block’ network denial-of-service attack. We have to worry about denial-of-service attacks if they are inexpensive to the attacker. ‘Amplification’ attacks are the worst, where the attacker sends a little bit of information that causes lots of traffic on the network or causes lots of wasted CPU processing.

Second, a couple of key things have changed since Satoshi made the change.

The attack the limit is meant to prevent is much more expensive today. I have a spreadsheet

Continue reading →