在区块链中,用户的所有资产都保存在区块链上,通过私钥来证明对链上资产的控制权,如果没有私钥,就无法控制你的资产。所以钱包的本质是一个私钥管理工具,用户使用钱包可以创建私钥,保管私钥,使用私钥签名交易。(助记词是私钥的另外一种表现形式。我们推荐用户保管助记词是因为助记词更加方便保管和使用).
用户使用 imToken 创建钱包的本质是随机生成了一组助记词,由于去中心化的特性,imToken 不保管用户钱包隐私信息。所以生成助记词后,用户一定要自己保管。这组助记词可以推导出钱包的私钥,通过私钥可以推导出钱包的公钥,通过公钥可以推导出钱包地址。
根据以上说明,如果要找回助记词,我们就要知道助记词的生成过程:先生成一个 128 位随机数,再加上对随机数做的校验 4 位,得到 132 位的一个数,然后按每 11 位做切分,这样就有了 12 个二进制数,然后用每个数去查 BIP39 定义的单词表,这样就得到 12 个助记词。那么问题来了,有没有可能通过暴力破解的方式碰撞出助记词呢。
我们来计算一下能够生成的助记词数量,BIP39 的助记词词库共包含 2048 个单词,每组助记词共 12 个单词。根据公式:n!/( n - r )! 计算可得出数量为 2048!/(2048-12)! = 5.2715379713014884760003093175282 e+39。
大家可能对这个数字没有概念,我们可以举个例子类比一下,地球上的沙子数量大约是 1 后面 18 个零。如果你可以每秒生成 一百万个助记词,那么一年可以生成 1000000*60*60*24*365=3.1536 e+13 个助记词,大约需要 1.6715937e+26 年遍历所有助记词,所以暴力破解是不可能成功的。
所以对于用户来说,如果助记词、私钥全部丢失无法通过暴力破解的方式找回,因为 imToken 的去中心化特性,也无法从我们这里找回。但是如果助记词丢失,私钥还保存着,是不影响钱包使用的。