数字货币概念股一览表
数字货币概念股一览表
我们可以用这个私钥生成一个比特币或以太网地址,或者任何1到2-1的区块链地址作为私钥范围。
要基于这个私钥生成一个Ethereum地址,我们需要使用椭圆曲线点乘算法(需要一篇专门的文章来说明)。所以为了简单,我们就交给电脑处理。为此,我们需要把这个私钥“告诉”计算机。问题是计算机不能处理十进制形式的信息,它只能理解二进制代码。目前我们只有十进制数字形式的私钥。因此,我们必须首先将这个私钥从十进制数转换成计算机可以理解的位(也翻译成“位”或“位”)和字节(一个字节等于8位)。
位和字节
在进行下一步之前,我们需要知道什么是位和字节。任何数字设备只能理解由0和1组成的信息,通常称为位。一个比特是一个“二进制数”,也就是一个只用1和0表示的数。虽然我们的智能手机和电脑可以显示汉字和图片,也可以播放歌曲,但它们都是以比特来表示和处理这些信息的。比特越多,信息越多,但归根结底不过是一堆0和1。
根据上下文,多位可以表示字符(例如,使用ASCII编码时,字母A的定义是01100001)或数字(01100001也可以表示十进制数字97)。当十进制整数被转换成二进制形式时,它被转换成基于2的幂和,其中每个幂的指数增加。比如我们通常以十进制形式计数,十进制数是以10为基础的乘幂之和。所以在使用二进制时,n次方2以内的整数可以用n位来表示和存储。
-8位视频游戏可以表示的最高十进制数是255,因为他们使用的中央处理器(CPU)最多只能执行8位运算(译者注:上图左侧说明了为什么N位可以表示2的N次方以内的数字——因为数字组合有2的N次方的可能性;右边演示了一个整数二进制数意味着多大,也就是相互转换的计算规则——
虽然我们可以用二进制形式来表示任何数字,但是二进制形式太“繁琐”。要表示97,我们需要8个二进制数。二进制数便于计算机处理,但不便于人类阅读。因此,计算机通常使用十六进制而不是二进制来表示数据:位置数字系统使用基数16来表示数字。一个十六进制数可以代表四个二进制数。我们可以用十六进制数61来表示二进制数01100001或十进制数97,比二进制数少6位。十六进制数用ABCDEF表示10到15,通常用来减少数据。
私钥有多少位?
回到私钥,我们知道私钥的范围是1到2-1。我们如何用比特来表示它?需要多少位?如上所述,十进制整数转换为二进制形式时,转换为基于2的幂和。当使用8位二进制数时,我们可以表示的最大数字是22 2 2 2 2 2 2 2,即255的整数。我们可以看到,要表示2 n以内的数字,我们需要n位。由此可以推断,我们需要256位或32字节(256/8)来表示我们的私钥。
-通过使用BigNumber库,我们可以确保在转换过程中不会丢失小数。这些数字通常表示为指数(例如,4.406941321102622e 76),如果我们将它们直接解析为十六进制,我们将失去精度。如果不使用BigNumber库,我们得到的十六进制私钥将变成616 e 6769652 e6c 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
导入私钥后,下一步是创建公钥。您可能还记得,我们在第一篇文章中提到,在获得以太网地址之前,我们需要通过私钥生成公钥。根据Ethereum的黄皮书,公钥生成过程遵循标准的ECDSA公钥生成算法,其中我们将私钥乘以生成点得到一个坐标,坐标的x值和y值前后拼在一起。我们的公钥(密码学中的“pk”)可以用来生成我们的以太网地址。