(二)区块链钱包之创建钱包地址

(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(BTC交易)
(五)区块链钱包之创建以太坊交易(ETH交易)

区块链钱包分为很多种,主要分为比特系和以太系,他们的生成方式不同,这里主要介绍这两种钱包的地址创建方式。

钱包创建流程

生成钱包地址BTC和ETH分别有自己的方法,也就是有自己的库。

(二)区块链钱包之创建钱包地址_第1张图片

BTC 系列

导入Gradle依赖

api group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.10'

public static DeterministicKeyChain generateRootKey(List<String> keywords) {
     
	DeterministicSeed seed = new DeterministicSeed(keyWords, null, "", 0);
	return DeterministicKeyChain.builder().seed(seed).build();
}

public static DeterministicKey generateKeyByPath(DeterministicKeyChain chain, String path) {
     
  List<ChildNumber> childNumbers = HDUtils.parsePath(path);
  return chain.getKeyByPath(childNumbers, true);
}

/*
	注意btc和btctest的params不同,这里主要区别是Params里的addressHeader不同,
	btc的addressHeader为0,btctest的addressHeader为111
*/
private static String generateBtcAddress(DeterministicKey key, String type) {
     
    NetworkParameters params = null;
    if("btc".equals(type)) {
     
		params = MainNetParams.get();
	} else if("btctest".equals(type)) {
     
		params = TestNet3Params.get();
	}
    Address address = Address.fromKey(params, key, Script.ScriptType.P2PKH);
    if (address instanceof LegacyAddress) {
     
      LegacyAddress legacyAddress = (LegacyAddress) address;
      String addressStr = legacyAddress.toBase58();
      return addressStr;
    }
    return "";
  }
ETH 系列

导入Gradle依赖

api 'org.web3j:core:4.6.0-android'
// key生成方式和上面一样
private static String generateEthAddress(DeterministicKey key) {
     
    Credentials credentials = Credentials.create(key.getPrivateKeyAsHex());
    String address = credentials.getAddress();
    return address;
}
验证

助记词生成钱包验证

输入助记词
在这里插入图片描述
选择钱包币种
在这里插入图片描述
这个就是上面说的path。
(二)区块链钱包之创建钱包地址_第2张图片
这里就是根据我们的助记词生成的根私钥派生出各个节点的钱包地址
(二)区块链钱包之创建钱包地址_第3张图片

希望我的分享能帮助到大家
(二)区块链钱包之创建钱包地址_第4张图片

你可能感兴趣的:(java,区块链技术,Android,区块链,java,android)