《区块链和数字加密货币》学习笔记一
第一章:比特币-区块链的第一个应用
目录
1.2 比特币的来源
1.3 比特币是什么
1.4数字签名
1.5不能篡改的区块链
1.2 比特币的来源
1、是以区块链为底层技术的网络
2、区块链网络创造出来的价值载体
自比特币诞生时起就将比特币总量设定为2100万枚。这一做法避免了各国央行出于控制经济需求而印刷纸币所带来的问题
比特币如何创造出来
自2009年1月以来,每十分钟系统就会产出50枚比特币(与传统金融机构货币的发行相当)。每四年时间(约相当于21万区块的数量?4.4 加密数字货币的减半),系统的比特币产量将减少一半。至2140年时为止,所有比特币将被耗尽。

自** Bitcoin 项目于****(即**)开始实施第三个阶段的币块奖励机制
截至2020年2月份,系统中一共产生出1800+万枚比特币。
区块链采用链式架构设计,并非线性组织的形式。它由多个独立的区块构成,并通过链接的方式连接在一起。每个区块都充当数据存储的基本单位。区块链中的第一个新区块格式如下(是由中本聪发明的):

摘要:一些哈希值(以后讲)
交易:包含该区块中的记录(在不同地址之间转移资金的行为),类似于传统上通过账户进行的转账行为。
1.3 比特币是什么
比特币的三个特征:
一、目标:完成一次商品交易
购买商品的行为即为完成一次商品交易(通常由一方直接提供给另一方)。
二、方式:直接
直接进行的资金转移方式无需第三方中介支持。
三、采用的交易货币是比特币。
总结而言, 比特币既是基于区块链技术的一种数字货币, 同时也是用于交易的一种工具
比特币在其最核心的优势上与经典的交易结算体系不同,在于它采用的是基于直接交易的技术架构,并不依赖任何第三方中介服务。
比特币用密码的方式创建信任,确保两件事情:
一、我的钱只能我花出去(如何保证,请看1.4数字签名)
二、及时记好每一笔账,避免篡改,避免双花(双花:同一笔钱因不当操作被重复使用)(如何保证,请看1.5不能篡改的区块链)
1.4数字签名
对称加密:开锁和关锁用同一把钥匙

非对称加密系统:使用两把不同的钥匙分别进行开锁与闭锁操作,在密码学领域中将其称为公钥与私钥

私钥:只能自己看到
公钥:所有人都可以看到
总是成对出现,可以用公钥加密私钥解密,也可以用私钥加密公钥解密。
公钥加密与私钥解密:其常见应用场景在于'保障通信过程中的数据安全性'
使用私钥进行加密和公钥进行解密是一种常见的操作流程。(其中,这种操作通常用于'由持有者进行交易认证')(例如,在金融交易中,当一方使用其私人密码(即私人密钥)时)
比特币中的数字签名用的就是私钥加密公钥解密这个概念。
数字签名的三个步骤:
1、生成私钥和公钥:generatekeys
私钥:私密,用于签名
公钥:公开,用于验证签名
2、生成数字签名:sign
数字签名是以私钥以及要加密的消息、合同或概念的内容给它签上自己的名字。生成数字签名需要私钥和对应的消息。
数字签名=SIGN(私钥,MESSAGE)
3、验证签名:verify
需要三方面的信息来验证这个签名:签名用的公钥、被签的内容以及这个数字签名来验证签名是否是私钥拥有者签署的
VERIFY(公钥,MESSAGE,数字签名)
地址就是公钥
1.5不能篡改的区块链
一、哈希函数
该哈希运算将任意数据类型转换为固定长度的数值表示。
如图所示, 哈希函数类似于数学中的映射工具, 能够处理所有种类的数据信息, 包括文档文本、法律合同文件以及数字图像等. 经由哈希运算处理后生成固定长度的独特数值标识.


哈希函数【F(x)=y】两大特征:
1、已知y,很难知道x
2、两个不同的x得不到同一个y
比特币网络所应用的哈希函数为SHA256算法。具体而言,该算法计算出的结果必定是256位长,并且其取值范围必然是从0到2^{256}-1之间。
哈希函数如何保证比特币这个点对点的电子现金系统记得账不被篡改?
记账的储存格式:
区块链采用环状结构来组织数据。每个区块充当存储数据信息的基本单元,并且按照时间序列排列进行连接。每个这样的单元主要包括两大部分:块头和块体的内容。

每个区块的区块头中包含了上一个区块里面的所有信息。
区块头中的信息:
version:当前使用的版本号。
Previous block header hash: 上一区块头对应的哈希值。
Timestamp: 该区块的时间戳字段记录了生成时间。
Difficulty: 区链网络中决定新区块能否加入主链的关键参数。
Nonce: 非重复随机数,在区块链中用于防止相同的交易被多次确认。
MerkleRoot: 当前区块所有交易数据经过计算得到的结果。
区块体中的信息:
交易信息(就是十分钟内新产生的交易的信息)
为什么说使用哈希函数记的账不会被篡改?
在区块头中存在两个极其重要的信息包括Previous block header hash以及MerkleRoot
由于每个哈希值都与原始数据存在一一对应的关系,在此情况下我们可以把哈希值类比为其中所包含的原始数据内容。类似于Previous block header hash可以被视为前一区间所包含的具体内容描述。而MerkleRoot则代表了当前区间内的所有交易信息集合。这样一来,在这种情况下每一个区间的块头不仅记录了本区间内所有新发生的交易事件,并且也会同时记录上一区间的相关交易信息。同样地,在此基础之上,前一区间的块头还会连接到再往前的一个区间。综上所述

当创建一个新的区块链网络时
1.6比特币分叉
如何让交易速度更快?
这个问题涉及到了比特币的一个关键指标:区块大小。 Bitcoin 在其设计初期设定为每个区块存储 1 MB 的数据量. 每个 区块包含了反映过去十分钟内发生的全部交易情况. 那么 1 MB 的空间是否足以记录下这一分钟内的全部交易呢?

由于区块容量有限制,在处理比特币交易时存在瓶颈。当比特币价格上升时,在进行交易的同时可能会导致部分订单无法及时记录到新区块中,并因此影响整个区块链网络的运行效率。围绕如何扩展新区块容量的技术方案,在核心开发者、相关利益相关者以及普通用户之间引发了激烈的讨论。
支持者:认为比特币就应该用于频繁的交易支付
反方观点认为,在区块链生态系统中扩大区块容量会导致系统整体安全性降低。在理论上构建一个完全开放透明的安全区块链网络将依赖于各方参与者共同维护其安全性机制。随着技术发展与市场需求的增长,在实际应用中将出现每个新区块所承载交易信息数量显著提升的情况。相应地,在实际运行过程中各节点为了保证系统的可靠性必须具备处理大量数据的能力。这也不仅增加了运营成本还可能抑制更多开发者加入该系统进而影响整个比特币生态链的安全稳定性
在发生激烈争议的情况下于2017年8月1日正式发生了一次硬分叉事件,在这次事件中被分割出来的货币被正式称为BCH(Bitcoin Cash),
硬分叉:Hard Fork指区块链使用的技术进行永久更改之后,所有的新区块和原来的区块产生的方式就会不同,旧版本不接受新版本创建的区块,从而导致一条新的链的产生。网络中支持旧的区块链的节点会继续维护旧的区块链,支持新的区块链的节点会去维护新的链,这样就从原来的一条链变成新老两条链。(比如word升级后,使用新版本无法打开旧版本,这就是硬分叉)
软分叉:区块链网络进行技术升级改造后,所有的用户和所有的社区开发者还是持续接受这个旧版本,没有新老两条链。
