主页 > 如何从imtoken转出以太坊 > 开发比特币钱包时必须了解的概念

开发比特币钱包时必须了解的概念

如何从imtoken转出以太坊 2024-01-26 05:14:08

本章内容是了解比特币钱包开发中非常重要的概念,包括钱包、账号、地址、公钥、私钥、密码、助记词

了解什么是HD钱包

了解BIP协议普通版的作用和Base58在比特币账户中的重要性

[1] 钱包应用

钱包中可以有多个账户,账户也可以导入到不同的钱包中。

2.账号

每个帐户都包含一对密钥:公钥和私钥。 每个账户对应一个地址。

账户由钱包管理,一个钱包可以包含多个账户。

账号在以太坊中对应公钥、私钥和地址,但在一些区块链中,账号不对应公私钥对和地址,比如EOS。

3.地址

地址的长度为 25 个字节。 转为base58编码后为34或35个字符,例如:1 pfjzsk 9 gegogkt 3 at dzu 2 o 7 KBC 4 w 815 PC。

比特币账户开通_中本聪比特币账户_怎么给比特币账户充值

Base58是一种类似于base64的编码,但是去掉了容易引起视觉混淆的字符,并在地址末尾增加了一个4字节的校验位。

由于公钥有两种形式,一个公钥对应两个地址,两个地址可以使用同一个私钥对交易进行签名。

地址标有账号,可以公开给别人,让别人给你转账。

该地址不是公钥。 地址由公钥生成,公钥由私钥生成。 这两个过程是不可逆的,即地址无法计算出公钥,公钥也无法计算出私钥。

4.公钥

公钥压缩格式为33字节,未压缩格式为65字节。 即压缩格式为66位十六进制,未压缩格式为130位十六进制字符。 压缩公钥从 002/003 开始​​。 早期的比特币使用非压缩公钥,现在大部分客户端默认使用压缩公钥。

公钥加密账户交易。 即交易先用公钥签名,再用私钥验证。

公钥是使用secp256k1椭圆曲线加密算法计算私钥对应的公钥得到的。

公钥、私钥、地址,一一对应,唯一且不可修改。

怎么给比特币账户充值_比特币账户开通_中本聪比特币账户

5.私钥

私钥由64个16进制字符组成,如0xe 4356 e 49 c 88 c 8 b 7 ab 370 af 75 c 0 c 54 f 0261 aa 006 f 6 bde 2022 09 CD 4745 cf 54 e 0115 a,

私钥必须保持安全。

私钥可以从助记词中推导出来。

6. 密码

密码不是私钥,可以修改或重置。 在钱包应用中,创建账户时需要设置密码。 密码通常要求不少于 8 个字符。 为了安全起见,密码最好设置的复杂一点。

7.助记词

私钥为64个十六进制字符,不利于记录,不易记忆。 而且每个账户对应一个私钥,多个账户有多个私钥,管理难度大。 所以用一种算法,将一串随机数转换成一串12-24个易记单词,方便记录。 于是有同学得出以下结论:

助记符是另一种形式的私钥。

中本聪比特币账户_比特币账户开通_怎么给比特币账户充值

有同学说助记词=私钥,这是不正确的。 可以得到一个助记词关联的多个私钥,但是不能通过其中一个私钥得到助记词,所以助记词私钥。

8.总结

钱包应用程序用于管理多个帐户。 在比特币中,账户与公钥和私钥对以及地址一一对应,公钥、私钥和地址也是如此。 私钥生成公钥,公钥生成地址,不可逆。 私钥是账户的核心,不能泄露,地址可以公开用于转账。 子账号的介绍后面会讲到。

[2] 高清钱包

这个高清钱包不是硬件钱包。 这里的HD是hierarchical deterministic的缩写,意思是hierarchical deterministic,所以HD钱包的全称是bitcoin deterministic wallet。 比特币中的钱包是非确定性钱包,BIP32是标准定义的HD钱包,通过种子推导产生多个私钥。

1. BIP

BIP 是一种协议,比特币改进提案的简称。 指比特币改进提案,用于对比特币提出新的功能或改进。 BIP协议有很多版本,主要有BIP3[2] BIP3[9] BIP44。

BIP32

BIP32是HD钱包的核心提案,通过种子生成主私钥,进而衍生出大量的子私钥和地址。 种子是一串很长的随机数。

怎么给比特币账户充值_中本聪比特币账户_比特币账户开通

BIP39

因为种子是一串很长的随机数,不利于记录,所以我们通过算法将种子转换成12到24个字符的字符串,方便记录。 这是 BIP39。 扩展了HD钱包种子的生成算法。

BIP44

BIP44在BIP32和BIP43的基础上增加了多种货币。 提议的层次结构非常全面,它允许处理多种货币和多个账户,每个账户都有数百万个地址。

在BIP32路径中定义以下五层:M/Purpse'/Coin_Type'/Account'/Change/Address_Index

目的:建议在BIP43之后设置常量为44'。 指示根据 BIP44 规范使用此节点的子树。

Coin_type:货币,即一个主节点(种子)可以用于无限数量的独立加密货币,例如比特币、莱特币或域名币。 这个级别为每个加密货币创建一个单独的子树,避免重复使用其他链中已经存在的地址。 开发者可以为他们的项目注册未使用的数字。货币列表

帐:帐户。 为了建立一个独立的用户身份,可以将所有币种放在一个账户中,从0开始递增。

变化:常量0用于外部链接,常量1用于内部链接,外部链接用于钱包对外支付。 内链用于钱包外不可见的地址,例如返回交易变更。

怎么给比特币账户充值_比特币账户开通_中本聪比特币账户

Address_index:地址索引,从索引0开始按升序编号。

bip 44的规则让HD钱包非常强大。 用户只需要保存一个种子,就可以控制所有币种和账户的钱包。 因此,BIP39生成的助记词非常重要,必须妥善保管。 那么它会被破解吗? 如果一个HD钱包助记词是12个单词,总共有2048个单词的可能性,那么一个随机生成的助记词的所有可能性都是5e 39左右,所以破解几乎是不可能的。

2.种子

种子可以推导生成多个私钥,所以种子是钱包账户中最关键的数据,级别高于私钥。 因此比特币账户开通,备份种子将备份所有关联的私钥。 钱包包含从树结构派生的密钥,这样父密钥可以从一系列子密钥中派生出来,每个密钥都可以从一系列子密钥中派生到无限深度。

[3] base58编码

1.base64编码

开发比特币钱包不得不了解的概念

Base64 是一种基于 64 个可打印字符表示二进制数据的方法 Base64 使用 26 个小写字母和 26 个大写字母。 Base64 通常用于对电子邮件中的附件进行编码。 Base64字符集:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 0123456789/2 .Base58编码 Base58是一种基于文本的二进制编码格式,是比特币使用的一种独特的编码方式,与Base64相比主要用于生成。 Base58,数字“0”,大写“O”,大写“I”比特币账户开通,小写“L”,符号“和”/“都没有使用,目的是去除混淆字符。这种编码格式不仅实现了base58字符集:abcdefghjklmnpqrstuvwxyzabcdefghijkmnopqrsttuvwxyz 1234567893在数据中添加一个叫做“version byte”的前缀来指定要编码的数据类型,首先在数据中添加一个版本前缀,这个前缀用来标识要编码的数据类型。例如比特币地址的前缀为0(十六进制为000),使用SHA256哈希算法checksum = SHA256(前缀数据))连续执行两次数据,在生成的长度为32字节的哈希中哈希值(两个哈希云计算 lations),前4个字节作为校验和添加到第一步生成的数据中。 Base58对数据进行编码和base 58校验的编码过程如下图所示。

Base58校验的作用:由于采用Base58编码,0和O、1和L和I之间没有错误,大整数也被转换成可读的字符串。 为什么又出现了Base58check之类的链接?

假设您在程序中输入一个 Base58 编码的地址。 虽然不能把0和O混淆,1和L和I混淆,但是万一不小心打错了,或者越写越少怎么办? 没什么大不了的,你可能会说,只是一个错字。 这不是很常见吗? 不能重新输入吗?

开发比特币钱包不得不了解的概念

但是当用户向比特币地址转账时,如果输入错误,对方将收不到钱。 更重要的是,资金被发送到一个根本不存在的比特币地址,因此资金永远无法交易,这意味着比特币丢失了。 校验和为 4 个字节长,并添加到要编码的数据中。 校验和源自要编码的数据的散列,因此可用于检测和避免转录和打字中的错误。 当使用Base58check编码格式时,程序会计算原始数据的校验和,并与自己的校验和进行比较。 如果两者不匹配,则说明有问题。 事实上,在比特币交易中,总是会检查比特币地址是否合法。 如果通过Base58Check的比特币地址被比特币钱包程序判断为无效,当然会阻止交易的进行,从而避免资金的损失。