tokenpocket钱包去中心化钱包是怎么开发的
比特币的所有权是通过数字密钥、比特币地址和数字签名来建立的。【了解添加作者昵称微】数字密钥由用户生成,存储在数字钱包(也称比特币钱包)中。钱包包含一对私钥和公钥。用用户的私钥对交易进行签名,从而证明他们拥有交易的输出;公钥生成的比特币地址用于收款。公钥/私钥、比特币地址、比特币钱包解释如下。
(1)公钥和私钥
比特币椭圆曲线算法作为其公钥加密的基本算法。
每个密钥对包括一个私钥和一个公钥。私钥是随机选择的数字,由256位二进制数字组成,由随机数生成。
使用椭圆曲线算法,一种单向加密函数,公钥由私钥生成;而用公钥求解私钥的逆过程是非常困难的,这就是所谓的“求离散对数”。
在椭圆曲线上,公钥的计算方法是:
K=k*G
其中k为私钥,g为生成点,曲线上得到的点k为公钥。比特币里的代点G都是一样的。
在比特币中,私钥和公钥可以用多种编码格式表示。有两种类型的公钥:未压缩的公钥和压缩的公钥。其中,未压缩公钥的前缀为04,压缩公钥的前缀为02或03。
(2)比特币地址
比特币地址是一串数字和字母,通常以收款方的身份出现。用于从公钥生成比特币地址的算法有SHA(安全哈希算法)和RIPEMD(种族完整性原语评估消息摘要),特别是SHA256和RIPEMD160。
以公钥K为输入,计算其SHA256哈希值,用结果计算RIPEMD160哈希值,得到一个长度为160位(20字节)的数:
A=RIPEMD160(SHA256(K))
其中K是公钥,A是生成的比特币地址。
通常,比特币地址采用Base58Check编码,使用58个字符(一种Base58数字系统)和校验码,提高了可读性,避免了歧义,有效防止了地址转录和输入中的错误。下图是公钥生成比特币地址的过程。
从公钥生成比特币地址
(3)比特币钱包
作为私钥的容器,比特币钱包有两种类型,即非确定性(随机)钱包和确定性(种子)钱包。
的早期比特币钱包是非确定性(随机)钱包,钱包是随机生成的一组私钥,通过一个有序的文件或者简单的数据库来实现。这种钱包的缺点是需要经常备份钱包中的多个随机私钥,以防止钱包无法访问时,钱包所控制的资金被再次使用。
目前,许多确定性(种子)钱包可以利用单个离散方程从公共种子生成私钥,并且只需要在初始创建时进行备份。在这类钱包中,比较有代表性的是分层确定性钱包或HDWallet,简称HD wallet。