比特币加密算法
身份标识
在比特币中,身份本质上是一对公钥和私钥。
但是公钥和私钥本质上只是随机字符序列,人类无法肉眼读取,使用Base58编码转换,同时可以解码回去。
数字签名
使用数字签名保证:
- 数据传输过程中不被修改
- 数据的发送方可以被确定
- 发送方无法否认发送过的事实
密钥生成
私钥生成
比特币使用椭圆曲线生成私钥,随机选取在 0 与 2^2^56中的数,略小于可观测宇宙原子数。
公钥生成
公钥本质上是私钥在椭圆上的x轴和y轴相加。
ECDSA签名
比特币使用ECDSA对数据进行签名。
签名需要:
- 待签名数据
- 私钥
验证需要:
- 被签名数据
- 公钥
- 签名
交易验证
当一个人发送币的时候,要在input中带上:
- 自己的公钥(用于匹配utxo)
- 整个交易的一个签名(由自己创建)
比特币网络其他节点也会检查:
- 这个公钥是否引用合法
- 签名是否可以用这个人的公钥验证
地址生成
经历一系列的算法后可以生成一个地址。
这个为真实的地址,甚至可以在https://blockchain.info/ 查询余额,只是余额为0而已。
评论