Some checks failed
Build and Deploy Dao OS Docs / build-and-deploy (push) Failing after 2m4s
3.7 KiB
3.7 KiB
技术总览
本文档为希望在大道 (Dao OS) 生态系统中进行构建或贡献的开发者,提供了关于架构、核心技术和指导原则的高阶概览。
技术指导原则
我们的工程决策由一套核心原则指引,以确保系统是健壮、可移植和开放的。
- Web原生与可移植性 (Web-Native & Portable): 我们利用源自Web的技术(如 WebAssembly),来创建一个单一的、可移植的核心,使其能运行在任何地方——桌面、手机、服务器和浏览器中。
- 通过WASM实现多语言主义 (Polyglotism via WASM): 核心逻辑(
元)被编译成 WebAssembly (WASM)。这使得“化身”可以用任何能够承载WASM运行时的语言(如 Rust, Swift, Kotlin, TypeScript, Go 等)来编写,从而创造一个真正多样化的生态系统。 - API优先 (API-First): 核心
元与宿主化身之间的交互,由一个严格的、版本化的API契约来定义。这解耦了开发过程,并允许双方独立演进。 - 安全第一 (Security-First): 我们采用业界顶级的加密协议和“最小权限原则”设计。安全不是事后补救,而是一个先决条件。
- 自由及开源软件 (FOSS): 整个核心协议和参考实现都是开源的,以促进透明度、社区信任和协作创新。
核心组件:开发者视角
从开发者的角度看,系统由两个主要部分组成,它们通过一个明确定义的边界进行交互。
-
元(Meta Unit - WASM 模块): 这是系统的可移植的、逻辑核心。它是一个有状态的、单实例的模块,主要使用 Rust 开发,以保证其性能和安全性。它包含了数据管理、AI和P2P协调的所有业务逻辑,但它没有直接访问外部世界的能力。 -
化身(Avatar - 原生宿主): 这是“承载”元的原生应用程序或运行时环境。其主要职责是:- 提供一个 WASM 运行时 来加载和执行
元。 - 提供用户界面(对于 Client 化身)。
- 作为连接到宿主操作系统的桥梁,提供对文件系统、网络和其他系统资源的访问。
- 提供一个 WASM 运行时 来加载和执行
API 契约:WASM 接口
化身和元之间的通信,遵循一个清晰的、双向的API契约,其精神类似于 WASI (WebAssembly 系统接口)。
-
yuan_*(从“元”导出):元导出一系列函数供化身调用。主要的入口点是yuan_handle_request,它接收来自化身的结构化请求并进行处理。 -
avatar_*(导入到“元”):元声明了一系列它需要化身宿主提供的函数。这些函数是它通往外部世界的唯一窗口,允许它请求诸如记录日志(avatar_log)或发起网络请求(avatar_net_request)等操作。 -
数据序列化 (Data Serialization): 为了高效、安全地跨越 WASM 内存边界传递复杂的数据结构,我们使用 Protocol Buffers (Protobuf)。数据被序列化成字节流,通过指针和长度传递,然后在另一端反序列化。
关键技术与协议
| 类别 | 技术 / 协议 | 用途 |
|---|---|---|
| 核心逻辑 | Rust / WebAssembly (WASM) | 性能、安全与极致的可移植性。 |
| P2P网络 | libp2p |
模块化的节点发现(DHT)、传输和安全通道。 |
| 数据同步 | 无冲突复制数据类型 (CRDTs) | 确保在没有中心服务器的情况下,各化身间的最终一致性。 |
| 身份 | DID & VC (去中心化标识符 & 可验证凭证) | 主权身份与可互操作的、基于密码学的信任。 |
| 数据序列化 | Protocol Buffers (Protobuf) | 用于API的高效、语言无关的数据结构。 |
这套模块化的、基于开放协议的体系,专为安全、可移植以及最重要的——社区贡献而设计。