[TOC]

前言简述

区块链技术难点:TPS、延迟时间、容量和带宽、安全等方面。
区块链技术的集成应用在新技术革新和产业变革中起到的重要作用,广泛用于加密货币,食品链安全,知识产权,资产管理等领域,加快推动区块链技术和产业创新发展;

区块链应用

1.比特币-Bitcoin

描述:Bitcoin 是一种虚拟的匿名电子货币或者数字货币,由网络极客中本聪(网名)于2008年11月1日,提出概念(一种去中心化的电子记账系统)和白皮书(比特币一种点对点的电子现金系统),它是区块链实现的具体产物;

Q:什么是区块链?
答:它实际就是一大堆的交易信息;

Q:什么是去中心化的电子记账系统?
答:简单的说就是链中的各个成员都有完整一份电子记账记录,保持区块节链最长的到本地,防止抵赖因为每个人手里都有一份转账记录(由信息广播而来))并且是公开透明的;

1
2
3
4
5
6
7
8
9
10
11
A <----> B
^ \ ^
| \ |
v \ v
C <----> D

# 一个区块(1M)大小4000条

A --(10 BTC)--> B
B --(5 BTC)--> C
C --(2 BTC)--> D

挖矿原理:
描述:比特币系统由用户(用户通过密钥控制钱包)、交易(交易都会被广播到整个比特币网络)和矿工(通过竞争计算生成在每个节点达成共识的区块链,区块链是一个分布式的公共权威账簿,包含了比特币网络发生的所有的交易)组成

中本聪把通过消耗CPU的电力和时间来产生比特币,比喻成金矿消耗资源将黄金注入经济。比特币的挖矿与节点软件主要是透过点对点网络、数字签名、交互式证明系统来进行发起零知识证明与验证交易。

实现流程:
实际就是采用一个哈希函数(数字摘要或者散列函数)数学问题,它可以把一个字符串通过一定的运算转换成为一个摘要的形式,通常上述流程称为正算,而一般反向算都比较难比如 x+log2^x+sinx=y我们知道y却很难推算出全部满足条件的x,例如 Sha256(“apple”)=101011010……..10 (256位)它是美国国家安全局发明的一种算法,其中挖矿要计算的也是基于这个SHA256运算;

比如这个区块链已经链接到了某一个位置,从最开始的的一个块开始链接,一直链一直到现在时刻的块信息;
它不但包含交易信息,区块实际上是有一个块的头部加上包含的交易信息;

1
块1 - 块2 - 块3 - ..... - 块4  - [头部 + 交易信息]

在接块时候机器需要算一道数学题,即对字符串做两次SHA256散列运算值,首先有一个字符串包含前块的头部,其次是第二个部分就是它现有的这个账单信息,第三部分就是时间戳等等的其他时间,第四部分随机数;

1
2
3
字符串 = 前块头部信息 + 账单 + 时间 + 随机数
Hash = Sha256(Sha256(字符串))
要求:前n位必须是0: 0000000010101010.....1

难度是由前n位为0的确定并且保证每十分钟出一个块然后打包交易信息,例如 (1/2 * 1/2 * 1/2 ... x 1/2 ) = (1/2)^n即n越小难度就越低,n越大难度就越大;

例如: 10000 台矿机而每台矿机的计算能力是14个T每秒1.4 10 ^ 13每秒(1T是10的12次方),那十分钟到底可以算多少次?
答: 这个10分钟应该是600s,然后10000万台挖矿机计算结果是 `1.4
10^13 * 10^4 x 600s = 8 x (10^19),然后假如n为66即概率P=(1/2)^66实际运算的平均次数为2^66大概就是8 x (10^19)`, 此时如果矿机把难度设置成为66时候,第一个能够算出前66位全都是0的人,就成功打包了这个块也成功的挖到这个矿,挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的散列值低于某个特定的目标,您没有办法将自己的运气变好比如第一个算出的数字都满足打包要求,你可以增加矿机来提高概率,这便是比特币挖矿的一些基本实现原理;


问题1:如何记账?为了什么要记录一个跟我无关的条目?打包奖励大约有多少个?

答:BTC的记账奖励分为手续费打包奖励(一个),每十分钟打一个包最开始这一个包会奖励打包者50比特币,过了四年后每打一个包会奖励您25比特币,然后每过四年一个循环将比特币进行减半;
即:每个区块的奖励不是固定不变的 ,每开采210000个区块,大约耗时4年,货币发行速率降低50%。


问题2:以谁为准?什么是挖矿?

答:工作量证明,计算一个无法通过脑子进行运算某个计算只能通过电脑的GPU进行并行运算得出结果,该过程称为挖矿


问题3:如何防伪?

答:常规的身份认证(人脸,签名,指纹),而BTC的身份认证是采用电子签名实现的;

1
2
3
4
5
6
7
8
9
10
> 电子签名: 随机数 --->>> 私钥(保密-加密字符串) --->>> 公钥(公开-解密字符串) --->>> 地址(公开); #实际是一种加密手段
别人转账给您: 你需要将地址告诉他人即可;
您转账给别人: 你需要把公钥和地址一起发送过去;

例如:A转10BTC给B用户
#1.转账:A -- (10 BTC) --> B --(HASH)--> 摘要 --(密钥加密)--> 密码
#2.广播:A 全网广播给 B 用户 10BTC + 公钥 + 密码
| (其它用户采用sha256算法进行计算) | (公钥与密码解密出摘要)
摘 要 VS 摘 要
#3.对比摘要保证了A发给B的消息都是由A进行签发的(而不是伪造的),实际上是利用这哈希运算的来进行电子签名;


问题4:双重支付问题?

答: 当A给B转10BTC然后A根本都没有这10BTC,而A只有10BTC而分别给C/B用户进行转账10BTC,这就导致了双重支付问题的发生,如何解决?

1
2
3
4
5
6
7
8
9
10
#1.余额检查(大概原理)
块1[创世纪] - [块2] - [块3] - [块4](A获得50BTC) - [块5](A支付20BTC) - [块n] # A 用户则剩余撒30BTC
#2.此时A转给B用户10BTC的消息将会被网络所接受,但如果A转给B用户60BTC的消息不满足余额检查返回值那么别人会拒绝这条消息所以这条消息不会被确认;
#3.何时被确定直到您这条消息别别人接受并且打包到一个新的块里面,所以通过追溯的方式解决余额检查问题;
#4.双重支付问题,有可能有的人收到A转账给B的消息也有的人接收到A转账给C的消息,那到底谁转账成功呢?
-->> B
(A)10 BTC
-->> C
#5.此时加入分别有甲乙两个分别记录A转账给B/C用户,并分别记录到将要打包的块中,此时有一个幸运儿甲计算出挖矿的数学题,拥有了打包的权利;
块1[创世纪] - [块2] - [块3] - [块4](A获得50BTC) - [块5](A支付20BTC) - [块n-2] - [块n-1](A支付10BTC给B消息将被确认,同时A转账C消息将被抛弃) - [块n] #等待块已经链接到主链上才能保证转账到账


问题5.如何防止篡改问题?
答: (1)满足最长链原则; (2)更改信息它需要对抗所有挖矿机器(计算能力超过世界上其余所有人)将自己的链设置为最长从而让正常正确的信息链被丢弃而接入到被篡改后的链之中(基本不可能实现)此时伪造成功;(3) 一般大交易都需要多等几个块被确认比如等6个块之后我们基本认为没有可能再进行篡改了;

总结:

  • 1.比特币作为一种技术手段是非常新颖并且漂亮的,BTC也没有一个中心发行机构不用担心主权危机,比特币总量固定不会存在滥发的风险;
  • 2.比特币天生具有防伪属性并且可以追溯,同时在进行比特币交易的时候手续费是非常低;
  • 3.比特币指数((BTC/USD) 美元/个))行情:https://finance.sina.com.cn/money/forex/hq/BTCBTCUSD.shtml