Bitcoin has a scripting language which enables more than a “send money from X to Y” transaction. A Bitcoin transaction can require M of N parties to approve a transaction. Imagine Wills that automatically unlock when most of the heirs agree that their parent has passed, no lawyer required. Or business accounts that require two of any three trusted signatures to approve an expenditure. Or wire escrows that go through when any arbiter agrees that the supplier sent the goods to the buyer. Or wallets that are socially secured by your friends and family. Or an allowance account accessible by the child and either of two parents. Or a crowdfunding of a Kickstarter project that pays out on milestones, based on the majority of the backers approving the next payment. The escrow in each case can be locked so that the arbiters can’t take the money themselves – only approve or deny the transaction.
The scripting language can also unlock transactions based on other parameters. Unlocking them over time can enable automatic mortgage, trust, and allowance payouts. Unlocking them on guessable numbers creates a lottery auditable by third parties. One can even design smart property – for example, a car’s electronic key so that when and only when a payment is made by the car buyer to the seller, the seller’s car key stops working and the buyer’s car key (or mobile phone) starts the car. Imagine your self-driving car negotiating traffic, paying fractional bitcoin to neighboring cars in exchange for priority.
I've been following Bitcoin since the beginning and had no idea it supported "transaction approved only when M of N participants agree."
How do you feel about those scenarios? Also, does anyone know of other little-known Bitcoin functionality?
Beyond script there isn't a whole lot— nlocktime lets you make transactions which cannot be mined until a specified time in the future. This lets you build protocols that have "refunds", so that they don't cause funds to get stuck if a participant walks away.
But even just using a few features of script and nlocktime is exceptionally powerful:
One of the most important things script does is allows you to produce transactions which are bound into more complex protocols occurring outside of Bitcoin in a secure way. This allows you to extend Bitcoin's trustless decentralization into things which aren't part of Bitcoin proper.
Bitcoin use a scripting language for the transactions, as described in here[0][1].
Interestingly, I believe that this is one of the case where "lazy programmers make best programmers": instead of implementing the transaction system, Satoshi decides that he couldn't be bothered and just put in a scripting system instead (I have no citation for this, and can't claim for certain that this is the case, it was just something I read a while ago).
However, due to security concerns, I think that most of the scripting ability is currently disabled.
Provably Prune-able Outputs! See https://bitcoinfoundation.org/blog/?p=290. The idea is to support adding a little bit (80 bytes) of extra data to a transaction, while signalling to people who don't need to know about it (i.e. almost everyone) that they can happily ignore any such data and thus avoid downloading it.
This has the potential to allow new protocols to be built ontop of bitcoin. Mastercoin is one new protocol that uses the pruneable, provable outputs functionality. Learn more about Mastercoin here: https://github.com/mastercoin-MSC/
For those uninformed, "MasterCoin" is an impossible attempt at pegging Bitcoin to the USD (among other things). It of course doesn't work because there's a limited supply, which means that the prices are raised and you're no longer pegged. The whole setup is essentially designed by the creator to make him and his "donators" rich (buy some now and get 10% more! was the original post).
Due to the ponzi-like setup, the people who paid 4 million dollars for "MasterCoin" are very, very vocal when it comes to promoting it.
The scripting language vision has been there from the beginning, but parts of it have been 'off' (in the reference client) because of incomplete implementation, or concern that the implications and potential bugs aren't sufficiently understood.
I wonder if a future Bitcoin offshoot might even use a more general standard language for in-ledger transactions. Javascript? LLVM?
They couldn't, because Javascript etc are turing complete, so you can't predict if they're going to end (halting problem). With bitcoin you know that the script will end and that the running time will correlate loosely with the size of the script, so you can't really use it to mess up network nodes. Butcoin scripts have no loops or goto.
A guarantee of completion isn't strictly necessary: you can cap the number of ticks/cycles a script is allocated on a deterministic reference machine.
Surely there'd be a number of technical and economic challenges to be overcome, but Bitcoin itself is an example of how a good-enough solution may be hiding in plain sight.
Indeed, you can, but then you have a very exact requirement on exactly how the interpreter is implemented which can never be optimized, and any disagreement between implementations can cause a world ending consensus failure.
By not having looping or recursion script naturally gets an operation limit by virtue of having a size limit, and this is _relatively_ easy to get right between implementations. (Though, so far several of the alt implementations have gotten it wrong).
You could require all scripting to be done in a language supporting total functional programming, like Epigram. That would be fairly hilarious (also counterproductive, because the increased script size would cause blockchain bloat).
Why not? The rules for validating Bitcoin transactions and blocks must be completely specified and followed exactly by all implementations of the client software, otherwise you risk forks.
Bitcoin is a consensus system. It is paramount that all participating nodes reach the exact same state.
If undefined behavior could make some nodes accept a transaction while others reject it the state would become inconsistent and potentially mutually exclusive. From one currency, you'd have two and every coin could be spent twice.
An important caveat is that Bitcoin Script isn't enabled in the current implementation of Bitcoin, for obvious security reasons. The immense possibility of Script is yet another reason I am long on Bitcoin.
Only parts of it aren't enabled. You can already do a lot with Script:
"This is a list of all Script words (commands/functions). Some of the more complicated opcodes are disabled out of concern that the client might have a bug in their implementation; if a transaction using such an opcode were to be included in the chain any fix would risk forking the chain."
What are you talking about? Every single transaction uses the bitcoin scripting language, and has since the genesis block. There are certain rules about which transactions are relayed based on the scripts they contain, but scripting certainly is an integral part of bitcoin as it exists today.
Simply wrong. I suggest you actually look at the source code to bitcoind (start with script.cpp, and the validation methods in main.cpp/core.cpp which call it).
Thats not correct. They're executed, and fancy scripts are sometimes used on the network.
Common wallet software just uses templates to create and decide which scripts are relevant to them— but the network itself absolutely does validate them.
I have an issue with that particular scenario. What if your three hairs secretly hate you and just agree to declare you dead?
But I can see it working with some adjustments: make your contractually obliged lawyer part of the transaction and include his fees. This way he can't grab all the money for himself and your usurpers can't get to your money that easy.
I feel so behind / left-out of the Bitcoin phenomenon. I thought it was a fad a few years ago, but it seems as though it's here to stay and there are probably good opportunities for those who understand how it all works. I was wrong.
I want to start from the beginning and learn everything. What are the best resources for this?
If you're a programmer, I highly recommend trying to implement your own (toy) Bitcoin client -- just as a learning experience and not for general use or distribution. (Just be sure to advertise it as such if you put it up on Github). I've been involved with Bitcoin since early 2011 and am just now understanding the protocol in depth, having started to implement my own Bitcoin client.
You're best bet to do so is probably to just skip the reference client and its complex C++ implementation, and learn the protocol from the Python implementation [0], combined with the protocol specification on the Bitcoin wiki [1].
If Java is your thing, I've also heard good things about the readability of Bitcoinj, which is used for various Android Bitcoin clients. Just note that Bitcoinj implements SPV, which is not the full reference protocol. But it would still be a great start to learning about Bitcoin.
If you're not a programmer, there are a 101 different intro to Bitcoin sites. I think I've heard good things about the Khan Academy's intro videos, but I've never watched them myself. And yes, and Satoshi's original paper.
There are tons and tons of wiki and blog posts about bitcoin out there, but in my opinion the original paper is really good, if you have a technical background. I don't mean like crypto-expert, I think it's something the average programmer can read, maybe with a bit of googling. I usually wouldn't recommend a paper, but I found it really clear and straightforward. Maybe it's because I already understood bitcoin pretty well, but here it is if you want to take a look: http://bitcoin.org/bitcoin.pdf
Naval was an economics major in college besides being a techie, so he is certainly qualified to talk economics. You might not be aware that Keynes is not the last word on macroeconomics, read something by Ludwig Von Mises to round up your education.
Much more likely, existing financial services and platforms will co-opt the useful parts of bitcoin. The result will be a more robust solution on their part and a casting of bitcoin into the pile of interesting historical phenomena.
Just like pre-internet online-services and publishers co-opted the best ideas from it, relegating the internet itself into the pile of historical curiosities.
Don't be so cocky. In most of the US, where one or two ISPs rule over the local market, the concept of a decentralized internet is at best a memory (if it ever came to fruition there at all), and across the US the loss of network neutrality is potentially only as far away as the next presidential election.
Make your fears into a testable wager over a specific timeframe, and I'll almost certainly bet against them.
Internetworking technology didn't need the help of DC to crush the walled gardens of the past, and won't need anyone in particular in the White House or FCC to continue its ascendancy.
Many countries don't have net-neutrality laws (I grew up in one of them) and the internet still works just fine. I don't know if net-neutrality is good or bad for smaller reasons like bandwidth and prices but I know for sure it's not the only thing keeping the internet alive.
If you wish to use that analogy, the web borrowed ideas from SGML and project Xanadu and co-opted the best ideas from them, relegating SGML itself and other ideas like it to the dustbin of history.
It is quite possible Bitcoin will be superseded by some other system introduced by one of the existing major transaction processors - they have a huge amount to lose if Bitcoin becomes a standard, and everything to gain by owning the future of transactions.
> "The country [USA] that is the home to the Internet of Money could one day end up as the guardian of the new Reserve Currency and the Global Money Supply."
We all know how that went / is going when that country is controlling world politics.
Anyone care to analyze the vulnerabilities of having scripting embedded in a digital currency and bitcoin in particular? There must at least be some sort of scams that this enables.
At least with Tulips your can save the dried pedals. Speculation in this won't hurt the rich boys, but
the salaried boys will be very limp. Oh, finance will
take the theories, and code--all for free. Too bad that
Japanese guy didn't patent the code, and the idea?
Why would someone choose a bank-owned Bitcoin alternative over the distributed Bitcoin? Would people rather pay more fees (my bank charges $40 for an international wire transfer...I did the same with Bitcoin for about two pennies, and that was a voluntarily paid feed)? Do people like having their finances judged by faceless corporations, and if you don't keep enough of your money in the bank, they fine you?
What are the advantages that make your idea of "finance will take the theories, and code" seem plausible, to you? And, what would a patent have done to improve on the situation for anyone?
the knowledge you'll get most of your deposits back if the bank goes bust? (government mandated insurance schemes like FDIC/FSCS are really expensive for banks... this makes up a big part of your bank fees)
the bank's capability to match up long term loans with short term deposits?
people really want a 25 year mortgage, but also want instant access to their savings, the banks (mostly) match up these two incompatible goals: this is a useful function
yeah thats kinda my beef with this stuff too. the transaction fees you pay have a purpose its not just like banks declared they can steal from you. Bitcoin doesn't offer these services, therefore no transaction fees.
and the transaction-scripting possibilities described in a lot of these comments are interesting but why couldn't banks implement the same thing? mainly because they are trying to protect you & intercept fraud etc.
My ideal version of Bitcoin is more like this -- you put money in the bank & then it becomes crypto currency. You can pass it around as much as you want & then at the end of the day if you ever want cash you submit coins to the bank & get cash. It's so simple & negates a ton of Bitcoin's problems. But it's not as romantic & get rich quick-y so the community will hate it. I think the allure of the black market, "f__k the systemmm", and pyramid scheme is 90% of why bitcoin is defended so intensely.
I think it's complicated legally though and that's why financiers want nothing to do with it. After all, if banks told you you could go 0% transaction fee if you incur some risk of losing your account altogether (if your wallet gets deleted or an admission that they might steal it or that you'll have to sell back your money at a new market price, plus the fact that you're entering an imbalanced market where early adopters have greater hordes of wealth for the same buy-in price) I think most customers would flat out reject it anyway.
It's also a very strange approach that a lot of the arguments take where they claim that because of the distributed nature it's safer than dealing with corporations. The Bitcoin network has its own points of failure (exchanges, hello?) that users have gotten burned for trusting. They are establishing new Gods, not eliminating the concept entirely. A public record does not mean that the system has no possible points of fault. A big part of banking is controlling these possible fault points to protect customers. As with lots of corporate/gov services, they are trying to design it so that it is strong/reliable/simple-to-use/stable.
Oh, and duh!! Lots of Bitcoin services (exchanges, transaction processors) CHARGE FEES! It's only when it's floating around the ecosystem ether that it is fee-less. If it gets to the level of everyday use, I'd wager there will be as many protectionary fees as with USD except maybe in certain situations: sending money to a friend, or a no-refunds type of transaction where ordinarily you'd pay cash (which incidentally is more off-the-grid than BTC would be at that point).
“The internet is just a fad” … Newsweek, Feb. 26, 1995
I grant you, just like with the Internet there is a transition point where to get on the internet you have to pay high fees (similar to exchange fees) but once internet is cheap and everywhere then lots of services become cheaper and more accessible.
The same goes on with bitcoin. As adoption grows you won't need to exchange for USD, EUR or whatever as much, therefore no exchange fees.
Banks will have to adapt, re-purpose themselves to a certain extend.
Heh no I believe in the utility of the tech, my gripe is just with the implementation details. I agree with what you're saying here there is a lot of possibility here. Checkout Ripple (another responder pointed me to it). It's basically exactly what I was saying I was hoping for (I think, have to read it over more carefully).
Happy to see you breaking your promise and return to Bitcoin :-)
The problem with your suggested system is that it introduces a mandatory third party into all transactions, even where only two parties are desired. Bitcoin makes that third party optional.
You're correct that there are fees, but these are much more flexible and usually much lower than current fees (see international wire transfers).
ugh i know i just couldnt resist seeing how y'all would respond to the idea of the Bitcoin bank. Well, granted they may want to be a 3rd party to all transactions but if the consumers really want a cryptocurrency they could set up a system where it's all pseudonymous once the money gets in.
Basically what I'm describing is Bitcoin but instead the exchanges are banks and without mining. The whole system would be pretty much the same beyond that.
I basically think that mining was a trick used to help adoption, but it's a big part of the destabilization of the currency. Forget banks if you don't like the idea (I suggested them because deposits could be FDIC-insured). What if the ecosystem started from scratch and Gox just inputted money 1-to-1? $1000 = 1 BTC, and then if you need to print more BTC, just put more money in the bank & raise the cap.
> I basically think that mining was a trick used to help adoption
Think again - mining is closely tied to a "proof of work", a guarantee that the coins are not created out of thin air. That property is lacking from the system you are suggesting. How do you prove that your "DollarPegCoin" is actually backed by anything?
I agree that this has caused an inelastic supply and wild price fluctuations, and these will continue, but it serves an additional purpose besides being an adoption incentive.
also you'll be happy to know that I spent Sunday building 2 clones of vintage pre-amps for my music studio & then learning some Scala/Playframework. Bitcoin hasn't invaded my home life yet lol
trippy.... i'll have to read more about them but the fact that systems like this are emerging is kindof giving me some closure. It makes perfect sense. Convert as you want "Or you can keep it simple in Ripple". Perfect.
I'm excited to see when they open source the code. I think a key part of this model that is missing from Bitcoin is that for this to work they'll have to keep an actual bank account to pay out to users whatever was put in. With Bitcoin once you buy a coin that cash is gone. The burden of maintaining the value of the system is then, somewhat paradoxically, on the buyer.
EDIT: Ugh, WHYYYY?!!! They mint a finite amount (100 billion XRP) and Ripple Labs plans to donate 55 billion to "users, charitable organizations, and strategic partners". This is MY WHOLE BEEF with cryptocurrencies. They are all redistributing wealth in a way that hasn't proven to be mathematically sound just cuz they're like "eh what's the big deal us originators can just print ourselves as much money as we want for a while". Now again faced with a situation where something that is supposed to be currency is now a trading platform with somewhat arbitrary rules that make the market difficult to predict.
As posited BitCoin is a mechanism for storing value as well as transaction information. If you have a liquid enough exchange, allowing you to enter/exit the currency within seconds, the implications of transaction protocol are pretty wide - instantaneous verified commission-free money transfers around the world. Those who choose not to use BitCoins for value storage can then safely exit into their preferred currencies.
Bitcoin has a scripting language which enables more than a “send money from X to Y” transaction. A Bitcoin transaction can require M of N parties to approve a transaction. Imagine Wills that automatically unlock when most of the heirs agree that their parent has passed, no lawyer required. Or business accounts that require two of any three trusted signatures to approve an expenditure. Or wire escrows that go through when any arbiter agrees that the supplier sent the goods to the buyer. Or wallets that are socially secured by your friends and family. Or an allowance account accessible by the child and either of two parents. Or a crowdfunding of a Kickstarter project that pays out on milestones, based on the majority of the backers approving the next payment. The escrow in each case can be locked so that the arbiters can’t take the money themselves – only approve or deny the transaction.
The scripting language can also unlock transactions based on other parameters. Unlocking them over time can enable automatic mortgage, trust, and allowance payouts. Unlocking them on guessable numbers creates a lottery auditable by third parties. One can even design smart property – for example, a car’s electronic key so that when and only when a payment is made by the car buyer to the seller, the seller’s car key stops working and the buyer’s car key (or mobile phone) starts the car. Imagine your self-driving car negotiating traffic, paying fractional bitcoin to neighboring cars in exchange for priority.
I've been following Bitcoin since the beginning and had no idea it supported "transaction approved only when M of N participants agree."
How do you feel about those scenarios? Also, does anyone know of other little-known Bitcoin functionality?