学习手册:区块链技术浅谈

区块链技术是金融科技领域当下最受人关注的方向之一。区块链作为一个新兴技术,具备去中心化、防篡改、可追溯等众多金融领域十分需要的特点。它可以实现多方场景下开放、扁平化的全新合作信任模型,而这些都为实现更高效的资源配置,更具体地说是金融交易,提供了有效手段。在可见的未来,区块链技术将为人类商业社会的快速发展带来更多发展机遇和成长空间。

区块链的热议与虚拟货币是密不可分的,比特币、莱特币、以太坊等加密货币的出现,让全球的投机者为之疯狂。短短几年时间,价格涨幅达上千倍,这样疯狂的表现,自然会吸引更多的人及资金注入在这个领域之中。作为一个虚拟货币,在没有实物基础支撑的情况下,想要维持自身价值,则要完全依赖于持有者的信心。没有强大的政府以及机构为这些虚拟货币背书,因此货币的安全性则必须要保障。通过区块链不可篡改,全程可溯源的特性,加上交易时通知区块链中所有用户,交易的过程被记录在每个用户的账本上,确保了虚拟货币的绝对安全性。

发展历史

比特币诞生之前,5个对区块链未来有重大影响的互联网技术:

1、1974诞生的TCP/IP协议:决定了区块链在互联网技术生态的位置

2、1984年诞生的思科路由器技术:是区块链技术的模仿对象

3、随万维网诞生的B/S(C/S)架构:区块链的对手和企图颠覆的对象

4、对等网络(P2P):区块链的父亲和技术基础

5、哈希算法:产生比特币和代币(通证)的关键

区块链的诞生与技术核心:

1、区块链是一种对等网络(P2P)的软件应用

2、区块链是一种全网信息同步的对等网络(P2P)软件应用

3、区块链是一种利用哈希算法产生”通证(代币)”的全网信息同步的对等网络(P2P)软件应用

4、区块链技术因比特币的兴起产生的智能合约,通证、ICO与区块链基础平台

区块链的诞生提供了另外一种神经元模式,不在巨头的集中服务中统一管理神经元,而是每台终端,包括个人计算机和个人手机成为独立的神经元节点,保留独立的数据空间,相互信息进行同步,在神经学的体系中,这是一种没有中心,多神经节点的分布式神经结构。

商业价值

商业行为的典型模式为:交易的多方通过协商和执行合约,完成交易过程。区块链擅长的正是在多方之间达成合约,并确保合约的顺利执行。

从技术角度认为,区块链特点如下:

其他概念解读:

透明性:区块链系统的数据记录对全网节点是透明的,数据记录的更新操作对全网节点也是透明的,这是区块链系统值得信任的基础。由于区块链系统使用开源的程序、开放的规则和高参与度,区块链数据记录和运行规则可以被全网节点审查、追溯,具有很高的透明度。

开放性:区块链系统是开放的,除了数据直接相关各方的私有信总被加密外区块链的数据对所有人公开(具有特殊权限要求的区块链系统除外)。任何人或参与节点都可以通过公开的接口查询区块链数据记录或者开发相关应用,因此整个系统信息高度透明。

信息不可篡改:区块链系统的信息一旦经过验证并添加至区块链后,就会得到永久存储,无法更改(具备特殊更改需求的私有区块链等系统除外)。除非能够同时控制系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高

去中心化:是区块链最基本的特征,意味着区块链不再依赖于中央处理节点,实现了数据的分布式记录、存储和更新。在传统的中心化网络中,对一个中心节点实行攻击即可破坏整个系统,而在一个去中心化的区块链网络中,攻击单个节点无法控制或破坏整个网络掌握网内超过5%的节点只是获得控制权的开始而已。

基本概念

区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。 其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。

分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。

跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。

记账原理

1、哈希值与防篡改:所谓“哈希值”,可以理解为数据的一个“指纹”。我们签合同有时会摁手印,以后只要把自己的指纹和合同上的指纹对比一下,就可以证明合同是自己签的。下载完安装包后,只需用专门的工具计算一下这个SHA值,再跟官网上给的SHA值对比一下,就可以知道自己下载的和网站提供的是否100%一致,下载过程有没有被人做了手脚。不同的数据,算出来的哈希值一般来说是不同的。如果已知数据A的哈希值是H,想伪造另一个数据B,使它的哈希值也是H,这是极其困难的。也就是说,哈希值具有不可伪造性,起到了“指纹”的作用。

如果一个区块上的交易信息被人恶意篡改的话,“本区块的哈希值”就会改变。由于区块链中下一个区块包含了“上一个区块的哈希值”,为了让下一个区块依然能连到本区块,需要修改下一个区块。而这又导致下下个、下下下个……区块也必须修改。

2、采矿:向区块链写入信息的方式“采矿”,就是计算出一个潜在区块的哈希值,使这个区块正式加入整个区块链的过程。一个区块加入区块链后,其中包含的交易信息才能成为事实。由于比特币设计者的一些考虑,采矿的过程需要消耗大量时间和资源。前面已经提到,计算区块的哈希值是极其困难的。具体有多困难呢?如果比特币网络中的计算机都参与哈希值的计算,平均每十分钟才能算出一个哈希值。

既然挖矿会有比特币奖励,比特币的交易方也会给矿工一些手续费作为报酬,矿工之间难免会产生大量竞争。如果两个矿工同时挖到了某个区块的下一个区块,那么谁挖到的那个区块有资格加入区块链呢?如果都可以加入区块链,区块链产生了分叉,这样如何保证区块链的“唯一性”呢?

区块链协议规定,如果一个分叉上的新增区块达到了六个,那么它就成为区块链的“正统”;而同一时刻其他没有达到六个区块的分叉,就会被不幸淘汰,这些区块上的交易信息也不会被认可。这就避免了区块链的分叉。由于一个区块在被挖出来后,后面必须跟上六个新区块,而平均每十分钟才能挖到一个新区块,这样,一笔交易至少需要一个小时才能被确认(被写进区块链)。

小结:

  • 区块链是比特币交易的可靠的、唯一的账本。
  • 区块链是一个无中心的分布式数据库。它没有管理员,网络中的所有用户都可以平等地向区块链中写入新的区块。
  • 区块根据“上个区块的哈希值”而连接成一条链。
  • 计算哈希值的困难性,使得区块和区块链无法被篡改,保证了区块和区块链的可靠性。
  • 一个区块后面新增六个区块才能使它正式加入区块链,这使得区块链不会产生分叉,保证了区块链的唯一性。
  • 同时,这也导致比特币交易至少需要一个小时来确认,不具有即时性。
  • 挖矿奖励是比特币唯一的发行机制,也是矿工挖矿的动力。

Docker入门

除了手动进行本地编译,还可以使用容器镜像的方式快速获得和运行Fabric网络,省去本地编译等待时间。

Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。

镜像(Image),从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器(Container),从认识上来说,就是类创建的实例,就是依据镜像这个模板创建出来的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

仓库(Repository),从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

下载:https://docs.docker.com/docker-for-windows/install/

Docker支持64 位版本的Windows 10 Pro,且必须开启Hyper-V。开启方式为:打开“控制面板”->“程序”-> “启动或关闭Windows功能”,找到Hyper-V并勾选,确定重启电脑。

鉴于国内网络问题,后续拉取Docker镜像十分缓慢,需要配置国内镜像加速,在系统右下角托盘Docker 图标内右键菜单选择Settings,打开配置窗口后左侧导航菜单选择Daemon,在Registry mirrors 一栏中填写加速器地址

https://registry.docker-cn.com ,之后点击Apply保存后Docker就会重启并应用配置的镜像地址了。

启动一次操作容器:docker run IMAGE_NAME [COMMAND] [ARG…]

一次操作容器在处理完操作后会立即关闭容器。

(需要了解和学习的一两句说不清楚,建议有兴趣的小伙伴去找相关资料看看,手动操作一下下~)

当然,创新技术的发展和落地往往难以一蹴而就。我们应该意识到,区块链技术目前仍处于早期阶段,在支撑大规模商业应用场景上还存在不少挑战,例如如何在不影响业务运行的前提下,将区块链系统融合到已有的业务系统;如何让区块链系统的处理性能满足金融交易的苛刻需求;如何设计基于区块链的全新业务运营框架,并对其实现有效的监管。这些都是非常值得进一步探索的课题。

发表评论