zack-bitcoin/amoveo

soft update to enable betting on oracles that do not yet exist.

Closed this issue · 2 comments

Currently you need to make an oracle before you can bet on it, that way you know the OID.
If we deterministicly generate the OID based on the question being asked and when trading will begin, then it should be possible for us to reference oracles that have not been created.
That means, as long as the participants agree on the outcome of the contract, they never have to create an oracle in the first place.
This could make the default workflow of making new bets a lot smoother.
it is cheaper and more scalable and faster
If I can post a p2p derivative trade on anything I want, without having to have paid for an oracle first, then I am a lot more willing to try out posting more trades.
I think this is a serious improvement in regard to using Amoveo for the long-tail of opportunities.
currently we are free to set the oid to any unused key, so this is a one-line update. and it is soft, not hard.
We just block any oracles where the oid wasn't created according to the new rule.

I ran into an issue with implementing this.
Currently, scalar oracles use 10 oracle IDs that are adjacent, so if you know the first one's ID, then you can calculate the rest.
If we instead calculate the oracle's id from it's contents, then all 10 will have totally random hashes, and cannot be adjacent.

We should take the time to make everything compatible with the new format before we start enforcing it at the blockchain consensus level
Even the smart contract needs to change, since we will store 10 different oracle ids instead of just 1.