北大肖臻老师《区块链技术与应用》公开课学习笔记。

比特币又称加密货币,但其实加密货币并没有加密:区块链中的所有信息都是公开的,包括交易的内容、交易的金额以及交易账户的地址。之所以称之为加密货币,主要是因为交易的双方在不与真实世界发生关联的情况下,双方的身份是无法获知的。

比特币中主要用到了密码学中的“哈希”和“签名”。

密码学中用的哈希被称作Cryptographic Hash Function,它有两个重要的性质:

  • Collision resistance:抗碰撞性。哈希碰撞是指给定$x \neq y$,但经过哈希运算后,$H(x) = H(y)$,这种情况被称为“哈希碰撞”。哈希碰撞是不可避免的,输出空间是有限的,但输入空间是无限的。假如一个256位的哈希值,那么它的输出空间为$2^{256}$,即它的输出有$2^{256}$种可能,但它的输入空间是无限大的。按照“鸽笼原理”(又称抽屉原理),必然会出现不同输入映射到同一输出的情况。Collision resistance并不是说不会出现哈希碰撞,而是说没有高效的方法来人为地制造哈希碰撞,即给定一个$x$,没有高效的方法找到一个$y$,使$H(x) = H(y)$。这一性质可以防止消息被篡改。
  • Hiding:隐匿。即哈希函数的计算过程是单向、不可逆的。给定一个$x$,可以计算出$H(x)$,但无法从$H(x)$逆推出$x$。其成立的条件是输入空间必须足够大且均匀分布的。与Collision resistance性质结合,可以实现digital commitment(数字承诺)。

鸽笼原理:如果有5只鸽子笼,养鸽人养了6只鸽子,那么当鸽子飞回笼中后,至少有一个笼子中有2只鸽子。

除了上述的两个性质之外,比特币中的哈希函数还要求:

  • Puzzle friendly:即哈希值的计算是不可预知。Difficult to solve, but easy to verify.

BTC中用的哈希函数:SHA-256

BTC中账户的创建与现实中创建银行账户不同。在BTC中,任何人都可以随时随地地创建账户,用户只需在本地创建一个公私钥对,即一个公私钥对即为一个账户。公私钥对是非对称加密算法中的概念。公钥加密,私钥解密是常见的公私钥加密用法。私钥加密,公钥解密就是“签名”的过程。

在BTC系统中,用户的公钥即为其地址,发布交易时,用户需要用其私钥对交易进行签名,其他用户可以用其公钥对该交易进行验证。生成公私钥时需要有个好的随机源,否则容易造成私钥泄露。


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意