《看不见的城市》中,马可波罗想象自己被忽必烈打断了思绪:
「你前行的时候,总是在往后回头吗?」或者「你所见到的,总是在你的背后吗?」或者「你的旅行总是发生在过去吗?」...
这篇文章将会围绕以下主题来探讨,并介绍dataverse-OS所关注的问题和目前的解决方案。
数据是行为的抽象,数据组成身份,身份需要安全,用户所有权是一种解决方案。
"Ciascuno di noi dovrebbe essere incoraggiato ad assumere la propria diversità, a concepire la propria identità come la somma delle sue diverse appartenenze, invece di confonderla con una sola, eretta ad appartenenza suprema e a strumento di esclusione, talvolta a strumento di guerra."
--Amin Maalouf <L’identità>
我们使用术语“所有权(ownership)”不是在知识产权法和版权的意义上,而是在用户代理、自主权和对数据掌控的意义上,创建者与其数据的感知关系。
数据所有权的一个重要方面是用户可以在未来很长一段时间内能够持续自主地访问数据。
松土沼泽
身份和数据对人的意义,在我接触电脑科学之前,我完全不理解。为什么要建立数字身份?一个安全的数字身份意味着什么?我们要管那些看不懂的数据、那些文件(file)做什么用?这些概念紧密联结和交错,当提到一个的时候你会联想起其他几个。
尽管对虚拟世界是怎么建立的一无所知就置身其中了,但就像现实世界,每走一步你都希望踩在脚下的是坚石,而不是松土或叶子下的沼泽。
我们为什么要进入数字世界。不(wan)光(quan)是为了尽可能获得like,看到更多人展示丰富多彩的生活,以及让自己的大头传遍互联网的每个角落...我们其实不断在塑造着某种分散但连贯的“数字身份”(这里不谈论匿名用途的身份),基于这个身份生产、链接、获取收益,或其他什么的,这些活动反过来又继续丰富人的数字身份。
我从未想过我会认真考虑“安全”“身份”这样的字眼,尽管有无数的人为我们能在web上进行看上去十分简单的活动保驾护航。并且我从来没有承认或重视过这个“身份”就像我看待我的身份证一样。这种感知上的差异让我觉得很有趣,如果我们在构建的虚拟世界共享现实世界的很多特征的话,如果我不信任他,AI又是基于什么进行学习的?
不同的是世界,而不是我们。——凯特·汤普森《寻找时间的人》
虽然可以对这世界上大多数的不明白选择视而不见,但如果把未知当作是有趣的方面,假装看不见就会很难。没有某一条确定的理解之路可以遵循。
仔细想想,你什么时候愿意基于一个「名字」去活动,当我信任这个名字——她是我离散创造的聚合。我确实可以贴无数个链接来说明这些那些与我相关,也可以创建自己的网站欢迎前来造访,但是我们不可避免的会在互联网的各个地点活动和创造。
脱节
互联网的碎片化导致了这种脱节的体验。
我们回顾一下个人数据发展的几个阶段:
第一阶段:个人电脑的出现。用户在他们的 PC 上与应用程序交互,生成的数据存储在 本地文件系统和硬盘中。那时,用户确实拥有自己的数据。然而,由于一切都是离线的,用户无法访问远程服务,数据也无法共享。
在网络应用程序出现之前,我们有所谓的“老式”应用程序:在本地计算机上运行的程序,在本地磁盘上读取和写入文件。
——inkandswitch.com/local-first
第二阶段:互联网的出现。在这个阶段,Web 应用程序充斥了互联网,每个应用程序都有独立的在线身份系统,由服务提供商(云服务提供商)控制。在这种情况下,用户数据存储在他们无法控制的不同集中式数据库中,数据隐私也不受保护。最重要的是,用户无法从他们的数据中获得任何好处。
我们将这些服务称为“云应用程序”,或“SaaS”或“基于 Web 的应用程序”。它们的共同点是我们通常通过浏览器(browser)或移动应用程序(mobile app)访问它们,并且它们将数据存储在服务器(server)上。
在云应用程序中,你访问和修改数据的方式受到服务提供商的 API、用户界面和服务条款的限制。云应用架构的一个问题是它们将来自所有用户的所有数据存储在一个集中式数据库中。 Dropbox、Google Drive、Box 或 OneDrive 等基于云的文件同步产品使文件可在多个设备上使用。
在桌面操作系统(Windows、Linux、Mac OS)上,这些工具通过监视本地文件系统上的指定文件夹来工作。 你本地计算机上的任何软件都可以读取和写入此文件夹中的文件,并且每当一台计算机上的文件发生更改时,它会自动复制到所有其他计算机上。
——inkandswitch.com/local-first
在这里,要提到server-client的概念,用户和服务之间需要依赖中心服务器的。
那么,下一阶段 我们要探寻更好的平衡体验和安全(最为重视的方面)的方法:
如何使用户能够访问无处不在的在线服务,同时将所有数据存储在他们的个人文件系统中?
如何让应用程序在交互时与用户的数据保持隔离?
文件系统
subject(user,group,world) - permission(own,read,write) - object(resources)
你可能会问,为什么是文件系统?文件是一个系统的抽象单位。
在UNIX里面,文件(file)定义了权限的数据结构,操作系统去读这个由文件构成的目录(index-isnode),然后协调资源。
用文件系统的思路想象在不同的应用之间的协作,把正确的人分到正确的地方。需要做到:1)清晰的分组 2)数据隔离
操作系统(OS)
这里先介绍一下操作系统的概念。
操作系统是计算机系统的重要组成部分,它控制和协调各种应用程序和用户对硬件的使用。
• 硬件提供基本的计算资源,例如CPU、内存、I/O设备
• 应用程序定义系统资源用于解决用户计算问题的方式
• 用户是人或其他计算机
操作系统是一个 资源分配器控制程序有效地使用硬件资源和管理应用程序的执行。
操作系统负责与进程管理有关的活动。进程是正在执行的程序,它是系统中的一个工作单元。程序是被动实体,进程是主动实体。
• 内存管理
• 文件系统管理
• OS提供统一的、逻辑的信息存储视图,基本抽象单元为:file.
• 操作系统为要组织的文件提供 目录。
• 操作系统提供用户和系统之间的 访问控制。系统一般先区分用户,确定谁可以做什么。然后将用户 ID 与该用户的所有文件、进程相关联,以确定访问控制
• 硬件管理
• 存储管理
• 输入/输出子系统
DataverseOS
基于用户的身份(user authentication),操作系统是去调配资源 (allocate resources) 和 管理程序(control system)。如何打造web3的操作系统?
DataverseOS 想要最大化利用web3的已有协议(protocols)组合,去设计一种基于个人身份的计算机(操作系统),用户与应用的交互痕迹会抽象为:数据文件(data file)。
用户界面与现代计算机非常相似,包括个人桌面、dApp 启动板和文件系统。你可以通过狐狸🦊钱包和签名访问个人电脑。
数据钱包(data wallet)
数据钱包用于 1) 保护 用户签名 和 2) 为 dataverse kernel 提供安全的运行时环境。
一方面,数据钱包帮助用户管理身份和与应用程序的交互。另一方面,为应用开发者提供一键登录。
值得一提的是,数据钱包可以帮助用户安全地管理他们的签名。参考最新的 EIP 标准 Sign-in-with-ethereum,你的签名是对你的私人数据的访问。
泄露用户签名可能会导致严重的后果。数据可能被盗或被篡改。
文件系统(file system)
其次,我们创建了一个内置私有文件系统的数据桌面。它用于存储跨应用程序数据。dataverse-OS 中的所有内容都是一个文件(file)。
内核(kernel)
我们来看一下dataverse-OS的kernel。
它类似于 Linux 内核,但整个底层系统基于 web3 基础架构: Ceramic 数据库、Lens 货币化 和 Lit 访问控制,等。目前实现了两个功能:1)管理用户在线资源,如DID、签名、数据流,以及 2)确保系统kernel调用功能的稳定性和安全性。
数据安全(data security)
DataverseOS 确保跨应用数据安全,这是 GDPR Law所必需的。每个 dApp 都有一个独立的文件系统和数据范围('zone'),与其他 dApp 实现数据隔离。
我们相信这也是未来钱包和浏览器的标准。Web dApps 可以围绕一个用户身份安全运行。此外,我们还在探索 user-authorized 可组合数据,用户在使用一个新的 dApp时可以导入已有的数据。
基于SDK的实践
Arazzo 是一个与浏览器插件 wordblock 配套使用的博客,以实现 区块引用((block reference))的乐高式写作体验。Arazzo是使用 dataverse-OS SDK的一个非常具体的实践。
wordblock是我和培汉之前开发的一个在线书签,可将任意互联网文字内容 转化为 文字块(一个包含metadata的数据文件),为了实现跨语义网络的可见连接,这是我一直的理想。
超文本不仅仅是单向跳转链接,而是页面之间可见的连接。——Ted Nelson
Dataverse SDK
除了基本的博客功能外,Arazzo 利用了 dataverse SDK 实现以下功能:
1)使用以太坊登录。用户可以轻松使用他们的数字钱包。
1. 在Dataverse文件系统中查看已发布帖子,并操作(移动、删除、货币化)
2. 生成共享链接
3. 设置加密解密权限
用户可以发布一些可以解密的人的列表,例如附加一个可以阅读的公钥列表,选项为:没有人(私人内容),1 个密钥(~=DM),100 个密钥(列表 打赏粉丝或 NFT 持有者),或未加密(~=tweet)
看不见的城市
...所有的这些问题,马可波罗可以解释,或想象自己在解释,或者被想象是在解释,或者最终是对自己解释:他所见到的,总是位于前方的某种事物,即使是那属于过去的事物,那也是一个随着他的旅途前进而渐渐改变的过去,因为旅人的过去,会随着他所依循的路径而变,不是指立即的过去,不是一天天的过去,而是指较为久远的过去,每当抵达一个新的城市,旅人就再一次发现一个他不知道自己曾经拥有的过去,你再也不是,或者再也不会拥有的东西的陌生性质,就在异乡,在你未曾拥有的地方等你。