钱包是作为提供用户界面的应用程序,起到控制用户访问权限,管理密钥和地址,跟踪余额以及创建和签署交易等功能。从技术方面来看,“钱包”是指用于存储和管理用户密钥的数据结构。交易信息被记录在区块链中,用户通过与他们的钱包中的密钥签署交易来控制网络上的数字货币。本章以比特币为例,介绍数字货币钱包中各项技术机理。
私钥、公钥与地址
在比特币中,经常出现三个词:私钥、公钥和地址,他们经常被一同提起。一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。私钥是一个数字,通常是随机选出的。有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数产生一个公钥。有了公钥,我们就可以使用一个单向加密哈希函数生成比特币地址。
通过非对称密码学的适用性可以使得任何人都可以验证每笔交易的每个签名,同时确保只有私钥的所有者可以产生有效的签名。
私钥
私钥是对一个比特币地址拥有取钱权限的代表,掌握了私钥就掌握了其对应地址上比特币的支配权。私钥可以算出公钥,公钥可以再算出比特币地址。每次交易的时候,付款方必须出具私钥,以及私钥产生的签名,每次交易签名不同,但是由同一个私钥产生。通常我们所看到的私钥是下面这样一串字符:
支持比特币协议的应用都可以正确把这段字符串转换成比特币的私钥,再转换出公钥,再得到一个地址,如果该地址上面有对应的比特币,就可以使用这个私钥花费上面的比特币。
私钥本质上是一个随机数,由32个byte组成的数组,1个byte等于8位二进制,一个二进制只有两个值0或者1。所以私钥的总数接近2256个,这个数量已经超过了宇宙中原子的总数,想要遍历所有的私钥,耗尽整个太阳的能量也是不可能的。私钥的安全是由数学保证,要想通过技术手段攻破,或许要等量子计算机技术的成熟。
公钥
通过椭圆曲线乘法可以从私钥计算得到公钥,这是不可逆转的过程:K = k * G 。其中k是私钥,G是被称为生成点的常数点,而K是所得公钥。其反向运算,被称为“寻找离散对数”——已知公钥K来求出私钥k——是非常困难的,就像去试验所有可能的k值,即暴力搜索。因此私钥的所有者可以容易地创建公钥,然后与世界共享,知道没有人可以从公钥中反转函数并计算出私钥。这个数学技巧成为证明比特币资金所有权的不可伪造和安全的数字签名的基础。
公钥是用来验证私钥的签名,一般我们很少会看到公钥,使用私钥签名交易之后,会把自己的公钥一起和交易发送出去,这样对于一个完整的交易来说,他就使用交易里包含的公钥验证私钥的签名是否正确。
地址
比特币地址是一个由数字和字母组成的字符串,可以与任何想给你比特币的人分享。在交易中,比特币地址通常以收款方出现。如果把比特币交易比作一张支票,比特币地址就是收款人,也就是我们要写入收款人一栏的内容。支票不需要指定一个特定的账户,而是用一个抽象的名字作为收款人,这使它成为一种相当灵活的支付工具。与此类似,比特币地址使用类似的抽象,也使比特币交易变得很灵活。
地址的产生过程大致如上图所示,就比特币而言,一个私钥可以对应多个比特币地址。通常我们使用钱包转账是从一个地址转到另一个地址,也可以扫描二维码进行,像EOS则是账户之间的互转。
所有评论均经过审核,然后才能发布
目前不想购买硬件钱包?
与我们保持联系!
订阅成功