区块链
我们知道区块链是比特币的底层技术,它是将记录区块以链条的方式进行组合并串接在一起,通过去中心化和去信任的方式集体维护一个可靠的数据库及数据结构,从而支撑了数据的一致性并提高流程可靠度。在实际业务应用层,主要采用了智能合约的互信机制,实现前端的数字认证和信息追溯。
区块链具有三个非常关键的特点:即保障数据的完整性、去中心化的可靠性以及提供数据的安全性。
保障数据的完整性:通过“区块+链”创新数据库结构。将数据分成不同的区块,每个区块通过特定的信息链接到上一区块的后面,前后顺连来呈现一套完整的数据。从技术上讲,它是将数据或代码打包成一个区块,盖上时间戳,与上一个区块衔接在一起,时间戳是区块链中重要的技术创新。
去中心化的可靠性:构建P2P分布式网络结构的协议机制,让全网任意节点都来验证其他节点记录结果的正确性;同时构建分布式网络系统,让数据库中的所有数据都实时更新并存放于网络节点中。从技术上讲,它是基于去中心化开源协议,运用分布式记账、分布式传播、分布式存储等技术。
提供数据的安全性:依赖于非对称加密算法及数字签名。两个密码具有非对称特点——公钥和私钥。数据加密时使用公钥,全网可用于加密;数据解密时使用私钥,只有信息拥有者才能解密。从技术上讲,典型的非对称加密算法有:RSA、Rabin、D-H、ECC、Elgamal等。
因此,区块链的技术具有去中心化、记录时间戳、分布式记账、集体维护、不可篡改、去信任、非对称加密等技术特性特性,这些特性支撑了上层业务的可管、可控、可靠和安全。
但是我想对于大都数读者而言,区块链仍然是一个比较抽象的技术名词,它到底是一个什么样的逻辑结构?为何具备上述特点就能保证上层业务应用的安全可靠?这就非常有必要引入一张直观的图示加以说明。在互联网上通常都是有关比特币应用里区块链的结构图,而且比较简化很难理解,这里面我结合了大量参考勾勒出一张完整的技术框架和功能示意图,希望能与各位读者产生共鸣。
首先,我们将区块链的在实际应用中的整体架构分为四层:即应用层、扩展层、网络层和存储层。
应用层:相当于B/S架构的浏览器端,但却是目前最最缺少的市场空白区(能为我们最终客户提供什么应用服务),我们现在市场上所接触到的,恐怕就是互联网和货币BTM机、数字钱包、音像、视讯出版等应用了,而且还都很不成熟,说白了还不是很普遍。但由于应用层直接与客户接触,所以它是实现数字认证、信息追溯的重要环节。
扩展层:相当于B/S架构的服务端,扩展层与应用层关联性密切。我们读者在其他文章中所看到的表述,实际上并没有很清晰的说明应用层与扩展层之间的关系。这里面强调,如果是比特币交易类应用,则不需要扩展层即可直接实现业务支撑;但如果是数字音像和第三方出版等应用,则需要扩展层的智能合约机制。所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件后合约则自动执行。在扩展层实现方面会用到一些技术,包括分布式存储、机器学习、大数据等。
网络层:就是上文中所述的P2P网络,既然是分布式网络那一定是多点对应、交叉关联的。网络层中每一个节点的背后都是一个用户端,端侧B、C、D、E的背后都会存在一个与A相同的应用层。在实际应用过程中,互信机制就是通过这样的分布式网络建立起来的,从技术开发角度讲主要用到了分布式算法,比如Paxos算法、一致性Hash算法等。而且还需要使用网络编程语言,比如Python、Go、Node.js等。
存储层:数据存储可以相对独立,选择自由度比较大,选择的原则需要考虑存储性能和易用性,因此存储方式很重要,即——“区块+链”的存储方式。区块链的核心就在于此,数据块以链条的形式存放且环环相扣,每一个应用端的背后都通过这样的存储结构记录着一串信息。在存储层主要用到相应的存储技术,比如LevelDB、Redis、Memcached等。
全部0条评论
快来发表一下你的评论吧 !