区块链扫盲:区块链技术初探(一)

一、区块链技术

1. 什么是区块链?

去中心化的、分布式的、区块化存储的数据库

存储全部账户余额及交易流水的总账本

每个节点有完整的账本数据

账本数据记录了全部的历史交易数据 

交易数据存储在区块上

每个区块包含前一区块ID及HASH,形成链

2. 区块链基本原理

如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识

生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确

认。

交易(Transaction):一次操作,导致账本状态的一次改变,如添加

一条记录

区块(Block):记录一段时间内发生的交易和状态结果,是对当前账

本状态的一次共识

链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化

的日志记录。

3. 区块链要解决的问题

如何去中心化地共享数据?

如何确保账户不被冒用?

如何确保账户余额足够?

如何确保交易记录不被篡改?

谁负责记账?怎么保障记账者的可信?

怎么保障记账者的积极性?

4. 区块链特性

去中心化

开放性(没有限制,开源,数据公开)

去信任(仅信任机器)

自治性,集体维护

可靠的数据库(不可更改,永远可访问)

匿名性,隐私保护

5.核心技术

P2P网络、数字签名、区块化数据库,竞争记账权、共识算法、交易回溯。

二、P2P网络及通信技术(分布式计算网络)

1.自动发现

通过种子文件,获取初始节点(地址及端口)

连接初始节点,获取初始节点知道的Peer

把自己的地址及端口广播给各个Peer

接收各个Peer广播的地址信息,构建出网络的全貌或片段

2. 技术领域

分布式存储、分布式计算、分布式协同

组播

流媒体

搜索引擎

3.通信协议

napster 、Gnutella、eDonkey、 Bittorrent(文件分发协议)

XMPP、Jabber(即时通信协议)

Paxos 、Gossip(分布式系统状态同步协议)

JXTA

4.使用HASH算法及非对称加密及签名技术

每个节点、每个人有唯一的一对公钥及私钥

公钥同时也是每个节点、个人的地址和账号

私钥是证明”我就是我“的唯一手段

HASH算法对数据进行规整

5.算法

RSA、Elgamal、D-H、ECC

SHA256、 RIMPED160

6.通常使用椭圆曲线算法生成密钥对

比特币密钥长度:256位

公钥哈希值=RIMPED160(SHA256(公钥))

比特币地址= +Base58(0+公钥哈希值+校验码)

校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))

7. 加密

发送方使用接收方的公钥加密数据

接收方使用本方的私钥解密数据

通常使用本方面交换对称加密的Key

8.签名

发送方使用HASH算法计算数据的HASH值

发送方使用本方的私钥加密HASH值,得到签名

接收方使用HASH算法计算数据的HASH值

接收方使用发送方的公钥解密签名得到发送的HASH值

比较两个HASH值的一致性

9.参考

ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的

公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,

其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密

文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密

码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,

而其逆运算指数运算可以应用平方-乘的方法有效地计算。也就是说,在适

当的群G中,指数函数是单向函数。

椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度

最高的一种体制。解椭圆曲线上的离散对数问题的最好算法是Pollard rho方

法,其时间复杂度为,是完全指数阶的。其中n为等式(2)中m的二进制表示

的位数。当n=234, 约为2117,需要1.6x1023 MIPS 年的时间。而我们熟

知的RSA所利用的是大整数分解的困难问题,目前对于一般情况下的因数分

解的最好算法的时间复杂度是子指数阶的,当n=2048时,需要

2x1020MIPS年的时间。也就是说当RSA的密钥使用2048位时,ECC的密钥

使用234位所获得的安全强度还高出许多。它们之间的密钥长度却相差达9

倍,当ECC的密钥更大时它们之间差距将更大。更ECC密钥短的优点是非常

明显的,随加密强度的提高,密钥长度变化不大。

DH Diffie-Hellman算法(D-H算法),密钥一致协议,是由公开密钥密

码体制的奠基人Diffie和Hellman所提出的一种思想。简单的说就是允许两

名用户在公开媒体上交换信息以生成”一致”的、可以共享的密钥。换句话

说,就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方

密钥对(公钥、私钥)。以此为基线,作为数据传输保密基础,同时双方使

用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。这样,在

互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对

方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私

钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这

样就完成了网络交互数据的安全通讯!该算法源于中国的同余定理——中国

馀数定理。

三、区块链化数据库

1.典型特征

去中心化的、分布式的、区块化存储的数据库

区块(Header + Body)

随机数

时间戳

包含父区块创建之后、本区块创建之前的全部交易;

满足某个条件的区块HASH;

a) SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x

)) < TARGET

b) Target值由动态的难度系数确定,Target越小,难度越高;

2. 参考

默克尔树是一种二叉树,由一组叶节点、一组中间节点和一个根节点构

成。最下面的大量的叶节点包含基础数据,每个中间节点是它的两个子节点

的哈希,根节点也是由它的两个子节点的哈希,代表了默克尔树的顶部。默

克尔树的目的是允许区块的数据可以零散地传送:节点可以从一个源下载区

块头,从另外的源下载与其有关的树的其它部分,而依然能够确认所有的数

据都是正确的。

默克尔树协议对比特币的长期持续性可以说是至关重要的。在2014年4

月,比特币网络中的一个全节点-存储和处理所有区块的全部数据的节点-需

要占用15GB的内存空间,而且还以每个月超过1GB的速度增长。简化支付

确认(SPV)协议允许另一种节点存在,这样的节点被成为“轻节点”,它下

载区块头,使用区块头确认工作量证明,然后只下载与其交易相关的默克尔

树“分支”。这使得轻节点只要下载整个区块链的一小部分,就可以安全地

确定任何一笔比特币交易的状态和账户的当前余额。

四、记账权竞争及奖励制度(挖矿)

1.概述

为防止可预期的记账节点被控制或攻击,导致错误记账行为,区块链技术采用竞

争记账权的做法:

任何一个节点均可以参与记账,因而记账节点无法预期,也就不容易被

竞争的过程就是看谁最先计算出满足条件的HASH值

每次计算必须以最后1个有效的区块为起点,必须消耗大量的计算机

CPU,增加伪造记账数据的成本

计算的结果必须得到大部分节点的认可(共识算法),才会成为新的区

块。实际算法中,如果该区块位于最长的区块链上,则为正式被认可的区

块,也即大部分节点认可计算结果,并愿意在该结果下继续计算

这个过程被称为挖矿,或工作量证明(POW)。参与挖矿的节点称为

矿工,协同挖矿的矿工联合体称为矿池

a ) 以前1区块为起点,计算满足条件的HASH值;

b ) 将计算的结果广播给其他节点;

c ) 其他节点验证计算结果无误时,认可该结果,并以该结果为起点重新进行计

算;

d ) 单位时间内达到共识认可要求时,该区块成为正式认可

这个过程被称系统为鼓励挖矿的积极性,给予竞争成功的记账节点奖励

a ) 给予每个区块挖矿者直接的“现金”奖励。例如,比特币网络给予25个比特

币,以太坊给予5个以太币;

b ) 以太坊:纳入该区块的交易的手续费,由发起节点和记账节点分成(发起

75%,记账25%)。

你可能感兴趣的:(区块链扫盲:区块链技术初探(一))