这次要介绍的概念有:
private key , public key , sign, message signature, verify。
演示网址。
1 私钥和公钥是配对的俩个概念。输入不同的私钥就会配对出不同的公钥。但是如同hash与data的关系,你无法从公钥反推出私钥是什么。你也可以对私钥执行random操作,得到一个随机的数列,作为私钥。
2 签名。
输入信息后,你可以利用自己的私钥,对这个信息执行sign操作,也就是签名。签名后会产生一个叫做message signature的数列。这个东西注意,并不是你的public key,俩者值不一样。
3 verify。确认。
这时候,连同你的信息(message),以及私钥,公钥,信息签名等数字,执行确认操作,就会使之生效。
4 交易。
在交易的时候,你输入的信息就是金额,from和to。用你的私钥进行签名。再进行确认(verify)。
5 blockchain里面的信息。
在token里面,出现的数据是 金额,from和to,以及与此对应的签名。其中from 和to的信息不是某个人的名字,而是一段公钥数列,用来指代身份。(那么如此看来,一个人可以拥有多个私钥和公钥吗?可以随意每次交易的时候产生不同的配对?还是说,一个人只能有一对公钥和私钥?)
所有的人都会在token里面看到,金额,from一个公钥地址to另一个公钥,以及与此相应的签名。
6 篡改。
当你篡改交易记录时,比如修改交易金额,由于数据发生了变化,这个block就会invalidate。这是之前就讲过的内容。
但与此同时,相应的交易数字签名也会broken(not verified。)
如果这个时候你执行mine操作,这个block会validate,但是上述的签名依然是显示not verified。
因为对于这条信息,你没有相应的from一方的private key来使这条交易信息verified。(也就是说,你需要相应的私钥来执行verify)。
也就是说,如果你私自去篡改交易记录,会有俩个障碍:1 mine的难度;2 该记录的签名无效,而你无法得到private key以进行verify(问题是,我能篡改记录上的from和to吗?呵呵,from只能是你自己啊,如此篡改,你自己就只能转出金额了)。
7 回顾。
讲到这里,我们再回顾一下。注意这是我个人目前的理解。一个人,拥有一定数量的比特币,以及自己的私钥公钥,当他要给某人转账的时候,他输入对方的公钥地址和转账的金额,并且用私钥对转账记录进行签名,产生一个独一无二的针对此次交易的数字签名,执行确认操作以后,这条记录就会被系统执行,记入所有人都能看到的token数据里面(也就是账本)。
俩个科普视频算是看完了。
接下来,去看看b站上的一个视频,具体看看客户端是怎么用的。
先有感性的认识吧,然后再去扒扒论文什么的。