不懂区块链?先来看一下这篇

原创播客,如需转载请注明出处。原文地址:https://www.cnblogs.com/crawl/p/10253564.html

----------------------------------------------------------------------------------------------------------------------------------------------------------

笔记中提供了必要的代码示例,需要说明的是,大部分代码示例都是本人所敲代码并进行测试,不足之处,请大家指正~

本博客中所有言论仅代表博主本人观点,若有疑惑或者需要本系列分享中的资料工具,敬请联系 qingqing_crawl@163.com

-----------------------------------------------------------------------------------------------------------------------------------------------------------

  • 前言

      从最初开始学习 JavaEE,到自学大数据,现在实习在做区块链方面的东西,也算是一边实习,一边学习。忙完了一阵工作,总结一下实习四个月来所学到的知识,希望能够对自己和别人有所帮助。

  • 比特币

      要说区块链,我想先从从比特币说起……

一、比特币的基本信息

1. 什么是比特币

  1)比特币系统:一个软件,每个人都可以下载运行,大家都维护一个版本

  2)比特币:比特币系统所维护账本上的交易数字(为了完成支付功能而产生的交易数字)

  3)区块链:(简单提一下区块链)一个数字账本,记录各种交易数字,是伴随比特币在系统中流通而产生的概念

2. 比特币和区块链的关系

1)比特币是区块链技术的落地应用

2)区块链是比特币的底层支撑系统

3)区块链是从比特币中抽离出来的概念

二、比特币区块链使用的基本技术

1. Hash 算法(用于工作量的证明)

1)作用:将任意长度的输入格式化为固定长度的 16 进制字符串

2)主流算法:MD5(128位)、sha256(256位)

3)性质

  ① 抗碰撞性:当知道一个 x,无法求出一个 y,使 x 和 y 的 Hash 值相同

  ② 像不可逆性:根据 x 的 Hash 值无法求出 x

  ③ 题友好性:计算 Hash 的时候,没有捷径可走,若想计算出预定的 Hash 值,只能一次次的尝试 (这是 pow 共识机制的基础

2. 码学(用于资产所有权和交易的验证)

1)对称加密:A、B 双方使用同一把秘钥

2)非对称加密(生成公私钥)

  ① 介绍:公钥和私钥一一对应,公钥负责加密对外公开;私钥用于解密和签名,决不能外露

  ② 公钥:用对方的公钥加密,对方用自己的私钥解密,因为私钥自己持有,且公钥无法解密,可以保证安全

  ③ 私钥:签名,保证数据来源,保证数据未被篡改,但不能保证数据安全

  ④ 常用算法:RSA、ECC

  ⑤ 特点:安全性高、加解密复杂、效率低

3. 编码(用于网络传输、生成地址等)

  区块链底层较为常用的编码方式是 base64 编码

4. p2p 网络(点对点、端对端)

1)介绍:点对点技术无中心的服务器,依靠用户群交换信息的互联网体系

2)特点:耐攻击、高容错、地位平等

5. 默克尔树(用于快速交易验证)

1)介绍:Merkle Tree,通常也被称为 Hash Tree,是存储 Hash 值的一棵树,Merkle Tree 的叶子是数据块的 Hash 值

2)特点:二叉树

3)应用:可快速检索,由其是在数量猛增时,搜索效率高(比特币中可以用来校验某一笔交易是否存在某个区块中

6. 工作量证明(Proof Of Work)

1)比特币的 POW 要求运行一个 Hash 算法(sha256),找到一个符合要求的 Block Hash(Block Hash = sha256(区块信息+随机值n)),该 Hash 值由 n 个前导 0 构成,零的个数取决于网络的难度值。要找到合理的 Block Hash 需要经过大量的尝试计算,计算时间取决于机器的 Hash 运算速度。

2)工作量证明的过程:生成 Coinbase 交易,并与其他所有准备打包进区块的交易组成交易列表,通过 Merkle Tree 算法生成 Merkle Tree Hash,把 Merkle Tree Hash 及其他相关字段组装成区块头,将区块头的 80 字节数据(Block Header)作为工作量证明的输入不停的变更区块头中的随机数即 nonce 值,并对每次变更够的区块头做双重 SHA256 运算(即 SHA256(SHA256(Block_Header))),将结果与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成

三、比特币的区块结构

1. 区块结构

比特币的区块结构由区块大小、区块头、交易计数器、交易组成

1

2. 区块头

区块头的信息主要包括版本、父区块头的哈希值、Merkle根、时间戳、难度目标、Nonce

2

3. 区块体(交易)

1)Coinbase 交易第一条交易、挖矿交易(没有支付人,只有收款人,即矿工);每一个区块都有一个 Coinbase 交易

2)普通转账交易:每笔交易包括付款方、收款方、付款金额、手续费等

4. 完整结构图

3

四、交易

UTXO(unspent transaction output):未消费输出,是比特币交易中最小的支付单元,不可分割,每一个 UTXO 必须一次性消耗完,然后形成新的 UTXO,存放在比特币网络的 UTXO 池中

  • 区块链

一、区块链的基本信息

1. 什么是区块链

伴随比特币而生,是一个分布式数据库(本质);一种网络底层协议(抽象);存储引擎、计算引擎

2. 区块链的特点

1)去中心化:所有参与其中的网络节点共同维护,无需中心节点控制

2)不可篡改:一旦发出交易便不可再修改和删除,每笔交易和每个区块都有时间戳

3)匿名性:私钥和地址是使用网络的所有条件,无需身份验证

4)可追溯性

二、区块链协议

区块链是一种网络底层协议,可以分为数据层、网络层、共识层、激励层、合约层、应用层

4

1. 数据层

区块链数据、链式结构、哈希函数、Merkel树、非对称加密、时间戳。数据层需要突破的是区块容量的问题

2. 网络层

P2P 网络、传播机制、验证机制(自组网)

3. 共识层

共识机制:可以使所有的节点对某一状态达成一致的方式,有共识机制去中心化才有意义,才具备可信度,否则只是数据共享。目前主流的共识机制有:POW、POS、DPOS、PBFT

1)POW(Proof of Work):工作量证明

  特点:算一道很难的谜题,系统给予挖矿奖励;多劳多得

  优点:

     ① 所有节点均可参与,记账权公平的分派到每个节点,去中心化

     ② 多劳多得,矿工的积极性高

     ③ 安全性高,欺诈成本高,如果能够欺诈成功,那么做诚实节点收益更大

  缺点:

     ① 主流矿池垄断严重,存在51%算力攻击风险

     ② 浪费资源严重(2018年底消耗全球0.5%的电量)

     ③ 持币人没有话语权,算力决定一切

     ④ 网络性能低,共识时间长

  项目:比特币、以太坊、比原链等

2)POS(Proof of Stake):股权证明,根据持有货币的量和时间来发利息(币天销毁)

  特点:

     ① 不挖矿,依靠币龄(持币数量 * 持有天数)决定记账权,利息即为奖励

     ② 按钱分配,钱生钱

  优点:

     ① 在一定程度上缩短了共识打成的时间

     ② 节约资源

     ③ 防作弊,币龄越大,获得记账权几率越大、避免51%攻击,因为攻击会使自己的权益受损

  缺点:数字货币过于集中化,富有者越来越富有,散户参与积极性低

3)DPOS(Delegated Proof of Stake):委托权益证明

  让每一个持有币的人进行投票,由此产生 n 个代表,可以理解为 n 个超级节点或矿池,这 n 个超级节点彼此的权利是完全相等的

  特点:不挖矿,每年按比例增发代币,奖励超级节点

  优点:高效、扩展性强

  缺点:非去中心化,而是多中心化

  项目:EOS

4)PBFT 后期会单独讲解

4. 激励层:发行机制,分配机制

5. 合约层

智能合约

  定义:一个智能合约是一套以数字形式定义的承诺,包括参与方可以在上面执行这些承诺的协议

  本质:数字化合同

  特点:代码代替人仲裁和执行合同,同时能够触发支付

  1)构建:本地构建

     智能合约由区块链内的多个用户共同参与制定,可用于用户之间的任何交易行为。协议种明确了双方的权利和义务,开发人员将这些权利和义务以电子化的方式进行编程,代码中包含会触发合约自动执行的条件

  2)存储:链上存储

     一旦编码完成,这份智能合约就被上传到区块链网络上,即全网验证节点都会收到你和对方的合约

  3)执行:EVM 中执行

     ① 智能合约会定期检查是否存在相关事件和触发条件,满足条件的事件将会推送到待验证的队列中

     ② 区块链上的验证节点先对该事件进行验证签名,以确保其有效性;等大多数验证节点对该事件达成共识后,智能合约将成功执行,并通知用户

6. 应用层:业务逻辑

三、区块链的分类

按应用场景可分为:

1)公有链:所有人都可以随时加入和退出,每个节点平等,都有权交易和记账,属于开放式      代表:比特币、以太坊等

2)联盟链:仅部分人参与,加入和退出需要授权,选定某些节点为记账人,其他人可以交易,但无记账权,属于半封闭式     代表:R3CEV、IBM Farbric

3)私有链:公司内部使用,可实现更好的权限控制,管理和审计,属于半封闭式

四、区块链的相关概念

1. 矿工:由运行比特币客户端的节点充当,竞争记账权,从而获得奖励

2. 矿机:CPU挖矿 —> GPU挖矿 –> FPGA挖矿 –> ASIC挖矿(专业矿机)

3. 挖矿

   1)矿场:集中矿机设备的场所

   2)矿池:一个软件,矿场和普通矿工接入,矿池负责打包,接入的设备负责挖矿,按照贡献算力的比例来分配收益

4. 算力:即计算能力,表明一个矿工挖矿的能力,算力越大算出 Hash 值的概率就越高

5. 分叉:代码升级时不同社区意见发生分歧时的结果,出现重大 bug 修复会分叉

   1)软分叉:旧节点接收新协议产生的区块,毫无感知,新老协议共同维护一条链

   2)硬分叉:旧节点拒绝接收新节点创造的区块,从此分裂为两条独立的链(以太坊分叉)

6. 叔块(孤块)

在同一时间出现两个矿工同时挖出矿的情况,此时出现临时的分叉,区块链会同时保留两条链,并等待新生成的区块,新区块选择连接的链就是最长链,即主链,那么另外一个区块就被称为叔块(以太坊中的叔块是有奖励的,比特币中的叔块无奖励)。

7. 节点

    1)轻节点SPV(Simplifed Payment Verification):手机端钱包,只同步所有区块头信息以及和自己相关的交易数据

    2)全节点:包含账本的节点

    联盟链中还可以细分为共识节点、交易节点、账本节点、钱包节点、托管节点

8. 代币(Token):创建交易以及运行智能合约运行的燃料,以太坊代币为 eth,燃料为 gas,最小单位为 wei

9. 钱包:创建公私钥,保存私钥,相当于钱包,可以存放多个地址

    种类:PC 钱包、手机钱包、轻节点钱包

posted @ 2019-01-14 14:50  crawl+  阅读(1261)  评论(4编辑  收藏  举报