eth私钥多少位
Ⅰ 如何创建和签署以太坊交易
交易
区块链交易的行为遵循不同的规则集
由于公共区块链分布式和无需许可的性质,任何人都可以签署交易并将其广播到网络。
根据区块链的不同,交易者将被收取一定的交易费用,交易费用取决于用户的需求而不是交易中资产的价值。
区块链交易无需任何中央机构的验证。仅需使用与其区块链相对应的数字签名算法(DSA)使用私钥对其进行签名。
一旦一笔交易被签名,广播到网络中并被挖掘到网络中成功的区块中,就无法恢复交易。
以太坊交易的数据结构:交易0.1个ETH
{
'nonce':'0x00', // 十进制:0
'gasLimit': '0x5208', //十进制: 21000
'gasPrice': '0x3b9aca00', //十进制1,000,000,000
'to': '' ,//发送地址
'value': '0x16345785d8a0000',//100000000000000000 ,10^17
'data': '0x', // 空数据的十进制表示
'chainId': 1 // 区块链网络ID
}这些数据与交易内容无关,与交易的执行方式有关,这是由于在以太坊中发送交易中,您必须定义一些其他参数来告诉矿工如何处理您的交易。交易数据结构有2个属性设计"gas": "gasPrice","gasLimit"。
"gasPrice": 单位为Gwei, 为 1/1000个eth,表示交易费用
"gasLimit": 交易允许使用的最大gas费用。
这2个值通常由钱包提供商自动填写。
除此之外还需要指定在哪个以太坊网络上执行交易(chainId): 1表示以太坊主网。
在开发时,通常会在本地以及测试网络上进行测试,通过测试网络发放的测试ETH进行交易以避免经济损失。在测试完成后再进入主网交易。
另外,如果需要提交一些其它数据,可以用"data"和"nonce"作为事务的一部分附加。
A nonce(仅使用1次的数字)是以太坊网络用于跟踪交易的数值,有助于避免网络中的双重支出以及重放攻击。
- const ethers = require('ethers')
- const signer = new ethers.Wallet('钱包地址')
- signer.signTransaction({
- 'nonce':'0x00', // 十进制:0
- 'gasLimit': '0x5208', //十进制: 21000
- 'gasPrice': '0x3b9aca00', //十进制1,000,000,000
- 'to': '' ,//发送地址
- 'value': '0x16345785d8a0000',//100000000000000000 ,10^17
- 'data': '0x', // 空数据的十进制表示
- 'chainId': 1 // 区块链网络ID
- })
- .then(console.log)
以太坊交易结构
以太坊交易签名
以太坊交易会涉及ECDSA算法,以Javascript代码为例,使用流行的ethers.js来调用ECDSA算法进行交易签名。
可以使用在线使用程序Composer将已签名的交易传递到以太坊网络。这种做法被称为”离线签名“。离线签名对于诸如状态通道之类的应用程序特别有用,这些通道是跟踪两个帐户之间余额的智能合约,并且在提交已签名的交易后就可以转移资金。脱机签名也是去中心化交易所(DEXes)中的一种常见做法。
也可以使用在线钱包通过以太坊账户创建签名验证和广播。
使用Portis,您可以签署交易以与加油站网络(GSN)进行交互。

链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
Ⅱ 2.在以太坊中,为了得到唯一的公钥,对私钥应用哪种算法
在以太坊中,为了得到唯一的公钥,对私钥应用算法:
1、生成一个随机的私钥(32字节)。
2、通过私钥生成公钥(64字节)。
3、通过公钥得到地址(20字节)。
Ⅲ 5、以太坊名词解析
详解参见: 私钥、公钥、地址
以太坊的密钥与比特币作用相同[相当于你在工商、招商、建设等银行设置的密码]
以太坊将明文 密钥 通过 [混入用户自己设置的密码] 加密算法生成的一种JSON格式的字符串,并以文件格式存储,以达到保存密钥的作用。
一系列的由12、15、18、21等不同数量的单词构成。
作用跟Keystore相同,就是给脑子不好使的同学们用的
'JSON是啥...' '这一长串的括号加数字是什么鬼...' '我输入了密码为什么出来了这些东西... 你们的钱包APP是不是有问题啊 ...'
举个花生:
大白话时间:
所有交易都包含以下组件:
Ⅳ 币圈什么是有效地址
创建ETH钱包后会生成一个以 0x 开头的 42 位字符串,也就是钱包地址,一个钱包对应一个钱包地址,地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的。所以,你会发现基于ETH的代币收款地址都是一样的。
由于区块链是去中心化的,所以可以查询到地址的所有交易记录。在前文《数据会说话 币圈的大资金们在想些什么?》,就是利用了这一特性。这也是比特币等一些加密货币匿名性较弱的原因。
试想一下,在未来你在超市用比特币刷了一盒牛奶,那么超市就知道这个地址的拥有者是你了。社工学的黑客也通过一些网络上的信息,把你和你的地址对上了号….当然,这扯远了。
2.密码=银行卡密码
创建钱包成功后,需要设置一个密码。一方面时转账的时候需要用到,另一方面使用官方提供的文件导入钱包的时候需要输入密码。密码一般可以修改,某些钱包必须提供私钥才能修改密码。
但是,虽然我们做了如上的类比。但是拥有了地址以及密码,并不相当于拥有了银行卡号和密码。因为前者仍然不能提走钱,而后者可以。前者如果想提币,则还需要你的钱包。
3.私钥=银行卡+密码
注册钱包,都会自动给你生成64字符串组成的私钥。一个钱包只有一个私钥且不能修改。在导入钱包中,输入私钥并设置一个密码(不用输入原密码),就能进入钱包并拥有这个钱包的掌控权,就可以把钱包中的所有币都转移走。
这里会涉及到另一个名词:助记词。顾名思义,助记词主要是方便你记住私钥,私钥的字符串没有规律,而助记词则有一定的规律。一般,助记词有用同私钥的一样的功能均需妥善保管。
在现实世界中,你的钱包丢了、银行卡钱被划走了,还有找回的可能。而由于区块链时去中心化以及匿名性的,你的钱包丢了,私钥丢了,几乎不可能找回。
说了这么多,只想强调私钥的重要性。私钥一般不要放在云盘、邮件等云服务器,也不要聊天发送,不要存在电脑保存。建议断网保存。
Ⅳ 什么是以太币/以太坊ETH
以太币(ETH)是以太坊(Ethereum)的一种数字代币,被视为“比特币2.0版”,采用与比特币不同的区块链技术“以太坊”(Ethereum),一个开源的有智能合约成果的民众区块链平台,由全球成千上万的计算机构成的共鸣网络。开发者们需要支付以太币(ETH)来支撑应用的运行。和其他数字货币一样,以太币可以在交易平台上进行买卖 。
温馨提示:以上解释仅供参考,不作任何建议。入市有风险,投资需谨慎。您在做任何投资之前,应确保自己完全明白该产品的投资性质和所涉及的风险,详细了解和谨慎评估产品后,再自身判断是否参与交易。
应答时间:2020-12-02,最新业务变化请以平安银行官网公布为准。
[平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~
https://b.pingan.com.cn/paim/iknow/index.html
Ⅵ 管好你的“钱包”
Kiwi(WeChat:Kiwind)
一:什么是私钥?助记词?什么是明文私钥?以及什么是keystore ?
1、私钥: 随机生成的,用来解锁对应(钱包)地址的一串字符。生成一个比特币地址的同时就会有一个私钥被生成,严格来说是, 先生成私钥,然后通过私钥使用加密函数来计算出地址 。作为用户,我们很少会直接看到私钥,一般情况下,私钥是被存储在钱包文件里,由钱包软件进行管理。下面就是一个比特币私钥:
这是对应私钥生成的地址:
2、助记词: 其实是 明文私钥的另一种表现形式 ,因为私钥是一个64位的哈希值,非常复杂。所以通过助记词将其简化。
3、明文私钥:未加密的私钥。这意味着任何人只要拿到你的明文私钥,就可以控制你的钱包资产。 我们时常会听说用户被盗币了,其实就是私钥泄露,币被转走。有时候我们会把地址比作银行卡号,私钥比作银行卡密码。所以说保护好自己的私钥有多重要。
4、keystore : 是 加密过后的私钥 ,需要用用户生成这个文件时设置的密码解开,才能够进行交易操作。如果你备份了keystore 但是忘记了自设密码,那么就尴尬了。所以keystore 的同时,也要记住密码。
二:如何导入钱包?
以imToken为例:
1、官方钱包导入
2、助记词导入
3、私钥导入
注意 :
1、imToken目前无法导出明文私钥,只能导出助记词和Keystore,但是可以导入明文私钥。
2、明文私钥可以去MyEtherWallet,先将Keystore导入,然后导出明文私钥。具体操作步骤如下:
(1)登陆 myetherwallet.com
(2)点击View Wallet Info(查看钱包信息),后选择Keystore File,在右侧的灰色区域上传Keystore文本信息,注意要.txt格式。
(3)上传完成,输入imToken上设置的钱包密码,点击Unlock解锁。
(4)导出明文私钥(切记安全保存)。
3、使用imToken的ETH钱包时,用Keystore导入钱包时,输入的是之前的密码。用助记词和私钥导入钱包时,输入的是新的密码。所以一旦助记词被盗,黑客是可以设置新的密码的!
具体说明请看下这篇来自“乌托邦皮条社”彭皓的文章:
http://mp.weixin.qq.com/s/5uNosRiiqpeTYOVR7i2TrQ
Ⅶ 【区块链课程】3.1—数字钱包的概念、特点
一、 钱包的概念
生活中的传统钱包相当于一个容器,可用来存放现金,但对于数字货币钱包而言,它不是用来储存数字货币的,而是用来储存和管理(包含私钥和公钥) 的管理容器,数字钱包里有地址(类似于你的银行卡账号)、私钥(类似于你银行卡的密码)。
私钥: 用户使用私钥进行签名交易,从而证明拥有该交易的输出权,其交易信息并不是存储在该钱包内,而是存储在区块链中。
公钥: 用来生成地址,储存交易,信息由私钥通过非对称加密算法生成。
钱包地址: 是一个以双字母开头(代表币种)的42位16进制哈希值字符串。ETH的地址是以 0x 开头的 42 位 16 进制哈希值字符串。例如: 如果将钱包比作银行卡, 那么钱包地址就是银行卡号。
三者之间的关系,简单说就是: 私钥生成公钥,公钥生成地址。 简而言之,地址就是你的账户,银行卡号,私钥就是你的账户密码。所以如果别人盗取了你的私钥,也就绝对拥有你账户的拥有权。
二、 钱包的特点
类比银行卡,私钥好比我们的银行卡密码+银行卡账号,而根据公钥生成的数字货币地址,就好比我们的银行卡账号,用作交易的转账地址。数字货币是保存在交易市场的,钱包这张银行卡保管着我们的地址和密码信息,让我们拥有地址上对应的数字货币的支配权。
三、钱包之于区块链的价值
加密数字货币是一种基于区块链技术的数字货币,数字货币钱包是专门用来管理这些资产的应用。钱包应用按照密码学原理创建1个或多个钱包地址,每个钱包地址都对应1个密钥对:私钥和公钥。
公钥是根据私钥进行一定的数学运算生成,与私钥一一对应。公钥主要是对外交易使用,每次交易都必须使用私钥对交易记录进行签名以证明对相关钱包地址里面的资产有控制权。
私钥是唯一能够证明对于数字资产有控制权的凭证,对于数字资产钱包来说,私钥是最重要的。私钥的生成和存储方式决定了资产安全与否。
所以钱包的目的就是用来保存私钥的。只要有私钥,就代表了你拥有了对应的token。
但目前数字货币市场上存在着数字管理不便、交易和兑换门槛高、区块链性能不足以及设计不合理、区块链开发成本高、连接现实难、缺乏应用场景等问题。说的简单点,就是基于不同公链开发的token都需要各自的钱包,于是我们的手机就被多种钱包的App占满。
四、数字钱包的几大关键词:
1、钱包名:
数字货币钱包的钱包名就是你创建钱包时的账号名或者昵称,每个钱包地址对应一个账号名,因为通常数字钱包都可以创建多个钱包地址,为了便于分辨和管理,给每个钱包地址设置一个名字还是很有必要的。
2、密码:
当你创建数字货币钱包账号的时候,需要设置一个密码,当你转账支付时需要使用这个密码确认;当你对钱包的私钥或者keystore进行备份导出时也需要密码确认;另外,如果你使用keystore导入钱包时也需要密码确认,而使用私钥导入时可以重置密码。
3、助记词:
当你创建钱包的时候,会要求你记录一串助记词,通常是由多个(12,15,18,21位)不规则的英文单词毫无规律的组成的,相当于你数字钱包的密码+支付密码。助记词在创建钱包的时候会提示你进行保存,请务必保存好,建议用笔记录在单独的笔记本上,并保管好你的笔记本。
4、keystore:
keystore是钱包存储私钥的一个文件(json),这个文件使用时要用到钱包的密码。选择导出或者导入keystore时,都需要输入密码,这个密码是你原来设置的本钱包密码, 这一点和用私钥或助记词导入钱包不一样,用私钥或助记词导入钱包,不需要知道原密码,可以直接重置密码。
Ⅷ 【以太坊易错概念】nonce, 公私钥和地址,BASE64/BASE58,
以太坊里的nonce有两种意思,一个是proof of work nonce,一个是account nonce。
在智能合约里,nonce的值代表的是该合约创建的合约数量。只有当一个合约创建另一个合约的时候才会增加nonce的值。但是当一个合约调用另一个合约中的method时 nonce的值是不变的。
在以太坊中nonce的值可以这样来获取(其实也就是属于一个账户的交易数量):
但是这个方法只能获取交易once的值。目前是没有内置方法来访问contract中的nonce值的
通过椭圆曲线算法生成钥匙对(公钥和私钥),以太坊采用的是secp256k1曲线,
公钥采用uncompressed模式,生成的私钥为长度32字节的16进制字串,公钥为长度64的公钥字串。公钥04开头。
把公钥去掉04,剩下的进行keccak-256的哈希,得到长度64字节的16进制字串,丢掉前面24个,拿后40个,再加上"0x",即为以太坊地址。
整个过程可以归纳为:
2)有些网关或系统只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,而且base64特别适合在http,mime协议下快速传输数据。Base64使用【字母azAZ数字09和+/】这64个字符编码。原理是将3个字节转换成4个字节(3 X 8) = 24 = (4 X 6)
当剩下的字符数量不足3个字节时,则应使用0进行填充,相应的,输出字符则使用'='占位,因此编码后输出的文本末尾可能会出现1至2个'='。
1)Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。
Base58Check是一种常用在比特币中的Base58编码格式,增加了错误校验码来检查数据在转录中出现的错误。 校验码长4个字节,添加到需要编码的数据之后。校验码是从需要编码的数据的哈希值中得到的,所以可以用来检测并避免转录和输入中产生的错误。使用 Base58check编码格式时,编码软件会计算原始数据的校验码并和结果数据中自带的校验码进行对比。二者不匹配则表明有错误产生,那么这个 Base58Check格式的数据就是无效的。例如,一个错误比特币地址就不会被钱包认为是有效的地址,否则这种错误会造成资金的丢失。
为了使用Base58Check编码格式对数据(数字)进行编码,首先我们要对数据添加一个称作“版本字节”的前缀,这个前缀用来明确需要编码的数 据的类型。例如,比特币地址的前缀是0(十六进制是0x00),而对私钥编码时前缀是128(十六进制是0x80)。 表4-1会列出一些常见版本的前缀。
接下来,我们计算“双哈希”校验码,意味着要对之前的结果(前缀和数据)运行两次SHA256哈希算法:
checksum = SHA256(SHA256(prefix+data))
在产生的长32个字节的哈希值(两次哈希运算)中,我们只取前4个字节。这4个字节就作为校验码。校验码会添加到数据之后。
结果由三部分组成:前缀、数据和校验码。这个结果采用之前描述的Base58字母表编码。下图描述了Base58Check编码的过程。
相同:
1) 哈希算法、Merkle树、公钥密码算法
https://blog.csdn.net/s_lisheng/article/details/77937202?from=singlemessage
2)全新的 SHA-3 加密标准 —— Keccak
https://blog.csdn.net/renq_654321/article/details/79797428
3)在线加密算法
http://tools.jb51.net/password/hash_md5_sha
4)比特币地址生成算法详解
https://www.cnblogs.com/zhaoweiwei/p/address.html
5)Base58Check编码实现示例
https://blog.csdn.net/QQ604666459/article/details/82419527
6) 比特币交易中的签名与验证
https://www.jianshu.com/p/a21b7d72532f
