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] Design, Discussion and Implementation #1272

belane opened this issue Nov 25, 2019 · 0 comments

[Oracles] Design, Discussion and Implementation #1272

belane opened this issue Nov 25, 2019 · 0 comments


Copy link

@belane belane commented Nov 25, 2019

This issue describes the design of the oracles that has been discussed, their possible implementations, reference to the pending discussions and the division and assignment of the different tasks for their implementation.
The different tasks and sub-discussions will be moved to new issues for a better organization.

1. Design Goals

  1. Decentralize Oracle to avoid third-party trust issues.
  2. Synchronous Process. Only one transaction and one block confirmation needed, optimizing times, network traffic and chain storage space used.
  3. Ease of use. Makes developer’s work easier, only add a new system call SYSCALL (string data=Download(URL, FILTER); TBD
  4. Minimize the modification of existing code without affecting existing consensus logic.
  5. Prevent known attacks.

2. Intro

Oracle’s transactions will be treated in the same way with minor differences.
In order to move an unverified pool transaction to the verified one, this transaction will need to have some minimum number of authorized Oracles signatures. These signatures will determine results validity obtained from the oracles and will define the final oracles agreement on the state. Thus, even Oracle transactions with negative results agreed upon will enter into the block and will be charged a fee (returning Fault on its execution)
When the consensus (Primary) moves this transaction from the verified pool to the block, it removes all oracle’s signatures and will sign the oracle’s result with its own signature. This point is not absolutely necessary, but it helps to save space in the chain.
(Consensus proccess TBD)

3. Oracles Consensus/Agreement


4. Oracle Transactions


5. Syscall and ApplicationEngine


6. Memory pool and Transaction Broadcast Model


7. Oracle Policy


8. Node Election


9. Economic Model


@belane belane added the discussion label Nov 25, 2019
@shargon shargon added this to the NEO 3.0 milestone Nov 25, 2019
@lock9 lock9 added the oracles label Nov 25, 2019
@lock9 lock9 pinned this issue Nov 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
3 participants
You can’t perform that action at this time.