区块链入门(比特币为例)

什么是区块链技术

  1. 一个去中心化的分布式账本数据库,每个存储节点地位平等,且每个节点都记录了所有的交易信息,其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。

  2. 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。每个数据块都有一个序号,并且包含上个区块的hash值(信息摘要)

  3. 去中心化是区块链技术的颠覆性特点,它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实

  4. 区块链技术是比特币实现的底层技术

区块链的四大特性

区块链主要解决的交易的信任和安全问题,通过每个独立的节点的去中心化实现不可篡改(依赖分布式节点的共识机制),通过非对称交易算法实现仅公开交易信息,对交易人信息保密。

  1. 分布式去中心化账本
    交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。
    跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。
    没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。

  2. 非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权(通过私钥)的情况下才能访问到,从而保证了数据的安全和个人的隐私。

  3. 共识机制
    就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
    区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。
    以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。

  4. 智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。
    在保险公司的日常业务中,虽然交易不像银行和证券行业那样频繁,但是对可信数据的依赖是有增无减。因此,笔者认为利用区块链技术,从数据管理的角度切入,能够有效地帮助保险公司提高风险管理能力。具体来讲主要分投保人风险管理和保险公司的风险监督。

基本概念

  1. 数据区块的组成:当前区块的序号(比如3045A)、时间戳、该消息数据块的hash值(信息摘要,该信息摘要的计算的参数里面,包含了上一个区块的信息摘要)构成区块的头部,还有详细的交易记录,组成一个完整的区块。

比特币的优点

  1. 不会通货膨胀,总量有限(区别与政府货币)(总量为2100万个比特币,现在已经发行了1736万个了)
  2. 没有假钞(交易的时候会涉及到加密算法的验证过程)
  3. 安全性高,不受中心方干预(比如银行系统可以冻结账户,甚至修改金额)
  4. 流通性好,全球流通(P2P,目前日交易量40亿美金 2018.11.6)
  5. 隐私性好(交易全程只需要一个私钥,不需要绑定任何账户拥有人的任何信息)

比特币的交易过程

  1. 发起一个交易信息,下面是一个完整的交易信息。每个交易信息里面只有3个信息:出账账户、入账账户、转账金额。用一个不可逆加密算法计算出的出账账户,来保障出账人和入账人的客户信息隐私。每个用户都拥有一个独一无二的私钥,私钥通过2次hash运算,推导出该用户的账户,此过程不可逆。


    区块链入门(比特币为例)_第1张图片
    image
  2. 交易信息再经过hash运算得到交易信息的hash值(交易摘要)


    区块链入门(比特币为例)_第2张图片
    image
  3. 生成交易信息签名:通过交易摘要和转账发起人的私钥,通过签名运算,获取签名的摘要


    image
  4. 广播交易:签名信息,交易记录


    区块链入门(比特币为例)_第3张图片
    image
  5. 其它节点收到广播后发起验证


    区块链入门(比特币为例)_第4张图片
    image

辅助理解:某种程度的逆运算


区块链入门(比特币为例)_第5张图片
image
  1. 验证通过,就开始准备记录交易信息(挖矿的过程),记录成功之后会广播给其它的节点,收到通知的节点会停止该交易信息的挖矿,同步交易信息。

比特币挖矿的过程

挖矿就是获取新的交易信息的记账权的过程。


image

比特币记账(记录交易信息,也就是挖矿)的过程,也是比特币发行的过程,会奖励第一个完成挖矿计算的节点一定数量的比特币。

挖矿的规则:

  1. 一段时间内只有1人可以记账成功
  2. 通过解决密码学难题(工作量证明)竞争获取唯一记账权
  3. 其它节点复制记账结果(因为该数据块的信息摘要已经生成了,无需自己再计算了)

具体的记账过程:

  1. A、B用户在Node1上完成了一笔转账交易,此时会向周边的节点发起记账的通知,假设多个节点都接收到了该通知,且对这笔交易信息的有效性做了校验之后,都可以发起记账的操作。

  2. 因为只有第一个确认记账成功的节点才会获取到一定数量的比特币奖励,所以就需要通过挖矿的过程(一个在数学上需要耗时随机匹配计算的过程),通过随机数生成首位为一定数量连续为0的hash值的运算过程。

  3. 假设Node S在自己的网络范围内率先完成了挖矿计算,记录了交易信息,就会通过广播的时候,告知其它的节点,该笔交易的记录已经在我这边完成了,你们可以放弃对这笔交易挖矿啦。其它的节点收到消息后,会放弃挖矿,完成交易校验后,直接记录交易信息到各自的账本中。

  4. 挖矿成功的同时,会增加一条给自己转账的交易记录(挖矿奖励)

注意事项:

  • 区别开记账和挖矿的过程,记账是不怎么消耗性能的,挖矿的过程才是消耗时间的,因为要生成一定规则的信息摘要

一条成功计算成功的信息摘要:首位18位连续为0的哈希值


区块链入门(比特币为例)_第6张图片
image

身份验证的算法分析

涉及3个算法:

  1. 创建新用户时:会随机创建一个私钥,再私钥生成账号A
  2. 签名的时候,利用交易信息和私钥进行运算生成签名摘要
  3. 验证的时候,利用签名摘要和发起人账号验证是否该消息真实

账号和秘钥是不可逆推算的,秘钥是可以推算出账号的,但是账号是无法推算秘钥的,这样张三亮出私钥,就可以证明是张三账号的持有者,但是别人知道张三账号,却无法推算出张三的私钥。
在验证阶段,通过夹杂私钥生成的签名摘要+账号信息,必须要可以验证是否能匹配成功,这就需要加密算法的设计,这三个算法必须有设计上面的关联性

举一个现实的例子

用户张三给李四的账号发起一笔转账为例。
用户张三,在系统中申请一个用户账号,创建的同时会收到一个私钥(通过私钥证明自己是张三)。
假设张三现在已经有10比特币,要转账给李四。
那么张三利用通过自己账号来发起一笔交易

发起人:账号张三
接收人:账号李四
转账金额:10比特币

这笔交易要广播出来,就有几个问题

  1. 消息是否可靠,假设是伪造的呢?比如李四知道了张三的账号,就在广播中冒名顶替,说,张三账号要转账李四10比特币了,大家记账了,这样就很不安全。
    所以就像支票或者字据一样,需要张三签字的支票,或者张三画押的支票,大家能认出他的字迹或者可以对的上他的指纹,这个消息才是可靠的消息。区块链里面也叫签名。

为了方便节点之间更快的完成交易信息的核对,可以对交易信息进行哈希运算,这样李四和王二比对交易信息的时候,比如比对这个交易信息的时候,只需要比对哈希值就可以知道是不是同一笔交易,交易信息是否完全一样,而不需要比对 发起人账号、收款人账号、转账金额等这些信息

哈希运算:Hash(交易信息(出账人账号,紧张人账号李四,转账金额10比特币)) 获得交易摘要

签名信息不可伪造是因为签名的参数涉及到私钥
签名的哈希运算:sign(交易摘要信息,私钥) -->签名摘要

开始广播,现在有一个交易信息:信息为***,信息签名为:签名摘要,大家可以开始验证,验证成功请记账。
验证的过程:verify(签名信息,出账人账号),现实生活场景中的签名字迹和签名人的姓名,是否对的上。

  1. 如果是张三发起的交易,那么他的余额够吗?
    所以需要节点记账的时候,就需要对所有相关张三账户的交易做统计。

最后王二、麻子等等村民都收到了这个广播,但是王二速度最快完成了记账,马上通过村里的广播广而告之,我对这笔交易率先记账成功了
(因为大家的账本都只记录交易信息,不记录余额的,假设张三频繁的发送转账,要统计几年的交易记录后的余额,也是要考验村民的计算能力的(为了方便理解,你可以这么认为,实际上是挖矿的过程)),
你们村民你们就不要再算了,因为我是第一个完成校验计算的,张三的余额是够的,李四的账号也是存在的,我宣布该笔交易有效,同时我有权利获得了相应的奖励,大家一起开始记录,我的账户获得奖励1个比特币,同时你们复制我的结果,当然还有我的计算过程编号。

整个交易才算完成。

只要大家都记账了这个操作就可以了,因为是虚拟货币,类似于银行转账,而不是纸币交易,只需要在银行的系统中张三账号的余额-10,李四的账号+10即可,只不过这里的银行账本是比特币所有节点的账本都做修改。

另外,从安全角度来说,还保护了张三和李四的真实信息的隐私,因为大家看到的只是张三的账号、李四的账号,这只是两个神奇的数字,并不知道发起人是张三,收款人是李四。但是可以确认,这个交易是持有张三账号的人发起的,而不是其它人伪造的,至于张三到底是谁,住在哪里,哪个国家的,就不得而知了。

你可能感兴趣的:(区块链入门(比特币为例))