Neo: [Oracles] Consensus/Agreement

Created on 25 Nov 2019  ·  12Comments  ·  Source: neo-project/neo

Open discussion. Two possible methods are currently being researched and evaluated, but any new proposal is welcome.

1. Approval Threshold

It defines how many Oracle nodes should sign at least to proceed moving the transaction to the verified pool.

  • Example A: At least 10 signatures to move to the verified pool. 50% of oracles agree and no more than a 10% against, moving with positive result.
  • Example B: At least 5 signatures to move to the verified pool. Twice of oracle nodes agree than those against, and no more than 10 signatures against, moving with positive result ever.

Some cases might be contemplated to define the threshold:

  • Same approval threshold formula is used in all the network.
  • Each Smart Contract defines threshold during deploy.

_Final formula TBD._

2. Second dBFT consensus between Oracle nodes to determine the validity of each Oracle transaction.

...

discussion oracles

Most helpful comment

Perhaps, no need for official oracles, @belane.

What could we get from "official"? What is really official? There are open questions regarding who will play this role.
Perhaps a true descentralization is to not have official and just the basic protocol.
By empowering oracles service providers we may guide to a good path where oracles fees match the service that is really being used.

All 12 comments

The Oracle nodes are different from the consensus nodes?

The Oracle nodes are different from the consensus nodes?

Yes

Yes, the software (neo-cli) is the same, but the role is different. Like the current consensus nodes.

Why they are different? How can I become an oracle node? What is the incentive to become an oracle node?

The Oracle nodes are different from the consensus nodes?
Why they are different? How can I become an oracle node? What is the incentive to become an oracle node?

  1. This looks like to be a good option, @erikzhang. To keep them the same. It is almost the most "naive" possibility and the one that may be easier for the incentives (which we need to revise for NEO3, as we are currently discussing, such as compulsory staking for voting and for GAS claims, as well as removing 1000GAS to be candidate and change it to stake).

  2. However, I think that the CN could elect more than 1 oracle, which would make the scalability better. On the other hand, the incentives for the oracles becomes lower and only focused on the oracle fees.

  3. As @belane commented, oracles could also be voted. However, I believe it is too complex and the incentives model becomes even more difficult.

In fact, I think that @erikzhang comment is the correct direction to go, 1. is the naive solution.
If people want to be oracle nodes they can settle another parallel service and win the fees of those that want to use their service.

For example, if someone wants to be an oracle and it is not a consensus node it can create a system, let's say https://www.freeoracles.io/ and register that on the available oracle system (on our native policy). Everyone interested in using this service will pay the oracle fees to them.

Editted:
After hearing @vang1ong7ang I believe that maybe we do not need any default oracles.

@erikzhang Why do they have to be different? Well, there really is no technical need to do it, but I think it is good for the resilience of the network to have distributed roles, it is something we can talk about the pros and cons.

We can discuss the choice and rewards in their threads, but as a summary, I think that if we have to design/solve the election of consensus nodes, why not use the same system to choose oracle nodes?

@vncoelho maybe the idea of ​​having official oracles and open oracles is a great idea to distribute the load, official oracles can have a higher price than open ones.

Perhaps, no need for official oracles, @belane.

What could we get from "official"? What is really official? There are open questions regarding who will play this role.
Perhaps a true descentralization is to not have official and just the basic protocol.
By empowering oracles service providers we may guide to a good path where oracles fees match the service that is really being used.

Hi, just a community guy here, a few questions:

1) What are incentives to becoming an oracle node? (Are there Oracle fees?)
2) Is it permissionless — can anyone sign up to become one (or will there be voting by community to elect these?)
3) If there is voting, what makes us believe people will vote. Are there any incentives for neo holders who vote? (Not everyone is altruistic, doing it for ‘good will’ so to speak)
4) will there be a way to “punish” bad actors?

Thanks for question
1.Yes,there is an Oracle fee.And it will be shared equally among all Oracle nodes
2.Oracle nodes will be strongly bound to Neo's consensus nodes

  1. Because it is strongly bound to the consensus node, no additional voting is required to select the Oracle node
  2. No punitive measures, because there is almost no good way to evaluate whether to do evil

Indeed, Oracle election is indeed a more important issue.In the mechanism of Oracle, four parties will be involved:Users, public chain, Oracle nodes, data sources.
Users<------>public chain<----->Oracle nodes<----->data sources

Among them, the public chain, Oracle nodes, and data sources are not safe. If we represent their honesty with P1, P2, and P3 (0

The overall reliability of the system = P1xP2xP3, then it is actually not so reliable.
If we can combine several intermediate links, such as merging the public chain and Oracle nodes, the overall system reliability may be greatly improved.So we designed the embedded Oracle. We strongly bind the Oracle node to Neo's consensus node, which is an interesting attempt.
Of course, traditional Oracle projects, such as ChainLink, are using open market.It is
also a good way. We will also gradually consider using in the future.

But what we want now is a simple Oracle that can meet most needs
@JustinR1

@doubiliu ,
Thank you for your detailed response. I was curious, when you say that Oracle nodes will be strongly bound to Neo's consensus nodes what does this mean? Does this mean CN's will be the ones running Oracle nodes? Does this also mean that all CN's are _required_ to run them?

If there is no way to determine if an oracle node has malicious intent/motive (even if bound to a CN node), why should we trust them? Is it because existing CN's are running them so it's trust based on that? I guess I just need more clarification on this aspect. I don't 100% understand how the consensus comes into play with oracle nodes, especially if these oracle nodes are run by the same consensus nodes.

Regards,
Justin

Oracle nodes will be strongly bound to Neo's consensus nodes means each consensus node will operate an Oracle node independently.So it also can be understood that each consensus node is an Oracle node.Of course, the consensus node can also authorize a third party to operate, but it must be responsible for it.
The trust is indeed based on the consensus node. As described above, the consensus node and the Oracle node are integrated. If the Byzantine problem of the DBFT is fully met, then the Oracle data can be considered reliable.Of course, there is also the problem of freeload, but it has little effect on the reliability of the overall data.
@JustinR1

The mechanism can refer to:
https://github.com/neo-project/neo/issues/1276

Was this page helpful?
0 / 5 - 0 ratings

Related issues

realloc picture realloc  ·  4Comments

shargon picture shargon  ·  3Comments

doubiliu picture doubiliu  ·  3Comments

canesin picture canesin  ·  3Comments

borovik96 picture borovik96  ·  4Comments