
搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...
使用web3.py与智能合约交互
注:本篇文章交互用到的合约以及 infura 的创建与项目链接在本篇文章中提到一:安装二:使用1:通过infura链接来与以太坊合约交互输出为True话代表链接成功infura截图https://<your-provider-url>连接成功之后我们把本篇文章中的abi与部署的合约地址用到这里 abi文件(rent_nft_test.json)在 brownie_test/build/contracts 中 那么如何获取到该合约中发生得mint/transfer等信息from web3 import Web3 import json # 首先通过infura节点链接 w3=Web3(Web3.HTTPProvider('https://<your-provider-url>')) # 合约abi文件 with open('./brownie_test/build/contracts/ERC4907.json', 'r') as f: abi_contract = json.loads(f.read())['abi'] # 与infura节点链接成功后 指定address...



搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...
使用web3.py与智能合约交互
注:本篇文章交互用到的合约以及 infura 的创建与项目链接在本篇文章中提到一:安装二:使用1:通过infura链接来与以太坊合约交互输出为True话代表链接成功infura截图https://<your-provider-url>连接成功之后我们把本篇文章中的abi与部署的合约地址用到这里 abi文件(rent_nft_test.json)在 brownie_test/build/contracts 中 那么如何获取到该合约中发生得mint/transfer等信息from web3 import Web3 import json # 首先通过infura节点链接 w3=Web3(Web3.HTTPProvider('https://<your-provider-url>')) # 合约abi文件 with open('./brownie_test/build/contracts/ERC4907.json', 'r') as f: abi_contract = json.loads(f.read())['abi'] # 与infura节点链接成功后 指定address...
Share Dialog
Share Dialog

Subscribe to Yooma

Subscribe to Yooma
<100 subscribers
<100 subscribers
本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。
Mastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。

首先对涉及到的一些名词进行简单解释:
联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。
ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。
实例(instance):每个人都可以在自己服务器上配置运行Mastodon服务,这个服务器可以被叫做营运站点,每个营运站点被称为实例(instance)。

Mastodon在使用体验上非常类似于Twitter,但它是去中化的,这是Mastodon与Twitter,YouTube等社交媒体最大的不同之处。
Mastodon社区是由无数实例组成的。Mastodon的用户数据存储在不同的实例中,每个实例都是独立的,用户可以在不同的实例之间无缝连接,这种分散的数据存储方式可以更好地保护用户的隐私。此外,每个Mastodon实例都有自己的隐私政策和使用条款,用户可以自由选择注册哪个实例,选择自己信任的实例来保护自己的数据隐私。 每个人都可以搭建实例,每个实例可以有它自己的主题,比如卡通,休闲,动物,编程等等,也可以没有任何特定主题。
Mastodon采用的是ActivityPub协议来实现站点之间的互动。与其他常用的社交媒体不同的是,Mastodon的用户不仅可以互相关注、分享内容、评论和转发。而且可以与来自其他通过ActivityPub实现联合的软件的用户进行互动,这样就扩大了用户的社交范围,促进了社交网络之间的互联互通。 这些软件和社交网络之间的互联互通构成了联邦(federation)的网络结构,而这些软件被统称为联邦宇宙(Fediverse)。包括但不限于以下应用:
Pleroma,一个模块化的微博引擎
Pixelfed,联合图像共享平台,可让您共享和使用媒体帖子
Misskey,其中包括微博和可定制的仪表板
PeerTube,可让您将视频上传到频道
Plume,它可以让你发表长篇文章
ActivityPub协议中规定了一些可选的元数据,实例可以选择只存储部分元数据,以减少存储空间的占用和网络带宽的消耗。例如,实例可以选择只存储文章的标题、作者和摘要。 当用户A发布到了实例A上,实例A会储存该文章的所有数据,用户B在实例B关注了用户A,此时实例B也会储存该文章的所有数据,用户C在实例C中未关注用户A,那么实例C储存的就是该文章的部分元数据。
Mastodon还有一个值得一提的特点,就是它没有广告。相较于其他社交网络,Mastodon没有中心化的广告商,也没有实例可以通过插入广告来获利。这是因为Mastodon的分布式结构和ActivityPub协议的应用,使得每个实例都是独立运营的,不会依赖于广告来维持运营。而且,由于Mastodon的用户分散在不同的实例中,广告的效果也很难被量化和追踪,因此广告在Mastodon上不具备实际的商业价值。
由于Mastodon免费开源以及不存在广告,所以只能通过捐款的方式支持开发团队和实例服务器的运营成本。
Nostr 是由fiatjaf开发,于2020年启动的一种简单、开放的社交协议,支持全球、去中心化和抗审查的社交媒体。

运行原理:
有两个主要组件:客户端和中继。每个用户运行一个客户端。任何人都可以运行中继。
每个用户都由公钥标识。每个帖子都有签名。每个客户端都会验证这些签名。(客户端需要用户的私钥对该用户发布的帖子签名。签名可以确保该帖子的创建者)
客户端从他们选择的中继获取数据以及将数据发布到他们选择的中继。中继之间不互相通信,仅与客户端通信,使用 WebSocket + json 协议。
要查看某人的帖子,用户只需指示他们的客户端查询它知道的中继以获取来自该公钥的帖子。
由于WebSocket协议提供了更好的实时性和可靠性,这对于一个社交媒体平台来说非常重要。在Https中,每个请求都要进行TLS握手,这会导致一定的延迟。而一旦建立了WebSocket连接,后续的消息传输将会更快,因为WebSocket连接是始终打开的,没有额外的TLS握手。此外,WebSocket还支持双向通信,这意味着服务器可以主动向客户端推送数据,这是Https所不具备的。因此,选择使用WebSocket,以提供更好的实时性和可靠性。
使用:
每个 Nostr 帐户都基于公钥/私钥对,而非电子邮件和密码。公钥相当于是用户名,私钥相当于密码。与密码不同的是,私钥丢失后无法重置。公钥通常以前缀为 npub1 的字符串表示,私钥以前缀 nsec1 表示。
每个人都运行一个客户端。 它可以是本机客户端、Web 客户端等,连接一个或者多个中继。
要发布某些内容,例如一篇文章,用私钥对其签名并将其发送到多个中继(由其他人或您自己托管的服务器)。
要从其他人那里获得更新,您可以询问多个中继是否知道这些其他人。 任何人都可以运行中继。 继电器非常简单。 除了接受某些人的帖子并转发给其他人之外,它什么都不做。不必信任中继, 签名在客户端进行验证。
在Nostr中,Event是一种用于描述用户在社交网络中进行的行为(如发布消息、关注某人等)的数据类型。在客户端发送Event时,它会先进行签名,然后才会被发送到中继节点。 比如用户A发布一篇文章到中继A、B:客户端A使用用户A的私钥对其进行签名,获取文章时使用用户A的公钥对其签名进行验证。如果中继A的拥有者对该文章进行更改,则验证也就不通过,客户端也就不会对其进行展示,只会展示从中继B获取的正确的文章内容。
优势:
Nostr协议是基于分布式的网络模型,这意味着数据被存储在许多不同的节点上,而不是集中在单个服务器上。这种去中心化的架构使得Nostr更加抗审查。
Nostr协议为用户提供了更好的隐私保护。客户端在用户发布文章后对其进行签名,获取文章时会对该文章签名认证,以确认文章是否被更改。
Nostr协议的中继也可以向用户收取费用以在此中继发布,这也为中继提供了一种经济支持。
由于Nostr是去中心化的,和中心化的服务(如Twitter)不同,所以Nostr的发展方向取决于所有人的意愿。为了让用户更好地参与协议的改进和发展,Nostr引入了NIP(Nostr Improvement Proposals)这一标准化流程,用于提出和讨论对Nostr协议的改进建议。任何人都可以通过提交NIP来对Nostr协议进行改进和发展,这有助于保证协议的发展方向更加民主和开放。NIP的目的是让改进流程更加透明、高效和安全,保证所有人都可以提出协议改进的建议,并且让改进的流程变得更加规范化和公开。

Mastodon和Nostr都是为了实现去中心化社交
从用户数据隐私层面看,我认为Nostr更占优一点,由于Mastodon的账户模式不同于Nostr的公私钥对,用户登录需要服务器来认证,这本身是一个中心化行为,而且用户需要信任使用的实例,而Nostr的客户端使用用户私钥对其的数据进行签名以验证数据的完整性。
从更宏观的角度来看,由于Mastodon的实例使用ActivityPub协议,它可以实现各个软件中的互联互通(前提这些软件应用也集成了ActivityPub协议,理论上如果Twitter以及Youtube实现了该协议也可以与Mastodon实例通信),如果集成该协议的应用越来越多,联邦宇宙的规模和潜力就越大,那么也就会更有优势和发展空间。试想一下,我在Twitter中看到了Youtube中的视频以及Instagram中的内容,并且还可以点赞评论和转发。
本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。
Mastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。

首先对涉及到的一些名词进行简单解释:
联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。
ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。
实例(instance):每个人都可以在自己服务器上配置运行Mastodon服务,这个服务器可以被叫做营运站点,每个营运站点被称为实例(instance)。

Mastodon在使用体验上非常类似于Twitter,但它是去中化的,这是Mastodon与Twitter,YouTube等社交媒体最大的不同之处。
Mastodon社区是由无数实例组成的。Mastodon的用户数据存储在不同的实例中,每个实例都是独立的,用户可以在不同的实例之间无缝连接,这种分散的数据存储方式可以更好地保护用户的隐私。此外,每个Mastodon实例都有自己的隐私政策和使用条款,用户可以自由选择注册哪个实例,选择自己信任的实例来保护自己的数据隐私。 每个人都可以搭建实例,每个实例可以有它自己的主题,比如卡通,休闲,动物,编程等等,也可以没有任何特定主题。
Mastodon采用的是ActivityPub协议来实现站点之间的互动。与其他常用的社交媒体不同的是,Mastodon的用户不仅可以互相关注、分享内容、评论和转发。而且可以与来自其他通过ActivityPub实现联合的软件的用户进行互动,这样就扩大了用户的社交范围,促进了社交网络之间的互联互通。 这些软件和社交网络之间的互联互通构成了联邦(federation)的网络结构,而这些软件被统称为联邦宇宙(Fediverse)。包括但不限于以下应用:
Pleroma,一个模块化的微博引擎
Pixelfed,联合图像共享平台,可让您共享和使用媒体帖子
Misskey,其中包括微博和可定制的仪表板
PeerTube,可让您将视频上传到频道
Plume,它可以让你发表长篇文章
ActivityPub协议中规定了一些可选的元数据,实例可以选择只存储部分元数据,以减少存储空间的占用和网络带宽的消耗。例如,实例可以选择只存储文章的标题、作者和摘要。 当用户A发布到了实例A上,实例A会储存该文章的所有数据,用户B在实例B关注了用户A,此时实例B也会储存该文章的所有数据,用户C在实例C中未关注用户A,那么实例C储存的就是该文章的部分元数据。
Mastodon还有一个值得一提的特点,就是它没有广告。相较于其他社交网络,Mastodon没有中心化的广告商,也没有实例可以通过插入广告来获利。这是因为Mastodon的分布式结构和ActivityPub协议的应用,使得每个实例都是独立运营的,不会依赖于广告来维持运营。而且,由于Mastodon的用户分散在不同的实例中,广告的效果也很难被量化和追踪,因此广告在Mastodon上不具备实际的商业价值。
由于Mastodon免费开源以及不存在广告,所以只能通过捐款的方式支持开发团队和实例服务器的运营成本。
Nostr 是由fiatjaf开发,于2020年启动的一种简单、开放的社交协议,支持全球、去中心化和抗审查的社交媒体。

运行原理:
有两个主要组件:客户端和中继。每个用户运行一个客户端。任何人都可以运行中继。
每个用户都由公钥标识。每个帖子都有签名。每个客户端都会验证这些签名。(客户端需要用户的私钥对该用户发布的帖子签名。签名可以确保该帖子的创建者)
客户端从他们选择的中继获取数据以及将数据发布到他们选择的中继。中继之间不互相通信,仅与客户端通信,使用 WebSocket + json 协议。
要查看某人的帖子,用户只需指示他们的客户端查询它知道的中继以获取来自该公钥的帖子。
由于WebSocket协议提供了更好的实时性和可靠性,这对于一个社交媒体平台来说非常重要。在Https中,每个请求都要进行TLS握手,这会导致一定的延迟。而一旦建立了WebSocket连接,后续的消息传输将会更快,因为WebSocket连接是始终打开的,没有额外的TLS握手。此外,WebSocket还支持双向通信,这意味着服务器可以主动向客户端推送数据,这是Https所不具备的。因此,选择使用WebSocket,以提供更好的实时性和可靠性。
使用:
每个 Nostr 帐户都基于公钥/私钥对,而非电子邮件和密码。公钥相当于是用户名,私钥相当于密码。与密码不同的是,私钥丢失后无法重置。公钥通常以前缀为 npub1 的字符串表示,私钥以前缀 nsec1 表示。
每个人都运行一个客户端。 它可以是本机客户端、Web 客户端等,连接一个或者多个中继。
要发布某些内容,例如一篇文章,用私钥对其签名并将其发送到多个中继(由其他人或您自己托管的服务器)。
要从其他人那里获得更新,您可以询问多个中继是否知道这些其他人。 任何人都可以运行中继。 继电器非常简单。 除了接受某些人的帖子并转发给其他人之外,它什么都不做。不必信任中继, 签名在客户端进行验证。
在Nostr中,Event是一种用于描述用户在社交网络中进行的行为(如发布消息、关注某人等)的数据类型。在客户端发送Event时,它会先进行签名,然后才会被发送到中继节点。 比如用户A发布一篇文章到中继A、B:客户端A使用用户A的私钥对其进行签名,获取文章时使用用户A的公钥对其签名进行验证。如果中继A的拥有者对该文章进行更改,则验证也就不通过,客户端也就不会对其进行展示,只会展示从中继B获取的正确的文章内容。
优势:
Nostr协议是基于分布式的网络模型,这意味着数据被存储在许多不同的节点上,而不是集中在单个服务器上。这种去中心化的架构使得Nostr更加抗审查。
Nostr协议为用户提供了更好的隐私保护。客户端在用户发布文章后对其进行签名,获取文章时会对该文章签名认证,以确认文章是否被更改。
Nostr协议的中继也可以向用户收取费用以在此中继发布,这也为中继提供了一种经济支持。
由于Nostr是去中心化的,和中心化的服务(如Twitter)不同,所以Nostr的发展方向取决于所有人的意愿。为了让用户更好地参与协议的改进和发展,Nostr引入了NIP(Nostr Improvement Proposals)这一标准化流程,用于提出和讨论对Nostr协议的改进建议。任何人都可以通过提交NIP来对Nostr协议进行改进和发展,这有助于保证协议的发展方向更加民主和开放。NIP的目的是让改进流程更加透明、高效和安全,保证所有人都可以提出协议改进的建议,并且让改进的流程变得更加规范化和公开。

Mastodon和Nostr都是为了实现去中心化社交
从用户数据隐私层面看,我认为Nostr更占优一点,由于Mastodon的账户模式不同于Nostr的公私钥对,用户登录需要服务器来认证,这本身是一个中心化行为,而且用户需要信任使用的实例,而Nostr的客户端使用用户私钥对其的数据进行签名以验证数据的完整性。
从更宏观的角度来看,由于Mastodon的实例使用ActivityPub协议,它可以实现各个软件中的互联互通(前提这些软件应用也集成了ActivityPub协议,理论上如果Twitter以及Youtube实现了该协议也可以与Mastodon实例通信),如果集成该协议的应用越来越多,联邦宇宙的规模和潜力就越大,那么也就会更有优势和发展空间。试想一下,我在Twitter中看到了Youtube中的视频以及Instagram中的内容,并且还可以点赞评论和转发。
No activity yet