Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Oracles] Consensus/Agreement #1273

Closed
belane opened this issue Nov 25, 2019 · 12 comments
Closed

[Oracles] Consensus/Agreement #1273

belane opened this issue Nov 25, 2019 · 12 comments
Labels
discussion Initial issue state - proposed but not yet accepted oracles Oracle related issues

Comments

@belane
Copy link
Member

belane commented Nov 25, 2019

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.

...

@belane belane added the discussion Initial issue state - proposed but not yet accepted label Nov 25, 2019
@belane belane added this to the NEO 3.0 milestone Nov 25, 2019
@erikzhang
Copy link
Member

The Oracle nodes are different from the consensus nodes?

@shargon
Copy link
Member

shargon commented Nov 25, 2019

The Oracle nodes are different from the consensus nodes?

Yes

@belane
Copy link
Member Author

belane commented Nov 25, 2019

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

@erikzhang
Copy link
Member

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

@vncoelho
Copy link
Member

vncoelho commented Nov 25, 2019

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.

@lock9 lock9 added the oracles Oracle related issues label Nov 25, 2019
@belane
Copy link
Member Author

belane commented Nov 26, 2019

@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.

@vncoelho
Copy link
Member

vncoelho commented Nov 26, 2019

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.

@JustinR1
Copy link

JustinR1 commented Feb 9, 2020

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?

@doubiliu
Copy link
Contributor

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
3. Because it is strongly bound to the consensus node, no additional voting is required to select the Oracle node
4. 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 <P <1), perhaps we can get a formula that is not so strict:
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

@JustinR1
Copy link

JustinR1 commented Feb 10, 2020

@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

@doubiliu
Copy link
Contributor

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

@doubiliu
Copy link
Contributor

The mechanism can refer to:
#1276

@shargon shargon mentioned this issue Apr 18, 2020
@erikzhang erikzhang removed this from the NEO 3.0 milestone Sep 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Initial issue state - proposed but not yet accepted oracles Oracle related issues
Projects
None yet
Development

No branches or pull requests

7 participants