Jeff Garzik could be considered one of the guardians of bitcoin. When we caught up with him, he had just finished working with others to stop a network-wide event - a DDoS attack that exploited some stray code in the reference bitcoin client (Bitcoind) to target certain parts of the cryptocurrency's distributed infrastructure.
He became one of the core developers of the Bitcoin protocol after he began working on the project during its early days. He was involved in many of the early forum discussions with the mysterious Satoshi, and even exchanged a private email or two with him.
CoinDesk caught up with him to talk about Satoshi Nakamoto, the open source development community, and where the protocol is headed. One of the first things we asked him was how he viewed its current status.
"Bitcoin is out of its infancy and starting to mature. There are increasing numbers of merchants at BitPay, and people are starting to see it as money over IP," says Garzik, speaking in his gentle North Carolina drawl.
However, there was no one single event that set the cryptocurrency on a course for success, he asserts. It was more of a slow, organic process. Over the last four years, the currency has matured to the point where it has continuous value. That's pretty good going, in his book.
That said, there were promising developments along the way. The Central Bank's activities in Cyprus in April prompted speculation in alternative currencies, he says.
"The FinCEN guidance was a positive turning point too, that happened right around the same time. In my humble opinion, that guidance said that bitcoin is ok. They're not interested in pursuing bitcoin users for selling and buying goods and services in bitcoin - they're interested in regulating the exchange points."
There was a turning point for Garzik, though, when he was hired by bitcoin payment processor BitPay in May. Overnight, he went from being a developer for Red Hat who worked part-time on the Bitcoin protocol to being a full-time Bitcoin developer. Now, he has more time to spend processing changes to the protocol, and thinking about its technical direction.
The currency's development is following expectations, he says. "We wanted it to be a usable currency for anyone in the world regardless of country or economic status," he says, adding that it's spreading quickly, although he's still hoping for more accessibility in less wealthier nations, on the African continent, for example. But he's encouraged by bitcoin's fast adoption in China.
This is just the start for bitcoin, however. Today, it's little more than a currency system. "In a payment system you have many products built in many layers," he says, likening the currency itself to the bottom layer.
"On top of that, you have a layer of banks, and lending, and futures and options trading, and shorting. That's the next step for bitcoin, getting those advanced financial tools layered on top of bitcoin." He eventually expects to see credit and debit cards denominated in bitcoin.
But Garzik is more of a coder than a macroeconomist. He enjoys the technology behind bitcoin, and with others, has been responsible for many crucial parts of the software that developed out of the Satoshi client.
"Satoshi was a fantastic designer and architect," he says, adding that the originator of Bitcoin has thought about the system at a very deep level. "He spent a couple of years thinking about the system, and then according to what he said, he had to write the system to prove to himself that it would work."
The software went largely unnoticed until news of it hit Slashdot in July 2010. He posted his initial code and it didn't really gain a lot of attention for 6-9 months and then it started getting a few tech mentions. Then it hit Slashdot in July 2010.
But in spite of being an excellent architect and designer, Satoshi's coding practices were unconventional, says Garzik, adding that the original version of Bitcoin was Windows only, not very portable, and "a jumble of source code" with several half-finished projects.
"He was the oracle to which we would go for questions about the system, but he rarely followed standard engineering practices, like writing unit or stress tests or any of the standard qualitative analysis that we'd perform on software," Garzik recalls. "Several things had to be disabled almost immediately upon public release of Bitcoin because they were obviously exploitable."
Things have come a long way since then. Now, Bitcoin is a project managed by a group of core developers, with Gavin Andresen, Garzik and a core group of others managing the Github pulls.
"It's a meritocracy like every other open source project. Your contributions are valued if everyone else has consensus about it being a valuable contribution," Garzik says.
This notion of consensus doesn't necessarily make Bitcoin a push-button democracy, though; the core developers carry ultimate veto, and they're notoriously cautious. "In general, the devs try to be very conservative. Typically, we don't introduce new features. We just try to ensure that the existing ones work."
That isn't to say that new features can't happen. There's a mechanism called the Bitcoin Improvement Proposal (BPI) used to put forward proposed new features for the protocol. But it's controlled by the core devs. "If we want to extend it, we'll write up a BIP and publicise it through blogs, and we just try to judge through user feedback whether they like the feature, or don't understand it, or things of that nature."
Still some gaps to fill
So, does Garzik see the need for any new features in Bitcoin?
"Recurring payments," he says emphatically. Bitcoin is great if I want to send you some bitcoins once. But if I want to pay regularly for a subscription to, say, an online service, or for regularly updated content, it's flawed. "Bitcoin is a push model where you push payments to someone else, but it isn't in the protocol that you pay someone on a regular basis. That needs to be filled in."
Another must-have for Garzik is what he calls "transaction lifetime determinism" - the retrieval of bitcoin payments from limbo. Transactions on the bitcoin network have to be mined in a block, and the network calls for those transactions to be confirmed. The general recommendation is six confirmations (one per block), but in practice, the number of transactions required by a party is variable.
I don't think it's likely that the second generation will produce any useful, viable long-term cryptocurrency, but I do think that all this experimentation will absolutely inform the Bitcoin ecosystem
If a transaction isn't confirmed, it becomes stuck in the network, and you need an expert to help you recover those funds. "A user always needs to know what is going on with their money. If it isn't confirming after a set period of time, it should just kick the transaction out of the system rather than just sitting around for weeks and months."
Bitcoin activists and evangelists like me have a bunch of answers. It's borderless, it's irreversible, and there's low risk of fraud. Nonetheless, it's difficult to get on the radar of your average person.
Features like these should go into the core protocol, but there are plenty of other features that Garzik wants to see layered on top of the network, without affecting the core protocol.
Coloured coins is one. Garzik wrote one of the first implementations of this, called Smartcoin. This concept enables attributes to be assigned to a coin, so that it can become a token for ownership. They could be used for everything from exchanging ownership of physical assets, to marking stocks, bonds, and options.
"There are zero modifications needed to support coloured coins today," he says. "Bitcoin wouldn't need to be upgraded."
Read part two of CoinDesk's interview with Jeff Garzik, where he reveals his thoughts on alternative currencies, ASIC miners, and getting everyday users on board for bitcoin.