(bytemaster, did you ever solve this "oracle" trust issue? -- point me to your latest spec)
It's in my signature.
Yes, I have solved the price discovery issue which in an 'all voluntary market' is only critical for one thing, margin calls, which by their nature are not voluntary and yet hinge on accurate price discovery that can not be manipulated to artificially trigger calls.
I never had an oracle, but am very aware of the need for honest price information and this is the single biggest area where people in this field need a deep understanding that goes far beyond surface level economics. So let me attempt to address some of the critical insights that I have developed over the past several months working on BitShares full time.
0) There is no such thing as a unit of value
1) Prices cannot be added, subtracted, multiplied, or divided
2) Value can only be compared relative to a single individual. You can only sort your values, but not put a number on them.
3) You cannot perform value comparisons between people except to the following:
- If we agree to trade, then I value what I receive more than what I gave up and you value what you receive more than what you gave up.
- If we do not agree to trade, then I value what I have more that what you have
4) As a result of 0-3, it follows that prices cannot be calculated at any time because prices are the result of value judgements and there is no means of performing mathematical operations on 'value'. Prices do not define value, values cause prices.
5) Prices are always historical data points, even microseconds after the trade.
6) A single trade-price can be arbitrarily manipulated in any market by placing a bid for $1M and an ask for $0.001 and matching against yourself at any arbitrary price point you so desire because you have the highest bids and lowest asks.
7) You cannot solve #6 using averaging, median, statistical sampling, etc without violating rule #4.
So given these rules how can I determine when to perform a margin call in a manner that cannot be manipulated? The answer lies in one last corollary to rule #3. The price at which trades DO NOT OCCUR(bid/ask spread) define the consensus of the ENTIRE market. Half of the market thinks the item is worth less than the bid, the other half thinks it is worth more than the ask. Until someone crosses the bridge and jumps from one side of the market to the other, you have a valid range that cannot be manipulated. Anyone who posts a bid that is too high is immediately matched. Anyone asking to little is immediately matched. The price at which these matches occur is not relevant, the only thing that matters is the price at which trades do not occur.
So, the BitShares blockchain will perform all matches that it can and when it has done so it will be left with a buy/sell spread. If the bid is above the margin call price, then the margin is called and the collateral is forced to accept the current ask... causing a short squeeze!
So the question that remains is whether or not it is possible to manipulate the price at which trades do not occur? The only attack vector available is to strategically choose which bids/asks you are mining but your attack window is very small, non-deterministic (you must find the block), and your potential to move the price in a reasonably deep market is less than makes a meaningful difference between whether your margin was called at 150% or 151% because the goal is for all actors to stay far enough above the margin call threshold that the exact price/time it is called is irrelevant. In effect, the most you could do is deny 5 minutes worth of bids or 5 minutes worth of asks.
It is because of this deep understanding of prices and economic rules that I knew MasterCoin was not viable and will not be viable. Attempt to explain how violating them, even in subtle ways, ultimately leads to destruction is a challenge. But these discussions are good practice and I get stronger with every post.
Hope this helps everyone!