DARMA Cash匿名公链技术(一):全网SSL/TLS加密和GO语言
大家好,人工智能和区块链技术是下一个十年的朝阳行业,我们来自达摩社区区块链技术小组(以下简称DAMO-BCG),专注于区块链技术的投资。DAMO-BCG是匿名公链DARMA Cash( DMCH )的早期支持社区之一,我们将按照深入浅出、由浅入深的方式逐步推出DARMA Cash匿名公链技术的系列文章,为大家介绍DMCH的精彩世界。
公链 也称“公有链”,比特币是世界上第一个共有链,所谓公和私区别就在于链上的节点是否是自己可控,公有链对应的就是私有链;比特币、以太坊是时下最流行的公有链。公有链是指全世界任何人都可以随时进入到系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是“完全去中心化”的,因为没有任何个人或者机构可以控制或篡改其中数据的读写。
公有链一般会通过代币机制(Token)来鼓励参与者竞争记账,来确保数据的安全性。从应用上说,区块链公有链包括比特币、以太坊、超级账本、大多数山寨币以及智能合约,其中区块链公有链的始祖是比特币区块链。
DARMA Cash(DMCH)公链技术作为近期崛起的匿名公链相对于比特币、以太坊有什么优势呢?今天让我们从DMCH的编程语言GO语言和DMCH全网采用TLS加密的角度拉开本系列的序幕吧。
DMCH全网采用SSL/TLS加密SSL/TLS加密简介
传输层安全性协议(英语:Transport Layer Security,缩写作TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC 5246 (2008年8月)与RFC 6176(2011年3月)。在浏览器、邮箱、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。主要的网站,如Google、Facebook等也以这个协议来创建安全连线,发送数据。目前已成为互联网上保密通信的工业标准。
TLS协议采用主从式架构模型,用于在两个应用程序间透过网络创建起安全的连线,防止在交换数据时受到窃听及篡改。TLS协议的优势是与高层的应用层协议(如HTTP、FTP、Telnet等)无耦合。应用层协议能透明地运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议时都会被加密,从而保证通信的私密性。
DMCH SSL/TLS加密抓包分析 DMCH整个P2P网络是原生使用了SSL/TLS加密的,所以DMCH节点之间的所有数据都是经过加密在互联网上进行传输的。正如下图所示,SSL/TLS处于网络模型的第四层即传输层,DMCH的区块网络作为应用层嵌套在SSL/TLS加密技术的保护之下。由于DMCH网络所有数据均是加密传输,所以互联网上的不法分子无法通过恶意方法识别、截取DMCH网络流量和内容。DMCH运用的SSL/TLS加密技术从根本上确保了DMCH网络的安全性和可用性。
下面就让我们简单看一下默认情况下DARMA Cash(DMCH)和门罗(XMR)区块网络的网络包分析:
图1是门罗币的网络数据包,我们可以看到门罗门节点167.114.1.184:18080向本地节点同步了一个网络包,这个包的数据是透明、公开的。任何具有一定网络技术的人员都可以都可以对区块网络进行监测、阻截、甚至破坏。
图1
图2是DARMA Cash(DMCH)的网络数据包,我们可以看到DMCH节点156.230.55.193:53803向本地节点同步了一个网络包,这个包的数据是经过Transport Layer Security, TLS加密的。网络分析工具智能识别出这是一个加密的数据,至于其中的具体内容一无所知。
图2
通过以上的对比,我们就能感受到DMCH全网区块数据通过SSL/TLS技术加密的设计对于提升整个区块网络的设计效果显著,这也是DMCH从根本上区别于大部分公链项目的一个小细节。
GO编程语言
GO语言简介:
GO语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发GO,是因为过去10多年间软件开发的难度令人沮丧。
GO语言的优势:
-
部署简单
GO 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
-
并发性好
GOroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个 GO 应用也能有效的利用多个 CPU 核,并行执行的性能好。
-
良好的语言设计
从学术的角度讲 GO 语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,GO 的设计是非常优秀的:规范足够简单灵活,有其他语言基础的程序员都能迅速上手。更重要的是 GO 自带完善的工具链,大大提高了团队协作的一致性。比如 GOfmt 自动排版 GO 代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题。把编辑器配置成在编辑存档的时候自动运行 GOfmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码。此外还有 GOfix, GOvet 等非常有用的工具。
-
执行性能好
在使用中,性能高就可以做更多扩展,特别是业务复杂的情况下, 性能是第一保障;使用 GO 建立东西需要更多的时间,但在后续的代码优化上可以节省大量时间。GO 一般比 Python 要快 30 倍。以下是 GO 与 Java 之间的基准比较:
GO适合用来做什么:
-
服务器编程。以前你如果使用C或者C++做的那些事情,用GO来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
-
分布式系统,数据库代理器等。
-
网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
-
内存数据库,前一段时间GOogle开发的groupcache,couchbase的部分组建。
-
云平台,目前国外很多云平台在采用GO开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。
DMCH选用GO编程语言的雄心
编程语言的选择可以看出DMCH项目在启动时候开发人员对项目发展的定位。GO语言部署简单、并发性好、执行性能好,大量用于分布式系统、内存数据库、云平台,从这些特点无疑反应出开发团队对于DMCH公链上嫁接大型生态应用的规划,也让我们社区对DMCH的未来充满了期待。
区块链经过10年的发展,各项目之间的竞争已经趋于白热化,同化现象严重,这使得投资一个富有潜力的项目已经变得越来越困难。然而我们却应该懂得一个道理,每一个人都有自己的天赋,如果DMCH是一个孩子,那么SSL/TLS全网加密和GO编程语言就好像是DMCH从娘胎里出来的自带天赋,这个天赋使得他在今后的发展中具备位居一线阵营的潜质。
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류 l 탈중앙화 자율조직 형태로 결성…구성원 모두가 위믹스3.0 운영에 참여 가능l 스마트 컨트랙트 기반 모듈화 ...
[주간톡톡] 양의 탈을 쓴 늑대는 양일까? 늑대일까?
주간톡톡은 한주간의 블록체인 소식을 재구성해 독자들과 재미있게 이야기해보는 코너입니다. 이번주는 페이스북의 스테이블 코인 프로젝트 '디엠(Diem)'에 대해 알아보겠습니다. 그럼 ...
IBM, 블록체인 와인 추적 서비스 '빈어슈어(Assure)' 공개
IBM이 재배지부터 매장까지 와인 공급망을 추적할 수 있는 블록체인 기반 플랫폼을 공개했다.10일(현지시간) 발표에 따르면 IBM은 와인 모니터링 업체 e프로브넌스(eProven...