# ZK-Oracle的解决方案

## 1 方案概述

Polkadot主网上线且满足本项目的技术功能需求前，Zk-Oracle的前期方案是先基于隐私公链SERO创建可扩展的Layer2组件层，用于数据管理、隐私保护以及解决Dapps中的数据可用性和可靠性问题。Polkadot主网上线并功能完善后，ZK-Oracle将在继承原有匿名安全性的同时，直接迁移至跨链的Substrate底层架构以实现跨链功能。 ZK-Oracle将通过社区优化和加入经济激励和惩罚机制的方式来获得可信数据来源，为Polkadot、SERO以及其他公链未来的跨链业务生态提供一个可以自行操作和自组织的数据来源组件，以达成可以被信任和可靠的目的。数据来源可以是多种渠道读取的，也可以使用平均值，中位值和加入权重的多数值进行聚合，为加密货币对加密货币和加密货币对法币等交易市场提供可靠的价格数值。

ZK-Oracle并不定义数据应该怎么处理，而是让社区集体决定数据将如何处理或是被优化，通过整合最佳的被激励的参与者，提供一个可靠的数据来源。

### 1.1 角色定义

![系统运行模型](/files/-MJWDtVQPHCznEcJ45yG)

ZK-Oracle生态系统中的参与者定义如下：

* **网络数据需求商（Application Data Requester）**：通过质押ZKT来发起数据需求的合约或者账户成为网络数据需求方，简称ADR；
* **网络数据供应方（Application Data Provider**）:向ZK-Oracle合约提供数据的参与者，简称ADP。全网的ADP可以按照是否被ADR指定分为专用数据供应商（SADP）与通用数据供应商（GADP）。

### 1.2 运作机制

ZK-Oracle运作机制如下：

1.每一个网络数据需求方（ADR）通过预存系统代币ZKT来发起数据需求，并可以定义数据供应结构、供应的时间周期和频率；

2.数据供应方式全部采用类似于集合竞价方式，在一个指定的周期内完成的数据提供都会视为有效；

3．网络中的数据供应商（ADP）分为通用数据供应商（GADP）和专用数据供应商（SADP），前者通过全网竞拍产生，竞拍需要付出一定量的ZKT代币，Zk-Oracle会根据网络实际情况定期发起不定期的ADP竞拍计划。

4.参与竞拍的ZKT将会进行按比例销毁，其他部分作为质押，未竞拍成功的ZKT则会退回；

5.专用数据供应商则由对应的数据需求方指定，前期挖矿阶段指定数据供应商（ADP）无需预存和支付系统代币，预言机节点收益由系统挖矿部分进行补贴，挖矿部分全部挖出后，每指定一个数据供应商（ADP）需要由ADR支付约定数量的ZKT，系统进行按比例销毁后返给ADP预言机节点作为服务费用；

6.Zk-Oracle根据一定周期内全网数据供应量选择通用数据供应商，GADP每次提供数据都会基于自己在全网（仅限GADP）占比，分得挖矿收入，直至获得数量为当时参与竞拍数量6.18倍的ZKT代币，则失去ADP身份，需要参与新的竞拍来获得ADP身份。

7.除此之外，GADP还可以获得数据需求方为了激励数据供应商提供数据从合约中预留的奖励部分。

8.数据需求方可以提供符合某个规则的校验机制，并通过零知识证明加密，当数据供应商提供数据无法符合规则范围则视为无效，将会扣除其未来获得收益上限的额度。

9.声誉系统。影响节点声誉的因素包含节点提供数据的频率，完成率，响应时间及质量等，抵押代币越多的节点，表达对自身服务及数据的肯定，声誉会越高，获得数据需求方指派的机会也越高，收益相对就会提升。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zkoracleofficial.gitbook.io/zk-oracle/zkoracle-de-jie-jue-fang-an.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
