RippleMessenger:区块链客户端(第1/2部分)
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留源链接并将正文翻译为简体中文。
Question
基于之前对个人数据权利的分析,个人在网络空间中能够实现的最大公平与自由程度到底是多少?
个人电脑上的主权
在使用自己的电脑(它也是网络空间的一部分)时,个人几乎拥有主权:
- 存储他们想要的任何数据。
- 随时读取这些数据。
- 任意删除数据。
- 生成新内容(写小说、编辑视频、进行设计工作)。
- 安装任何他们喜欢的软件(甚至自己编写)。
- 开机或关机,连接网络或断开网络。
简而言之,使用个人电脑时,个人是主宰。
因此: 多使用你的电脑。当你在使用自己的电脑时,你掌控一切。
最大的现实力量 vs. 在线服务
在面对个人不控制的在线服务时,个人能够现实追求的最大力量是其已发布数据不被删除的权利。
要实现这一点,需要满足三个条件:
-
本地存储与备份
- 将数据保存在个人电脑上。
- 即使网络服务删除了数据,你也可以从本地副本重新上传并重新发布。
-
开放、独立且公开的数据格式
- 以公开规范且不受任何专有条件限制的格式发布数据。
- 示例:一旦 TCP/IP 包标准公开发布,任何符合该标准的包都可以在互联网上传输。
- 数据可以独立于任何特定系统存在;系统仅遵循个人的指令来传输、存储或显示数据。
- 因此,任何人都可以在网络空间提供数据服务——没有单一提供商能够在整个网络上删除个人已发布的数据。
-
不可伪造且不可否认的数据(加密完整性)
- 使用加密技术对数据签名。有效的签名防止伪造,并确保签名者不能否认已发布的事实。
- 密钥对在本地使用开放算法生成,且不受任何第三方授权或管理,从而实现匿名发布(对服务提供商和非交互方保持匿名)。
- 个人可以向特定方透露真实身份,也可以不透露。信任最终是每个具体人自行作出的判断。
除了上述两大权力之外,个人不必追求其他额外权利——甚至可以主动放弃其他诉求。
推荐的数据格式
基于分析,个人应选择 一种数据格式 在网络空间发布数据。该格式定义如下。
{
"type": "object",
"required": [
"ObjectType",
"Sequence",
"PreHash",
"Content",
"Timestamp",
"PublicKey",
"Signature"
],
"maxProperties": 10,
"properties": {
"ObjectType": { "type": "number", "const": "ObjectType.Bulletin" },
"Sequence": { "type": "number" },
"PreHash": { "type": "string" },
"Content": { "type": "string" },
"Tag": {
"type": "array",
"minItems": 1,
"items": { "type": "string" }
},
"Quote": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["Address", "Sequence", "Hash"],
"properties": {
"Address": { "type": "string" },
"Sequence": { "type": "number" },
"Hash": { "type": "string" }
}
}
},
"File": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["Name", "Ext", "Size", "Hash"],
"properties": {
"Name": { "type": "string" },
"Ext": { "type": "string" },
"Size": { "type": "number" },
"Hash": { "type": "string" }
}
}
},
"Timestamp": { "type": "number" },
"PublicKey": { "type": "string" },
"Signature": { "type": "string" }
}
}
字段说明
核心/必填字段(6)
| 字段 | 描述 |
|---|---|
| ObjectType | 标识此对象的类型。 |
| Sequence | 此项在由该 PublicKey 在此 ObjectType 下发布的链中的序号(从 1 开始,每次递增 1)。形成每个账户每种类型的逻辑链。 |
| PreHash | 链中前一项的哈希;对于第一项,它是固定值 44F8764BCACFF5424D4044B784549A1B。与 Sequence 共同构成防篡改链。 |
| Timestamp | 本公告的创建时间;应晚于任何被引用的项。 |
| PublicKey | 发布账户的标识符。 |
| Signature | 对公告进行的加密签名,确保完整性、真实性(绑定到 PublicKey)以及不可否认性。 |
内容相关字段(可选/可扩展)
| 字段 | 描述 |
|---|---|
| Content | 公告的主要文本内容,由用户填写。 |
| Tag | 用于后续检索和过滤的标签数组。 |
| Quote | 对其他公告的引用(跨链链接/回复),通过 Address + Sequence + Hash 指定。 |
| File | 附件文件的元数据(名称、扩展名、大小、哈希)。 |
公告概览
公告本身不包含文件数据——它仅通过哈希保存引用,从而可以单独传输实际文件。
最低验证规则
任何节点/对等方在接受或存储公告之前必须执行以下检查:
-
签名验证
- 使用提供的 PublicKey 验证 Signature。
- 这确认了发布者的完整性和真实性。
-
序列连续性
- 确保链中当前的最后序列号(针对该
PublicKey+ObjectType)恰好是Sequence - 1。
- 确保链中当前的最后序列号(针对该
-
前置哈希验证
- 计算前一项(
Sequence - 1)的哈希。 - 确认此计算得到的哈希与公告的
PreHash字段相匹配。 - 这保证了新项可以追加到链的尾部。
- 计算前一项(