身份标识

在比特币中,身份本质上是一对公钥和私钥。

但是公钥和私钥本质上只是随机字符序列,人类无法肉眼读取,使用Base58编码转换,同时可以解码回去。

数字签名

使用数字签名保证:

  • 数据传输过程中不被修改
  • 数据的发送方可以被确定
  • 发送方无法否认发送过的事实

密钥生成

私钥生成

比特币使用椭圆曲线生成私钥,随机选取在 0 与 2^2^56中的数,略小于可观测宇宙原子数。

公钥生成

公钥本质上是私钥在椭圆上的x轴和y轴相加。

ECDSA签名

比特币使用ECDSA对数据进行签名。

签名需要:

  • 待签名数据
  • 私钥

验证需要:

  • 被签名数据
  • 公钥
  • 签名

交易验证

当一个人发送币的时候,要在input中带上:

  • 自己的公钥(用于匹配utxo)
  • 整个交易的一个签名(由自己创建)

比特币网络其他节点也会检查:

  • 这个公钥是否引用合法
  • 签名是否可以用这个人的公钥验证

地址生成

经历一系列的算法后可以生成一个地址。

这个为真实的地址,甚至可以在https://blockchain.info/ 查询余额,只是余额为0而已。