Skip to content

Latest commit

 

History

History
182 lines (111 loc) · 12.8 KB

README_zh.md

File metadata and controls

182 lines (111 loc) · 12.8 KB

项目名称:基于 Web3 的 QoS 感知的视频转码系统

项目概览

去中心化媒体转码服务的目标是利用全球广布的闲置计算资源,为客户构建一个高效、性价比高且以服务质量为核心的视频转码网络。通过提供完全可以追溯和透明的服务记录及评估机制,本项目确立了服务网络的自治性。我们致力于为拥有闲置计算资源的提供者创造收益的同时,为客户带来高质量、更经济的转码服务。

项目概览
图1:项目概览

主要特点

  • 可追溯性:我们确保每一项转码服务的结果和质量都有详尽的记录。这种做法不仅增强了信任感,还方便了对服务提供商的质量监控,同时提升了系统的安全性,能有效识别并防范恶意行为或攻击。

  • 透明性:我们的服务质量评估方法和任务调度过程都是公开透明的,确保了节点间的公平竞争,并鼓励服务提供商提升其服务水平。通过透明性原则,我们能够有效地筛选出表现不佳的节点,从而最大程度上提升服务质量。

  • 自治性:在我们的服务网络中,每个节点都根据已设定的标准自主提供服务。依据可追溯的记录来评估节点的服务质量,并通过共识机制来确认,此举旨在避免因中心化带来的单点故障,并减少因单一节点出于自利行为可能引发的不公正任务调度。

版本更新

本项目遵循语义化版本控制规则。每次版本更新都反映了项目的持续完善和功能增强。以下是项目自启动以来的版本迭代历史。

v0.2.0 - 2024.5

本次更新主要亮点:

  • 性能优化:我们对 poco-contract 进行了升级,技术平台从以太坊迁移到了 NEAR 平台。NEAR 平台的分片技术和高吞吐率提高了系统处理复杂媒体转码任务的能力。NEAR 平台的特色不仅体现在其高效的交易处理上,更在于其能显著降低大规模处理媒体转码任务的成本,确保我们的服务运作更加高效与经济。

  • 引入 QoS 评估:本版本中正式引入了 poco-service 模块,这一模块不仅定义了媒体转码领域特定的服务质量标准,同时也包括了服务提供商执行的链下媒体转码逻辑及其所需的领域特定算法逻辑。通过对服务质量细化的评估,确保每一次媒体转码服务质量都能被客观,准确评估。

自评估QoS示意图
图2:自评估QoS示意图

  • 引入 Committee 对 QoS 共识:为了进一步增强服务质量评估的公信力和透明度,本次更新引入了 poco-committee 模块实现创新的委员会(Committee)机制,促成了服务质量(QoS)的集体共识决策。这种基于多方验证的共识策略可以提升评估结果的客观性与公正性,有效遏制潜在的不诚信行为,加固平台整体的信誉。

v0.1.0 - 2023.6

更新亮点:

  • 实现基于以太坊的 web 端视频转码原型:我们开发了一个基于以太坊的 web 端视频转码原型,它集成了专门设计的底层工具类,包括但不限于高效的网络传输工具类以及先进的网络端视频编解码库。通过应用区块链技术的应用,我们确保了处理过程的透明性与可追溯性,为用户提供了一个安全、可靠的视频处理平台。

  • 基于视频组抽取的视频质量评估算法优化:作为领域特定服务质量的关键指标,视频质量评估在整个服务链中十分重要。面对现有视频质量评估算法带来的高算力开销和长时间消耗问题,我们基于视频组(GOP, Group of Pictures)抽取的方法,在不牺牲评估准确性的前提下,有效减少了对算力的依赖,缩短了评估所需时间。优化后的算法能够在保证评估准确性的同时,将评估时间和执行指令条数缩短到原先的一半以下。

关键进展

在过去一年,结合我们预先制定的目标和实际遇到的问题,我们取得了以下关键进展:

  • 成功将智能合约从以太坊迁移至 NEAR。

    • NEAR 提供了低成本和高效的服务,这与我们利用去中心化方案满足实际转码服务需求方案的使命紧密相符。NEAR 独特的分片技术显著提高了吞吐量,确保我们在扩展服务的同时,不会牺牲速度或可靠性。此外,NEAR 还提供了用户友好的体验,具有简洁的账户模型和低交易费用——这对于最大化吸引节点提供者和服务消费者的参与至关重要。
    • 它的实现在 lib/packages/poco-contract-v2 中
  • 开发并实现转码领域特定 QoS 的评估框架。

    • 我们为非实时场景下的转码服务定制了领域特定的服务质量标准。具体而言,我们从两个维度评估服务提供商的媒体转码质量:一是对比转码后视频与源视频在视觉上的质量差异,以体现人眼可感知的视频质量变化;二是通过计算服务提供商在单位时间内转码的帧数,以此来衡量其服务的处理速度。这两个指标共同构成了我们评估媒体转码服务质量的标准。
    • 它的实现在 lib/packages/poco-service 中
  • 开发并实现一个区块链原型作为委员会实现对服务提供商服务质量的共识。

    • 我们开发并实现了一个区块链原型,用以通过委员会机制,在特定服务场景中实现针对服务提供商服务质量的共识。鉴于此场景下闲置计算资源的非固定性,大量不稳定节点所进行的共识可能会耗费宝贵的计算力并浪费时间,这与我们项目的初衷——充分利用分散计算资源——背道而驰。因此,我们挑选了表现优异的节点组成委员会(Committee),这个委员会负责完成服务质量(QoS)的共识并将其上链。其他工作节点则将链上信息同步到自己的本地副本中,委员会本身将周期性重建并且重新选择节点加入其中。这一策略有效地提升了共识性能,同时兼顾了资源使用的高效性。
    • 它的实现在 lib/packages/poco-committee 中

模块变动简介

随着我们项目的发展,各个模块都进行了显著更新,以改善功能和性能。下面是关键模块及其在我们服务中角色的概览:

poco-contract-v2

  • 目的:作为基于 NEAR 协议构建的智能合约,本模块设定了广播商和服务提供商,委员会之间的所有链上的工作流程,并详细记录了所有媒体转码任务及服务提供商的服务质量表现。该模块确保了体系中所有记录的可追溯性,并利用智能合约实施控制节点在链上的行为。

  • 主要更新:

    • 将原本部署在以太坊上的智能合约迁移到 NEAR 平台,目的是提高系统的吞吐能力与成本效率,完成了从 poco-contractpoco-contract-v2 的重大升级。
  • Changelog:

    • 首次引入:2023.02
    • 变更记录:
      • 2023.4 适配 NEAR-SDK V4.0.0 版本变化和相应库的更新。
      • 2023.11 适配 NEAR-SDK V4.1.0 版本变化和相应库的更新。
      • 2023.12 处理和 poco-service merge 时遇到的问题。
      • 2024.3 适配 NEAR-SDK V5.0.0 版本变化和相应库的更新。

poco-service

  • 目的:本模块是服务提供商执行任务的核心环节,它封装了服务提供商在链下执行的媒体转码逻辑。同时,本模块也包含验证服务质量所需的领域特定算法逻辑。

  • 主要更新:

    • 基于原 poco-codec 模块的功能,整合并迁移了 QoS 评估模块的相关代码,实现更为统一和高效的服务运作。
  • Changelog:

    • 首次引入:2023.05
    • 变更记录:
      • 2023.5 探索视频质量评估算法 SSIM PSNR VMAF。
      • 2023.6 尝试基于 GOP(Group of picture)优化 VMAF。
      • 2023.7 寻找 benchmark 验证优化算法结果。
      • 2023.9 设计多种场景下(延时敏感,直播,空间敏感)三种场景下的 QoS 采集方式。(后搁置)
      • 2023.12 处理和 poco-contract-v2 merge 时遇到的问题。

poco-committee

  • 目的:该模块是实现对服务提供商服务质量共识的核心组件。共识过程在链下完成,其中共识算法基于 PBFT(实用拜占庭容错)机制。该模块负责接收来自多个验证节点的服务质量数据,并通过结合领域特定的验证方法与传统的加密校验算法,达成对服务提供商服务质量的共识。

  • 主要更新:

    • 设计并实现一个简单的使用拜占庭容错算法。
  • Changelog:

    • 首次引入:2024.03
    • 变更记录:
      • 【进行中】2024.04 处理和 poco-service 交互时遇到的问题。
      • 2024.04 处理和 poco-agent 交互时遇到的问题。

poco-agent

  • 目的:本模块充当用户间及用户与智能合约交互的接口,提供了一个与前端无缝连接的中间件。它封装了实现链上及链下多种操作的(前文提及的多种)模块,并统一了触发不同交互逻辑的接口,极大地优化了用户体验,便于用户轻松地进行各种操作。

  • 主要更新:

    • 通过对旧版 poco-client 的全面重构,增强了模块的可用性和性能。
  • Changelog:

    • 首次引入:2023.03
    • 变更记录:
      • 2023.3-至今 处理和其他模块的交互以及 NEAR 平台的更新。

poco-types

  • 目的:本模块为整个系统中的多个组件提供统一的数据结构、类型定义以及工具函数。它作为基础库,确保了系统内部各模块之间的数据一致性和接口标准化,从而降低了模块间的耦合度,并提高了整体开发效率。

  • 主要更新:

    • 更新了工具函数库,以支持更复杂的数据操作和处理,满足系统演进的需要。
  • Changelog:

    • 首次引入:2022.10
    • 变更记录:
      • 2022.10-至今 适配实际需要。

完整任务流程

完整任务流程从委员会的组建开始,涵盖了任务发布、调度、执行及自我评估,最终通过质量评估与共识形成服务质量的评定,进而执行奖励分配和记录同步。

委员会组建

  1. 选择优质服务提供商:在每一轮开始之前,智能合约( poco-contract-v2 )根据链上记录的服务质量信息,选择出若干个长期提供优质服务质量的服务提供商组成委员会。

  2. 委员会内部协作:委员会成员根据预先定义的链下交互方式彼此联系,组成委员会,并将在委员会内部对服务提供商的服务质量进行共识。

任务发布

  1. 服务请求提交:服务请求者通过 poco-agent 将媒体转码任务提交到智能合约( poco-contract-v2 ),明确转码需求及链下交互方式。

任务调度

  1. 任务监听:服务提供商通过 poco-agent 监听智能合约的任务发布事件,根据当前的工作负载和能力评估是否承担新任务。

  2. 链下协商:选择接受任务的服务提供商将通过任务发布者预定义的链下交互方式与发布者沟通,确保对任务细节的共识。

  3. 服务提供商选择:服务请求者基于服务提供商的服务质量记录,自主选择合适的服务提供商执行任务,优先保证高质量的服务交付。

任务执行与自我评估

  1. 独立完成任务:选定的服务提供商根据任务需求在链下独立完成媒体转码任务。

  2. 质量自我评估:任务完成后,服务提供商将运用视频质量评估算法对转码后的结果进行自我评估,作为服务质量的基准。以上过程充分利用了 poco-service 模块中的转码逻辑和工具。

  3. 提交结果:自我评估完成后,服务提供商将评估结果反馈给智能合约和服务请求者,供后续评估参考。

质量评估与共识

  1. 双重服务质量评估:这包含了视频质量评估和编码速度评估。智能合约随机选定服务提供商参与视频质量的第三方评估,委员会汇总评估结果作为服务质量综合判断的依据

  2. 质量共识决策:委员会成员对采集到的服务质量 metric 采用 PBFT 算法进行共识,共识过程中委员会成员可自行以领域特定的方式验证服务提供商的服务质量和产出结果。共识结果由委员会领导者记录在区块链上,更新服务提供商的质量评分。

奖励与记录同步

  1. 自动奖励分配:智能合约根据服务质量评分,向表现优异的服务提供商自动分配奖励。

  2. 同步链上记录:服务提供商定期复制并同步链上的任务记录和服务质量记录到本地数据库,保持数据一致性。

此完整任务流程描绘了从任务发布到完成的全过程,并通过共识机制强化了服务质量的客观评估,最终通过奖励机制激励优质服务,确保了整个系统的高效和公正。