Author

Topic: p2p based currency exchange (Read 1145 times)

newbie
Activity: 30
Merit: 0
May 22, 2013, 07:07:41 PM
#14
The question is not in the specifics, the question is if it needs to be distributed (even more radical than decentralized), why should we want YOU design or specify it and not anyone else?
member
Activity: 117
Merit: 10
May 22, 2013, 02:25:10 PM
#13
Very interesting indeed.

The only problem with the BTA approach I think is the fact that a criminal could set up a rogue bus service that would collect people and then convince individuals that they either don't need a new spouse, or supply them with a dummy that they cannot distinguish from a real human being, and then kill a random woman on the bus.

In other words, this idea is not completely secure and tamper proof. At least not yet.

-Michael
member
Activity: 84
Merit: 10
May 22, 2013, 10:50:42 AM
#12
I have created a system for a P2P orderbook here:

https://bitcointalksearch.org/topic/ann-ussc-crypto-p2p-server-decentralized-p2p-exchange-application-209269

I figured out how to make a P2P Orderbook for a decentralized exchange:

I am updating the post daily but will add more in a few minutes:

https://bitcointalksearch.org/topic/ann-ussc-crypto-p2p-server-decentralized-p2p-exchange-application-209269





Decentralized Orderbook - BTA System (Bus - Train - Plane)

BTA - Bus. Train. Plane. BTA is a concept I came up with the solve the problem of a decentralized orderbook for P2P systems.

BTA is a system to move orders from Tier I exchange nodes to Tier II exchange nodes to Tier III exchange nodes according to a predetermined cycle.

BTA is a system akin to a mass-transit public transportation system.

example:
In a mass transit system you could have a bus that would route and cycle through a city with 25 bus stops, stopping at every stop to pick up people. The bus would then drop all of the people off at the last stop which for the purposes of this demonstration is the city's train station. The bus would then repeat the cycle continuously bringing more and more people to the train station.

Eventually the train would arrive to that city and pick up the people who got off the bus and are waiting at the train station. The train would then continue on and cycle through all of the cities of that particular province/state picking up people (who were dropped off by the bus) at every city train station. At the end of the train route would be an airport with a planes ready to pick people up and take them to a specific destination. The train would cycle continuously through all of the cities picking up people and dropping them off at the airport.

The people who were first on the bus and then on the train and now at the airport would then board the plane (jumbo jet if you will) and travel on the plane from the province/state they were in to a final location all the while making stops in every major province/state of that country to pick up additional people. After the plane arrived at the final location it would take off again and cycle through all the provinces/states of the country continuously picking up and dropping off people.

Now, imagine if you will a dating and match making service on one of the sides of that county that has a big convention to help people find a spouse. That service decides to utilizes the same aforementioned mass transportation system to bring people together from all over the country.

People would leave their homes and go to the bus stop. Some people would find compatible matches for themselves at the bus stop or while riding on the bus. Those people would get off the bus pay the fee and then go home with no need to go to to the convention. Those people have what they want; a spouse.

The rest of the people would continue on to the train station and get on the train. But again some people would find matches on the train and at the station; so, they too would pay the fee and go home. They have what they want; a spouse.

What remains of the people would continue on to the airport then get on the plane to go to the convention hoping to find a good match for a spouse.

A P2P BTA (Bus-Train-Airplane) exchange would operate the same way only picking up orders instead of people.

(More in a few minutes)

 
More here in a few minutes:

https://bitcointalksearch.org/topic/ann-ussc-crypto-p2p-server-decentralized-p2p-exchange-application-209269

Here is how it works:

P2P BTA Application

How does it work?

In a P2P BTA system a "Bus" exchange node would cycle through and collect orders from P2P "home-server" nodes mentioned in the above posts.  "Home-server" nodes house user accounts and wallets in a P2P network.

1. The Bus exchange server node would collect orders from home-server nodes 1 through 25 (for example).

2. Matching orders (if any) are fulfilled in a mini exchange. Receipts are generated. All unfulfilled orders and receipts are then stored for pickup by an "Train" exchange node.

3. On a predetermined cycle the higher Train exchange node would pick up all of the unfulfilled orders and receipts from all four (for example) of the Bus exchange nodes in the P2P network. All matching orders are fulfilled in a medium sized exchange and more receipts are generated.  Again, All unfulfilled orders and collected receipts are then stored for pickup by an "Airplane" exchange node.

4. Finally, on a predetermined cycle the higher Airplane exchange node would pick up all of the unfulfilled orders and receipts from all four (for example) of the Train exchange nodes in the P2P network. The Airplane exchange is the highest exchange on our example P2P network. All orders would attempt to be fulfilled here. Collected receipts are used to generate reports and to display fulfilled orders.

In our example P2P network, if no orders were fulfilled by the Bus or Train exchange nodes then the Airplane exchange node would have picked up 400 orders.

(MORE TO COME LATER TODAY)




https://bitcointalksearch.org/topic/ann-ussc-crypto-p2p-server-decentralized-p2p-exchange-application-209269
hero member
Activity: 526
Merit: 508
My other Avatar is also Scrooge McDuck
May 22, 2013, 04:15:27 AM
#11
Let's first pick the proper Criteria we need for a P2P exchange:

https://bitcointalksearch.org/topic/primer-for-a-p2p-distributed-exchange-212841
member
Activity: 84
Merit: 10
May 20, 2013, 05:31:04 PM
#10
I am designing a P2P cryptocurrency exchange that can plug into sites like mtgox and btce:

https://bitcointalksearch.org/topic/ann-ussc-crypto-p2p-server-decentralized-p2p-exchange-application-209269

USSC Litecoin-P2P-Server - A Decentralized P2P Client-Server Application & Exchange For Fast Transactions That Utilize Any Cryptocurrency

Application Features:

1. Directly and internally handles wallet.dat files and the Bitcoin/Litecoin protocol.

2. Completely separate database for user accounts with decentralized replication of virtual-server to other P2P servers.

3. Utilizes banks of wallet.dat files that are not mapped to any specific user account. Evenly distributes coins to internal banks of wallet.dat files.

4. End-user client software accounts are assigned to specific virtual-server allowing transactions speeds comparable to a centralized system like Visa, MasterCard, and Pay-Pal.

5. End-user accounts and wallet.dat banks are replicated to other P2P servers.

6. P2P server network monitors each other for online or offline status. Virtualization server replication to replicate virtual servers across network in the event of physical server seizure or DDOS attack [virtual servers house wallet.dat banks].

7. Double spend attacks are mitigated by denying end-users access to wallet.dat files or banks. [Wallet.dat files are internally encrypted].

8. Uses Bitcoin/Litecoin protocol as a lower level protocol like web-browser applications use the transport layer in the OSI model stack.

9. Uses Bitcoin/Litecoin client and wallet.dat files as lower level application.

10. Eliminates need for confirmations by end-user clients and web-server or web based services.

11. No need for end-user to keep wallet.dat files on local computer or phone. Account is in the P2P cloud.

12. Account cannot be frozen or seized by anyone - even the server operator.

13. No changes to the existing Bitcoin/Litecoin network or protocol. Utilizes existing Litecoin network and protocol.

14. End-user application plug-in to existing Bitcoin/Litecoin client.

15. Government cannot track nor trace nor freeze your funds.

16. Funds cannot be traced.

17. Anyone can run a Bitcoin/Litecoin P2P Server (it's decentralized). If the server goes offline or is seized, the virtual server, accounts, and wallet.dat files are still safe and reallocated to other P2P servers.

19. Can be used as an peer-to-peer (P2P) exchange. Can utilize other exchange sites such as btc-e and mtgox for fiat conversions.

20. Completely Open Source.


This is how to best use cryptocurrency protocols

Bitcoin and other altcoins are best suited to operate as lower level applications and should not be designed for direct end-user control or use. Like web browsers use tcp/ip for lower level operations, the Bitcoin application and protocol should operate much the same way. End-user applications and services need to be built on top of the Bitcoin protocol and application.

There is no need to write code from scratch. all of the above can do coded by combining the bittorrent protocol [for virtual server and wallet.dat bank replication] and onion router protocols [for P2P Server communication] with the existing Bitcoin/Litecoin protocol [This would make a hybrid bittorrent/onion router/Litecoin application].

I will post on here design specs but I will not code it for you.

You have my permission to use the above designs. I will not make a patent or copyright claim against you so long as you keep it open source. I do not own any patents on the above system. It came from meditation and thought.

You don't necessarily have to use the Litecoin protocol, Bitcoin or Worldcoin will work as well. But I recommend the Litecoin Protocol [fast and secure].

I have been an Active Directory admin, and MS Exchange admin, Banyan Vines Street Talk Admin, And have supported everything from X.25 to X.400 and Protocols from RIP, OSFP, BGP, etc...

If you have any questions on how to design the application, I will post answers on here. You can PM me or just post your design questions here. I will help you. If you code an application for this then please give me credit for some of the design. That is all that I ask and maybe a little donations in Litecoin [PM me for address].

Get to Coding.

Thank you.

USSCFounder   
 




Here are some of the first design specs to help you code the above system.

The system should be coded to run on an LAMP server using PHP and MySQL only. Perl can be used to facilitate server side scripts and systems commands as well. The end user client or plug in can be coded in C if desired.


Virtual Servers
Virtual servers are just database tables that give a type of centralization to P2P servers facilitating a single point of transaction for a specific user account; thus allowing for speedy transactions that could not be otherwise obtained by conventional P2P cryptocurrency networks. Virtual servers can be configured to be reassigned to other physical servers in a few minutes in the case of ddos attacks or physical server seizure by authorities.

virtual-server-001.user.table
user-id-key                              |   coins.litecoin           |     coins.bitcoin          |     coins.namecoin
(bob) XXXuser-id-key-001XXX    |            100                   |              0                     |                 20
(alice) XXXuser-id-key-002XXX   |            0                      |            100                    |                 20




The coins can then be evenly distributed so that no one account can be linked to any specific wallet:


virtual-server-001.litecoin.wallet-bank-001.table
wallet-id                                                    |   coin-amount
wallet.vs-001.bank-001.litecoin-01.dat           |            25                 
wallet.vs-001.bank-001.litecoin-02.dat           |            25                   
wallet.vs-001.bank-001.litecoin-03.dat           |            25                   
wallet.vs-001.bank-001.litecoin-04.dat           |            25     


virtual-server-001.bitcoin.wallet-bank-001.table
wallet-id                                                    |   coin-amount
wallet.vs-001.bank-001.bitcoin-01.dat           |            25                 
wallet.vs-001.bank-001.bitcoin-02.dat           |            25                   
wallet.vs-001.bank-001.bitcoin-03.dat           |            25                   
wallet.vs-001.bank-001.bitcoin-04.dat           |            25   


virtual-server-001.namecoin.wallet-bank-001.table
wallet-id                                                       |   coin-amount
wallet.vs-001.bank-001.namecoin-01.dat           |            10                 
wallet.vs-001.bank-001.namecoin-02.dat           |            10                   
wallet.vs-001.bank-001.namecoin-03.dat           |            10                   
wallet.vs-001.bank-001.namecoin-04.dat           |            10           
 



(MORE TO COME)


Additional design specs:

virtual-server files can then be propagated to other P2P servers simply by sharing the files via bittorent to the other P2P servers:

virtual-server-001 files to be propagated to P2P network:

virtual-server-001.user.table
virtual-server-001.litecoin.wallet-bank-001.table
virtual-server-001.bitcoin.wallet-bank-001.table
virtual-server-001.namecoin.wallet-bank-001.table

wallet.vs-001.bank-001.litecoin-01.dat
wallet.vs-001.bank-001.litecoin-02.dat
wallet.vs-001.bank-001.litecoin-03.dat
wallet.vs-001.bank-001.litecoin-04.dat

wallet.vs-001.bank-001.bitcoin-01.dat
wallet.vs-001.bank-001.bitcoin-02.dat
wallet.vs-001.bank-001.bitcoin-03.dat
wallet.vs-001.bank-001.bitcoin-04.dat

wallet.vs-001.bank-001.namecoin-01.dat
wallet.vs-001.bank-001.namecoin-02.dat
wallet.vs-001.bank-001.namecoin-03.dat
wallet.vs-001.bank-001.namecoin-04.dat

It is that simple to make a virtual-server. Each P2P server would have local copies of the virtual-servers on the network but only a few would actually be online. Every virtual-server would exist in an online state only on one of the P2P servers on the network.  That means if virtual-server-001 was online in a New York P2P server, an exact copy of it on the Moscow server would be offline. In the event that the New York server was seized or ddos'ed and went offline, virtual-server-001 would then come online in Moscow.

Its a layered P2P application; one P2P application layered on top of another P2P application.

(MORE TO COME)



member
Activity: 117
Merit: 10
May 20, 2013, 03:24:59 PM
#9
Unfortunately these half-baked ideas are not worth very much. You realize that people have accounts at exchanges which are matched by fiat bank to bank transactions? Why would anyone distribute a matching engine like this? Who is in charge? etc.

Every good project started as a half baked idea .. :-)

I disagree on the exchanges being backed by fiat. Take an exchange like bter.com, which is pretty big in this community. They are not backed by any fiat, this is a pure crypto currency exchange. And it works.

The whole point of a p2p exchange would be exactly that NO one is "in charge". When someone is in charge, you introduce a vulnerability to governmental interference, DDoS attacks and the whole scam thing of course (BTER.com owners could shut down tomorrow and run away with all our coins).

A p2p based exchange would have noone in charge. As someone else pointed out, much of the same distributed technology that runs the actual bitcoin transactions (and their alt variants) could be used to run an exchange. All buy/sell orders would be in the chain for anyone to see and verify.

Unfortunately, while I am a professional software developer, I am in no way qualified to take the lead on a project of this kind. We need someone with intimate knowledge of how the bitcoin technology works, ideally one of the authors of bitcoin itself.

-Michael
hero member
Activity: 630
Merit: 500
May 17, 2013, 12:02:11 PM
#8
http://www.bitcoin2013.com/bitcoin-2013-panelists.html

Tons of funny pics but a gem mined from there is below...
   
Peter Todd is known in the Bitcoin community for his work on off-chain transactions, in particular finding ways to reduce or eliminate the need to trust third parties. He is also known for his advocacy of off-chain transactions as the means to allow Bitcoin to scale to global transaction volumes while still remaining decentralized. Peter also works as an electronics designer for a mining industry startup - that is, the type of mining that involves geologists.

This guy... sounds like he is working on this concept already.
hero member
Activity: 630
Merit: 500
May 17, 2013, 11:24:09 AM
#7
As I explained this is just a very rough idea, hopefully someone will be able to run with it and make it more concrete.

What do you guys think? Is this too wild to implement?

Unfortunately these half-baked ideas are not worth very much. You realize that people have accounts at exchanges which are matched by fiat bank to bank transactions? Why would anyone distribute a matching engine like this? Who is in charge? etc.

That is the point... NO FIAT and NO ONE IN CHARGE just like BTC and altcoin transactions now... a DECENTRALIZED, CRYPTOCOIN ONLY EXCHANGE.

The point is to break the dependency on an external exchange that is profiting from your trades and move it into the P2P networks so that exchange fees are distributed to miners in the form of transaction fees when trades are completed... it adds a whole new layer of mining profits to the current setup which helps bring more miners to the network and broaden adoption... and eliminates the need for someone to RUN the exchange... plus it also eliminates DDOSing problems with current exchanges.
member
Activity: 98
Merit: 10
May 17, 2013, 11:17:23 AM
#6
As I explained this is just a very rough idea, hopefully someone will be able to run with it and make it more concrete.

What do you guys think? Is this too wild to implement?

Unfortunately these half-baked ideas are not worth very much. You realize that people have accounts at exchanges which are matched by fiat bank to bank transactions? Why would anyone distribute a matching engine like this? Who is in charge? etc.
hero member
Activity: 630
Merit: 500
May 17, 2013, 11:00:53 AM
#5
I am thinking a bit more inclusive... like a client that is able to use every coins wallets and blockchains... something like Ufasoft's coin maybe, just expanded to allow user to user intercoin transactions, with transaction fees being sent to the appropriate blockchain to divy out for the miners.

Keeping it inclusive to the client at the source level on the existing P2P would solves the issues of possible hacking of the client and network itself.

Just like the mining tab in QT clients, an exchange tab built on a separate blockchain to store buy and sell order data would be used and traders can see the coins current values against BTC, and functions coded to do non BTC to non BTC transactions in one step.

I wish I had time and a bit more coding experience so I could detail this better...
member
Activity: 117
Merit: 10
May 17, 2013, 09:10:49 AM
#4
I just discovered Ripple (well I am a newbie.. :-) and on the face of it, it kind of looks like something similar to what I am proposing.

But still they introduce a pseudo currency called Ripples, which in my p2p exchange network there would be no need to have. This would make it more transparent I guess.

As for the crypto authors using the same protocols, I'm not sure it will be a big problem. They are all pretty much forks of the original bitcoin project, and they handle RPC calls just about the same way. Now without understanding a whole lot about these RPC methods, I'm thinking that if you want this p2p exchange client to run and be able to trade LTC, YAC, and BTC, then you would need to have all those clients open on your pc at the same time. The exchange client would then execute transactions on the network using RPC calls to these clients.

The problem with this approach is that it lends itself to hacks -- people could write modified exchange clients that would trick the real exchange clients to send their part of the exchange currency, but the peer would not do the same. Somehow security needs to be built into the protocol so that it is simply not possible to receive amount A1 in currency C1 from user U1 without sending a specific payment of A2,C2 to U2. Maybe designed so that you would need the hash of your own transaction to unlock the payment from the peer, but I don't know how to do this. Anonymized escrow users maybe. Somehow... :-) Don't know, just tossing out ideas.

-Michael


hero member
Activity: 630
Merit: 500
May 17, 2013, 08:04:29 AM
#3
If someone really wanted to do this correctly, it would be written as an addon to possibly include in the source for the client instead of a separate platform.

Would it really be that hard to use the current messaging built in the client to accomplish this? Or some additional JSON functions and a new tab in the client to make exchanging live in real time with the blockchain?

That would be the path of least resistance IMHO... uses the established P2P network and it captures 100% of the traders AND it allows the transaction fees collected by the exchanges to be converted to transaction fees that actually go back to the miners... instead of the % charged at the exchange to move some data values.

Seems like a worthy project if someone has the skills to put it together... no reason there should not be an exchange tab built into the client.

EDIT: thinking that through a bit more... that would mean NO FIAT only coin exchanges and the devs of the altcoins would have to all come to an agreement on the platform and include it in their clients. Might be a lot tougher than I first thought but still a worthy project of massive proportions.
sr. member
Activity: 431
Merit: 251
May 17, 2013, 08:00:58 AM
#2
I think it would be possible to do this from one crypto currency to another, but as soon as you involve fiat currencies I think it would be (practically) impossible.
member
Activity: 117
Merit: 10
May 17, 2013, 07:47:25 AM
#1
Hello all,

In relation to this thread I got the idea, that it might be possible to build a purely peer to peer based crypto currency exchange.

I do not have anything concrete as to how it might be implemented, but I imagine that as a user I would be able to start up the client, it would then connect to peer nodes in the network, collect all active bids and asks, and then show them to me in a "depth" style overview.

I would then be able to enter an amount, a bid or ask price and then click "submit". My bid/ask would then be broadcast across the entire network, looking for a matching bid or ask. If a match was found, it would automatically create a payment to the peer user, and the peer user client would be able to claim that payment in the opposite currency only by sending the agreed currency to me as another payment.

As I explained this is just a very rough idea, hopefully someone will be able to run with it and make it more concrete. There are lots of questions to answer, such as which currencies should the network support (ideally any currency for which a client like bitcoin-qt exists), precisely how the actual exchange can happen in a secure way that would prevent one side from taking the other sides money without sending anything in return, what to do with limit orders that are partially filled or cancelled - etc etc. As for exchanges with real, fiat currencies, you could imagine that clients could be built that would use API's on Gox or BTC-e to continuously bid and ask BTC for USD using the latest prices from the p2p network. The reverse is also true, real world exchanges could bid and ask on the p2p exchange similar to what I could do from my own home.

I'm thinking that if we had such an exchange, people could trade their btc to ftc to ppc to min to yac - back and forth however they liked, with no fees, no spread, no delay, no central server to handle a massive load, and no way to cheat the system -- and no simple way to take it down (dwolla).

What do you guys think? Is this too wild to implement?

-Michael
Jump to: