风险提示:理性看待区块链,提高风险意识!

区块链地址是什么?

2个回答

要做坚强的我5星评价

2020-09-18 11:15:41

区块链地址是什么?

什么是区块链地址?

币圈,链区的同学都知道钱包地址,因为充值、提现都需要地址。那么什么是钱包地址?地址是怎么来的?把地址给别人安全吗?为什么ETH地址和EOS地址是一样?带着这些问题我们来讲讲区块链地址?

1、对称加密

讲到地址,我们就不得不先说一说密码学,作为保护信息传输安全的技术手段,密码在人类社会中的应用非常广泛,它的基本思想是通过字符的代换来实现加解密。

对称加密是加密算法和解密算法都是同一模式,用秘钥来对信息进行加解密,通常情况下,密钥越长,代表着密文被破解的难度越大。对称加密有一个最大弱点:只有一把密钥保证加密和解密数据,所以甲方必须把密钥告诉乙方,否则乙方无法解密。而保存和传递密钥,就成了最头疼的问题。

2、 非对称加密

基于对称加密的弱点,怎么样可以在不直接传递密钥的情况下,完成密文的解密呢?加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,基于这种公钥机制的思想,开始出现了一系列非对称加密算法。90年代密码学进一步发展,基于椭圆曲线乘法、素数幂等数学函数的公钥算法诞生,使得数字密钥和不可伪造的数字签名成为可能。

非对称加密需要两个(一对)密钥:公开密钥(publickey)和私有密钥(privatekey),用公钥对数据进行加密后,只有对应的私钥才能解密;反之如果私钥用于加密,则只有对应的公钥才能解密。这样可以保证通信双方是通信数据是私密的,并且能确认双方的身份。

3、公钥和私钥

安全散列算法(Secure Hash Algorithm,缩写为SHA),用改算法给任意长度的数据能计算出长度固定的字符串(又称消息摘要),并且该字符串是唯一的。

比特币私钥其实是使用SHA-256生成的32字节(256位)的随机数,有效私钥的范围则取决于比特币使用的secp256k1 椭圆曲线数字签名标准。大小介于0x1 到0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140之间的数几乎都是合法的私钥。

在私钥的前面加上版本号,后面添加压缩标志和附加校验码,(所谓附加校验码,就是对私钥经过2次SHA-256运算,取两次哈希结果的前四字节),然后再对其进行Base58编码,就可以得到我们常见的WIF(Wallet import Format)格式的私钥。

私钥经过椭圆曲线乘法运算,可以得到公钥。公钥是椭圆曲线上的点,并具有x和y坐标。公钥有两种形式:压缩的与非压缩的。早期比特币均使用非压缩公钥,现在大部分客户端默认使用压缩公钥。

由于数学原理,从私钥推算公钥是可行的,从公钥逆推私钥是不可能的。

初识比特币的人常有一种误解,认为比特币公钥就是地址,这是不正确的。从公钥到地址还要经过一些运算。

4、地址的生成(比特币)

椭圆曲线算法生成的公钥信息比较长,压缩格式的有33字节,非压缩的则有65字节。地址是为了减少接收方所需标识的字节数。比特币地址的生成步骤如下:

1 生成私钥与公钥

2 将公钥通过SHA256哈希算法处理得到32字节的哈希值

3 对得到的哈希值通过RIPEMD-160算法来得到20字节的哈希值 —— Hash160

4 把版本号+Hash160组成的21字节数组进行双次SHA256哈希运算,得到的哈希值的头4个字节作为校 验和,放置21字节数组的末尾。

5 对组成25位数组进行Base58编码,就得到地址。

具体的过程我们不需要去一一弄清楚,这里面涉及到很的数学公式和原理。但是我们需要从中理解到下面的几点:

由于椭圆曲线乘法以及哈希函数的特性,我们可以从私钥推导出公钥,也可以从公钥推导出地址,而这个过程是不可逆的。也正因如此,在整个比特币(以太坊等)系统中,公钥是可以公开的,也就是说钱包地址是安全的。私钥是最关键的部分。

私钥泄露也就意味着丢失了一切。

5、匿名性和可朔源

任何人均可以轻易生成大量的私钥、公钥、地址。地址本身是匿名的,通过多个地址交易可进一步提高匿名性。但是所有的交易都是透明的,就是说一个地址所有的交易均可以查,可朔源跟踪,就是说你给出的地址我可以跟踪查询所有的进出帐和余额。

6、为什么ETH地址和EOS地址是一样的?

这个问题比较难回答也比较好回答。简单来说现在的EOS是ETH上面ERC20代币(题外话:EOS本身是公链,待EOS原生公链上线后需要把现有EOS持有情况转移过去,地址会不一样),当然包括其他在ETH上面的代币基本上的地址都和ETH地址是一样的。


夏天烤洋芋1星评价

2020-08-19 11:17:39

1.私钥

私钥,即私有密钥,只有你自己可以知道,公开后你的币就没了。本质是一串256bit的数字(也就是由256个“0”和“1”组成)。

2.公钥

公钥,即公开密钥,可对全节点公开,公开后无任何风险。

3.钱包地址

钱包地址,可理解为Cyberspace中的银行卡账号,可对全节点公开,公开后无任何风险,本质是一串字符串。

4.三者关系

4.1 私钥-公钥关系

公钥和私钥成对出现

公开的密钥叫公钥,只有自己知道的叫私钥

用公钥加密的数据只有对应的私钥可以解密

用私钥加密的数据只有对应的公钥可以解密

如果可以用公钥解密,则必然是对应的私钥加的密

如果可以用私钥解密,则必然是对应的公钥加的密

4.2 三者相互生成关系

为什么说私钥只能自己知道,而公钥和钱包地址却可以随意公开?这跟三者的生成关系直接相关。私钥可以生成公钥和钱包地址,而公钥却不能生成私钥,同时,钱包地址不能生成公钥。

首先使用随机数发生器生成一个『私钥』。一般来说这是一个256bits的数,拥有了这串数字就可以对相应『钱包地址』中的比特币进行操作,所以必须被安全地保存起来。

『私钥』经过SECP256K1算法处理生成了『公钥』。SECP256K1是一种椭圆曲线算法,通过一个已知『私钥』时可以算得『公钥』,而『公钥』已知时却无法反向计算出『私钥』。这是保障比特币安全的算法基础。

同SHA256一样,RIPEMD160也是一种Hash算法,由『公钥』可以计算得到『公钥哈希』,而反过来是行不通的。

将一个字节的地址版本号连接到『公钥哈希』头部(对于比特币网络的pubkey地址,这一字节为“0”),然后对其进行两次SHA256运算,将结果的前4字节作为『公钥哈希』的校验值,连接在其尾部。

将上一步结果使用BASE58进行编码(比特币定制版本),就得到了『钱包地址』。

比如, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

至此,私钥、公钥和钱包地址的关系已经较为明朗。