BTC转账功能开发
一、准备工作
1、下载metamask钱包插件
根据提示使用助记词生成账户,这里可以看到用户可以保留助记词,但是不保留私钥,或者keystore的json文件。可以生成一个账户
2、创建账户
针对于java和以太坊之间操作,一般有两种生成账户的方法:
-
使用metamask插件运用助记词创建账户的方法
-
用代码生成账户的方法,该方法有一个好处就是我们能够掌握账户的私钥(keystore的json文件)
-
maven配置
<dependency> <groupId>org.bitcoinj</groupId> <artifactId>bitcoinj-core</artifactId> <version>0.14.7</version> </dependency> <dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>3.6.0</version> </dependency>
-
代码实现
/** * path路径 */ private final static ImmutableList<ChildNumber> BIP44_ETH_ACCOUNT_ZERO_PATH = ImmutableList.of(new ChildNumber(44, true), new ChildNumber(60, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO); /** * 创建钱包 * @throws MnemonicException.MnemonicLengthException */ private static void createWallet() throws MnemonicException.MnemonicLengthException { SecureRandom secureRandom = new SecureRandom(); byte[] entropy = new byte[DeterministicSeed.DEFAULT_SEED_ENTROPY_BITS / 8]; secureRandom.nextBytes(entropy); //生成12位助记词 List<String> str = MnemonicCode.INSTANCE.toMnemonic(entropy); //使用助记词生成钱包种子 byte[] seed = MnemonicCode.toSeed(str, ""); DeterministicKey masterPrivateKey = HDKeyDerivation.createMasterPrivateKey(seed); DeterministicHierarchy deterministicHierarchy = new DeterministicHierarchy(masterPrivateKey); DeterministicKey deterministicKey = deterministicHierarchy .deriveChild(BIP44_ETH_ACCOUNT_ZERO_PATH, false, true, new ChildNumber(0)); byte[] bytes = deterministicKey.getPri
-