Technical Architecture
Kylin’s vision is to solve the Web3 Data Gap is a configurable data framework that allows for
Democratically creating and managing oracle system entities
Service level agreement (SLA) between the providers and consumers of data
Multi-level oracle data agglomeration allowing to balance security, authenticity, persistency, and speed
Democratization of the data management process
Transparency and traceability of data provenance
Free data market
A voting system allows for assessing and strengthening the validity of a vote.
Solutions
To actualize the envisioned future of bridging the Web3 chasm, the Kylin network is building a number of components that make up the DeData infrastructure. This includes
The Kylin Oracle Pallet & API
Dynamically & Statically Sized Oracles
Democracy Pallet
An Enhanced Voting System
Dynamic NFTs & DeData Marketplace.
The Kylin Oracle Pallet & API
The Kylin Oracle nodes are collators to the PCHU parachain, which is validated by the relay chain to the Polkadot network. Our API allows us to save to a Postgres database the results of calls to built-in or custom endpoints.
The aim of Kylin Network is to create a configurable Oracle to give users a sense of assurance and responsibility to the consumer about selected choices. The creators of a data feed of the oracle can specify what their oracles are and which algorithms they are using so the consumers of this feed can freely choose if they want to consume the data with the full knowledge of their choice. Systemizing knowledge and dividing oracles into modules can enhance security and manage user expectancies.
Oracle System Manifest
Given that the Kylin Network will be a Multi-level Oracle Data agglomeration, a procedure is required to keep track of ownership, source of data, and other pertinent information. Keeping track of who owns the data, where the data comes from, when it was collected, and which algorithm was used to treat it can be recorded in this manifest that can be published with each block. This implies that the data sources are known before the feed is published in the primary oracle.
Service level agreement (SLA) This contract is necessary to ensure that a data consumer gets what was ordered. A service-level agreement (SLA) is a contract between a service provider and its customers that documents what services the provider will furnish and defines the service standards the provider is obligated to meet. More specifically, in the context of the Kylin configurable oracle system, it is an agreement that the user accepts the configuration the provider selected when creating the data feed. This agreement can be renewed with each block and can take the form of a Ricardian contract or JSON object. The user can opt-out of this contract by subscribing to a different feed. A Ricardian contract is a digital contract that functions as a legally binding agreement between two parties based on agreed-upon terms and conditions. The contract is cryptographically signed and verified using the blockchain but is readable by both people and machines.
Adherence to standards
Although this effort is in the early stages, efforts from a community of oracle builders have been made to promote best practices, collaboration, and interoperability by putting forward standards through EIP-2362. https://github.com/adoracles/EIPs/blob/851003d89e255492aa6c3cabb3dc8520f2e71d45/EIPS/eip-2362.md
Best practices will be found here:
https://github.com/adoracles/OracleBestPractices
And will consist of:
Failure cases
API/Data specs
Dispute considerations
Admin Control
Aggregator architecture
Repository of know oracle hacks
Liveness
Usage
Audits
Aggregation and validation of oracle results
Input Data types As mentioned in section 3.1, the system should provide for data types other than numerical. The basic needs for running the iteration of this paper are:
- Numerical
The input/output type specified in EIP-2362 is int256 • Small string Initially 256 Bytes • Light bytecode Initially 256 Bytes Data is kept small in size for the chain buffer for storage and computation considerations. Limitations may be disregarded for the buffers residing on the OCW. The data must conform to the format specified in the SLA.
Output Data types EIP-2362 contains specifications for returning numerical values as: 1 returns ( int256 value , uint256 timestamp , uint256 statusCode );
Since the substrate is coded in rust, this function will now be in the case of a string: 1 fn returns ( value : String , timestamp : u32 , statusCode : u32 ){}
In the case of an integer value: 1 fn returns ( value : u32 , timestamp : u32 , statusCode : u32 ){}
In the case of bytecode: 1 use bytes ::{ BytesMut , BufMut }; 2 fn returns ( value : bytes , timestamp : u32 , statusCode : u32 ){}
Last updated