Contents

学习笔记1——北大肖臻《区块链技术与应用》

比特币

一、密码学基础

1、哈希函数

比特币是crypto-currency加密货币,实际上并不加密,而是公开,用在加密货币的哈希函数称为cryptographic hash function,比特币的哈希函数为sha-256

特点

  • collision resistance抗碰撞性
    对两个不等输入xy,很难出现使得H(x)=H(y)的情形,假设哈希函数有256位,共有$2^{256}$种数据。
    md5被证明不安全。 抗碰撞性可以用于对mH(m)作为digest验证不变性。

  • hiding不可逆性
    给定x可以得到H(x),无法逆推。 结合collision resistance可以实现digital commitment,或者digital equivalent of a sealed envelope,将预测的数据哈希值公布,待结果出现后再验证数据做哈希函数,条件是输入需要足够大且具备随机性,通常的方法是拼接一个随机数。

  • puzzle friendly
    对于给定的随机数值H(x),求出对应的x不存在捷径只能逐步试出。挖矿指找出nonce,使得H(nonce of block header)<=target,这个过程只能通过brute-force,因此也称为proof of work。挖矿很难,验证很容易。

2、签名

比特币创建账户只需创建一个公私钥对,公私钥应用了非对称加密(asymmetric encryption algorithm),运用于签名,即将交易信息用私钥签名,他人用公钥进行验证。产生公私钥需要a good source of randomness