北大肖臻老师<<区块链技术>>笔记1

课程的大纲

  1. 密码学基础
  2. 比特币的数据结构
  3. 共识协议和系统实现
  4. 挖矿算法和难度调整
  5. 比特币的脚本
  6. 软分叉和硬分叉
  7. 匿名和隐私保护

以太坊是后面的

首先是密码学基础的学习:

crypto-currency(虚拟货币)是不加密的,区块链上所有的教以都是公开的。其中有转账金额和地址。

cryptographc hash function(密码学哈希函数)特点

1.collision resistance 哈希碰撞 (目前无法避免的)

例如:有两个值x和y,其中x!=y,但是hash出来的值H(x)==H(y),这样就是发生了哈希碰撞(collision resistance)。

输入的数值样式可以有很多,无限个。但是哈希函数出来的值是有限个的。可以用来检测数据是否被进行了更改。hash值如果进行了更改就会与原来的值对不上。

没有什么高效的方法去制作人为的哈希碰撞。如果知道一个y,没有特定的寻找x的方法使得H(x)==H(y),只可以使用brute-force(蛮力),一个个去寻找。

目前没有那个哈希函数能在数学上证明是哈希碰撞的。

但是以前MD5刚开始也是认为是哈希碰撞的。但后来人们找到可以人为进行碰撞的方法,所以它并不安全。

扫描二维码关注公众号,回复: 14833802 查看本文章

2.hiding 单向不可逆

例如:知道一个x,可以计算H(x)。但是知道H(x)却计算不出来x。

因为每一个都可以进行蛮力求解,所以hiding成立需要输入的结果的空间足够的大,这样可以保证每种可能性都大致相同。

其中collision resistance(哈希碰撞)+hiding(单向不可逆)

可以生成digital commitment(数字委托)或者说是digital equivalent of a sealed envelope(数字等效)类似于可以提前把结果放在公证人哪里,等结果出来与之对比。

在hash函数这里就是对数据进行加密,因为hiding的性质,当hash函数加密之后的数据进行更改的时候,就没有办法解密成原来的样子(用到了 collision resistance性质)。

但是如果输入的数据样本过少,可以在后面加上nonce(随机数),这样增大输入空间保证hiding的性质。

3.比特币中的哈希函数往往还有性质3

3.puzzle friendly (没有捷径)

意思是如果你想计算出来的哈希函数满足某些条件或者是某种范围,你没有捷径,puzzle friendly只可以一个个的去尝试。

比特币挖矿的过程就是去寻找一个nonce(随机数),随机数加上区块块头中的其他信息合并在一起作为输入,取得哈希值要小于特定的值。

所以因为有puzzle friendly这个性质使得挖比特币得过程是没有捷径得,只可以一个个得去尝试。

这里提到一个proof of work表示的是挖矿中得工作证明。

可能第一个性质和第三个性质容易搞混

第三个性质(puzzle friendly)意思是无法人为得去获取特定(特征值)得哈希值。

第一个性质(collision resistance) 意思是无法人为的创造哈希碰撞。

这里也有一句话 difficult to solve,but essay to verify

虽然找到一个符合要求的nonce很难,但一旦找到之后去证明是否正确是很简单的,只需要进行一遍计算即可。

SHA-256

比特币使用的哈希函数 SHA-> secure hash algorithm

对称和非对称加密体系

对称是加密和解密用的同一个密钥。

非对称是有一对(public key,private key)

加密利用公钥,解密利用私钥。这里注意加密和解密都要使用的是接收方的公钥和私钥。

比特币签名

因为加密货币是不加密的,需要非对称加密进行签名。意思是比特币的交易是谁发起的,例如用户A用自己的私钥对交易进行签名,其他用户拿到交易信息之后利用A的公钥去验证签名的正确性。

比特币中的签名一般是先对内容取一个哈希,然后再签名。

而且私钥和公钥重复概率极低,目前没有出现。

2022.5.29学习内容总结

猜你喜欢

转载自blog.csdn.net/qq_45859272/article/details/125038712