位置:芙蓉财经网 >> 币安

以太坊地址是怎么来的?以太坊地址的生成过程。

2023年05月18日 17:57

欧易okx交易所下载

欧易交易所又称欧易OKX,是世界领先的数字资产交易所,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,通过使用区块链技术为全球交易者提供高级金融服务。

APP下载   官网注册

以私钥为原材料

生成私钥的过程依赖于伪随机数发生器(PRNG)和足够大的熵。私钥最重要的是,它是从1到2-1中随机选取的整数。这个范围内的任何数字都可以用作私钥。

现在我们已经初步学习了私钥背后的数学知识,可以自己生成一个有效的私钥了。)。我们不妨把私钥生成的过程想象成一个78位的水平数字密码锁(可能的组合数正好等于2-1),然后我们把这个密码锁分成三行,每行26位。。你可以把PRNG函数想象成会随机打乱数字,打乱数字组合的东西:一开始,每一位都是0,然后从每一位中随机选择一个特定的数字。假设我们使用PRNG函数来生成无序的数字组合。,得到以下三行数字:

(1)0440694132102621719184878;

(2)43014596507006094171646853;

(3)06780198554267270848908554;

-浏览器使用Web加密API(提供加密原语,如Crypto.getRandomValues(32)或等效的32字节缓冲区)作为PRNG。。这个PRNG使用你的计算机熵源作为随机种子来生成随机数。生成随机数时,请务必使用电子熵源,因为有研究表明,人类并不擅长选择随机数(自己选择的数是有模式的),达不到伪随机的要求)-

恭喜!您现在是私钥

她是

4069413211026217的主人。55662.66666666666

我们可以用这个私钥生成一个比特币或以太坊地址,或者私钥范围为1到2-1的区块链的任何地址。

根据该私钥生成以太网地址。我们需要用到椭圆曲线点乘算法(需要专门的文章说清楚)。所以,为了简单起见,我们就交给计算机来处理。为此,我们需要"告诉"计算机这个私钥。问题是计算机可以';以十进制形式测试进程信息。它只能理解二进制代码。目前,我们的只有十进制形式的私钥。因此,我们必须首先将这个私钥从十进制数转换为位(也翻译为"比特"或者"比特")和计算机能理解的字节(bytes)。一个字节等于8位)。

位和字节

在进行下一步之前,我们需要知道什么是位和字节。任何数字设备只能理解由0和1组成的信息,通常称为比特。。一点是一个"二进制数",即仅由1和0表示的数。虽然我们的智能手机和电脑可以显示汉字和图片,也可以播放歌曲,但最终都是用比特来表示和处理的。比特越多,信息量越大。但最终,它';只不过是一堆0和1。

根据上下文,多个位可以表示字符(例如,使用ASCII编码时。字母A定义为01100001或一个数字(01100001也可以用来表示十进制数97)。当十进制整数被转换为二进制形式时,它被转换为以2为基数的幂的和,其中每个幂的指数增加。例如我们通常以小数形式计数,小数是以10为基数的幂的和。因此,在使用二进制时,我们可以用n位来表示和存储2的n次方以内的整数。

-8位电子游戏机所能表示的最高十进制数是255,因为它们所使用的中央处理器(CPU)最多只能进行8位运算(translator's注:上图左侧解释了为什么n位可以表示2的n次方以内的数——因为它的数组合具有2的n次方的可能性;右边演示了二进制数代表多大的整数。,也就是相互换算的计算规则——

虽然我们可以用二进制形式表示任何数,但是二进制形式太"繁琐"。为了表示97,我们需要八个二进制数字。计算机很容易处理二进制数。,但是不方便人类阅读。因此,计算机通常用十六进制而不是二进制来表示数据:位号系统以16为基数来表示数字。十六进制数可以代表四位二进制数。。我们可以用十六进制数61来表示二进制数01100001或者十进制数97,比二进制数少6位。十六进制数用ABCDEF来表示10到15,通常用来减少数据。

私钥有多少位?

回到私钥,我们知道私钥的范围是1到2-1。应该怎么用比特来表达?你需要多少人?如上所述,当将十进制整数转换成二进制形式时,就是转换成以2为底的幂和。使用8位二进制数时,我们能表示的最大数是2222222,也就是整数255。我们可以看到这一点。要表达2n以内的数,我们需要n位。可以推断出,我们需要256位或32字节(256/8)来表示我们的私钥。

-十六进制数据表示旨在减少表示数字所需的位数。但是,计算机只能用二进制来处理数据——

如果大家都同意的话,我们需要用32个字节来表示我们在[1,2-1]范围内的私钥。那么在十六进制形式中,我们需要64个数字来表示私钥。现在,我们可以把原始私钥

40694132110262171918487430145965070941716685306780198526708854

转换成十六进制形式:

616e6769652e6a6a706572657a616775696e6167612e6574682e6c696e6b0d0a

看到十六进制私钥里多出来的字母A,B,C,D,E了吗?看到这些字母,我们很容易判断出这个数是十六进制的。现在从私钥

到公钥

我们可以将这个十六进制私钥告诉我们的计算机。我们可以使用JavaScript之类的编程语言轻松地导入这个十六进制私钥,以便以后进行乘法运算。在下面的代码中之前获得的十六进制数作为私钥("sk"是secret_key的缩写,是密码学中的标准记法)。这个十六进制数以16为基础。

- 通过使用 BigNumber 库我们可以确保在转换过程中不会丢失任何小数。这些数字通常用指数表示(比如4.4041102622E76),如果直接解析成十六进制,就会失去准确性。。如果我们不';如果不使用BigNumber库,我们的十六进制私钥将变成

导入私钥后,下一步是创建公钥。你可能还记得。正如我们在第一篇文章中提到的,在获得以太坊的地址之前,我们需要通过私钥生成公钥。根据以太坊黄皮书,公钥生成过程遵循标准的ECDSA公钥生成算法,其中我们将私钥乘以生成点得到一个坐标。,公钥前后的坐标x值和y值加在一起。我们的公钥(记录为"pk"在密码学中)可以用来生成我们的以太坊地址。

-x和y是椭圆曲线上的点乘以我们的私钥(sk)得到的。尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥。因此私钥的签名操作也和这条曲线有关——

终于到了最后一步。有了公钥,我们就执行黄皮书中的最后一个操作:

给一个私钥。,以太坊地址a是ECDSA公钥对应的Keccak哈希值最右边的160位。

因为我们已经有了自己的ECDSA公钥。剩下唯一要做的就是对我们的公钥执行Keccak散列函数,并取结果右边的160位。当我们将这些操作的结果存储在一个"缓冲区"(就像一个储存信息的小盒子),我们可以"扔掉"(切片)前24个十六进制数,只留下后40个十六进制数,或者更准确的说,20个字节(这是以太坊地址的长度)。

- 以太坊地址被设计为 20 个字节。有些人认为删除一些字节(具体来说是12个字节)可能会造成冲突,导致两个私钥产生相同的以太网地址。但是到目前为止,这还没有发生——

你的个人钱包

如你所见。只要一个数字(虽然长)就能生成一个以太坊地址来存储各种资产:从代表虚拟的猫、磁带、袜子、门票的NFT到具有增值潜力的密码资产。你的以太坊地址是公开的,而且它';这就像你的家庭住址。,但只能用钥匙打开。如果你不';如果你不想自己处理所有这些过程,你可以在Portis上注册一个帐户。Portis会自动为你创建一个私钥(只有你知道这个私钥,因为它使用端到端的加密架构)和相应的以太坊地址供您在100多个dApp中使用。

以太坊地址的生成过程如下:

1。生成一个256位随机数作为私钥。

2。将私钥转换成secp256k1未压缩格式的公钥,即512位公钥。

3。使用哈希算法Keccak256计算公钥的哈希值,并将其转换为十六进制字符串。

4。取十六进制字符串的最后40个字母,并在开头添加0x作为地址。

生成以太网地址过程的示例数据:

私钥:1F2b77E3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20

公钥:04DFA13518ff965498743F3a01439DD86BC34ff9969c7a3f0430bbf8865734252953c9884af787B2cadd45f92dff2b81e21CFF98873e492e5FDC07e9EB67ca74d

地址:0xABCD68033a72978c1082e2d44d1fa06DDC4a2d57

生成随机数作为私钥

生成256位随机数:

私钥。

以太坊使用的椭圆曲线算法是secp256k1。私钥生成对应的公钥有两种方法:比特币工具bx和secp256k1-py包。

使用bx工具生成公钥

Mac用户可以使用brew安装bx工具:

以1F2b77E3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20作为私钥,然后用bx工具把私钥转换成secp256k1的未压缩公钥:

用secp256k1-py包生成公钥

用pip安装:

然后把私钥转换成公钥:

计算公钥哈希值

要使用keccak256哈希算法,可以使用PyCryptodome工具,使用pip进行安装:

将公钥开头的04去掉。,剩下的部分转换成字节串,用keccak256算法哈希:

获取地址

取哈希值十六进制串的最后40个字母,开头加0x,生成以太坊的最终地址:

以太坊地址生成Python3实现

使用Python3实现以太坊地址生成:

资源

以太坊在线地址生成工具:可以作为开源的以太坊地址生成工具。。Keccakpython工具。Python2环境下使用的Keccak,是源代码,需要本地克隆。secp256k1的Python库。

以上是DaDaqq.com以太坊地址如何来的细节。更多以太坊地址的知识分享,请关注币大师其他相关文章!

本站提醒:投资有风险,入市需谨慎。,此内容不作为投资理财建议。

标签:以太坊地址以太坊区块链比特币

推荐阅读

美联储主席表示数字美元需要立法支持,美债违约风险导致国会两党僵局难破
以太坊地址是怎么来的?以太坊地址的生成过程。
文章来源: summer
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至405936398@qq.com 举报,一经查实,本站将立刻删除。
相关资讯
虚拟货币哪里来的现金 虚拟货币交易钱怎么到账
虚拟货币哪里来的现金 虚拟货币交易钱怎么到账 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥

虚拟货币排查 打击清理虚拟货币十大措施
虚拟货币排查 打击清理虚拟货币十大措施 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥

中国持有虚拟货币合法吗 在我国买卖比特币等虚拟货币合法吗?为什么?
中国持有虚拟货币合法吗 在我国买卖比特币等虚拟货币合法吗?为什么? 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥

虚拟币哪个平台最火 虚拟币哪个平台最火爆
虚拟币哪个平台最火 虚拟币哪个平台最火爆 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥

缩表对虚拟货币 缩表对大宗商品影响
缩表对虚拟货币 缩表对大宗商品影响 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥

虚拟货币数量单位有哪些,货币单位m是什么意思
虚拟货币数量单位有哪些,货币单位m是什么意思 1970-01-01

尽管在任何区块链中,私钥只能作为地址的唯一生成器,但邰方使用椭圆曲线secp256k1来生成公钥