分类
外汇交易技巧和技巧

一文读懂区块链技术

分享到微博

从概念到底层技术,一文看懂区块链架构设计!

image.png

从用到的技术来说,协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等 4 个方面,其中网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用(请看书中相关的加密解密文章,不建议自由发挥,没有过多的编码逻辑),数据库技术也主要在使用层面,只有点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。也因此,Nodejs 开发区块链应用,逐渐变得更加流行,Go 语言也在逐渐兴起。

选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的 I/O 性能,网络 I/O 优化空间不大,但是本地数据存储的 I/O 是可以优化的。比如,比特币选择的是谷歌的 LevelDB,据说这个数据库读写性能很好,但是很多功能需要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了 I/O,需要全方位的突破。

在开发上,除了在交易时与协议层进行交互之外,其他时候尽量不要与协议层的开发混在一起。这个层面与应用层更加接近,也可以理解为 B/S 架构的产品中的服务端(Server)。这样不仅在架构设计上更加科学,让区块链数据更小,网络更独立,同时也可以保证扩展层开发不受约束。

这个层面类似于电脑中的各种软件程序,是普通人可以真正直接使用的产品,也可以理解为 B/S 架构的产品中的浏览器端(Browser)。这个层面的应用,目前几乎是空白。市场亟待出现这样的应用,引爆市场,形成真正的扩张之势,让区块链技术快速走进寻常百姓,服务于大众。

这两个语言是无法逾越的,任何开发遇到瓶颈,基本上都会找到它们,自然应该排在第一位要介绍的。同时,区块链技术的鼻祖,比特币(协议层)就是用 C++ 语言开发的,而且目前为止,没有比比特币更加成功的区块链产品。所以,无论你使用什么语言开发,在正式进入这个行业的过程中,都应该先研究研究比特币。

比特币官方客户端钱包用的 Qt,第三方钱包有 Python 语言开发的,特别是第三方整理的开发库(API 包)很多是 Nodejs 设计的。

比特币的架构,与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(PoW:Proof of work),还有一些特殊的挖矿的过程。

Nodejs 平台强大的网络编程能力,以及 JS 脚本语言的简单快捷,在区块链领域自然少不了它的身影。

亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的 Express 开发框架,基于 HTTP 协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。

如果是 Python 语言爱好者,我建议研究研究以太坊(Ethereum)的 Python 实现。尽管因为 The Dao 事件闹得沸沸扬扬,但从技术实现的角度来说,仍然值得参考学习。

以太坊给出了 Go、Java、Python 等多语言的实现。其中以 Python 为基础的实现主要包括三个部分:Pyethapp 是客户端部分;Pyethereum 是核心库,实现了区块链、以太坊模拟机和挖矿等功能;pydevp2p 是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。

另外,go-ethereum 是 Go 语言的完整实现;Ethereum(J) 是纯 Java 实现,它作为可以嵌入任何 Java/Scala 项目的库提供。

客户端方面,还有 Rust、Ruby、Javascript 等语言的实现。

在多核时代,Go 语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用 Go 语言的项目。

其中,由 Linux 基金会主导的超级账本(HyperLeger),版本库的名字叫 Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。

Fabric 的开发环境建立在 VirtualBox 虚拟机上,部署环境可以自建网络,也可以直接部署在 BlueMix上,部署方式可 Docker 化,支持用 Go 和 JavaScript 开发智能合约。

一文看懂区块链共识机制

分享到微信

分享到微博

大白话,通俗易懂,一文读懂什么是区块链技术!

首先,我们明确一个概念,区块链就是一个工具,它本身没有任何价值,也无所谓好坏,就像一个锄头,单独往那一放,产生不了什么价值。但是你用锄头耕作,种菜,种出来的菜有价值。一些加密数字资产,比如比特币,它是利用了区块链这个工具,产出的一个产品,这个产品在很多人心中有价值。很多人认同比特币,那比特币在他们眼里就有价值。但是我们要搞清楚,比特币是个产品,这个产品是用区块链这个工具生产出来的。这是两回事,不要搞混了。

大白话,通俗易懂,一文读懂什么是区块链技术!_区块链

大白话,通俗易懂,一文读懂什么是区块链技术!_数据库_02

于是,六个账本一同记账,为了方便对账,张三全家约定,每天的收支记到一张纸上,一天一张纸。这张纸我们可以把它叫做一个区块,一天天的,一个区块接着一个区块记下去,连到一起就叫做 区块链

这个例子接地气吧,什么是不是容易理解?它就能把区块链解释得清清楚楚。六个账本,同时记录张三一家的收支情况,每天的记录打包成一个区块,这就是区块链。

大白话,通俗易懂,一文读懂什么是区块链技术!_区块链_03

区块链我们再总结一下,第一,它是个数据库,记录的是张三一家的收支情况。第二,它是去中心的,六个账本,没有一个是唯一的,六个账本里的数据如果相同,都是有效的。第三,它是分布式的,六个账本在六个人手里,不可能同时被毁,数据是绝对安全的。

另外就是数据的纠错问题,区块链的纠错原则就是以大多数为准,只要结果,不论对错。大多数原则怎么理解呢?还是张三一家的例子。