我们都知道,比特币就是一种运用密码学来投资的加密货币,那么,比特币究竟是通过什么样的操作来保证交易过程中的保密性呢?比特币的密码原理又是什么?
比特币钱包中包括了一个私匙和一个公匙,简单的来说私匙就像我们自己的银行账户密码,只有通过这个密码才能打开我们的账号去转账,而公匙就是我们的账号,当我们把账号发给别人对方才可以转账给我们。而私匙和公匙的单一转换性确保了转账来源方的私密安全。什么叫单一转换性?就是说只有私匙可以转化为公匙,公匙不能反向转化为私匙。私匙是一串随机选择的数字,通过椭圆曲线运算(elliptic curve multiplication),转化成另一串数字,也就是公匙。接着,再通过一则单向性哈希密码方程(one-way cryptographic hash function),得到比特币地址。在这两个运算当中,因为他们均非对应方程,也就是说输入值(input)只会有一个对应的输出值(output),但输出值会有多个对应的输入值,所以没有人能通过公匙反方向追查私匙,确保了私匙的安全性。
为了方便大家理解,我来举个例子:在一个鹅毛大雪的冬天,小明从吉林步行送外卖到大连,但是雪太大了,他居然可以做到踏雪无痕。所以,当小明走到大连,当地人问他:“你的外卖是从哪里来的?”小明微微一笑,不予回答。这时,大连人无计可施,因为他们不能从脚步印去判断小明从哪里来的,只有小明自己知道他是从吉林来的。
找到一个随机的数字是在生成“钥匙”里面第一也是最重要的一步。那么,区块链是怎么样使得这个随机生成的数字不会与另一个数字重合呢?原来,在比特币系统里面包含了2^256(准确的来说是n=1.158*10^77)个数字,这个数字有多大呢?大过宇宙里面所有原子数量的总和。基于这一点,这个随机生成的数字与另一个随机生成数字重合的几率微乎其微。
选择了这个随机数字之后,我们需要通过椭圆曲线运算来生成公匙。它的代表公式为:K=k*G。大K就是公匙,小k是私匙,G是一个常数,我们称之为转化常数(generatingconstant)。
上面的图片就是比特币的椭圆曲线,这个特殊的曲线叫secp256k1曲线,它包含了一个这样的方程:y^2 = x^3 7 在 有限集的p的域里。而p是一个很大,接近2^256的质数。但又由于这个方程是被定义在有限的数里面,事实上,这个曲线并不平滑,而是由很多密密麻麻的小点组成,尽管我们可以理解这个曲线是平滑并具有在实数集的性质。
接着,我们需要在这个函数方程里找到G,通过数学计算,把G放大小k倍,得到大K。这步数学计算相当复杂,并且不能反向操作。
比特币的地址可以理解为交易中的收款地址。在获得公匙后,我们需要通过单向性哈希密码方程去得到地址。这个方程通常可以理解为A=RIPEMD160(SHA256(K))。这其实是两个方程,先把公匙代入安全散列算法,SHA256,再代入到完整性原语评估消息摘要(RIPEMD160)。为了避免一些数字和字母的混淆,例如1和I,0和o,比特币地址只使用58个字符,这种用法我们称之为Base58Check。
就这样,通过层层加密,我们的私匙终于演化为一个比特币的地址,付账人也终于可以通过这个地址来转账了。
比特币理论以密码学为支撑,构建了一个完备、安全、去中心化的数字货币体系,解决了数字资产所有权问题、双重支付问题、现实世界的通货膨胀问题甚至还预留了机制使得构建在资产转移之上的智能合同成为可能。比特币当然是伟大的创造,期待比特币有更好的未来。
正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |