DARMACash匿名公链技术《延展》:这是我见过对“极简”最好的解释

DMCH73750
2020-12-31 11:32:39

从零开始探索 DARMA 延展——释放有限资源的无限潜能

撰文:DARMA Brown


延展———创造性思维很重要,突破思维局限,大胆想象,有限也能创造无限。想别人没想到的,“没有做不到,只有想不到”。


本期“达摩摩”带你解读 DARMA 公链近期优化的技术延展,发掘资源被忽略的价值,开启无限可能。



任何的资源是有限的,但人的创造力和想象力是无限的。“延展”告诉我:放弃追逐,有效延展,你将发现不同的美丽和丰饶,你将拥有更多。记住:你拥有的远比想象的多。


引言


当今互联网基于中心化架构的应用服务(包括金融服务)不断以各种理由收集各类用户信息以谋求业务的扩大,但却忽视了隐私保护,这一不能促进营业额显著增长的基础工作。然而,这类应用服务一旦发生用户信息泄露事故,直接导致数亿级别用户信息的泄露。这些泄露的信息,被用于黑客用于精准诈骗甚至是身份盗用,给用户带来无法预计的无妄之灾。


如今社会迫切需要以不以人的意志为转移的技术保证的隐私保护措施,保护个人隐私是最基本的人权。


达摩(DMCH)公链项目旨在成为基于门罗(Monero)的隐私、高性能、可扩展的区块链去中心化金融解决方案。达摩(DMCH)采用Block DAG区块结构,并在门罗(Monero)的隐私框架上集成了私有地址,私有智能合约,DeFi、DEX,引入不受节点限制的去中心化分布式PPoS,旨在通过扩展PPoS节点来实现高速私有全球SDWAN,建立一个分散的分布式隐私社区生态系统。


达摩(DMCH)不仅继承门罗(Monero)成为加密货币,而且要进一步成为去中心化的专用互联网,保护个人隐私。

———  DarmaCashDMCH-Whitepaper


一、DMCH添加KCP 通信协议


首先KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP) 的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。


整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到用户自己的协议栈中。 也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的ARQ可靠协议实现, 那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。


技术特性

TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而KCP 是为流速设计的(单个数据包从一端发送到一端需要多少时间),以10%-20%带宽浪费 的代价换取了比 TCP快30%-40%的传输速度。TCP信道是一条流速很慢,但每秒流量很大 的大运河,而KCP是水流湍急的小激流。KCP有正常模式和快速模式两种,通过以下策略 达到提高流速的结果:


RTO翻倍vs不翻倍:

TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8了,十分恐怖,而KCP启动快速   模式后不x2,只是x1.5(实验证明1.5这个值相对比较好),提高了传输速度。


选择性重传 vs 全部重传:

TCP丢包时会全部重传从丢的那个包开始以后的数据,KCP是选择性重传,只重传真正   丢失的数据包。


快速重传:

发送端发送了1,2,3,4,5几个包,然后收到远端的ACK: 1, 3, 4, 5,当收到ACK3时,   KCP知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用   等超时,直接重传2号包,大大改善了丢包时的传输速度。


延迟ACK vs 非延迟ACK:

TCP为了充分利用带宽,延迟发送ACK(NODELAY都没用),这样超时计算会算出较大   RTT时间,延长了丢包时的判断过程。KCP的ACK是否延迟发送可以调节。


UNA vs ACK+UNA:

ARQ模型响应有两种,UNA(此编号前所有包已收到,如TCP)和ACK(该编号包已收到   ),光用UNA将导致全部重传,光用ACK则丢失成本太高,以往协议都是二选其一,而   KCP协议中,除去单独的 ACK包外,所有包都有UNA信息。


非退让流控:

KCP正常模式同TCP一样使用公平退让法则,即发送窗口大小由:发送缓存大小、接收   端剩余接收缓存大小、丢包退让及慢启动这四要素决定。但传送及时性要求很高的小   数据时,可选择通过配置跳过后两步,仅用前两项来控制发送频率。以牺牲部分公平   性及带宽利用率之代价,换取了开着BT都能流畅传输的效果。


协议配置

协议默认模式是一个标准的 ARQ,需要通过配置打开各项加速开关:

DMCH添加KCP通信协议极大的改进了传输速度, 拥有完整的 UDP网络库,实现了基于 UDP的链接状态管理,会话控制,KCP协议调度等。KCP通信协议进一步提升性能和稳定性,能够在网络高峰期丢包时保持比 libenet 快三倍的数据传送速率。


二、DMCH优化P2P流程


摘要:包括比特币以太坊等在内的去中心化的区块链平台,其底层网络都是采用的P2P技术实现,每个节点都是对等的。


P2P的定义

P2P全称(peer-to-peer),又称为点对点技术,是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构,P2P网络中每一个用户节点即是客户端又是服务端,能同时作为服务器给其他节点提供服务。


有中心服务器的中央网络系统(左)和无中心服务器的对等式网络(右)有中心服务器的中央网络系统(左)和无中心服务器的对等式网络(右)


P2P的特点

在传统的C/S模式网络系统中,客户端之间的交互需要依赖中心化的服务器进行。当网络规模变得庞大时,这些中心服务器的负担就会越来越重,很容易成为网络瓶颈。而且一旦服务器崩溃,就会造成整个网络瘫痪(单点故障的风险)。而P2P网络由于没有中心服务器,不存在单点性能上的瓶颈,每个节点在充当客户端的同时,也可以作为服务端给其他相邻节点提供服务,极大地提高了资源的利用率。


总结来说,P2P网络的特点如下:


(1)可扩展性。在P2P网络中,用户可以随时加入、离开网络。而且随着用户节点的加入,系统整体的服务能力也在相应的提高。例如p2p下载中,加入的用户越多,则P2P网络中提供的资源就越多,下载速度就越来越快。


(2)健壮性。由于P2P不存在中心化服务器,天生就具备耐攻击和高容错的特点。即使网络中某个节点被攻击或下线,也不影响整个系统的正常运行。因为P2P网络中每个节点都可以充当服务端的角色。


(3)高性价比。采用P2P结构的网络,可以有效地利用互联网中大量分散的普通用户节点。充分利用这些普通节点中闲散的CPU、带宽、存储资源,从而达到高性能计算和海量存储的目的。例如:迅雷旗下的星域CDN产品,就是充分利用每一个普通用户机器的闲散网络资源,从而提供一个高性价比的服务。类似的还有360共享云、国外的sia网盘等。


(4)隐私保护。在P2P网络中,由于信息的传输分散在各个节点之间,而无需经过中心服务器。这样就减少用户隐私信息被窃听和泄露的风险。


(5)负载均衡。由于P2P网络中,资源分散存储在多个节点上,而每个节点又都可以充当服务器的角色。当某个节点需要获取资源时,只需要向相邻节点发送请求即可,很好地实现了整个网络的负载均衡。


P2P的主要功能

P2P网络的主要功能可以分为如下3种:

  • 数据发布和传输

  • 数据存储和检索

  • 分布式数据处理

(1)数据发布和传输有3中方式,分别是一对一(如即时通讯)、一对多(如群组通信和消息广播)和多对多(如内容分发应用:BT、PPS等)

(2)数据存储和检索分为基于结构化的P2P网络方法和基于非结构化的P2P网络方法。结构化的P2P网络也就是基于分布式哈希表(DHT)的P2P网络,这个也是目前应用最广泛的,它的网络拓扑结构是确定的。而非结构化的P2P网络的资源存储通常与网络拓扑结构无关,例如Gnutella。

(3)目前,大多数分布式数据处理技术采用的是master/slave的架构。而基于P2P网络,也能够进行分布式的数据处理。


P2P的发展历史

P2P技术的发展可以分为如下三个阶段:


(1)第一阶段:集中式对等网络

这种网络采用的是中心化的拓扑结构,由于文件的索引信息都是存储在中央服务器上,每个子节点都需要连接中央服务器才可以找到资源。它最大的优点是维护简单、索引速度快。但是由于整个网络严重依赖于中央服务器,容易造成性能瓶颈和单点故障的问题。

典型代表是:napster


(2)第二阶段:非结构化的分布式网络

这种网络采用Flooding搜索算法,每次搜索都把要查询的消息广播给网络上的所有节点。当一个节点要下载某个文件的时候,这个节点会以文件名或者关键字生成一个查询,并把查询发送给所有跟他相连的节点。如果这些节点存在文件,则跟这个节点建立连接,如果不存在,则继续向相邻的节点转发这个查询,直到找到文件位置,过程如下图所示。


可以发现,当网络规模变大以后,这种搜索方式会引发”广播风暴”,严重消耗网络带宽和节点的系统资源。虽然避免了集中式对等网络的“单点故障”问题,但是效率却很低下。

典型代表:Gnutella早期版本。


(3)第三阶段:结构化的分布式网络

目前采用最广泛的就是结构化的分布式网络,也就是基于DHT(分布式哈希表)的网络。DHT为了达到Napster的效率和正确性,以及Gnutella的分散性,使用了较为结构化的基于键值对的路由方法(如下图所示)。

目前实现了DHT协议的有Kademlia和Chord算法,其中Kad算法由于简单易用而被广泛使用,其中比特币和以太坊网络中的P2P网络采用的就是Kad算法。


P2P的应用

(1)文件内容共享和下载。

利用P2P技术可以使计算机之间不通过服务器直接进行内容共享和数据分发,使得互联网上任意两台机器间共享数据成为可能。例如Napster、Gnutella、eDonkey、eMule、Maze、BT,以及现在PPS、腾讯视频客户端等采用的P2P流媒体技术,使得播放速度更加流畅。


(2)计算能力和存储共享。

基于P2P网络的分布式结构构造出分布式的存储系统实现存储共享,提供高效率、高性价比、负载均衡的文件存取功能,例如国外的Sia、Storj等分布式云存储平台,不依赖第三方的大型集中存储空间,避免了数据泄露、保证了安全性。同时由于任何人的主机都可以提供存储服务,降低了门槛,大幅降低了存储的成本。例如,采用分布式存储的Storj价格是每个月$0.015而亚马逊提供的AWS价格是$0.023。


同时也可以共享CPU处理能力。例如360的共享云计划和星域CDN等,充分利用每个人机器的闲散计算资源来提供计算服务。


(3)基于P2P的即时通讯。

例如目前的Skype通话软件就是从连接建立和数据传输都采用P2P实现,保证了良好的通话质量。


(4)基于P2P方式的协同处理与服务共享平台。

常见的协同处理有视频会议、共享白板、协同协作等,而基于P2P技术的同样也可以实现上述功能,不同的是,这种实现方式不需要中心服务器,参与协同工作的计算机之间可以直接建立点对点的连接。例如被微软收购的Groove协同软件平台。


DMCH的P2P模块使用的是libp2p框架,libp2p原本是协议实验室(protocol lab)IPFS项目的网络层,后来因为其具有颠覆传统互联网架构的能力被独立成一个单独的项目。简单来说,libp2p就是帮助链接节点的一个库,任意两个节点,不管在哪里,不管处于什么环境,不管运行什么操作系统,不管是不是在NAT之后,只要他们有物理上链接的可能性,那么libp2p就会帮你完成这个链接。


libp2p采用的QUIC不一定能解决全球网络穿透问题,但是DMCH已整合KCP技术(KCP已经被无国界的广泛使用),而基于KCPVPN+BGP routing形成的区块链互联网正是DMCH隐私、高性能、可扩展的区块链去中心化金融解决方案的重要生态。


三、DMCH添加GOOLE 验证器


GOOLE身份验证器

Google身份验证器是一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件用于Google的认证服务。此项服务所使用的算法已列于RFC 6238和RFC 4226中。Google身份验证器给予用户一个六位到八位的一次性密码用于进行登录Google或其他站点时的附加验证。其同样可以给第三方应用生成口令,例如密码管家程序或网络硬盘。先前版本的Google身份验证器开放源代码,但之后的版本以专有软件的形式公开。


典型使用情况

通常,用户安装身份验证程序在智能手机上。为了登录到使用两步验证的网站或服务上,用户提供用户名和密码后运行身份验证器进行额外验证。该应用程序会生成六位数的一次性密码,而不同网站可能会生成同一密码。


为了使身份验证器正常工作,安装运行之前网站必须向用户提供一组共享密钥。这组密钥将会用于未来的所有登陆请求。


在两步验证的保护之下,仅仅拥有用户名密码已不足以黑入账户。攻击者需要这组共享密钥或者拿到进行两步验证的移动设备。另一种方法是进行中间人攻击;若用户的电脑被木马侵入,则用户名、密码及一次性密码都将被木马所捕获,随后攻击者即可利用木马进行登录、监听或修改用户与网站的通信.


实际应用中GOOLE验证器APP并不能解决人们对于设备在非正常控制下的即使恢复与备份


由此DMCH采纳了社区的建议添加并优化GOOLE验证器上链的建议,并发布在DARMAwallet2.4.3版本中。


四、DMCH优化badger数据库


badger是一个纯Go实现的快速的嵌入式K/V数据库,针对LSM tree做了优化。


键的遍历

Badger支持一种独特的迭代模式,称为只有键的迭代。它比常规迭代快几个数量级,因为它只涉及对lsm树的访问,而lsm树通常完全驻留在RAM中。要启用只有键的迭代,您需要设置IteratorOptions。PrefetchValues字段为false。这还可以用于在迭代期间对选定的键执行稀疏读取,只在需要时调用item.Value()。


数据流

Badger提供了一个流框架,它可以并发地遍历数据库的全部或部分,将数据转换为自定义键值,并连续地将数据流输出,以便通过网络发送、写入磁盘,甚至写入Badger。这是比使用单个迭代器更快的遍历Badger的方法。Stream在管理模式和正常模式下都支持Badger。

DMCH优化bagder数据库和ZSTD的意图?未知的格局不禁让人兴奋的遐想。值得一提的是前几天的DMCH日志里有个share 存储优化。


拒绝“追逐者”心态


你是不是也有这样的想法:


学生时代,你看到别的同学买了某本课外书或者学习用品,总觉得自己也要有,否则就不会考出好成绩;
职场中,你看到同事住着好房子、开着好车子,穿着名牌衣服,用着商务手机,总觉得自己也要有,否则就是别人眼中的loser;
生活中,你看到别人家的孩子上奥数、学英语、练钢琴、学舞蹈,总觉得自家的孩子也要上这样的辅导班,否则就是输在起跑线上……


如果你有以上想法,那么就犯了现代社会人的一个通病:过分追求“多”,追逐更多的财富、更多的资源——似乎多就代表成功。


可是,你同样也会纳闷和想不通:


为何明明别人有的你也有了,但是你依然平庸?而有些人拥有的资源甚少,却取得了成功?


为何我们会忍不住,不断去追逐我们自身没有的东西?这就是“追逐者”的心态。



主要有三种来源:攀比、默认要办成更多的事就得更多的资源、一味贪多求多


如果说追逐的根基在于追求尽可能多的资源,那么延展的基础就是专注于我们所拥有的东西。


决定人成功与否的,并不绝对取决于资源的多少,而是做事情的方法——思维的方式。


延展思维可以使我们摆脱“永远看不懂”的焦虑,告诉我们:你拥有的远比想象的多,只要突破思维局限,有限的资源也可以创造无限的成就


面对即将到来的牛市,具备强大的前沿技术添加能力、应用优化能力、版本迭代能力、生态开发能力、这时的DMCH已经在路上。因为拥有,我们变得专一、不追逐,耐心的学习DARMA,相信你拥有的远比想象的多。

OKEX下载欧易下载OKX下载

okex交易平台app下载

下五篇