钱包知识科普

一、钱包交易方式

On-chain交易:
On-chain交易的钱包就是我们手机客户端使用的钱包,如imToken钱包。当我们给一个地址发送加密货币时,需要钱包对这笔交易签名并在全网广播,这笔交易是发生在区块链上的,所以称为on-chain交易。
Off-chain交易:
Off-chain交易通常是发生在交易所的,用户实际没有私钥,私钥是托管在交易所的,这时发生的交易主要记录在交易所的数据库中,所以用户最主要保存的信息是交易所账户的登录账号和密码。

二、钱包的分类

冷钱包
冷钱包就是与互联网进行过物理隔绝的私钥存储容器,如imkey硬件钱包等。私钥的生成和存储完全离线完成,发送交易时,私钥也不会在联网的计算机上缓存,所以冷钱包是最安全的私钥存储方式。

热钱包
热钱包就是私钥存储在与互联网连接的终端上的钱包,如imToken钱包等。热钱包的私钥是通过加密存储在手机中的,加密的密钥就是钱包的交易密码通过哈希加盐法生成的口令文件。

全节点钱包
全节点钱包就是实时同步并保存在区块链上的所有区块数据的钱包。由于钱包需要跟踪地址的余额,所以需要保留一些区块链数据。交易所的钱包主要为全节点钱包,它们需要监控和处理大量的交易,所以需要对全部的区块链数据进行实时同步。

轻量级钱包
轻量级钱包就是只用同步与用户地址相关的区块即可,支持简单支付认证(SPV)的区块链系统,可以只用同步区块头即可完成对整个区块链数据的保存。使用Merkle树对区块中的交易进行处理,则可以大大压缩区块的体积,从而实现只用保存区块头即可对一笔交易进行验证和查询。目前我们手机中的钱包基本都是轻量级钱包。

三、 地址和私钥是如何在钱包中生成的

钥的生成主要经历4个阶段:生成助记词、通过助记词生成种子、通过种子派生子密钥、通过子密钥生成地址。

生成助记词
首先钱包调用一个随机数生成器生成一个128位的随机序列A,然后将这个随机序列A经过一个SHA256的哈希函数处理,取处理后的哈希值的前4位作为校验位附在随机序列A后面,得到一个132位序列B。然后将这个序列B每11位分割,得到12个片段,再对这12个片段在词库中进行匹配得到12个助记词串

通过助记词生成种子
由上一步生成的助记词配合一个“salt”字段作为输入,通过HMAC-SHA512随机数生成算法经过2048轮的循环操作,生成最终512位的种子。
image

通过种子派生子密钥
首先将512位的种子文件分割为两个256位的片段,第一个256位的片段叫做主私钥,第二个256位叫做主链码。然后将主私钥经过椭圆曲线算法生成主公钥,将主公钥、主链码和索引号一起作为输入可生成子种子,再将子种子的前256位取出就得到了子密钥。

通过子密钥生成地址
当生成了子密钥之后,生成地址的过程如同文章开头的小案例。子密钥通过一个椭圆曲线算法得到一个公钥,然后将这个公钥进行SHA256算法和RIPEMD160算法得到一个公钥哈希,最后将这个公钥哈希进行Base58check编码就得到一个地址,由此就生成了一个地址与私钥。

四、带你破解“比特币”

首先,我们先选取一个256位的随机数,这个随机数就是用户最为保密的文件。但一个256位的数对于用户来说记住它太难了,所以钱包通常会离线生成一个助记词,利用这个助记词可以恢复一个密钥文件。在此,我们选择一个最简单的数1,作为随机源,将这个前255位为0最后一位为1的数作为私钥。利用这个数经过一个椭圆曲线算法得到一个公钥,然后将这个公钥进行SHA256算法和RIPEMD160算法得到一个公钥哈希,最后将这个公钥哈希进行Base58check编码就得到一个比特币的地址,此时我们就得到一个数字1为私钥的比特币地址
“1EHNa6Q4Jz2uvNExL497mE43ikXhwF5y8m ”。然后去比特币浏览器里面查查,看看有没有这个地址,如果这个地址上有余额,那恭喜你中奖了。
好吧,我们来迟了一步,这个地址曾经被使用过,并且还往里面转过4.87个比特币呢。这样的方法其实就是一种正向的碰撞方式,如果你足够幸运,碰撞到一个巨额的地址,那么恭喜你,财富自由了。可这样的概率高不高呢?答案当然是非常低,这样的地址一共有2的256次方个,也就是1.16乘10的77次方,而宇宙中的原子总数估也只有大概6乘10的79次方,所以这样的概率其实比买彩票低太多…那我们能不能通过比特币的地址逆向推出私钥呢?密码学家告诉你这是不可能的,因为椭圆曲线算法的基础数学难题是椭圆曲线上离散对数不可解问题,如果你能解出这个难题,你不仅可以财富自由还可以名留青史呢。总的来说,比特币这样的设计还是安全的。

1 Like

bip32规定一个随机数种子能同时管理无数私钥,
bip39把seed简化为单词,让你更好记,
bip44是将seed通过不同路径算出不同私钥。

1 Like

收了

很专业!

66666

111111

涨姿势