Dione - decentralized oracle network for cross-chain interoperability
Go to file
2020-11-13 17:04:10 +03:00
assets/img fix: typo fixes and dione image upload 2020-10-20 21:58:24 +03:00
beacon Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
cmd/dione Change logger library to logrus 2020-10-22 00:36:05 +04:00
config Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
consensus add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
contracts add: integrate DioneStaking contract into ethereum client and node store 2020-10-30 08:23:08 +03:00
docs add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
drand add: leader election proofs, beacon chain randomness, miner wallet and base miner structure 2020-10-28 18:35:56 +01:00
eth-contracts add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
ethclient Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
lib add: leader election proofs, beacon chain randomness, miner wallet and base miner structure 2020-10-28 18:35:56 +01:00
models add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
node Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
pb add: leader election proofs, beacon chain randomness, miner wallet and base miner structure 2020-10-28 18:35:56 +01:00
rpc add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
sigs Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
solana add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
store Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
types Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
wallet Add Type field to DioneTask, rename rpcclient to ethclient, rewrite whole signing system in Dione, add some comments to consensus process (w/ mining system) 2020-11-12 18:18:30 +04:00
.gitignore add: dione token, dione staking contract, timelock contract, fix wallet and consensus leader 2020-10-30 06:41:19 +03:00
Dockerfile fix: changed Makefile build execution and Docker container 2020-10-22 00:30:08 +03:00
go.mod add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
go.sum add: solana rpc, solana program subscription, miner beacon entries usage, fixed DioneStaking smart contract 2020-11-13 17:04:10 +03:00
LICENCE.md add: MIT licence 2020-08-03 22:03:34 +02:00
Makefile fix: changed Makefile build execution and Docker container 2020-10-22 00:30:08 +03:00
README.md docs: task, PoS, task documentation and task structure changes 2020-10-31 07:38:51 +03:00

dione

Secured Finance - A protocol for financial transactions backed by crypto-assets.

badge

Table of Contents

Introduction

Dione oracle network is solving the interoperability problem between multiple blockchain networks. Blockchains themself could be describled as deterministic state machine replicated on full-nodes that retains consensus safety. And having the network that handles state changes validation across multiple protocols is crucial for Secured Finance first-layer transactions execution. Using Dione network Secured Finance could provide completely decentralized service for it's users.

Simple explanation for Dione is a distributed network that tracks the state of another blockchains by computing cross-chain tasks. Dione network itself has fast-finality because of the pBFT (Practical Byzantine Fault Tolerance) consensus and has a role to establish finality for the blockchain it connects (Ethereum, Bitcoin networks has probabilistic-finality).

The networking layer of Dione node is based on libp2p, a flexible cross-platform network framework for peer-to-peer applications. Projects like ETH2 (Ethereum 2.0), Filecoin and Polkadot's Substrate is based on libp2p making it's the standard for future decentralized infrastructures.

Specifications

State validation

In order to validate the state from another blockchain in the Ethereum smart contract Dione users has to import OracleEmitter.sol in smart contract that has to access external data.

Connectors

Most of connections established via RPC requestresponse protocol meaning that Dione network has to meet all interface requirements and be customized for the particular chain it's connects to.

External adapters

Most of off-chain data use cases require external adapters and APIs for simple integration of custom data sources. However Dione network aiming to solve cross-chain interoperability external adapters would be implemented in the second phase using REST-based communication.

Consensus

Dione network uses PBFT a practical Byzantine fault-tolerant consensus protocol invented by Miguel Castro and Barbara Liskov at MIT. At a high level, it operates by running a leader election in every block in which, on expectation, a set number of participants may be eligible to submit a block.

The randomness used in the proofs is generated from DRAND, an unbiasable randomness generator, through a beacon.

In order to identify which block has to be selected between multiple blocks proposed by multiple leaders other network operators has to vote up to 2/3 of total amount of nodes running in the network. This enforces Dione network as fast-finality chain.

DIONE token

DIONE token is a ERC20 token on Ethereum blockchain used as a staking token to run the Dione node and for decentralized governance.

Staking mechanism would encourage node operators to behave correctly as well as malicious nodes would lose their stakes. In order to run Dione node the operator has to stake at least 10,000 DIONE tokens.

Initial supply of DIONE tokens is 2,000,000. By that the maximum amount of nodes participating in Dione is limited to 200 at the initial start of Dione network. 30% of DIONE tokens would be allocated to Secured Finance team. On every block Dione miners would get 50 DIONE tokens as the mining reward.

Governance mechanism would take place on snapshot.page. The main application of governance descision is around required amount of DIONE tokens to stake in order to run Dione node. Additional governance descision could be proposed by DIONE token holders among the way.

Contribute

Dione core contributors:

Denis Davydov

Bach Adylbekov

We welcome every contributions big and small! Take a look at the community contributing notes. Please make sure to check the issues. Search the closed ones before reporting things, and help us with the open ones.

License

This project is licensed under the MIT license, Copyright (c) 2020 Secured Finance. For more information see LICENSE.md.