I hear people speaking about the potential of Bitcoin - for example, being able to carry out transactions that are in some way geo-restricted or time-locked so that the recipient will only receive his/her money when an oracle checks some form of online record (eg. showing someone has died or reached a certain age).
But it's not clear to me how long it might actually take for us to implement these things in the real world. As far as I can make out, these things are all possible in theory - but is it possible to implement them yet? Or are we going to have to wait for years until this sort of functionality is available?
I'm asking this question partly to assess whether or not it's worth developing a business on the assumption that this sort of functionality is, or will be imminently, available - or whether it's simply far too far off in the future to even consider at this point in time.
Time locked is pretty simple and you can already do it:
https://en.bitcoin.it/wiki/NLockTimeAll this talking about oracles deciding stuff, I am not so sure about that, since it is really hard to find a reliable oracle
Thanks for the link re time lock. My instinct is that whilst oracles (reading the register of births, deaths etc) might be more complicated, restricting transactions according to GPS co-ordinates should be much simpler given the existing technology around mobile/location. But maybe that's an unfair assumption?
I don't think, it is that easy to make really reliable. The NLockTime is on the blockchain, as far as I understand it. It can not be executed as long as block N is reached.
GPS is a whole other issue. You can't put it on the blockchain. You can make a multisig, where on signature is given by a server that checks your location. But what does checkong your location really mean? If your smartphone sends your location, based on their GPS, I am pretty sure, that can be manipulated really easy.
It sounds like OP may mean that outputs are locked until a particular time, whereas NLockTime merely locks that particular transaction from being accepted until a particular block. Eg. I create a NLT transaction and hold it (but do not broadcast it since nodes will not store it - to prevent attacks) until block X. At block X, I can broadcast it and have it go through.
At any point, however, before block X, I can create a new transaction that spends those outputs.
In my opinion, if OP meant "lock outputs until block X" and "only accept signed transactions regarding output Y from a certain GPS area" those won't happen in Bitcoin at the protocol level since they involve large changes. They *could* happen in a side chain though and that is where I'd expect that to occur at a protocol level. They can also work through a third party who encumbers the coins and restricts them in some way by time and/or geolocation, perhaps using multi-sig and some type of gps enabled signing device, but that is a layer above the protocol.
If you want it, laying out a detailed proposal as to how to implement it would expose trouble areas or describing what you want to accomplish.