区块链简介

区块链介绍

区块链的历史

上世纪 80 年代和 90 年代的匿名电子现金协议主要使用了一种被称为“乔姆盲签(Chaumian Blinding)”的加密技术,这种技术为这些新货币提供了很高的隐私保护,但是由于他们的基础协议在很大程序上需要依赖于一个中央中介,因此未能获得支持。1998 年,戴伟(Wei Dai)的 b-money 首次引入了通过解决计算难题和去中心化的共识来创造货币的思想,但是该建议并未给出实现去中心化的共识的具体方法。2005 年,芬尼(Hal Finney)引入了“可重复的工作证明”(reusable proofs of work)概念,它同时使用 b-money 的思想和 Adam Back 提出的计算困难的哈希现金(Hashcash)难题来创造密码学货币。但是,这种概念再次迷失于理想化,因为它需要可信任的计算作为后端。在2009 年,一种去中心化的货币由中本聪在实践中首次得到实现,通过使用公共密钥密码来管理所有权,并过一种一致性算法来跟踪货币的持有者,这种算法被称为“工作证明”。这“工作证明” 的算法是一种突破,因为它同时决了 2 个问题。首先,它提供了一种简单的、有节制的有效的共识算法,允许网络中的节点一起同意比特币总帐状一组更新。其次,它提供了一种机制,允许任何节点自由进入共识的处理进程,从而解决了谁来影响共识的政治难题,同时阻止女巫攻击。 这参与共识投票的节点的投票权比重是直接和节点它们自己的算力挂钩的。 这就是比特币,其核心思想就是建立一个共识机制,不会由某一个服务中心作为计算后端。

区块链的基本概念

区块链是一种分布式账本,由不可更改的数字记录数据包构成。这些数据包被称作为区块。然后使用加密签名呢将每个区块 “链接” 到下一个区块。这样就使区块链像分类账本一样被使用,可以有具有适当权限的任何人共享和访问。

在区块中,我们会写入如下信息

  • 谁在转账给谁
  • 交易金额
  • 签名等其他信息

区块的链接方式

​ 假设我们有 3 个区块,包含如下信息:

  • 区块 1 包含的信息为 I1I1 的哈希值为 H1

  • 区块 2 包含的信息为 I2I2 的哈希值为 H2

  • 区块 3 包含的信息为 I3I3 的哈希值为 H3

    H2 是由 H1I2 结合起来算出的。同样地,H3 是由 H2I3 结合起来算出的,依此类推。

分布式去中心化分类账

区块链是一个分布式的去中心化分类账,用来存储交易信息等数据,这些数据为整个区块链网络中的节点所共享。

分类账
分类账是承载区块列表的主要记录载体。

存储数据
区块能存储数据(信息)。此处对数据的定义很广泛,可以是我们能想到的任何数据。我们就拿交易信息这一数据来举个例子。

分布式的去中心化分类账
数据处理通常由一个中心机器负责。但是区块链里有很多机器(因此它不是中心化的),且所有机器都是点对点相互连接。另外,这些机器维护的是同一本分类账。因此,区块链被称为分布式的去中心化分类账。

换句话说,因为同一区块链网络中的所有人都共享同一本分类账,所以说区块链是分布式的。每个人都有整个分类账的副本,一旦有什么东西添加进去,副本马上就会更新。

为整个区块链网络中的节点所共享
在区块链网络中,所有机器全都相互连接。每个节点(机器)都持有相同的分类账副本。这就意味着整个区块链网络中的节点都共享一本分类账。

区块链是如何确保安全性的

区块链利用密码学来生成数字签名,并通过数字签名的方式防止数据完整性。

当创建一个交易的时候,利用自己的私钥对信息进行加密创建一个数字签名

1548656387720

然后把交易(内含信息、公钥以及数字签名)提交到其他的临近节点进行审批。

1548656451899

在这一过程中,网络会利用公钥来解密数字签名,并从签名中提取信息。

如果原信息与上图所示的签名中提取出来的信息相匹配,就可以通过审批,否则就无法通过。

如果量信息不匹配, 就可能是一下原因:

  • 原信息在中途被操控了。
  • 生成数字签名时所用的私钥与所提供的公钥不匹配。

这就是区块链网络如何能够防止篡改的方法,因此区块链相对上是安全的。

区块链技术的应用

  • 区块链货币兑换
    • 通过电子加密货币可以低成本的实现货币兑换和汇款
  • 数据存储
    • 区块链的实质是分布式账本,并且具有不可更改的特性,因此非常适合金融科技行业的数据存储。从另一个角度看,区块链也是分布式数据库,可以满足个人用户数据存储的需要。
  • 区块链物联网
    • 通过分部署账本记录某个设备与其他设备、web服务、或者人类用户之间的数据交换,就可以跟踪他的历史。
  • 投票系统
    • 区块链很好的解决了无需依赖第三方而达成信任的问题,因此特别适合实现公众投票系统。
  • 预测平台
    • 通常情况下,群体的智慧大于少数个体。对未来发生的时间,群体的预测结果通常会更加准确。利用区块链全名参与、只能合约等特性,可以创造新型的预测平台
  • 支付 、借贷
    • 通过电子加密货币可以实现低成本的跨境支付与个人借贷。

区块链技术栈

  1. 共识机制

    用来筛选和竞争出让哪个节点来进行记账,并广播给所有节点进行同步的机制;

  2. 密码算法

    用来计算区块的哈希值来关联各个区块, 和计算每个区块交易事务的哈希值(梅克尔根)

  3. 网络路由

    用来发现各个节点,实现节点之间的相互通讯,完成各节点数据的同步;

  4. 脚本系统(可以类比以太坊智能合约和比特币的交易过程)

    一般用来驱动数据的收发,即一套数据的收发和处理规则;在不同的系统中也可以通过改编脚本系统程序。拓展区块链系统功能,比如以太坊就可以根据自定义功能的脚本系统,进而实现智能合约的功能;

  5. 区块链账本

    用来记录数据,将数据以区块的方式记录下来, 每一个区块一般包含[1. 区块头;2.前一区块头的哈希值 ; 3. 梅克耳根(交易事务的哈希值) ], 根据下图, 一般六个区块就能确定 一比交易成功;

    1547197527123

中心服务器和区块链的区别

第三方介入的缺点

  • 交易成本高
    • 对小额交易不友好
    • 调解纠纷的成本被平摊到交易手续费
    • 跨地域交易时需要额外费用
  • 对卖家不公平
    • 当发生纠纷时通常保护买家的利益
    • 某些产品可以轻易复制,如文档,包含源代码的程序等。当产生退货时对卖家不利;
  • 交易时间长
    • 第三方核实交易需要时间较长
  • 隐私暴露
    • 商家会向客户索要完全不必要的个人信息

如何去除第三方

1548233199888

电子加密货币的核心思想

  • 全民参与
    • 让全网尽可能多的节点参与核实,记录交易
    • 给参与见证的节点讲理,维持整个系统持续 运行
    • 任何人都可以参与挖矿,拥有代币,发起交易
  • 匿名&公开
    • 交易的双方无需透露个人信息
    • 交易信息是公开,非加密的。根据钱包地址可查所有的交易记录
  • 去中心化
    • 采用p2p网络,所有节点都来自于互联网,解决了第三方单独进行数据处理的问题

区块链分类

根据网络范围分类

  1. 公有链

    完全对外开放,任何人都可以任意使用;

    没有权限的设定,有没有身份的认证;

    所有的数据参与其中的任何人都可以任意查看,完全的公开透明;

    节点数量不固定,节点是否在线也无法控制,通过网络中大多数节点承认的链就是主链;

    公有链中共识机制一般是工作量证明(POW)和权益证明(POS);

    最具代表的就是比特币;

  2. 私有链

    不对外开发,仅仅在组织内部使用;

    通常需要注册,或者需要身份认证;

    数据只对私链中的节点可见;

    节点的数量和节点的状态通常的可控的;

    因为私有链的节点都有很高的信任度,一般不需要通过竞争的方式来筛选数据打包者,可以采用更加节能的方式进行筛选;

    比较代表的应用就是企业的票据管理,账务审计,供应链管理等系统;

  3. 联盟链

    联盟链的网络范围介于公有链和私有链之间, 仅限联盟成员使用;

    可以给不同的联盟成员设定不同的权限,所以记账规则和数据权限都可以私人订制;

    一般也是具有身份认证和权限设置的;

    节点的数量和节点的状态通常的可控的;

    联盟链几乎不采用工作量证明共识机制而是采用权益证明或PBTF等共识算法;

    代表的应用有银行之间的支付结算、企业之间的物流、政府机关的对外数据公开系统等;

根据部署环境分类

  1. 主链

    部署在正式生产环境的区块链系统;

  2. 测试链

    部署在测试环境,用来开发和测试Bug的区块链系统;

根据对接类型分类

  1. 单链

    能够单独运行的区块链系统都可以称之为 “单链”,例如比特币主链,测试链, 这些区块链系统拥有完备的组件模块,自称一个体系;

  2. 侧链

    区块链系统与侧链系统本身就是一个独立的链系统,两者之间可以按照一定的协议进行数据互动,通过这种方式,侧链能够起到一个对主链进行功能拓展的作用,很多在主链中不方便实现的功能可以实现在侧链中,而侧链再通过与主链的数据交互增强自己的可靠性;

  3. 互联链(多链)

    就是区块链系统之间的互联,通过各自的优势,彼此互补,可以大大增强了系统的可靠性以及性能;

区块链技术特点

  1. 数据不可篡改性

    区块链系统不是一个中心化软件设施,因此数据没有被某一家机构控制,数据肯定不可能被第三方篡改;

  2. 分布式存储

    在区块链系统中,每个运行的节点都拥有一份完整的数据副本,这样的设计不仅避免了存储的单节点故障问题,还可以让每个节点能够独立的验证和检索数据,大大增加了整个系统的可靠性,节点之间的数据副本还可以互相保持同步,并使用类似梅克尔树这样的技术结构保证数据的完整性和一致性;

  3. 匿名性

    使用传统的服务软件时,通常都是需要注册一个用户名,绑定手机号等,进行一些认证等;但是在区块链系统中,目前几乎所有的区块链产品都是使用所谓的地址来表示用户的,不需要提供其他的任何能表示出用户身份的信息,地址通常也是通过公开密钥算法生成的公钥转换而来的,这通常就是一串如乱码一般的字符串,因为即使这些公链系统是完全公开透明的,我们却不知道背后的操作者是谁;

  4. 价值传递

    以比特币为例,比特币是一种数字资产,他是由比特币软件组成的网络所维护的,在这个网络中,不需要其他的第三方,自己可以根据规则发型比特币,并且能够确保发行的比特币是具有价值的(工作量证明),而这种价值的认定是通过网络中所有的节点来自动进行验证的,节点之间打成公式就算认可了,整个过程都是自成一个体系来运行的,人们在交易比特币的时候就产生了价值传递; 区块链系统是可以自己创造信任机制的,无需第三方信任的环境中,大大简化了各种交易个过程,降低了交易的成本;

  5. 自动网络共识

    生活中一半得事情都需要双方或者多方达成共识,比如签订一份合同,都是在多方达成共识,并且需要做各种确认;比特币从发型到转账交易,都是由网络中的节点自动及逆行身份认证和一系列的检查的,检查通过后就打成了网络共识,因为每个节点都遵守一份共同的约定和规则,只要意向交易符合所有的约定规则就能被确认;

  6. 可编程合约

    比如比特币,在比特币系统中,并不是想银行账户一样,将金额存储在账户下就代表用户拥有的,而是通过脚本解锁和锁定一比资产,简单地说,就是让资产具备更强的编程可控能力,比如配置程序,让一比资产需要多个人共同签名才能被转移或者需要达到某个条件的时候才能被使用,这就是编程合约的思想。区块链系统具有数据不可篡改,价值传递等能力,加上编程合约,就能完成商业上各种的需求;

软分叉和硬分叉

软分叉

软分叉:是指区块链网络系统版本或协议升级后,旧的节点并不会意识到比特币代码发生改变,并继续接受由新节点创造的区块,新老节点始终还是在同一条链上工作。

硬分叉

是指比特币区块格式或交易格式(共识机制)发生改变时,未升级的节点拒绝验证已经升级的节点产生的区块,然后大家各自延续自己认为正确的链,所以分成两条链。

产生两个币种,如BCC

刘小恺(Kyle) wechat
如有疑问可联系博主