区块链开发核心技术概览

2018年,想必很多开发者已经磨刀霍霍、摩拳擦掌准备在区块链这一新兴领域大干一番了。可是区块链技术十分庞杂繁琐,不知如何下手是好。其实区块链所用技术并非高新技术,而是几种网络软件技术的组合。其核心技术无外乎四个方面:P2P网络编程、加密签名、分布式算法、数据存储。

运用这四种技术应用可以完成一个完整的区块链产品,据此暴露一些通用API,形成区块链网络。以我们熟悉的产品举例。以太坊钱包,imToken,它其实就是一个典型的区块链的客户端应用。我们用它创建钱包地址、查看余额、转账支付等等。要实现这些功能,我们需要构建网络环境、搭建交易通道、制定节点奖励规则(共识机制)等等。这是区块链的基础层,叫做协议层,完成了这一层面的功能,我们便可以开发智能合约、侧链等应用,这个层面称作扩展层,再上一个层次就是应用层,比如各种货币交易网关、各种扩展客户端。


区块链开发核心技术概览_第1张图片
图片引用自朱志文老师

在这四大开发技术中,P2P网络编程是决定选择什么编程语言的关键因素。点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。比如近几兴起的NodeJs和Go语言。分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用,不建议自由发挥,没有过多的编码逻辑。数据库技术也主要在使用层面。另外,数据存储可以相对独立,选择自由度大一些,可以单独来讨论。选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的I/O性能,网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如,比特币选择的是谷歌的LevelDB,据说这个数据库读写性能很好,但是很多功能需要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,需要全方位的突破。

区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理当是我们知识库的核心。正如大家看到的,任何一款区块链产品,协议层必须包括点对点网络、加密签名、数据存储、分布式算法等4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。所以,把这部分独立出来,也是合情合理。

在扩展层的部分,区块链技术可以对接各种应用,比如:金融、物联网、网络安全、版权保护、电子商务等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,这里所罗列或涉及到的技术,理应归为技术实现的一个重要部分。

以上便是我对区块链核心技术架构的理解,具体细节,以后的日子我们逐个攻破。

你可能感兴趣的:(区块链开发核心技术概览)