#cluster #provider #bucket #ddc #smart-contracts #user #node

nightly no-std ddc_bucket

DDC v2 智能合约 — 协调集群和桶周围的网络

2 个版本

0.5.1 2022 年 8 月 4 日
0.5.0 2022 年 8 月 4 日

#13#ddc

Apache-2.0

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