The only way to create a 'peg' is via market forces and thus the 'peg' must fluctuate +/- a couple of percent around the actual market price. Any "fiat" peg to 'fiat' would have to be backed by a central issuer and could be taken out if the right people were hit by busses.
You can create artificial market forces via a central-ish authority that exchanges 1:1. The black market might differ by a few %, but it
should be reasonably stable. Maybe. Until we have an implementation we might not be able to truly tell what will happen.
Like I said in my prior post, I am able to integrate a crypto-currency that tracks the purchasing power of 'fiat' without having any 'trust' except in the backing crypto-currency and automated margin covering rules. I think this is the only approach that is viable, truly decentralized, and not subject to failure due to busses.
I'd like to hear more about this. At the end of the post I ask if you're talking about BitShares.
New Requirement for P2P Exchange: It must not have failure-due-to-random-bus killing someone.
Agreed. Marketcoin simpliciter will not fail due to someone being hit by a bus.
In Marketcoin, after orders are matched:
- Seller of MKC gets hit by a bus: Trade continues as normal as onus is on buyer
- Buyer of MKC gets hit by a bus: If the altcoin payment has not been made then a short while (24hrs maybe) later the trade reverses; if the altcoin payment has been made but the trade is not finalised then the buyer might end up with their MKC returned and the Altcoin payment.
instant trades on an exchange is a terrible idea.
I agree. Markets are more meaningful if people are making 'value plays' based upon outside information. If there is only one exchange, then there is no need to play the differences between two exchanges in 'real time'. Besides, I think it is technically impossible (due to the speed of light) to implement sub-second trades in a P2P manner.
That said, the "best" and in my opinion "fairest" approach is to have all parties broadcast their bids and have them included in a block. The following block can then deterministically make all trades. If you want 'high-speed' trading, then you can broadcast multiple times including a higher-fee each time in an effort to get the miners to include the proper bid in the block. If you want 'highest-possible speed' trading then you must mine the blocks yourself so you can select what *new* bids get into the block, but you cannot do anything about old 'unfilled' bids from prior blocks. If you assume everyone is attempting to prioritize the bids and a large number of miners simply want the fees, then it is clear the difficulty would increase and decentralization of the mining process would occur as there is a new 'profit' motive for mining.
This is precisely how Marketcoin works.
One thing about 'block-chain' style trading is that a fork that lasts even a few hours could undo a large number of trades. In other words, you cannot trade on the 'minority fork' at all as there would be no way to integrate those trades back into the main fork. This means it is critical to detect a minority fork ASAP and stop all trading until it merges back. This also means that the proceeds of all trades cannot be spent (or used in new trades) for say 24 hours.
If you are integrating with other alt-coins like MarketCoin is then it must also handle the potential for forks of the alt-coin. I suppose you could put the onus on individuals doing the trading to take that risk.
This is an issue. I don't think we need to halt the exchange, as it is the onus of users (like when a blockchain fork occurs in Bitcoin) to determine when they will accept the transaction/trade. The advantage of Marketcoin is you can wait to broadcast the finalisation; you can make the payment on the altcoin network and wait an hour or ten before broadcasting the finalisation, this gives ample time to make sure blockchain forks haven't occurred. With some nice code it shouldn't be too difficult to have some sort of basic alert to let users know that trading may be unstable at the current point in time due to blockchain forks (on altcoin or otherwise). An advantage of Marketcoin is the uncertainty only falls on the currencypair affiliated with the forked altcoin, other markets will keep working.
I think the best way to structure the system is to give onus to users and not try and let the network fuddy-duddy around with txs trying to repair damage. Bitcoin doesn't do it, Marketcoin shouldn't either.
Here is one question I have about MarketCoin... does it require users to manually participate in the trades by taking action on the 'alt-coin' network? Or does MarketCoin come 'bundled' with a set of alt-coins that it supports and automatically executes trades on all networks?
I think the best thing is to make the Marketcoin client connect with alt-clients in the style Armory uses, and possibly a little RPC as well. This lets the Marketcoin client be a bit lighter and even supports remote servers while still maintaining some degree of separation from the altcoin client.
Keep in mind Marketcoin is aware of all blocks on the altcoin network and will have access to the most recent ones. [It stores the block headers indefinitely and keeps blocks for 24/36 hours in order to fully validate payments]
I'd like to automate things as much as possible, something like a mode where it prompts you to interface with your Bitcoin client and executes payments as needed but also allows for manual transactions (if you want to separate things a little more or use a light client).
It would seem that no trades could occur while a node was 'off-line' because the private keys on that node are required to complete the trade. Therefore, your 20 minute trade time is only true for 'active users'. This means that either the network needs to 'know' that the user is ONLINE and thus harm privacy and reduce the number of participants *or* some users might get paired with 'hung' trades that are unable to go through until the other user comes back from a 3 week vacation. *or* the transaction times out and the user missed a buying / selling opportunity. This creates an interesting attack vector where people place bids and then never respond and thus make the exchange unusable.
One idea I had was using the same keypairs in Marketcoin as in the altcoins, which cuts down on the information transfered and means Marketcoin can sign txs for the altcoin network and submit them on its own. Knowing all the blocks and having a connection to the altcoin network lets you automate everything.
Part of the Marketcoin protocol is a 'trade-timeout' condition. An amply long period of time should be provided (24hrs say) but not so long that it ties money up for an unacceptable period of time (3 weeks).
20 minutes is a rough figure off the top of my head. We won't be able to tell till the network has a testnet. Ultimately it depends on block times and some other things. Keep in mind that for a transaction on the Bitcoin network to complete it can be instant (if you want to accept zero-confs) or it could an hour or more, depending on your own criteria. Likewise, a Marketcoin trade can occur in 10/15/20 minutes but if the buyer wishes to delay it (for added security against chain forks and the like) they can submit payment on the altcoin network and finalise on the Marketcoin network much later. They could even broadcast the finalisation with a minimum block number and it will be only included after that point.
All the measurements of ~24hrs and things I keep saying is an approximation, really it would be 144 blocks or whatever is expected for 24hrs.
I think a requirement of a P2P exchange is to allow 'off-line' and ATOMIC trades between currencies.
This last requirement is perhaps the hardest of all to satisfy, and yet is something that my approach does solve.
Marketcoin facilitates offline or cold trades (similar to offline / cold transactions on Bitcoin). But, like Bitcoin, you'd have to move the data yourself.
I presume 'atomic' means trading 1 satoshi and the like. Marketcoin allows this but it may be restricted to minimize dust trades (similar to what Bitcoin-QT does with transactions now).
When you talk about your approach do you mean
BitShares?