高清钱包怎么用?高清钱包及其创建过程概述
高清钱包怎么用?钱包的创建和它的重要物品都完成了,但总觉得少了点什么。少了什么?重读了几页,发现还是不行';我不能通过前面的文章来联系一切,所以我又写了这篇文章。,作为创建钱包的补充说明。
首先,下面提到的hash160字符串是指双哈希算法产生的一个20字节的字符串(SHA256行。RIPEMD160)获取私钥或公钥的内容。。
Wallet是keystore的扩展,它管理事务和余额,并提供创建事务的能力。它有几个特别重要的属性,解释如下:
HDchain,HD数据模型。它包含一个hash160的种子、一个内部链的编号和一个外部链的编号。
setinternalceypool,内部密钥池的集合。
setExternalKeyPool外部密钥池的集合。
set_pre_split_keypool,一组预先划分的密钥池。
m_max_keypool_index,最大密钥池的索引。
m_pool_key_to_index
mapkeymetadata,公钥元数据的映射集。密钥是一个hash160字符串,值是一个公钥元数据。
m_script_metadata
地图主密钥,
地图钱包
地图通讯录
钱包说完了让';让我们看看密钥库。顾名思义,keystore表示密钥的存储,并自然地提供了一些管理密钥的方法。比如在存储中添加一个密钥(私钥和公钥),检查给定地址对应的密钥是否在存储中,添加和检查通用脚本和只读脚本的功能等。根据是否加密,keystore可以分为基本型和加密型。。钱包继承自加密密钥库,而加密密钥库又继承基本密钥库。
Let';让我们先看看基本的密钥库,它具有以下重要属性:
mapKeys,私钥映射的集合。密钥是一个hash160字符串,值是一个私钥。
mapWatchKeys,一组只读的公钥映射。密钥是一个hash160字符串,值是一个公钥。
mapScripts,一组脚本映射。键是hash160字符串,值是用于事务输入和输出的序列化脚本。
setWatchOnly用于事务输入和输出的序列化脚本的集合。
加密的密钥库向基本密钥库添加了几个与加密相关的属性,它们是
fUseCrypto。指示钱包是否加密的变量。
vMasterKey,加密中使用的私钥集合。加密后,mapKeys集合将为空,而vMasterKey集合则不是。未加密时情况正好相反,即mapKeys集合不为空,vMasterKey集合为空。
mapCryptedKeys,映射集。密钥是一个hash160字符串。,其值是由公钥和加密的私钥组成的一对。
说完钱包和密钥库,让';让我们看一下密钥池。其实keystore这个名字并不准确,因为它只包含一个公钥,除了第一次。,还包含两个布尔变量:fInternal,m_pre_split,前者表示密钥池是内部的还是外部的,后者';s功能暂时不清楚。,英文注释是:对于密钥池拆分升级前生成的密钥。m_pre_split属性默认为false。
创建钱夹时,将执行以下操作:
首先生成私钥,根据私钥通过椭圆曲线算法生成对应的公钥;
其次,会生成相应的关键元数据。,以及由hash160(SHA256)生成的20字节字符串。RIPEMD160)算法保存为密钥元数据的种子,然后私钥元数据保存在mapKeyMetadata集合中;
然后,私钥保存在mapKeys,或者mapCryptedKeys和vMasterKey集合中;当公钥被压缩时(通常),脚本由公钥生成。该脚本随后保存在mapScripts集合中;同时,私钥、公钥和密钥元数据都存储在数据库中。
然后,以公钥为种子,生成一个HD链对象,保存在钱包中。
最后完成上述所有工作后,使用前面三个步骤中生成的公钥作为种子,开始推导用户指定的子私钥/公钥对的数量。如果用户没有指定,默认情况下将派生3000个子私钥/公钥对。
派生的私钥、公钥和元数据的处理与步骤2和3相同;
同时,公钥生成的密钥池也保存在数据库中;
根据生成的私钥,属于内部或外部。,相应的索引保存在setInternalKeyPool或setExternalKeyPool集合中;无差别地,索引存储在m_pool_key_to_index映射集中。,其中密钥是对应于公钥的hash160字符串。
其中2000个子私钥的路径是从m/0';/0'/0到m/0';/1999.1000子私钥来自m/0';/1'/0到m/0';/1'/999.其中m代表私钥。,m/0';代表主私钥的第一个增强型子私钥,m/0';/0'/0表示主私钥的外链的第一个增强孙私钥,同样如此。,m/0';/0'/1999表示主私钥的第一个加强的子私钥的外链的第1999个加强的孙私钥;m/0';/1'/0表示主私钥的第一个增强子私钥的内部链中的第一个增强孙私钥,同样如此。,m/0';/1'/999表示主私钥的第一个加强的子私钥的内部链的第999个加强的孙私钥。
上述过程中,步骤1-3是GenerateNewSeed方法的主要内容。第四步是SetHDSeed的主要内容,第五步是TopUpKeyPool的主要内容。
最后用两张图总结高清钱包的创作。