Bitcoin Forum

Bitcoin => Project Development => Topic started by: fabianhjr on May 03, 2011, 12:36:20 AM



Title: Decentralize Financial Institutions - Part 1, Planning
Post by: fabianhjr on May 03, 2011, 12:36:20 AM
Abstract
A purely peer-to-peer version of financial institutions would allow financial
services to be provided directly from one party to another without. This coupled
with Satoshi's Bitcoin enhances one's freedom in the world and allows for far
more than has been possible up to now. The network is intended to decentralize
the following, but not limited to, services: banks, insurance, stock exchanges,
and brokerage. This whole system revolves around the concept of "I owe you".

Grounds
It is based on a Web-of-Trust and to fight some of the disadvantages I purpose
the data to be divided in a more manageable form. To ensure data availability
and manageability I purpose the data to be divided  and distributed using the
available Distributed hash Table technology already being used in distributed
protocols such as BitTorrent.

Protocol
-3 Levels of trust: "I might trust you, though I will manually check your coms", "I trust you", and "I trust you and those you trust". Additionally if a connection is not trusted it is plainly ignored.
-Each node can choose his preferred algorithm and bitlength. The key and related info will be stored in a Distributed Hash Table and a similar address convention to Bitcoin will be used.(RFC: This is the chance to add more goodies)
-A credit line would need to be established. Trust from one to another does not infer the trust from another to one.
-Payer is the only one that must sign a contract in order to owe "something" to "somebody".
-All communications from a non-trusted peer are simply ignored.
-If a peer, ex a payment gateway*, needs a tremendous amount of bandwidth it should be requested. *A payment gateway you trust would be able to receive a payment ending up he owing you "x" amount that you can use in your favour by sending payments trough him to a peer in another location. This allows you to send payments even if not globally trusted.
-Contracts, by instance IOUs, can be created by peers. This contracts are stored in an individual DHT and have the option to leave fields for payers and payees. An example is below:
Code:
{
"hash":"12x(whatever)",
"legal":"Legalize Here:\n Simple IOU \n I , $payer$, agree to pay the amount of $amount$ of $type$ to $payee$",
"layman":"I owe $amount$ $type$ to $payee$"
}
-Intermediaries would route the payment between unkown and directly untrusted parties. Though, their consent is not needed as their total credit will be unaffected.
-All contracts and trust between peers would be public knowledge. Contracts signed between parties would be stores in a distributed hash table with a time-stamp.(Anonymity issue? Workarounds?)

This is just a proposal and a request for comments. If I haven't considered an issue please point it out. Yes, this is based on Ripple. It is slightly different in the sense that it takes care of more than credit and it is decentralized completely. This would help with the recent MtGox attacks and ensure the financial integrity of Bitcoin. I suggest this software to be called OurFinances, however suggestions are appreciated.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: PLATO on May 03, 2011, 03:53:52 AM
edit - some ideas for a decentralized (but not distributed) system

Judging from Paypal's recent shutdown of Coinpal and Bitcoin Morpheus, they are no longer willing to play nice. I would not be surprised to see bank transfers become more difficult, too. The fundamental problem with all exchanges (as of 05.11 ) is that it's really hard to buy bitcoins. No matter what route you take, you have to jump through hoops. A (really large) number of people are not willing to jump through any hoops at all.

The primary means of 'getting in' for most new users will be cash. There are a handful of projects that are attempting to set up a global network of cash-to-bitcoin-to-cash dealers; the ones I know about are

  • Bruce Wagner's personal efforts & http://btcnearme.com/
  • Bitcoin Local - http://www.tradebitcoin.com/ Lots of dealers exchangers in the Northeast
  • Ubitex - http://ubitex.org/ubitex/ new site - under construction!
  • edit http://blackandyellowpages.com/ - this applies too, more info here (http://agoristradio.com/?p=226)
  • edit 2 bitmarket.eu (http://bitcointalk.org/index.php?topic=6992) - not cash dealer, but interested in GPG integration
  • edit 3 dduane's Bitcoin Cambio (http://bitcoincambio.com/)

We should integrate all of these efforts right now, while they're all still in development. It's inevitable that some efforts will fail, so we should try to make the system robust enough to absorb those failures. We should have a common way to identify a particular exchanger that is exportable to multiple websites (i.e. a GPG key.) #bitcoin-otc already has a significant web of trust set up, and it's not hard to integrate import that into other applications.

If we have multiple sites using information from a single web of trust, we should decide on a common API to communicate between those sites. Right now, the OTC database records a user ID (gpg key), a rating from -10 to 10, and a notes field. This is fine for -otc, but other sites will likely want to record additional information in their own webs.

Some stuff that might be saved in a WOT database: contact information, services offered, currencies offered, availability times, trade volume limits, rough GPS coordinates.

If we agree on a protocol such that all sites can share data, we can make the whole Bitcoin economy a 'decentralized exchange.' When any one site fails, another can take its trust database and start with that. To avoid tampering the databases should probably be public knowledge.

edit - since anyone can look up the trust ratings of a particular identity online, many new users may be willing to trust a nearby exchanger enough to send a money order or cashiers' check through the mail. If they send it locally, they should be able to get their coins within a day or so, especially if they email the exchanger a heads-up. Exchangers who are unwilling to meet face to face can do this too, although it might be hard to build trust.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: ryepdx on May 03, 2011, 05:23:08 AM
If we agree on a protocol such that all sites can share data, we can make the whole Bitcoin economy a 'decentralized exchange.' When any one site fails, another can take its trust database and start with that. To avoid tampering the databases should probably be public knowledge.

+1

This is exactly what I've been hoping for.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: skittixch on May 03, 2011, 05:25:49 AM
Thank you for tackling this issue.  As a laymen, I've got a few questions.

What sort of time frame and resources might this project require?
Is creating something like this a reasonable goal for those already involved?
If outside assistance could help, or becomes necessary, is there a dollar amount we should aim to raise for a stipend?


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: CoinMan on May 03, 2011, 06:53:25 AM
These are great ideas.  Getting people to/from their local currency is the key function of the exchanges.  If the exchanges could participate in a trusted exchange network where they publish their order books and subscribe to participating exchanges order books, then all users can see all orders across the exchanges via any exchange they choose that participates in the network.

The above seems pretty easy.  So then how would a cross exchange order execute?  

User A who's account is with Exchange A decides to buy BTC from User B who's account is with Exchange B.  He places his order through his "local" exchange because that's where his account is held and where he trades from.  The exchange creates the buy request and signs it with GPG and it's published to the global exchange network where Exchange B would pick it up, validate it's authenticity, fill the order, then publish an accepted trade confirmation which it signs and the publishes back to the global exchange network.  This is then picked up by the originating exchange, validated for authenticity, executed and a completed trade confirmation is published back to the network as complete.

If all the above works, then the last issue is that all the exchanges need to reconcile with each other for the net amount in  currencies other than BTC that are due to/from each other...daily, weekly, monthly?  Not sure it matters as long as they can agree to however they want to do it between each exchange....but everything is public via the global exchange so that if an inter-exchange discrepancy DOES arrive mitigation should be successful via public record to prove which exchange owes which exchange what.

I'm sure someone much more technically minded than me can figure this out and/or poke the holes in this and figure out how to have the "global exchange" be a distributed network with no single point of failure.  The only failure would be in a local exchange getting shutdown or being dishonest which should quickly get them kicked out of the trusted exchange network.

CoinMan


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: markm on May 03, 2011, 10:19:30 AM
Maybe each exchange can simply create their own blockchain which only they "mine"?

Hack the code to make "mining" only be valid if the coins "mined" are assigned to a specific address, so that no matter who does the "mining" coins are only ever generated to one specific account, an account the specific exchange whose indebtedness that particular blockchain represents.

The coins of such a blockchain would be I.O.U.s, valueless to the exchange that issues them but valuable to anyone else insofar as the issuer does in fact redeem them at their published exchange rates for various other things tokens coins goods currencies commodities or whatever.

This is maybe what some of the alternate blockchains my IRC bots support should have done, or maybe should at some point do, so that blockchain building can be done by anyone anywhere who wishes to help secure the blockchain by processing blocks can do so without thereby also minting coins. (Since the coins are someone else's I.O.U.s not the miner's I.O.U.s representing the miner's contract to pay something to the bearer on demand, it makes sense in this kind of case that any coins aka I.O.U.s minted should initially be in the possession of the party who has actually agreed to redeem the things.)

-MarkM-


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Zerbie on May 03, 2011, 12:21:09 PM
This really sounds like a job for ripple.

http://ripple-project.org/



Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Bruce Wagner on May 03, 2011, 12:57:25 PM
This sounds like a great idea, Plato... probably an idea we've all had in passing...  But definitely an idea whose time has come.

At the moment, I am grappling with this issue:   What simple 1-2-3 instructions to put on my (completely redesigned) "Bitcoin for Dummies" site, BitcoionMe.com.... on the "How to Buy Bitcoions" page. 

I want the single simplest easiest method for the ordinary person to use...

There are several now...

(1)   Local Exchangers - Of course, this is the ideal method. However, there are still not enough listings to make it universally an easy solution.  Also, there are several sites attempting to do this (a good thing)... but confusing.   Which one to send new users to?  Send them to ALL of them?  Too complicated & confusing again?  Maybe some refuse to publish their own email address, can't use btcnearme.  Maybe some prefer looking at a map.   Also each of these sites contain different listings.   No one site has them all.  ....yet.

(2)   MtGox is the defacto standard -- if not a near monopoly -- in exchange sites.  They have just instituted direct MTGOX-USD purchases through Dwolla. ( email me for details if instructions are not yet posted ).  This is an excellent method.  However, it's not instantaneous.   It's not anonymous (Dwolla is tied to your bank account.)   And it has a limited purchase amount.  $2500 maybe??

(3)   Green Dot MoneyPak -- another method similar to #2, but instantaneous and anonymous.  But still being set up.

I want ONE simple way to buy Bitcoin listed on my site.

Which one should I list?


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Cryptoman on May 03, 2011, 09:06:38 PM
The primary means of 'getting in' for most new users will be cash. There are a handful of projects that are attempting to set up a global network of cash-to-bitcoin-to-cash dealers; the ones I know about are

  • Bruce Wagner's personal efforts & http://btcnearme.com/
  • Bitcoin Local - http://www.tradebitcoin.com/ Lots of dealers exchangers in the Northeast
  • Ubitex - http://ubitex.org/ubitex/ new site - under construction!
  • edit http://blackandyellowpages.com/ - this applies too, more info here (http://agoristradio.com/?p=226)
  • edit bitmarket.eu (http://bitcointalk.org/index.php?topic=6992) - not cash dealer, but interested in GPG integration

There is also http://bitcoincambio.com, started by forum member dduane. 

The legal status of being a Bitcoin exchanger could change at a moment's notice (it's probably already illegal in a number of jurisdictions), so I think it's important to allow traders to remain anonymous if they choose to do so.  In this case their reputation will be based solely on a keypair.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: ScriptGadget on May 03, 2011, 11:32:17 PM
Something worth considering as a starting point for discussion.


http://www.mywot.com/wiki/API (http://www.mywot.com/wiki/API)


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Anonymous on May 04, 2011, 12:14:47 PM
What about a decentralized whitelist for times when you are getting ddosed ? What would happen is a site like witcoin would let you add your ip to a list of ips's for a micropayment which could eventually be returned if your ip "behaved". Sites could use it to block all the ips not on the list while a ddos is going on. If an ip from the whitelist showed up in a ddos attack it loses the payment it made. To get back on the list requires another micropayment.




Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: seventoes on May 04, 2011, 12:39:41 PM
I think a web of trust type model is the way to go for something like this. MyWOT itself I don't think is the right choice though, as far as I know MyWOT relies on a central server for establishing trust between the parties. The trust model itself obviously needs to be distributed. To build the trust for our decentralized markets, we need a new protocol.

I was thinking something like this might be possible. Consider:

Trades on every exchange are all made public knowledge, as transactions in BitCoin currently are. Each trade can be assigned some sort of rating by both parties in the trade. If it was fulfilled to their liking, the transaction gets a good rating. If not, bad. These ratings are also broadcasted, and the more positive ratings performed on a particular exchange there are, the more that exchange is trusted.

The obvious problem is spoofing ratings or spamming small transactions to get unreasonable numbers of legit ratings. The spamming problem can be solved by weighing ratings based on the size of the trade to make illegitimate attempts like this completely impractical. A certain amount of money must be moved with good ratings through an exchange for trust to even begin being built on the network. Rating spoofing could be solved by only accepting ratings signed with a key related to the transaction itself, and the network only accepts the first rating for each transaction.

There are probably holes in this since I'm just rambling with little sleep, but I think our infrastructure is starting to look feasible.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: marcus_of_augustus on May 05, 2011, 02:35:54 AM
It looks to me like OpenTransactions has some of the machinery in place to do what you are thinking of, not exactly as you mean but close enough.

If you can get a OT server up and on the web (anonymously if you choose), and establish some community trust between nodes, then transacting in bitcoins (or any digital currency) between OT nodes becomes easy. Anyone running an OT server can essentially be a finance house and can issue it's own digital cash, fully backed by publicly auditable addresses on the bitcoin network.

The anonymising layer it can put on top of bitcoin is hugely desirable and will provide an incentive for nodes to come up, since they will get paid for this, and other services. They are a great fit.

Check it out, it's some neat code built on top of the chaumian blinding math. (Just got a java client added, "Moneychanger" but not yet with bitcoin support).

https://github.com/FellowTraveler/Moneychanger/wiki
java client

https://github.com/FellowTraveler/Open-Transactions/wiki/Business-Cases
business case possibilities

http://agoristradio.com/?p=234
radio discussion, FellowTraveller talking about OT.
http://agoristradio.com/?p=246


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: marcus_of_augustus on May 05, 2011, 04:12:15 AM
Thought a bit more after listening to fellowtraveller on the agorist radio links and have got to toss something out there ....

What we could put together ultimately is a platform, like LAMP (linux apache MySql Perl/PHP/Python) for web servers we need

a ROB platform that is nicely integrated (Ripple, OpenTransaction, Bitcoin)

They all do slightly different jobs, Bitcoin is the glue and foundation currency, OpenTransaction does the anonymising and instant account management/settlement, Ripple does the currency exchange between different commodities/services.

ROB ... for resource allocation information technology.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: mizerydearia on May 05, 2011, 04:34:15 AM
We should integrate all of these efforts right now, while they're all still in development. It's inevitable that some efforts will fail, so we should try to make the system robust enough to absorb those failures. We should have a common way to identify a particular exchanger that is exportable to multiple websites (i.e. a GPG key.) #bitcoin-otc already has a significant web of trust set up, and it's not hard to integrate import that into other applications.

If we have multiple sites using information from a single web of trust, we should decide on a common API to communicate between those sites. Right now, the OTC database records a user ID (gpg key), a rating from -10 to 10, and a notes field. This is fine for -otc, but other sites will likely want to record additional information in their own webs.

Some stuff that might be saved in a WOT database: contact information, services offered, currencies offered, availability times, trade volume limits, rough GPS coordinates.

If we agree on a protocol such that all sites can share data, we can make the whole Bitcoin economy a 'decentralized exchange.' When any one site fails, another can take its trust database and start with that. To avoid tampering the databases should probably be public knowledge.

Who will take initiative or lead to organize this effort?


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: PLATO on May 05, 2011, 06:05:03 AM
moa: it would be nice to make a fully integrated system to bring people into bitcoins from the ground up. I'm still in Montgomery AL and there are thousands of people here who don't know what the "Internet" is let alone the concepts of 'Digital' or 'Crypto.'

If we made e.g. a custom linux distro, we could set it up so that the client was preinstalled, and links to commonly used Bitcoin websites could be preloaded on the desktop.

We could put this LAMP distro in there as well. I'm not sure why that would be useful.


mizerydearia: I think there are a ton of people who are really interested in doing this, I am more than willing to dedicate some time to it, but I will have periods of unavailability due to roadtrip logistics. I've managed projects before, but never something online on this scale. I assume we would want to set up something like Trac and/or a Github repo. I don't want to be in charge of the Git repo. We also need somewhere to discuss and archive ideas about what problems we're trying to solve in what order, and what needs to go into the system.

I've set up a mailing list to start hashing out these details. Join the list by emailing bitcoin-join@subvert.me and leave by emailing bitcoin-leave@subvert.me. Emails sent to bitcoin@subvert.me will go to the whole list. You can set an option to receive a single daily digest email here (http://subvert.me/mailman/listinfo/bitcoin_subvert.me).

edit: corrected email addresses


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: CoinMan on May 05, 2011, 06:05:53 AM
Thought a bit more after listening to fellowtraveller on the agorist radio links and have got to toss something out there ....

What we could put together ultimately is a platform, like LAMP (linux apache MySql Perl/PHP/Python) for web servers we need

a ROB platform that is nicely integrated (Ripple, OpenTransaction, Bitcoin)

They all do slightly different jobs, Bitcoin is the glue and foundation currency, OpenTransaction does the anonymising and instant account management/settlement, Ripple does the currency exchange between different commodities/services.

ROB ... for resource allocation information technology.

This sounds like the best overall solution I have seen yet.  Very, very promising!

CoinMan


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Anonymous on May 05, 2011, 12:59:06 PM
Subscribing. I want a bitcoinOS. Maybe on a portable hard drive too ?
 :)



Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: Cryptoman on May 05, 2011, 02:50:35 PM
Subscribed.  Thanks for setting this up, Plato.  Should we invite parties from other projects (Ripple, Open Transactions) to join the list?


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: PLATO on May 05, 2011, 03:10:12 PM
Yes, invite anyone who might have something to add please!


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: ScriptGadget on May 05, 2011, 09:14:44 PM
I think a platform is a great idea. Add TOR to the mix as well, and "ROB" (which may lead to some unfortunate associations) becomes Ripple, Open Transaction, Bitcoin on Tor - "ROBoT"

I think the TOR piece is important because there will be some backlash if Bitcoin is widely adopted.

edit: Had to switch tasks and didn't get to finish my thought. What I really wanted to say was, it would be great to have a couple of simple applications in the ROBoT appliance as complete working samples -- a simple exchange and a simple store, then burn it to CDs and USB sticks and make an AMI for Amazon and a VM image for Rackspace etc.

If the exchange itself has a key in the WoT then you could setup a traveling exchange on a wifi laptop, yet users would still be able to recognize it by its reputation with the overall WoT. Soon there is an exchange in every neighborhood.

Just a thought.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: PLATO on May 05, 2011, 09:42:34 PM
That's a cool idea. Even your local loan shark who lends out $10 to his buddies (but expects payback) might want to expand into the Bitcoin world. I reiterate that we'd have to make it usable by ANYONE regardless of computer ability.

I made a thread specifically for implementing the web of trust API standard, which can be found here (http://bitcointalk.org/index.php?topic=7358.0).


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: dishwara on May 05, 2011, 09:56:47 PM
I wrote an email to build torbitcoin bundle, stating that bitcoin will be the virtual currency.
Hope they reply me or even though don't reply, start building torbitcoin.
On a side note, they tor decide to stop, tor for firefox. So, soon they will take out tor extension for firefox & decided to build Tor broswer ,with firefox as foundation.


Title: Re: Decentralize Financial Institutions - Part 1, Planning
Post by: mizerydearia on May 06, 2011, 06:57:59 AM
What Freenode IRC channel seems suitable to gather and collaborate/discuss in (in addition to the mailing list)?

#bitcoin-livecd, #bitcoin-linux, #bitcoin-cd, #bitcoin-os, #bitcoinos, #bitcoin-distro, other?