区块链学习笔记(1)——初识区块链

一、区块链的概念

区块链是一个去中心化、去信任的分布式账本技术,由分布式数据存储、点对点传输、共识机制、加密算法等多种技术组合而成。

1、何谓去中心化、去信任

先举个反例,比如淘宝购物,客户下单成功并向支付宝支付款项——>>支付宝收到款项并提醒卖家发货——>>客户收到商品确认收货——>>支付宝收到确认收货通知并将款项打给卖家,交易流程结束。在整个过程中,支付宝相当于一个中心,由他控制着整个交易流程与交易数据,我们选择在支付宝上进行交易,也是基于我们对支付宝的信任,如果支付宝出现问题,比如说被黑客攻击或者数据丢失,那么将会影响到买家与卖家的交易关系,这就是中心化所带来的弊端。

去中心化指的是参与区块链的所有节点的权利都是对等的,不存在一个所谓的中心能控制全局的数据,数据能否被写入区块取决于节点之间的共识机制,这样就保证了区块链中的数据无法被造假和改写,去中心化带来的是信任,这就是去中心化的好处。

2、点对点传输

区块链中有众多节点,节点之间的通信就是基于点对点传输技术,点对点技术(peer-to-peer),简称P2P,又称为对等网络。点对点网络没有客户端或者服务端的概念,只有平等的同级节点,节点在网络上充当其他节点的客户端和服务端。这里就引出了一个问题,既然所有的节点都是平等的,那就代表所有的节点都能写入数据,写入的数据以哪个节点为准,这就是共识机制要解决的问题。

3、共识机制

共识机制是实现区块链数据最终一致性的重要保障,这篇文章介绍了主流的几种共识机制,区块链学习笔记(2)——拜占庭将军问题与共识机制

4、加密算法
  • Hash函数

Hash函数是一种单向密码体制,即从一个明文到密文的不可逆映射,只有加密过程,没有解密过程,Hash函数可以将满足的任意长度的输入进行转换,从而获得固定长度的输出,固定长度的输出被称为原消息的散列值或者消息摘要。典型的Hash函数有两类:消息摘要算法(MD5)和安全散列算法(SHA)

  • RSA、ECC非对称加密

非对称加密是由一对公钥和私钥组成,公钥可以公开,公钥加密的信息只有私钥才能解开,同样的,私钥加密的信息只有公钥才能解开,所以,只要不泄露我们的私钥,那么我们的数据就是安全的。

二、区块链的数据结构

区块链是由一个一个的区块,通过时间顺序链接而成,当前的区块总是引用了上一个区块的哈希值(创世块除外)。区块中包含数据记录、当前区块根哈希、前一区块根哈希、时间戳以及其他信息。

数据记录在存储过程中,通常组织为数形式,比如Merkle梅克尔数,而区块根哈希实际上就是数据记录数的根节点哈希,为根据数据记录数自下而上逐步通过哈希算法计算得出。时间戳为区块的生成时间,其他信息包括区块签名信息,随机值等。

以比特币为例:

image

  • prev_hash

前一个区块的hash值,用于连接前一个区块

  • timestamp

区块的生成时间,可以让交易按照时间维度进行追溯

  • Nonce

随机数,挖矿的过程就是通过不断的变换随机数,使得生成区块的hash值满足定义的难度值

  • Tx_Root

梅克尔数,所有交易的一个汇总Hash,每个交易都有一个hash值,每两个相邻的hash值又会生成一个hash,直到生成最顶上的hash值。

区块链的分类

  • 公共区块链

全世界任何人都可以读取、可以发送交易进行有效确认,任何人都能参与共识过程的区块链

  • 共同体区块链(联盟链)

参与节点是事先选择好的,节点之间一般有良好的网络连接,部分去中心化

  • 私有区块链
    参与的节点只有有限的范围,数据的访问以及使用有严格的权限控制

区块链的特征

  • 去中心化

区块链不依赖与中央处理器节点,全网节点的权利和义务均等,系统数据由全网节点共同维护

  • 透明性

区块链上的数据记录对全网节点是透明的,所有的数据记录任何人都能查看到

  • 开放性

区块链的数据对所有人公开,所有人可以选择进入/离开节点

  • 自治性

区块链采用统一的规范和协议,使整个系统中所有节点能够去信任的环境自由安全的交互数据,记录数据、更新数据。

  • 信息不可篡改

区块链上的数据一旦通过验证并添加到区块链后,将会得到永久的存储,无法更改,除非能够同时控制系统中超过51%的节点,否则单个节点对数据的修改是无效的,其他节点将不会通过此次修改的验证

  • 匿名性

区块链通过技术手段解决了节点间的信任问题,因此所有的交易可以在匿名的情况下进行,双方无需通过公开身份的方式来获取对方的信任

如果您觉得有帮助到您,不妨考虑请作者喝杯咖啡鼓励一下。