Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >以太地址是如何产生的?

以太地址是如何产生的?
EN

Ethereum用户
提问于 2016-05-03 00:40:53
回答 4查看 118.8K关注 0票数 156

一个有效的Ethereum地址需要满足哪些标准,它仅仅是十六进制中的随机数吗?

或者,根据某些密码算法,它需要以特定的方式导出吗?用什么算法和标准来生成密钥对?

EN

回答 4

Ethereum用户

回答已采纳

发布于 2016-05-04 18:45:27

最近,这篇文章引起了我的注意,比下面我更容易访问的版本更加深入和技术性。它还向您介绍了如何自己生成一个。我强烈推荐它:https://kobl.one/blog/create-full-ethereum-keypair-and-address/

来自黄纸

从私有->地址获得三个主要步骤:

  1. 创建一个随机私钥(64 (十六进制)字符/ 256位/ 32字节)
  2. 从此私钥(128个(十六进制)字符/ 512位/ 64字节)派生公钥
  3. 从此公钥派生地址。(40 (十六进制)字符/ 160位/ 20字节)

尽管很多人称这个地址为公钥,但实际上在Ethereum并不是这样。有一个单独的公钥充当中间人,你永远不会看到,除非你去查看一个售前钱包JSON文件。

1.生成私钥

私钥为64个十六进制字符。假设,每一个64六进制的字符串都是一个Ethereum私钥(请参阅顶部的链接,以了解为什么这不是完全准确的),它将访问一个帐户。如果您计划生成一个新帐户,您应该确保这些帐户都带有适当的RNG。一旦你有了那根绳子。

2.私钥->公钥

这太难了,超出了我的能力。椭圆曲线数字签名算法(ECDSA)是一种新型的数字签名算法。但最终您将得到一个公共密钥,即64个字节。

3.公钥->地址

  1. 从公钥开始(128个字符/64个字节)
  2. 取公钥的Keccak-256散列。现在应该有一个字符串,即64个字符/32个字节。(注:SHA3 3-256最终成为标准,但以太使用Keccak)
  3. 取此公钥的最后40个字符/20个字节(Keccak-256)。或者,换句话说,删除前24个字符/12个字节。这40个字符/20个字节是地址。当以0x作为前缀时,它会变成42个字符长。

定义

地址:以太地址代表一个帐户。对于EOA,地址派生为控制帐户的公钥的最后20个字节,例如`cd2a3d9f938e13cd947ec05abc 7Fe734df8dd826。这是一种十六进制格式(基本16符号),通常通过将0x附加到地址来显式表示。Web3.js和控制台函数接受带有或不带此前缀的地址,但为了透明起见,我们鼓励使用它们。由于地址的每个字节由2个十六进制字符表示,一个前缀地址的长度为42个字符。一些应用程序和API也被用来实现新的启用校验和的地址方案,在0.5.0版的迷雾钱包中引入了这种方式。- 宅基地医生

私钥:在范围[1, secp256k1n − 1]中随机选择的正整数(表示为长度为32的字节数组)。- 黄纸

票数 187
EN

Ethereum用户

发布于 2016-05-03 01:33:18

以太地址是公钥的散列。因此,要生成私钥,您必须先生成一个私钥(参见:从2 5 6位私钥中计算地址的方法是什么?),私钥是随机的,但是公钥,因此它用作地址的散列不是随机的。

要检查地址,从而知道格式,请参考我怎样才能检查一个虚空地址是否有效?

票数 11
EN

Ethereum用户

发布于 2019-09-13 21:54:33

如果有人在寻找JS解决方案:

代码语言:javascript
运行
AI代码解释
复制
const Web3 = require('web3')
const web3 = new Web3()
const elliptic = require('elliptic')
const ec = new elliptic.ec('secp256k1')


function pubKeyToAddress(compressedPubkey) {
  let keyPair = ec.keyFromPublic(compressedPubkey, 'hex')
  // remove '04' then add prefix '0x'
  let pubkey = '0x' + keyPair.getPublic(false, 'hex').substr(2)
  let address = trimFirst12Bytes(web3.utils.keccak256(pubkey))
  return web3.utils.toChecksumAddress(address)
}
unction trimFirst12Bytes(hexString) {
  return '0x'.concat(hexString.substr(hexString.length - 40))
}
票数 7
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/3542

复制
相关文章
将 Python 项目部署到容器
Flask 是一个轻量级Web应用框架,简单易用,可以很快速地创建web应用。我们用它来创建一个demo应用。
netkiller old
2021/07/23
1.7K0
如何将 Angular 项目部署到云开发静态网站托管
云开发静态托管是云开发提供的静态网站托管的能力,静态资源(HTML、CSS、JavaScript、字体等)的分发由腾讯云对象存储 COS 和拥有多个边缘网点的腾讯云 CDN 提供支持
白宦成
2020/04/13
2.3K0
如何将 Vue.js 项目部署到云开发静态网站托管
云开发静态托管是云开发提供的静态网站托管的能力,静态资源(HTML、CSS、JavaScript、字体等)的分发由腾讯云对象存储 COS 和拥有多个边缘网点的腾讯云 CDN 提供支持
白宦成
2020/04/13
5.3K5
idea将项目部署到Tomcat的webapps目录
别团等shy哥发育
2023/02/27
6160
idea将项目部署到Tomcat的webapps目录
如何将 Jekyll 部署到云开发静态网站托管
云开发静态托管是云开发提供的静态网站托管的能力,静态资源(HTML、CSS、JavaScript、字体等)的分发由腾讯云对象存储 COS 和拥有多个边缘网点的腾讯云 CDN 提供支持
腾讯云开发TCB
2020/04/13
3.7K0
如何将java web项目上线/部署到公网
关于如何将java web上线,部署到公网,让全世界的人都可以访问的问题。小编将作出系列化,完整的流程介绍。
良月柒
2019/03/20
3.7K0
如何将代码部署到腾讯云网站静态托管
之前将网站代码部署到 coding 上,并成功迁移到腾讯云上存储桶 cos,但依旧发现很麻烦,而且主要是对象存储cos是收费的,每天看账号余额不足,着实难受
itclanCoder
2021/02/19
12.3K2
如何将代码部署到腾讯云网站静态托管
将Hexo部署到GitHub
点击右上角的“+”,选择“New repository”新建仓库; 输入仓库名(仓库名需要与github用户名一致),勾选“Add a README file”,然后点击底部的“Create repository”创建仓库
十玖八柒
2022/08/01
1.4K0
将Hexo部署到GitHub
将 HEXO 部署到VPS
hexo 可以部署在github,conding。当有了一个 vps 之后可以把 hexo 部署到 vps ,步骤如下:
tanmx
2020/04/02
1.7K0
如何将 Hexo 快速部署到云开发静态网站托管
云开发提供了一项静态网页托管的业务(云开发静态托管), 你可以将你的静态资源(HTML、CSS、JavaScript、字体等)上传到云端, 由腾讯云对象储存和边缘CDN进行分开.你可以将它理解成类似 Github Page 的业务.
用户1329451
2020/06/16
1.5K0
如何将 Hexo 博客部署到云开发静态网站托管
Hexo 是一个快速、简洁且高效的博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在其他平台上,是搭建博客的首选框架。除了在 Github Pages 部署以外,现在你有了一个新的选择,那就是使用云开发静态网站功能来部署啦!
腾讯云开发TCB
2020/07/30
4K3
如何将 Hexo 博客部署到云开发静态网站托管
部署项目到linux
idea导出war包 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181213203725979.png?x-oss-proce 点击apply,ok
微醺
2019/01/17
2.3K0
使用github+travis将Python包部署到Pypi
我在 github 托管 Python 代码,然后将包发布到 Pypi,通常的操作步骤是,更新完代码将提交到 github ,然后手动将包更新到 pypi,这样比较繁琐,就想到了使用github+travis-ci 构建一个自动部署环境。
goodspeed
2020/12/22
1K0
使用github+travis将Python包部署到Pypi
将node项目部署到云服务器详细教程
这里我已经安装过Xshell了,无法演示安装完毕的提示内容。我就演示输入 bt default 的提示
CRMEB商城源码
2022/04/20
5.8K0
将node项目部署到云服务器详细教程
将 java 项目部署到 linux 上的具体步骤
项目部署其实非常的简单,尤其是 java 项目。最近微信群里有网友,初学者还未毕业,问我 Java 项目是如果部署的?
业余草
2019/03/15
4.2K0
将 java 项目部署到 linux 上的具体步骤
怎么将golang部署到docker
我们都知道go能够这么火是因为他是docker官方标准语言,当然了docker也将go的性能发挥到了极致,可谓是相辅相成,交相辉映。而最近学洗go的过程中很多项目都会提供Dockerfile,这是什么鬼呢?后续查阅知道这个是将项目部署到docker的自动化配置引导文件。于是今天上班没事干花了一天时间吧周末的小项目给添加了个dockerfile……下面给大家分享一下艰辛的历程吧。
大话swift
2019/08/01
1.6K0
Linux环境下将.net6项目部署到docker
注意点:建议不用勾选单选框“启用Docker(E)",因为勾选后,涉及到Docker-Desktop的安装,可能会引起本地虚拟化组件Hyper-V的冲突。.Net自带Dockerfile我们可以后面创建镜像之前手动创建和编辑。
软件架构师Michael
2022/05/20
2K0
将Web项目War包部署到Tomcat服务器基本步骤
假设你本地JAVA的JDK安装的位置为:C:\Program Files\Java\jdk1.7.0_45。
用户3519280
2023/07/06
9.8K0
将Web项目War包部署到Tomcat服务器基本步骤
将项目发布到jcenter仓库
将项目发布到jcenter仓库可以方便他人直接使用,下面总结一下流程和可能遇到的问题
杜金房
2020/12/21
1.2K0
将项目发布到jcenter仓库
点击加载更多

相似问题

将python程序部署到Laravel网站

13

将烧瓶权限错误部署到IIS

21

将烧瓶部署到GAE时出错

16

如何将NodeJS项目部署到Azure网站?

11

将Windows Azure项目中的web角色部署到网站

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档