Author

Topic: Virtual bank notes, 100% backed by bitcoins, enforced by smart contracts. (Read 1689 times)

donator
Activity: 1736
Merit: 1014
Let's talk governance, lipstick, and pigs.
Open Transactions unleashes the power of Bitcoin. It takes advantage of the open ledger of Bitcoin. This is one of many applications that will make Bitcoin grow as the foundation of a new economy.
sr. member
Activity: 440
Merit: 251
As I said, the point is instant transactions and invisible transactions. If you are going to withdraw the BTC immediately it's pretty pointless though. But this proposal makes it possible to recieve a BTC and spend it again instantly, without leaving any trail at all. To track you someone would need access to your banks private database, but the bank doesn't even need to store this info as it only needs to keep track of the current owner of the BTC.
...
But my proposal is not perfect. Ideally I would've liked to find a way to use smart contracts to eliminate the trust issue completely. But this is the best I have managed to come up with, and I certainly think it's way better than current methods of bitcoin banking.

Hi.  As others have mentioned, Open-Transactions might be a good solution. It makes possible:

1) OT enables untraceable / anonymous cash transactions (when using the cash instrument.) There are a variety of other instruments such as cheques, markets, cashier's cheques, basket currencies, etc.

2) Destruction of Account History: OT enables all parties to prove which instruments are valid, as well as which transactions have cleared, without storing the transaction history, but instead by only storing the last signed receipt. (Your "account" and your "balance" are actually just your last signed receipt.)

3) OT servers are not able to forge your transactions or change your balance without your signature.

4) An issuer of any currency can issue on multiple OT servers. If the server disappears, the issuer can reissue their funds onto another server.

5) Soon a solution is coming that will make (4) possible with Bitcoins (through voting pools on the Bitcoin blockchain, made possible by the Bitcoin built-in scripting language.)

6) OT features instant transactions.  (No 10-minute wait.)

7) I have just coded smart contracts (scriptable clauses on OT contracts).  It's not debugged yet, but you can check out the smartcontracts branch on Github if you're curious. It's designed so it's easy to swap in whatever scripting language you prefer.

If you want to read more, there are plenty of materials and articles available here: https://github.com/FellowTraveler/Open-Transactions/wiki


hero member
Activity: 518
Merit: 500
You need to read up on Open Transactions. I'm excited by its prospects and it will work in very well with bitcoin.
sr. member
Activity: 323
Merit: 251
On edit:  On reading it again it resolves trust issue but ...

what is the point again?

Why not just transfer 1 BTC instead of depositing 1 BTC, creating 1 BTC note, transfer note, have bank re-issue 1 BTC note, withdraw 1 BTC?
As I said, the point is instant transactions and invisible transactions. If you are going to withdraw the BTC immediately it's pretty pointless though. But this proposal makes it possible to recieve a BTC and spend it again instantly, without leaving any trail at all. To track you someone would need access to your banks private database, but the bank doesn't even need to store this info as it only needs to keep track of the current owner of the BTC.

If you got the note from someone else, how would you know if one of the prior owners was colluding with the bank?  Let's say your employer pays you with bit notes.  Unknown to you, your employer didn't get them directly by depositing money in the bank but bought them on the secondary market.  What if the bank was selling it's own notes on the secondary market (and your employer bought them from that bank without knowning it), ie, the bank was one of the prior owners?  Then it would have everything needed to spend the money on deposit.


I think on each transfer you would have to not only get a new secret from the bank, but generate a new private key, which means you'd have to have a bitcoin transaction, which is what you were trying to avoid.
I'm fully aware that my proposal doesn't eliminate the trust issue, but it reduces it severely. Lets say the bank actually does collude with another user. If there is a lot of bitnotes in circulation, only a fraction of them would become "tainted". So while a regular bitcoin bank always has the choice between business as usual and stealing all of its customers money, a bitnote bank would only have the choice of business as usual and stealing some of its customers money. So the incentives to commit theft is greatly reduced, especially if the bank has a reputation and a profitable business to care about. So in terms of trust, I believe my proposal would mean a great improvement over similar services today.

I also think it would be possible to create some kind of clearing system between different banks, which means that customers could actually choose a bank of their own choice and still enjoy instant transactions with customers of other banks. This is something we surely don't have today. Lets say customer A of bank A recieves a bitnote B from bank B. He gives the bitnote to his own bank with a newly created public key. Bank A then gives the note to Bank B and withdraws the money to two adresses (the one you gave them and one of their own). From the customers view, depositing a bitnote from another bank would actually be pretty much the same as depositing a bitcoin. As long as bank A trusts bank B enough to not believe they will double spend, you can be free to use your new bitnote instantly. And if one bank does decide to start double spend against other banks they will surely be blacklisted from the clearing process among all other banks pretty fast. This does create a transaction in the block chain though, but this transaction could only be traced back to the banks, not to the individual customers.

But my proposal is not perfect. Ideally I would've liked to find a way to use smart contracts to eliminate the trust issue completely. But this is the best I have managed to come up with, and I certainly think it's way better than current methods of bitcoin banking.
member
Activity: 115
Merit: 10
Lets say you want to make a deposit to a virtual bank and recieve a virtual bank note (lets call them bitnotes from now on) in exchange. This would be done by you making a transaction that needs both the bank and you to sign the output in order for the bitcoins to be spent again. This means that the bank can't steal the bitcoins from you, and you can't steal it from the bank either. After this, you recieve the data you need to create your first bitnote. The bitnote contains at least the following: 1. The private key that you have and the bank needs to spend the bitcoins, and 2. A secret identification that you need to proove to the bank you are the owner of the deposited bitcoins.

So now you want to pass this bitnote on to someone else. Easy, you simply send him your bitnote with the private key and the secret ID. This means he could withdraw the bitcoins just as easily as you. However, he doesn't want to withdraw it, he only wants to stop you from doing it. So he contacts the bank, tells the bank the secret ID and recieves a new one. So now the bank knows that you are not the owner of the deposit anymore. So even though you still have the private key that could be used to sign a new transaction of the bitcoins, the bank knows you are not the owner and has no reason to allow you to withdraw by co-signing your transaction.

The idea here is that the bank can't spend the bitcoins it has in possesion without the private bitcoin key in circulation with the bitnote (thus minimizing the need to trust the bank), and that it won't spend it even if someone would provide them with the key without prooving that they actually own the funds too. I realize this is not bullet proof protection against theft though. If you recieve a bitnote, the bank could thoeretically still run of with your money, but only if it managed to collude with a previous owner of the bitcoin that you currently have claims on.

If you got the note from someone else, how would you know if one of the prior owners was colluding with the bank?  Let's say your employer pays you with bit notes.  Unknown to you, your employer didn't get them directly by depositing money in the bank but bought them on the secondary market.  What if the bank was selling it's own notes on the secondary market (and your employer bought them from that bank without knowning it), ie, the bank was one of the prior owners?  Then it would have everything needed to spend the money on deposit.

I think on each transfer you would have to not only get a new secret from the bank, but generate a new private key, which means you'd have to have a bitcoin transaction, which is what you were trying to avoid.

legendary
Activity: 1904
Merit: 1002
On edit:  On reading it again it resolves trust issue but ...

what is the point again?

Why not just transfer 1 BTC instead of depositing 1 BTC, creating 1 BTC note, transfer note, have bank re-issue 1 BTC note, withdraw 1 BTC?

So he can get his cut for providing the service.
donator
Activity: 1218
Merit: 1079
Gerald Davis
On edit:  On reading it again it resolves trust issue but ...

what is the point again?

Why not just transfer 1 BTC instead of depositing 1 BTC, creating 1 BTC note, transfer note, have bank re-issue 1 BTC note, withdraw 1 BTC?
sr. member
Activity: 323
Merit: 251
Basically, I've been trying to come up with ways to securely remove what I believe are the two biggest disadvantages of bitcoin, the wait for confirmations and the transaction history in the block chain. The idea I have (I've seen variations of it elsewhere as well) is to solve this by stop trading bitcoins altogether, and start trading ownership of bitcoins instead. This obviously creates some new problems though, especially in terms of trust in whoever is in possesion of the actual coin. But I was hoping that the trust issue could be resolved using the smart contracts feature of bitcoins. So in this thread we discuss every way that may be possible.

Below are my thoughts on one way that this could be possible. Although first a disclaimer, I'm not an expert in the details of cryptography in any way, but I do believe I have a pretty good grasp of the logic behind it. My proposal may be flawed or bad from a technical view. If so, feel free to improve or disprove it.

One way this could be achieved is by creating "virtual bank notes" that simply represents ownership of a bitcoin stored at a "virtual bank". These bank notes could then be exchanged between people without transactions actually taking place in the block chain (not entirely P2P though, see further down). This would be very similar to real bank notes backed by gold and issued by private banks. There are some differences though, and the most prominent one is that the nature of bitcoin could make fractional reserve banking impossible. Upon recieving a note you could simply look up the specific coin in the block chain to make sure that it is where it should be.

Another difference is that the pseudo-anonymous nature of bitcoin means that the incentives for the bank to simply run away with the money is a lot higher than in real life. So this needs to be solved by the smart contract feature of Bitcoin. Lets say you want to make a deposit to a virtual bank and recieve a virtual bank note (lets call them bitnotes from now on) in exchange. This would be done by you making a transaction that needs both the bank and you to sign the output in order for the bitcoins to be spent again. This means that the bank can't steal the bitcoins from you, and you can't steal it from the bank either. After this, you recieve the data you need to create your first bitnote. The bitnote contains at least the following: 1. The private key that you have and the bank needs to spend the bitcoins, and 2. A secret identification that you need to proove to the bank you are the owner of the deposited bitcoins.

So now you want to pass this bitnote on to someone else. Easy, you simply send him your bitnote with the private key and the secret ID. This means he could withdraw the bitcoins just as easily as you. However, he doesn't want to withdraw it, he only wants to stop you from doing it. So he contacts the bank, tells the bank the secret ID and recieves a new one. So now the bank knows that you are not the owner of the deposit anymore. So even though you still have the private key that could be used to sign a new transaction of the bitcoins, the bank knows you are not the owner and has no reason to allow you to withdraw by co-signing your transaction.

The idea here is that the bank can't spend the bitcoins it has in possesion without the private bitcoin key in circulation with the bitnote (thus minimizing the need to trust the bank), and that it won't spend it even if someone would provide them with the key without prooving that they actually own the funds too. I realize this is not bullet proof protection against theft though. If you recieve a bitnote, the bank could thoeretically still run of with your money, but only if it managed to collude with a previous owner of the bitcoin that you currently have claims on. This still greatly reduces the incentives though since it makes it really hard for the bank to ever get away with more than a fraction of all of its clients money, since that would require collusion with a lot of its customers. The bank never has the choice between stealing every customers money and continuing business. So the incentives to continuing business as usual are much higher than it is for current "virtual banks" such as MyBitcoin.


I really have no idea if this is among the best ways to achieve what I want (Instantaneous invisible transactions). So really, any proposals on how smart contracts can be used to make anonymous full reserve banking work better is welcome in this thread. My proposal is just a start for the discussion. I really hope the interest in something like this is high here, and if my method could be improved noone will be happier than me.
Jump to: