在谈到比特币的时候,常常会谈到私钥、公钥、和地址, 理解这三者的关系,我们才能理解比特币。
作为一个现金系统,涉及到二个必须要解决的问题。
1.如何控制账户的资金。
2.如何验证这些交易是谁发出来的。
换一个更通俗的说法就是怎么证明我是账户资金的所有者及怎么样证明小强今天收到的比特币是我发送的,这个涉及公钥密码学。
密钥
在非对称密码学里,密钥是成对出现的,分为私钥和公钥。私钥用于数字签名,确认资金的所有权,类似于银行交易中的“签名”,有了私钥就有了控制资金的权利。 公钥用于交易中的收款确认,类似于银行交易中的“收款方”。
私钥
私钥用于控制比特币交易时的签名,只有你拥有私钥才能控制账户的资金,相当于银行账户的交易密码,私钥也用来解密用公钥加密的信息。一个私钥经过椭圆曲线变换之后能够得到公钥,公钥是一个65个byte数组
公钥
公钥用来验证交易的签名,一个私钥签名的数据,只有对应的公钥才能对其进行验证,而地址也是从公钥生成的,这样就可以验证花费的交易是不是属于这个地址。
地址
公钥太长了,所以就有更短一些的地址的概念,地址是有公钥生成的,可以看作是公钥的数值指纹。
公钥、私钥、地址三者的关系
私钥生成公钥。
公钥生成地址。
由私钥生成公钥和公钥生成地址都是单向哈希函数,也就是私钥很容易推导出公钥公钥很容易推导地址,也就是有私钥很容易推导出公钥和地址,反过来几乎不可能,就算用现在最先进的电脑算也需要数千年才能完成。这个就是比特币安全的基础。私钥用来签名交易,公钥用来验证私钥签名的交易,地址用来收款。当然这么牛逼的公钥密码学并不局限于用在加密货币领域,同时也解决了互联网使用中的安全问题
在比特币系统里一笔交易怎么发生?
公钥在比特币系统里是公开的。
发起交易:
我通过私钥签名了一笔发送给小明的交易。同时用小明的公钥加密这笔交易。
验证交易
小明用自己的私钥验证了,这笔交易是发给他的,同时用我的公钥验证这笔交易是由我的私钥签名的。
网友评论