什么是区块链地址?
币圈,链区的同学都知道钱包地址,因为充值、提现都需要地址。那么什么是钱包地址?地址是怎么来的?把地址给别人安全吗?为什么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地址是一样的。
预告下:下一篇文章会写下几款钱包管理工具和使用注意要点,希望对大家有用。