027.
比特币地址、公钥、私钥都是什么?
从2009年至今,全球所有的比特币交易记录对所有人都是可见的。交易记录中包括交易流水单号、发币人的发币地址、收币人地址、发币人的找零地址。也就是说,全球所有用户的地址都可以被任何人知道。由此可知,如果中本聪在设立比特币机制时,仅使用“告诉钱包地址是多少”的方式就能完成交易,那么整个交易机制就是危险的,任何人都可以随便将别人的地址假装成自己的地址,跟别人进行交易。于是在整个机制中,也就有了私钥和公钥的概念。
私钥主要用来证明这笔交易的发起人确实是比特币的所有者,它是一串很长的随机数,比如,4KeZdDEu11z3gPrtuX3phjwGnNP4RFd7yyrCVC1j2W LBB9ZXMCJ,就是由钱包替用户随机生成的。一定不能将私钥随意泄露给别人,否则别人就可以轻松地将你的比特币转走,再也拿不回来。所以,使用钱包交易的前提是相信钱包不会盗取你的私钥。
公钥是由私钥通过算法生成的,通过私钥可以计算出唯一一个公钥,但公钥并不能逆向推导出私钥;地址是由公钥通过算法生成,通过公钥可以计算出唯一一个地址,但地址并不能逆向推导出公钥。中本聪设计了如下机制:钱包先将私钥通过加密算法A加密,再将加密后的字符串(也叫作签名)、公钥一起发送给矿工;矿工收到信息后,将签名、公钥带入一个验证函数F中,如果得出的结果为“true”,矿工就会认为这个交易发起人确实是持币者发起的。
比特币地址、公钥、私钥有什么用呢?
在交易流程中,钱包会用张三的私钥通过加密算法生成一段加密过的私钥,然后与公钥一起写到交易信息里,再发给全球矿工。此时,矿工收到了这笔交易信息,信息里包括:交易流水单号、发币人地址、收币人地址、发币人提供的加密过的私钥、发币人的公钥。矿工将加密过的私钥、公钥带入上面提到的公式中,等待程序验证。如果程序反馈给矿工“true”,即可表明这笔交易确实是持币者发起的;如果程序反馈给矿工“false”,说明这笔交易存在问题,不能被验证通过。如此,张三就不用将自己的私钥发给矿工了,这样既能让矿工简单地验证这笔交易是否由持币者发起,又能保证自己的私钥不外泄。