Personal API

使用personal接口可以与youchain节点进行交互并管理节点账户。需要先创建Admin发起调用

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

Create wallet

描述:创建钱包地址

parameter

数据类型 备注
String 钱包初始密码

return

参数名 数据类型 描述
address String 钱包账户地址

示例:

String password = "your password";
NewAccountIdentifier account = admin.personalNewAccount(password).send();
String address = account.getAccountId();

List accounts

描述:获取账户地址列表

parameter

return

参数名 数据类型 描述
array String 账户地址列表
PersonalListAccounts accounts = admin.personalListAccounts().send();
accounts.getAccountIds().forEach(address -> {
    logger.info("address={}", address);
});

Unlock account

描述:解锁指定账户

parameter

数据类型 备注
String 解锁账户地址
String 解锁账户对应密码
BigInteger 解锁时长

return

参数名 数据类型 描述
isUnlocked Boolean 是否解锁账户
PersonalUnlockAccount unlockAccount = admin.personalUnlockAccount(address, password).send();
boolean isUnlocked = unlockAccount.accountUnlocked();

Lock account

描述:锁定指定账户

parameter

数据类型 备注
String 账户地址

return

参数名 数据类型 描述
isLocked Boolean 是否解定账户

示例:

PersonalLockAccount lockAccount = admin.personalLockAccount(address).send();
boolean isLocked = lockAccount.accountLocked();

Import raw key

描述:导入私钥

parameter

数据类型 备注
String 私钥
String 对应的密码

return

参数名 数据类型 描述
address String 对应的账户地址

示例:

String privateKey = "your private key";
privateKey = Numeric.cleanHexPrefix(privateKey);
String keyPassword = "your password";
PersonalImportRawKey importRawKey = admin.personalImportRawKey(privateKey, keyPassword).send();
String address = importRawKey.getAccountId();

Sign data

描述:签名数据

parameter

数据类型 备注
String 要签名的数据
String 签名的账户地址
String 账户的密码

return

参数名 数据类型 描述
signedMessage String 签名后的数据

示例:

String data = "hello";
String dataHashed = Hash.sha3(data);
String address = "your address in this node";
PersonalSign personalSign = admin.personalSign(dataHashed, address, password).send();
String signedMessage = personalSign.getSignedMessage();

EcRecover account

描述:解锁签名前的地址

parameter

数据类型 备注
String 签名前的十六进制数据
String 签名后的数据

return

参数名 数据类型 描述
address String 签名时使用的账户地址

示例:

String signedMessage = "signed message";
PersonalEcRecover ecRecover = admin.personalEcRecover(dataHashed, signedMessage).send();
String address = ecRecover.getRecoverAccountId();

Sign transaction

描述:签名交易

parameter

参数名 数据类型 描述
Transaction Transaction 要签名的交易对象
password String 账户的密码

return

参数名 数据类型 描述
raw String 已签名的 RLP 编码的交易
Transaction Transaction 原始交易对象

示例:

Transaction transaction = Transaction.createYOUTransaction(fromAddress, nonce, gasPrice, gasLimit, toAddress, amount);
PersonalSignTransaction signTransaction = admin.personalSignTransaction(transaction, password).send();
String raw = signTransaction.getResp().getRaw();
Transaction tx = signTransaction.getResp().getTx();

Send transaction

描述:发送普通交易

parameter

参数名 数据类型 描述
Transaction Transaction 要签名的交易对象
password String 账户的密码

return

参数名 数据类型 描述
raw String 已签名的 RLP 编码的交易
Transaction Transaction 原始交易对象

示例:

Transaction transaction = Transaction.createYOUTransaction(fromAddress, nonce, gasPrice, gasLimit, toAddress, amount);
YOUSendTransaction sendTransaction = admin.personalSendTransaction(transaction, password).send();

PersonalNewValKey

描述:生成一套密钥

parameter

数据类型 备注
String 初始 valKey 密码

return

参数名 数据类型 描述
address String 账户地址
mainPubKey String 已压缩的共识公钥
blsPubKey String 已压缩的 BLS 公钥

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalNewValKey newValKey = admin.personalNewValKey("Ta123456").send();
logger.info("address={}", newValKey.getResp().getAddress());
logger.info("mainPubKey={}", newValKey.getResp().getMainPubKey());
logger.info("blsPubKey={}", newValKey.getResp().getBlsPubKey());

PersonalExportValKey

描述:使用初始 valKey 密码导出验证者私钥并设置新密码

parameter

数据类型 描述
String 账户地址
String 初始 valKey 密码,即使用 personal_newValKey 创建的密码
String 导出 valKey 时设置的新密码

return

数据类型 描述
String 返回验证者私钥,否则返回失败 message 和 code

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalExportValKey exportValKey = admin.personalExportValKey("0x330fC2616b9d9010B8BB8d43eD3316d6756EaAC6", "123456", "123").send();
logger.info("privateKey={}", exportValKey.getPrivateKey());

PersonalImportValKey

描述:导入验证者私钥,使用新的加密密码重新加密后存储在本地。

parameter

数据类型 描述
String 使用 personal_exportValKey 导出的验证者私钥
String 使用 personal_exportValKey 导出时设置的密码
String 重新设置 valKey 密码

return

参数名 数据类型 描述
address String 账户地址
mainPubKey String 已压缩的 YPOS 共识公钥
blsPubKey String 已压缩的 bls 公钥

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalImportValKey importValKey = admin.personalImportValKey("0x330fC2616b9d9010B8BB8d43eD3316d6756EaAC6", "123456", "123").send();
logger.info("address={}", importValKey.getResp().getAddress());
logger.info("mainPubKey={}", importValKey.getResp().getMainPubKey());
logger.info("blsPubKey={}", importValKey.getResp().getBlsPubKey());

PersonalUseValKey

描述:设置本地挖矿所用的密钥。密钥需已在本地存储。

parameter

名称 数据类型 描述
address String 账户地址
password String 初始 valKey 密码
keep boolean 返回 true 时,记录所用的 key,使得节点重启后能自动进行挖矿

return

数据类型 描述
null 返回 null,否则返回失败 message 和 code

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalUseValKey useValKey = admin.personalUseValKey("0x330fC2616b9d9010B8BB8d43eD3316d6756EaAC6", "123456", true).send();
logger.info("useValKey={}", useValKey.getUseValKey());

PersonalLockValKey

描述:删除本地存储的验证者私钥(如果之前通过 keep 参数记录了明文密钥,也一并删除)

parameter

return

参数名 数据类型
null 返回 null,否则返回失败 message 和 code

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalLockValKey lockValKey = admin.personalLockValKey().send();
logger.info("result={}", lockValKey.getLockValKey());

PersonalDelValKey

描述:删除本地存储的验证者私钥

parameter

数据类型 描述
String 账户地址
String 初始 valKey 密码

return

返回值 描述
null 返回 null,否则返回失败 message 和 code

示例:

String nodeUrl = "http://localhost:8283/";
HttpService httpService = new HttpService(nodeUrl);
Admin admin = Admin.build(httpService);

PersonalDelValKey delValKey = admin.personalDelValKey("0x8D00fF7Aa60107E10d4064E03c3B60eFFe8Dd203", "Ta123456").send();
logger.info("result={}" + delValKey.getDelValKey());