2 个版本
0.5.1 | 2022 年 8 月 4 日 |
---|---|
0.5.0 | 2022 年 8 月 4 日 |
#13 在 #ddc
135KB
2.5K SLoC
DDC 概念
问题陈述
- 在服务提供者和用户之间组织服务。
- 让用户使用更方便。
- 让应用开发者有更多灵活性。
- 支持访问控制和加密。
- 支持复制、恢复和扩展。
- 支持多种类型的服务。
- 验证服务质量。
- 管理支付和存款的保管流程。
- 可通过 Web 应用访问。
功能在 DDC 核心和多个 DDC 引擎之间是分开的。
DDC 核心
DDC 核心负责以下任务。
- 发现可用服务以及决定订阅哪些服务的详细信息。例如,引擎名称和版本,一些提供者的身份或信誉。
- 发现如何连接到节点(URL 等)以获取服务。
- 发现用户订阅的服务状态,包括自己的。
- 确定有权使用订阅服务的所有者或相关方。
- 宣传提供的服务。
- 发现服务的价格。
- 定期支付服务费用。
- 计算应缴纳的费用并验证支付。
这通过智能合约、接口和数据格式实现。
DDC 引擎
DDC 引擎做以下工作
- 将运行引擎的节点的详细信息注册到核心中。
- 存储数据。
- 响应查询。
- 根据订阅者的指定在引擎中授权操作。
- 验证是否已收到足够的支付或预期将收到支付。
- 与其他节点协作以分区和复制服务。
- 提供服务质量验证的方法。
- 同意验证过程及其最终后果。
DDC 核心 smart contract
集群
集群是一组节点和一组用户之间的主要协调点。
集群治理。
围绕集群组织服务需要做出几个决定
- 哪些提供者和哪些节点被半信任提供正确服务。
- 是否应从集群中移除节点,以及哪些新节点应承担其服务责任。
- 提供者实际上是否确实提供了正确服务并且有权利获得报酬。
- 提供者是否表现不当,应受惩罚或被排除。
- 如有必要,更新集群元数据。
- 更改集群的治理方案。
集群可能由受信任的第三方使用外部账户管理,或由智能合约管理。作为管理者的智能合约可以通过多签名的几个账户达成共识、DAO或声誉系统的社区共识、基于零知识密码学的存储证明等加密经济学方式,或通过连接到区块链本身的指定证明质押机制来做出集群相关的决策。
各方之间的交互
- 提供商注册节点。node_create
- 提供商向管理者表示信任。node_trust_manager
- 管理者创建集群并从节点中预留一些容量。cluster_create cluster_reserve_resource
- 所有者在一个集群中创建一个桶。bucket_create
- 所有者存入一些资金。account_deposit
- 所有者或管理者报告桶的资源使用情况。bucket_alloc_into_cluster
- 管理者从所有者那里收取资金到集群池。bucket_settle_payment
- 管理者将资金分配给提供商。cluster_distribute_revenues
提供商和集群
sequenceDiagram
actor Provider
participant Contract
actor Manager
Provider ->> Contract: trusts a manager
Provider ->> Contract: registers his nodes
Manager ->> Contract: discovers and selects nodes
Manager ->> Contract: creates a cluster
loop
Manager ->> Contract: maintains the cluster
Contract ->> Provider: distributes payments
end
桶和集群
sequenceDiagram
actor App
App ->> Contract: discovers and selects a cluster
App ->> Contract: creates a bucket
loop
App ->> Contract: deposits funds
end
节点和应用程序
sequenceDiagram
actor App
App ->> Node: requests a service within a bucket
Node ->> Contract: checks the status of the bucket
Node ->> App: serves the request
合约组件之间的交互
graph LR
Bucket[[Bucket]]
Account[Account]
Cluster((Cluster))
Node[(Node)]
Bucket -- is owned by --> Account
Bucket -- uses resources --> Cluster
Cluster -- reserves resources --> Node
Cluster -- takes payments from --> Account
Node -- is owned by --> Account
Cluster -- distributes payments to --> Account
一个示例网络
graph BT;
Cluster_1((Cluster 1))
Cluster_1 -. is managed by ..-> Manager_1
Cluster_1 -- vNode_0 --> Node_1
Cluster_1 -- vNode_1 --> Node_2
Cluster_1 -- vNode_2 --> Node_1
Cluster_1 -- vNode_3 --> Node_2
Node_1[(Node 1)]
Node_1 -. is owned by .-> Provider_1
Node_2[(Node 2)]
Node_2 -. is owned by .-> Provider_2
Bucket_1[[Bucket 1]]
Bucket_1 -. is owned by ...-> User_1
Bucket_1 -- is allocated into --> Cluster_1
依赖关系
~5–18MB
~222K SLoC