Hacker News new | ask | show | jobs
by apw 4548 days ago
Bitcoin is far more than "just" a solution to the Byzantine Generals problem.

Inside every Bitcoin transaction is a small program that contains no loops. If that program when executed returns true, the transaction is valid.

The simplest, most boring kind of transaction--but the one that most people assume "is Bitcoin"--is a transfer from address P to address Q. Where things get more interesting is in using those little programs in more creative ways; e.g., k-of-n escrow, attestation of ownership, etc.

A whole generation of kids is going to grow up soon routinely using small Bitcoin escrows to hedge everyday scenarios. They won't quite able to believe that their parents operated in a world based on centralized authority subject to rent-seeking corruption.

4 comments

> Inside every Bitcoin transaction is a small program that contains no loops. If that program when executed returns true, the transaction is valid.

I've read elsewhere that the official client no longer processes any such scripts except for ones that are whitelisted. That reduces the current protocol to a single feature set, instead of the promise of future extension without requiring further agreement from miners.

Can anybody verify this? Does today's client still process arbitrary scripts?

I stopped following bitcoin about 18 months ago so it's possible my information is out of date, but I think your assertion is only true in the sense that today's client does no mining.

It is miners which run these scripts, and when I was following bitcoin it was miners who decided which script features they would allow. There were some significant mining pools which allowed nonstandard script features.

Some operations were disabled by Satoshi because they were incompete/buggy/risky. Those need majority consensus among all miners and users to enable or modify.

Some specific kinds of scripts are marked as "standard", all the rest are "non-standard". Non-standard scripts are valid and all miners will validate blocks containing such scripts. But non-standard transactions (i.e. transactions, containing a non-standard script) will not be relayed by default by the bitcoind nodes. Every node and every miner may decide for themselves whether they relay/mine non-standard transactions or not. I'm not sure how many miners accept non-standard transactions, but there are some. You can also pay some miners directly to mine a specific transaction. Or you can mine your non-standard transaction yourself, if you can afford it. Non-standard transactions typically require higher miner fees and take longer to confirm (as not every miner will include them).

The point behind standardness is to contain damage if some complex scripts will turn out to allow DoS attacks, allow losing funds or something like that. In 2012 Bitcoin was extended with P2SH ("pay to script hash") type of transaction (which is also standard) that allows you to define the redemption script during redemption, not during payment. Payer sends coins to a "hash of script" instead of the script itself. Payee then needs to provide not only signatures to redeem the payment, but also the script matching this hash (however complex it is). This has several advantages:

1. Payer does not spend higher miner fees because of the complexity of the script.

2. Payer does not wait indefinitely long till the transaction confirms.

3. Payer may not know the contents of the redemption script until it's being used. In some protocols this could be a useful feature for privacy reasons.

So with P2SH a service may already use arbitrary non-standard scripts shifting the burden of mining non-standard transactions from its customers to itself. For the customer it will look exactly like sending money to a Bitcoin address, although that address will start with "3", not with "1" (which is reserved for the usual "pay to public key hash" script).

Let's go to the source: https://en.bitcoin.it/wiki/Script "Note that there is a small number of standard script forms that are relayed from node to node; non-standard scripts are accepted if they are in a block, but nodes will not relay them."

It seems there's enough flexibility left to do some interesting things. I see discussions in the forum of things like M-of-N, nLockTime, and anyonecanpay.

I think that's true, but clients can change.
> their parents operated in a world based on centralized authority subject to rent-seeking corruption

Krugman is surely correct that it's silly to waste resources digging gold out of the ground only to re-bury it in a bank's vault.

And if Bitcoin was just another currency, it would be equally silly to waste compute resources mining it.

But if crypto-currencies could disrupt even a small part of the centralized, rent-seeking, mafia-economy, then the cost of mining dwindles to insignificance.

It's not about intrinsic value. It's about changing how people transmit value over distance and time. It's about freeing that process from the gatekeepers who control it and extract rents from the labor of others.

>It's about freeing that process from the gatekeepers who control it and extract rents from the labor of others.

And do you think these gatekeepers are going to relinquish their power quietly? There are many ways that the entrenched powers can stall or even kill bitcoin. One declaration by China saw a loss of 50% of bitcoins value in a day or so. The claim that bitcoin is disruptive to the system is vastly overblown. Guns still rule in meatspace as well as cyberspace.

No, the gatekeepers and rent-seekers will not fade quietly away.

Just as they fought tooth and nail against digital networks and strong cryptography, they will try to smother crypto-currencies in their crib.

But decentralization, pseudo-anonymity, and free software are powerful forces, maybe even more powerful than men with guns.

> Just as they fought tooth and nail against digital networks and strong cryptography, [...]

In what universite did that happen?

You could say the same thing about copyright infringement. The governments, with all their guns, still lost that battle, despite very real and high profile lawsuits and crackdowns. When something is extremely easy and completely ubiquitous, it becomes very difficult for government to scale its enforcement. You could say the same thing of something offline, like marijuana in the US (although with that one I would argue that there is no sincere desire on the federal level to eliminate marijuana or even reduce marijuana access and use).
The problem is that the stuff of copyright infringement is purely virtual. For a currency to be useful it must be exchangeable for physical goods. And this physical commerce creates the endoints that allow governments to exert its influence even in the face of a distributed currency. The battle control of the monetary supply will not be a parallel.
| A whole generation of kids is going to grow up soon routinely using small Bitcoin escrows to hedge everyday scenarios.

Could you explain this in more detail? Or perhaps provide a specific example? I've heard people talk about DACs and such (which I also don't really understand very well). At the risk of sounding stupid, I honestly don't understand what kind of scenario this would prove useful (or at least simple enough to warrant its use over traditional methods).

That's what so many people miss. They see "Bitcoin" and forget about the technology behind it. The ability to create "cryptocurrencies" at no cost is going to be very interesting, I can't wait to see what we can build on this basic logic.