最近,一个幽灵,Web3的幽灵,在网络游荡,它叫Damus,这玩意诠释了什么叫做病毒式营销,滑稽的是,一个Web3产品却在Web2的产品链上疯狂传销,各方大佬纷纷为其背书,到底发生了什么?Damus的葫芦里,卖的是什么药?

注册和简单实用

很少有什么产品在用户注册环节会有什么噱头,但Damus确实出其不意,它抛开了传统的Web3产品“区块链钱包先行”的策略,直接一键式生成秘钥对,没有了任何门槛,即使是对Web3完全没有任何概念的普通人,也可以直接上手使用,这里我们使用Damus的网页版,直接访问 https://snort.social/login:

点击页面中的Generate Key按钮即可注册。

注册成功后,进入settings,选择profile,账户设置页面。

在这里我们可以像传统的web2.0社交产品一样,填写昵称,上传头像或者banner,以及其他的一些个人资料,总体上乏善可陈,设置完毕后是这样的:

值得一提的是,这里用户的唯一标识是一串公钥(Public Key)地址:npub16mu2qn54ehx3eh04jy5naq72xkhx3wz6shmkmlr35cpjccgyy5ksvm0plu

Damus的用户可以根据公钥地址来选择关注其他用户,也可以进行“发帖”操作,发布的“帖子”会被关注者们看到,玩惯了Twitter的用户对这些都不陌生。

在个人设置页面中:https://snort.social/settings/profile ,有一个很关键的私钥(Private Key),这个东西是唯一能够证明“你是你自己”的凭证,有点像区块链钱包Metamask中的助记词,登录Damus的时候,可以选择使用私钥进行登录。

NOSTR协议

Damus底层基于NOSTR协议,那么什么是NOSTR协议?其实和我们熟识的HTTP协议也差不了太多,也分为两个端,只不过HTTP协议是客户端和服务端,而NOSTR协议则没有服务端,取而代之的是中继端(relay)。

说白了,没有了中心化的服务器端,变成点对点的中继器,这个中继器可以理解为“共产化”的服务器,每个人都可以搭建并且传输数据,如此就形成了一个完全去中心化的社交网络。

好处就是用户不再受中心化服务器的制约,只要中继器存在,就可以发布想要发布的所有信息。

在后台我们也可以自由的设置和添加NOSTR协议的中继器,甚至可以修改读写权限:

数据交换形式则采用websocket + JSON 的方式:

具体的交互数据包括当前用户的档案信息,比如公钥地址、用户头像,用户简介等等,用户发送的信息内容,也就是帖子内容,最后,是用户推送给关注者的中继器地址,例如上文中的wss://relay.snort.social。

一个极端走向另一个极端

NOSTR协议赋予了Damus网络用户极致的“自由”,可是“自由”也是需要付出代价的,那就是负面有害信息的肆意传播和增长,由于任何人都可以运行一个或多个中继器,所以,就很难有人能控制所有的中继器,也就没法针对某些散发有害信息的公钥地址进行限制,这就意味着,没有了任何所谓的“规则”,变成了彻头彻尾的“黑暗森林法则”。

不得不承认,去中心化带来的并非都是美好的事物。它同样刺激了信息操纵和误导我们的判断,从而给去中心化网络带来了诸多问题。这些问题就像顽疾一样,让人们痛苦却无可奈何。我们往往并不清楚自己真正需要的是什么,而这个弱点常常会被利益集团抓住,并加以充分利用。这就是他们的欺骗行为。欺骗行为的不可避免性未必源于那些品质恶劣的人,而是很可能源于去中心化的自然运作。

举个例子,20世纪40、50年代,逐步有医学证据表明吸烟和肺癌之间的关系。但是由烟草公司资助的研究,指出吸烟与癌症之间的关系还没有被证实。哥伦比亚广播公司的电视节目里安排的论战,显得“抽烟导致癌症”和“抽烟不会导致癌症”的证据难分胜负。但美国1964年卫生总署发布报告,明确指出,抽烟有害健康。该报告代表了美国政府的官方立场。1973年,在公共场所吸烟被禁止。为了应对烟草行业联盟“抽烟很潇洒”的诱惑,反烟草运动持续传播“抽烟很愚蠢”这一信念。1964年发布的卫生总署报告在这方面居功至伟,这,就是监管的力量。

结语

成也去中心化,败也去中心化,在去中心化网络中,拿着钓竿坐等鱼上钩的“姜太公”无处不在,根据简单的概率原理,就算我们谨小慎微、如履薄冰,最终,迟早都会被人“钓”到,没有人能够幸免。

基于NOSTR协议的“公有制”版本的Twitter,去中心化社交软件Damus用后感,一个极端走向另一个极端的更多相关文章

  1. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  2. Spring Security 集成 CAS(基于HTTP协议版本)

    Spring Security 集成 CAS(基于HTTP协议版本) 近段时间一直研究Spring Security 集成 CAS,网上资料相关资料也很多,不过大都是基于Https的安全认证;使用ht ...

  3. 基于XMPP协议的手机多方多端即时通讯方案

    一.开发背景 1.国际背景 随着Internet技术的高速发展,即时通信已经成为一种广泛使用的通信方式.1996年Mirabilis公司推出了世界上第一个即时通信系统ICQ,不到10年间,即时通信(I ...

  4. 集成基于OAuth协议的单点登陆

    在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯.但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的.例 ...

  5. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  6. 基于MySQL协议的数据库中间层项目Atlas - 360团队

    一.简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了 ...

  7. 基于SMB协议的共享文件读写 博客分类: Java

    基于SMB协议的共享文件读写 博客分类: Java   一.SMB协议 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445. 服务器信息块(SMB)协议是一种IBM协议,用于在计 ...

  8. Kcptun 是一个非常简单和快速的,基于KCP 协议的UDP 隧道,它可以将TCP 流转换为KCP+UDP 流

    本博客曾经发布了通过 Finalspeed 加速 Shadowsocks 的教程,大家普遍反映能达到一个非常不错的速度.Finalspeed 虽好,就是内存占用稍高,不适合服务器内存本来就小的用户:而 ...

  9. 【转】 基于TFTP协议的远程升级设计

    版权声明:本文为博主原创文章,未经博主允许不得转载.联系邮箱:zhzhchang@126.com 说明:由于CSDN博客编辑器对word格式近乎不支持,因此对表格使用了图片方式(最后一个表格未使用图片 ...

  10. 一个简单的基于HTTP协议的屏幕共享应用

    HTTP协议可以能是应用层协议里使用最广泛并且用途最多样的一个了.我们一般使用HTTP协议来浏览网页,但是HTTP协议还用来做很多其它用途.对开发人员来讲很常见的一种就是用HTTP协议作为各种版本控制 ...

随机推荐

  1. ES6 学习笔记(六)基本类型String

    字符串String 1.字面量 需要注意的地方: 由单引号或双引号括起来的字符序列. 单双引号可以嵌套,由最外围引号定界字符串 字符串字面量可以拆分成数行,每行必须以反斜线(\)结束,且反斜线都不计入 ...

  2. ISCTF2022WP

    ISCTF2022改名叫套CTF吧(bushi),博主菜鸡一个,套题太多,挑一些题写下wp,勿喷. MISC 可爱的emoji   下载下来是个加密压缩包,根据hint掩码爆破密码 得到密码:KEYI ...

  3. Day13 note

    super注意点: 1.super调用父类的构造方法,必须在构造方法的第一行 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法对比this: 1.代表 ...

  4. CF452F等差子序列 & 线段树+hash查询区间是否为回文串

    记录一下一个新学的线段树基础trick(真就小学生trick呗) 给你一个1到n的排列,你需要判断该排列内部是否存在一个3个元素的子序列(可以不连续),使得这个子序列是等差序列.\(n\) <= ...

  5. Redisson源码解读-公平锁

    前言 我在上一篇文章聊了Redisson的可重入锁,这次继续来聊聊Redisson的公平锁.下面是官方原话: 它保证了当多个Redisson客户端线程同时请求加锁时,优先分配给先发出请求的线程.所有请 ...

  6. Node.js的学习(二)node.js 模块化

    一.Node.js模块化 1.模块化概要 早期的javascript版本没有块级作用域.没有类.没有包.也没有模块,这样会带来一些问题,如复用.依赖.冲突.代码组织混乱等,随着前端的膨胀,模块化显得非 ...

  7. 决策树(二):后剪枝,连续值处理,数据加载器:DataLoader和模型评估

    在上一篇文章中,我们实现了树的构造,在下面的内容中,我们将中心放在以下几个方面 1.剪枝 2.连续值处理 3.数据加载器:DataLoader 4.模型评估 一,后剪枝 • 为什么剪枝  –" ...

  8. UBOOT编译--- UBOOT全部目标的编译过程详解(九)

    1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240. 2. 概述 本文接续上篇文章,采用自下而上的方法,先从最原始的依赖开始,一步一步,执行命令生成目标.这里先把上 ...

  9. c++ const和指针

    const int *p: 定义指针,指向的变量的值不能修改(指向整型常量或普通整型,但值不能通过指针修改) int const *p: 同上 int * const p=&a: 一直指向a, ...

  10. python安装dlib库报错

    问题描述 我是debain 系的linux系统没遇到这个问题,在centos系统遇到的 Collecting dlib Downloading http://mirrors.cloud.aliyunc ...