主页 > imtokendapp授权 > (二)区块链钱包创建钱包地址

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

imtokendapp授权 2023-01-17 10:28:34

(一)区块链钱包创建助记词

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

(三)区块链钱包加密算法介绍

(四)区块链钱包创建比特离线交易(BTC交易)

(五)为以太坊交易(ETH 交易)创建区块链钱包

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

钱包创建过程

为 BTC 和 ETH 生成钱包地址有不同的方法区块链钱包地址是如何生成的,即它们自己的库。

在这里插入图片描述

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;
}

验证

助记词生成钱包验证

输入助记词

在这里插入图片描述

选择钱包币种

在这里插入图片描述

这是上面提到的路径。

在这里插入图片描述

这是根据我们的助记词生成的根每个节点的钱包地址都是从私钥衍生出来的

在这里插入图片描述