区块链钱包之创建钱包地址

Posted 陳英傑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链钱包之创建钱包地址相关的知识,希望对你有一定的参考价值。

(一)区块链钱包之生成助记词
(二)区块链钱包之创建钱包地址
(三)区块链钱包之加密算法简介
(四)区块链钱包之创建比特离线交易(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;
}
验证

助记词生成钱包验证

输入助记词
在这里插入图片描述
选择钱包币种
在这里插入图片描述
这个就是上面说的path。
在这里插入图片描述
这里就是根据我们的助记词生成的根私钥派生出各个节点的钱包地址
在这里插入图片描述

希望我的分享能帮助到大家
在这里插入图片描述

以上是关于区块链钱包之创建钱包地址的主要内容,如果未能解决你的问题,请参考以下文章

区块链钱包之加密算法简介

区块链钱包之加密算法简介

区块链钱包之加密算法简介

区块链钱包之加密算法简介

区块链钱包之生成助记词

区块链钱包之生成助记词