课程的大纲
密码学基础比特币的数据结构共识协议和系统实现挖矿算法和难度调整比特币的脚本软分叉和硬分叉匿名和隐私保护以太坊是后面的
首先是密码学基础的学习:
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刚开始也是认为是哈希碰撞的。但后来人们找到可以人为进行碰撞的方法,所以它并不安全。
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表示的是挖矿中得工作z明。
可能第一个性质和第三个性质容易搞混
第三个性质(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学习内容总结
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)