创建和使用账户

生成账户

下面是使用 Java SDK 创建一个随机账户的方法,总共支持三种加密算法

1)ECDSA

SecureKey secureKey = SecureKey.getInstance("ECDSA", 1);
Credentials credentials = Credentials.create(secureKey);

2)SM

SecureKey secureKey = SecureKey.getInstance("SM", 1);
Credentials credentials = Credentials.create(secureKey);

3)ED25519

SecureKey secureKey = SecureKey.getInstance("ED25519", 1);
Credentials credentials = Credentials.create(secureKey);

具体使用哪一种需要跟 sdk 配置保持一致,具体见 thanos-web3j.conf:

crypto {
    #JCA cryptoprovider name.
    providerName="SC"
    #JCA sign Algorithm,such as ECDSA, ED25519 etc
    sign.algorithm="ECDSA"
    #sign.algorithm="ED25519"
    #sign.algorithm="SM"
    #Used for create JCA MessageDigest
    hash.alg256="ETH-KECCAK-256"
    hash.alg256="ETH-KECCAK-256-LIGHT"
    hash.alg512="ETH-KECCAK-512"
}

使用指定私钥创建账户的方式如下,以 ECDSA 为例

获取账户地址的方式如下

账户地址的计算

账户地址由ECDSA公钥计算得来,与以太坊兼容,对ECDSA公钥的16进制表示计算keccak-256sum哈希,取计算结果的后20字节的16进制表示作为账户地址,每个字节需要两个16进制数表示,所以账户地址长度为40。

1)生成ECDSA私钥

首先,我们使用OpenSSL生成椭圆曲线私钥,椭圆曲线的参数使用secp256k1。执行下面的命令,生成PEM格式的私钥并保存在ecprivkey.pem文件中。

执行下面的指令,查看文件内容。

可以看到类似下面的输出:

接下来根据额私钥计算公钥,执行下面指令

可以得到类似下面的输出:

2)根据公钥计算地址

本节我们根据公钥计算对应的账户地址。我们需要获取keccak-256sum工具,可以从这里下载

得到类似下面的输出,就是计算得出的账户地址。

Last updated