购买过XX币的人都知道,自己的钱包里面有一堆看起来像一堆乱码一样的字母和数字,它代表着XX币的地址,那么这串地址怎么产生,有何意义?
我们知道,XX币地址是一个由数字和字母组成的字符串,可以与任何想转给你XX币的人分享。
下面是一个XX币地址的例子:
1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy
首先,这个看上去像一堆乱码一样的东西,说白了就像你的银行卡卡号一样。不过,XX币地址是一串由26位到34位字母和数字组成的,不像普通的银行卡号那样只是一堆纯数字组成。
在交易中,XX币地址通常以收款方出现。如果把XX币交易比作一张银行卡转账交易,XX币地址就是收款人的银行卡号,也就是我们要输入收款人一栏的内容。
那么,XX币地址到底是怎么得到的?
XX币地址可由公钥经过单向的加密哈希算法得到。哈希算法是一种单向函数,接收任意长度的输入产生指纹摘要。
由公钥生成XX币地址时使用的算法是Secure Hash Algorithm(SHA)和the RACE Integrity PrimitivesEvaluation Message Digest (RIPEMD),特别是SHA256和RIPEMD160。
其中,RIPEMD (RACE原始完整性校验讯息摘要)是一种加密哈希函数。RIPEMD160则表示160位元的RIPEMD-160哈希值是以40位的十六进制所表示。
下面表明了43字节ASCII码的输入与其对应的RIPEMD-160哈希值:
RIPEMD-160( "The quickbrown fox jumps over the lazy dog" )=
37f332f68db77bd9d7edd4969571ad671cf9dd3b
现在,让我们使用公钥来生成XX币地址。
以公钥K为输入,计算其SHA256哈希值,并以此结果计算RIPEMD160哈希值,得到一个长度为160比特(20字节)的数字:
A = RIPEMD160(SHA256(K))
其中,K是公钥,A就是我们生成的XX币地址
不过,通常用户看到的地址不是上面直接生成的地址A,而是经过“Base58Check”编码的地址,这种编码使用了58个字符(一种Base58数字系统)和校验码,提高了可读性、避免歧义并有效防止了在地址转录和输入中产生的错误。
Base58Check编码也被用于XX币的其它地方,例如XX币地址、私钥、加密的密钥和脚本哈希中,用来提高可读性和录入的正确性。
下次的科普中我们会详细解释Base58Check的编码机制,以及它产生的结果。
ODYSSEY是基于共享经济的区块链项目
Telegram - https://t.me/OdysseyOfficial
Twitter - https://twitter.com/OdysseyOCN
Github - https://github.com/OdysseyProtocol
领取专属 10元无门槛券
私享最新 技术干货