本文将展示以太坊是如何从加密货币和智能合约平台发展成一个完整的生态系统的。

斯诺登事件后的 Web 有 4 个组成部分:静态内容发布、动态消息、免信任型交易和集成用户界面。—— Gavin Wood

自 20 世纪 90 年代诞生以来,互联网年正年复一年地革新我们的通信方式、商业模式,以及新闻阅读和电视观影方式。它实现了信息获取的民主化,极大地降低了全球通信成本,而且提升了普通公民对通信、新闻和隐私访问的期望。

第二波互联网浪潮(被称为 Web 2.0 )下出现了 Wikileaks、Facebook、Twitter 以及 Youtube、Linkedin 和 WordPress 之类的个人发布平台等网站。它们改变了信息的发布方式,让信息难以藏匿。无论发生了什么新闻,迟早会被披露出来。

这给各国政府和官员带来了大麻烦。 无论好坏,维基解密在 2010 年披露了美国外交电报泄漏事件,在突尼斯和利比亚等国家激起了民变,星星之火遂成燎原之势,改变了整个中东的面貌。政府电报泄漏一事还在西方国家激起了一系列抗议活动。

在其所著的《当谷歌遇上维基解密》一书中,Julian Assange 阐述了政界、科技巨头和情报界三方之间的邪恶勾当。对于 Eric Schmidt 和 Jared Cohen 的新作《新数字时代》,他给予了恰当的评价:

“Schmidt 和 Cohen 两位先生告诉我们,一旦消灭了隐私,对实行 “高压政策”的专制政府来说,就是在做它们掌握公民动向的帮凶;对实行“开放政策“的民主制政府来说,就是它们为公民和消费者排忧解难的‘益友’。”

维基解密对金融机构的揭发向我们展示了我们在审查制度面前有多么脆弱——即使是在互联网时代。

后来,斯诺登揭露了美国的“棱镜”计划,又再一次刷新了公众对于日常隐私受侵犯程度的认知。

以太坊就是在这种背景下诞生的。斯诺登泄密事件发生后的几个月,以太坊的联合创造者 Gavin Wood 写了一篇文章来阐述他对 Web 3.0 的看法(编者注:中译本见文末超链接)。 Web 3.0 指的是使用已有的互联网架构和的可用的加密方式,连同区块链一起构建更好的互联网。其中包括内容发布、信息发送和价值交易 —— 在保障隐私性的情况下通过去中心化的抗审查方式实现。

耳语协议

在这篇文章中,Wood 描述了一个 基于身份的匿名信息发送基本系统 ,这个系统会赋予用户——不管是人还是 dApp——基于哈希的身份、隐私保证、加密消息服务、关于发送者的密码学认证,以及规定了存活时间的信息。这个系统具有模块化隐私性和匿名性,以及“隐身”保证——允许用户对不同的隐私性特征进行选择(我找不到更好的形容词了)。它使用的是以太坊网络的基础架构。

通过使用不同的协议特征和不同的设置,耳语协议为更高级的实现,即在上面开发的、具有不同变种的 dApp,奠定了基础。耳语协议目前处在 POC 2 阶段,能够应用于当前的 geth 和 Parity版本。耳语协议在主网上的应用受限于能够运行耳语协议的以太坊在产节点数量。 这一协议仍处于测试阶段。未来会有很多规范发生改变。

以太坊和耳语协议客户端节点使用的是 ÐΞVp2p 线路协议 进行点对点通信。尤其还用到了 RPLx 协议 ,即

一个加密的点对点网络和协议组,为应用程序提供通用的传输通道和接口,以便其通过点对点网络进行通信。

节点搜寻算法是去中心化的抗审查网络中最主要的部分。以太坊使用的是调整过后的 Kademlia UDP,类似于 Bittorrent 网络的对等点搜寻。

由于规范在不断变化中,目前了解耳语协议定义的最佳方式是阅读以太坊的维基百科——点击此处了解当前的耳语协议 POC 2 规范。

耳语协议融合了 DHT 和数据报消息传送系统(例如 UDP)的特性。

如果要设计一个旨在实现 全方位隐身 的系统(即确保绝对的隐私性和匿名性),需要在性能方面做出权衡。我们认为,这是耳语协议选择 UDP 的原因,虽然 UDP 的水平较低,但是比 TCP 更快,且控制力更强。

规范中有一句话或能解释许多设计决策的由来:

“下一代 dApp 需要具备大规模的多对多数据搜寻、信号协商、极稳定的传输以及对完全保密性的确信预期。耳语协议旨在成为下一代 dApp 的构件之一。”

正如规范中所说,消息加密和绝对隐身之间存在重大区别,这正是以太坊的设计人员试图解决的问题。如今,我们知道资金充足的参与者甚至能够破坏 Tor 这样的网络的隐私保障。从很多方面来讲,仅仅知道某人的通信目的地可以在不破解加密内容的情况下,破坏原本所需的隐私保障(例如,在某一政党内部人向维基解密爆料时)。如果对通信的元数据进行足量分析,我们可以得出很多数据,有时还会导致内容加密失效。

这一点在最近发布的欧盟通用数据保护条例(GDPR)中略有反映。

这就是为什么我们需要深入研究——对非常基础的层级开始编写一套新系统。

耳语协议的 POC2 放出豪言,表示会实现"100% 隐身操作"。

规范中还提到:

“耳语协议不仅可以用来通过对等点间通道(即主干网收集装置)进行元数据收集 ,甚至还能抵抗更加严峻的‘100% - 2'攻击;就是这样一种情形:整个网络中的所有节点都被攻陷,就除了一对正在运行隐私通信 dApp 的节点。“

协议要素

主要要素是 封套消息 和 主题 。

封套(Envelop)是包含 存活时间(以秒计)、有效期(以 Unix 操作系统的时间计)、主题(“例如,相当于推特的哈希标签,或预期接受者的公钥与某个阶段 nonce 或应用身份通过哈希运算得出的值“) 和 nonce(为未来实现中的消息发送者提供工作量证明的要求)的数据包。其中还包括 消息数据字段 。

封套中的消息数据字段内包含了真实消息——有效负荷——以及标记和签名。有效负荷由发送者进行加密,需由接收者通过另一种方式进行解密。

整个协议为节点给对等点排序、以及通过获取 nonce 时 花费的工作量 给消息排序打下了基础。而更大的工作量证明会让消息在网络中具有更大的优先级。

节点可以向彼此告知自己感兴趣的主题。发送者和接收者可以选择在隐私保护和性能之间选择启用或不启用一些功能,因为有时候确实需要抉择。

因为技术规范尚未定型,实现也正在开发,所以很难准确底说哪些部分已经完成了,哪些正在开发,哪些仍在提议阶段。

Status.im

Status 自称为”一个为 Ethereum 开发的移动端操作系统“。它是一个以太坊客户端,意在将以太坊功能的丰富性带到智能手机上。在 2016 年上海的 Devcon2 上,Status 首次进入大家的视野。

说得详细一点,Status 这个手机 App 运行了 geth 的完整实现。DApp 就运行在用户的手机上,用户可以在聊天中使用这些 dApp。

Status 的聊天功能就是用耳语协议实现的。

在本文写作之时(2018 年 3 月),Status 更新到了 0.9.18 版本。

许多 dApp,包括 Gnosis、Aragon、Etherisc、Uport、Ethlance、CryptoKitties、Bancor、Peepeth 等等,都可以在 Status App 内使用。

Status 综合了运行在以太坊网络上的消息服务和浏览器,并且,它有志于成为一个 dApp 浏览器,让开发者可以接触到用户。因此——再加上一些相似的项目可能会同时爆发—— Status 会在以太坊和区块链应用的大规模普及中扮演重要的的角色。他们认为自己的使命时“降低进入以太坊的门槛”。

除了是一个数字钱包,一个加密的通讯软件,Status 还希望多多少少能在 dApp 和耳语协议的基础上形成一个社交网络,同时用户还能够选择性匿名。

他们更新时发布的文章说:

在最新的版本中,群聊天功能暂时不可用了,这样我们就能专注于开发一对一聊天和公开聊天。群聊天会在未来的版本中回归。

点对点交易所的初衷时协助 fiat-to-ETH 在现实世界中的去中心化交换。他们的商业模式是收取少量费用。

Status Network Token(SNT)

在 2017 年 5 月,Status 团队宣布启动 Status Network,并且发行了代币 SNT,这是一种实用代币,用于帮助整个网络和应用的正常运作。SNT 用在客户端治理机制、去中心化推送市场、使用 ENS 的用户名注册、内容归集、前述的点对点交易所,以及其它功能中。

白皮书可以在此处找到(编者注:EthFans 中译本请看文末超链接)。

Status 百科

Status.im wiki 里面有用户手册、开发者所需的信息。任何想要开发无服务器聊天机器人或自己的 dApp 并加入 Status 的人都可以参照其中的内容。

而且 Status 的 Open Bounty 还会给为开发做贡献的开发者提供奖励。

生态系统

通过为 dApp 打开接触终端用户的空间,并且将以太坊技术通过显见的方式带到大众面前,Status 正在打造一个生态系统。这一点在他们的孵化器项目中得到了进一步的强调:“一个致力于去中心化的孵化器”。

Status 的 Embark 是一个用于开发 dApp 的框架。你可以通过 npm 来安装:

npm install -g embark

这是一个框架,试图统一和简化所有 Web 3.0 组件的部分——用于存储的蜂群协议(Swarm)或 IPFS,用于通信的耳语协议或 Orbit,以太坊区块链以及 dApp,还有,像 React、Foundation、Augular 这样的前端技术以及不同的前端工具。

Status 还有指标仪、设置系统和插件生态系统。可以在这里获得更多信息。

Status 公司在瑞士 Zug 注册,在新加坡有办公室。他们正在开发移动 App,除了用到 Go 语言(即 geth 所用语言)之外,还用到了 Clojure/Clojurescript,这是一种很适合高级逻辑的语言。

结论

开发 Web 3.0 不是简单的事情。许多公司都正在尝试拯救互联网,算不算成功则见仁见智。但以太坊项目具有重新打造互联网的愿景。因此,说以太坊只是一个密码学货币平台,或者说智能合约平台,可能是一种保守的说法。在以太坊区块链上会产生一整个生态系统。

从以太坊自身、内置的激励系统、两大分支——蜂群协议和耳语协议——的活动还有 Status.im 这样的项目受欢迎的程度来看,我们有理由期待,未来的几年内,互联网将会发生一些有趣的变化。


链接: https://www.sitepoint.com/ethereum-messaging-whisper-status/

解释耳语协议和 Status.im相关推荐

  1. http协议与https协议+UDP协议和TCP协议+WebSocket协议下服务端主动去发送信息+对称加密与非对称加密+get和post请求方式区别详解+浏览器内核以及jsj解析引擎

    TCP和UDP协议是TCP/IP协议的核心. 在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Control Protocol).UDP(用户数据报协议,User Data P ...

  2. Linux:数据链路层——以太网协议、NAT协议、ARP协议和DNS协议

    Linux:数据链路层--以太网协议.NAT协议.ARP协议和DNS协议 以太网协议 以太网帧格式 MTU以及MTU对IP协议的影响 ARP协议 NAT协议 NAT IP转换过程 静态NAT 动态NA ...

  3. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  4. fx5u mc协议_SLMP协议和MC协议

    一.概述 SLMP(Seamless Message Protocol)是在以太网中使用的协议.MC协议则包含了串口以及以太网的通信协议,范围更广. SLMP的3E帧或4E帧(3)的报文格式与MC协议 ...

  5. TCP协议和UDP协议的区别及其应用

    下面是TCP和UDP的简单程序: 简单的TCP网络程序 https://blog.csdn.net/qq_37941471/article/details/80738319 简单的UDP网络程序 ht ...

  6. Java爬虫技术—入门秘籍之HTTP协议和robtos协议(一)

    文章目录: 入门秘籍-Http协议与robots协议 内功修炼-深入理解网络爬虫概念,作用,原理和爬取方式及流程 山中奇遇-得授页面解析技术之Xpath 入驻兵器阁-获取爬虫神器之Jsoup 入驻兵器 ...

  7. WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议

    文章目录 一.SSL协议 二.OpenSSL 三.TLS和DTLS 四.DTLS的通信的步骤图 五.RTP协议和SRTP协议 5.1 详解RTP协议 5.2 详解RTCP协议 5.3 RTP & ...

  8. 关于iic协议和对AT24C02进行读写数据的理解和代码解读

    关于iic协议和对AT24C02进行读写数据的理解和代码解读 认识IIC协议 IIC协议软件模拟方法 管脚初始化 时序 AT24C02 简介 存储大小计算 工作方式 流程(代码) 认识IIC协议 本文 ...

  9. osi七层协议和tcp/ip四层协议

    (大部分内容为转载) OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议.OSI七层协议是由ISO (I ...

最新文章

  1. Xiki:一个开发人员寻求增强命令行界面的能力
  2. java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?
  3. 最新Python学习项目Top10!
  4. Tri-Party Deep Network Representation
  5. java刚工作搭建环境_Java开发环境的搭建
  6. 国外创意网站设计欣赏的200佳网站推荐(系列十)
  7. python中keyboardinterrupt_如何防止代码块在Python中被KeyboardInterrupt中断?
  8. Android如何实现简单音乐播放器的代码
  9. structs2多文件上传
  10. 用FFmpeg搭建基于CNN的视频分析方案
  11. Apollo进阶课程㉝丨Apollo ROS原理—2
  12. Maven私服Nexus搭建
  13. 常见浏览器的兼容问题
  14. 关于开通全国计算机技术与软件专业技术资格(水平)考试继续教育远程培训平台的通知...
  15. 记录红米k40解BL、Root、装XPOSED
  16. 安装ie9提示未能完成安装_ie11/ie10/ie9安装程序无法验证安装文件
  17. 博弈论(四)——#10246. 「一本通 6.7 练习 3」取石子
  18. python开发的录音机(二)让鼠标点击与开始录音同步(录制与回放鼠标宏)
  19. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.7  顺光拍摄展示更多细节...
  20. MATLAB显示slic,quickshift超像素分割结果图

热门文章

  1. 北京住房公积金联名卡政策问答
  2. 放眼看政策!2022年武汉市光谷招贤令奖励补贴政策以及申报条件!
  3. 线程池Executors.newFixedThreadPool验证以及总结
  4. Centos8 磁力链BT地址
  5. 2020计算机考研初试考试先后顺序,2020考研初试考试时间及科目安排
  6. DCD、DTR、DSR、RTS及CTS等五个状态指示分别代表什么意思?
  7. xml与map的相互转换
  8. 单链表的逆置算法解析
  9. GIC介绍 (三)——GIC400 Register
  10. linux如何配置ipv6DNS,linuxipv6dns服务器配置.doc