区块链的地址算法

当我们使用公链的时候,大多会要我们安装一个钱包,如小狐狸等,那为什么一定要安装这个钱包插件呢?这个钱包插件是干什么的?

我们知道,区块链具有匿名性的特性,即你的链上资产会存储在一个密码串的账户里,没人知道这个密码串现在在谁手里。这个账户的密码串就是区块链的私钥,账户可以理解为公钥或地址。私钥、公钥和地址是一套的,且满足单向推导关系,私钥可以推导出公钥及地址,但是公钥及地址不能反推私钥。所以用户手里捏好私钥即可,公钥和地址是要传递到链上参与操作的。

一般意义上的钱包插件,一方面,是帮助管理私钥的,体现在易记性和授权性。比如助记词,是不是方便我们记住私钥呢;还有交易的时候会调起签名,是不是体现私钥的授权呢。另一方面,方便用户查看私钥对应的链上资产,通过私钥这把钥匙,便可打开链上资产的大门。同时,钱包插件还实现了区块链交互操作的透明性,钱包的浏览器插件形态,保证了其代码的开源性。

接触过区块链的开发者会发现,不同类型的区块链可能有不同的地址算法,地址的最终形态可能也不是一种数据类型。那下面就来看看目前主流的地址算法有哪些。

经统计,目前的区块链地址算法主要有:RSA、ECC、ECDSA、SM2、Curve25519、Ed25519等。

RSA:RSA 是最常用的非对称加密算法。所谓非对称加密,就是说有两个密钥,一个密钥加密只可以用另外一个密钥解密。重要的是,RSA的签名,即,拥有私钥者可以用私钥加密信息,公钥可以解密获得加密内容,从而验证私钥拥有者的身份。

ECC:ECC主要进行加密通信和数字签名操作。ECC 的数学原理是椭圆曲线离散对数,导致ECC要比RSA复杂很多。但,同样的秘钥长度下,ECC要安全很多。

ECDSA:椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA主要用于对数据(比如一个文件)创建数字签名,以便于你在不破坏它的安全性的前提下对它的真实性进行验证。

SM2:SM2 基于 ECC 实现。SM2 采用的是 ECC 256 位的一种,安全强度比 RSA 2048 位高,在我们国家商用密码体系中被用来替换 RSA 算法。

Curve25519:Curve25519 是目前最高水平的 Diffie-Hellman 函数。给定一个用户的 32 字节密钥,curve25519 计算该用户的 32 字节公钥。给定该用户的 32 字节密钥和另一个用户的 32 字节公钥,curve25519 计算一个 32 字节的共享密钥提供给这两个用户使用。然后可以使用这个密钥对两个用户进行身份验证和信息加密。

Ed25519:Ed25519的签名和验证的性能都极高。签名过程不依赖随机数生成器,不依赖 hash 函数的防碰撞性,没有时间通道攻击的问题。其签名只有 64 字节,公钥只有 32 字节,私钥也是32字节。