BitcoinJ 从私钥生成地址

BitcoinJ generate address from private key

我遇到了从 private key 生成 address 的问题。

我从 electrum 以及 bitcoin core 获得了 主私钥 即从

开始
xprv9s21xxxxxxxxxxxxxxxxxxxxxxxxxxxx

在 bitcoinJ 中:

ECKey key=ECKey.fromPrivate(prv); // it accepts bytes[] or BigInteger

如何将 9s21xxxxxxxxxxxxxxxxx 转换为 bytes[] or BigInteger

尝试:

String prvkey=9s21xxxxxxxxxxxxxxxxxxxxx
BigInteger bytes=new BigInteger(priv,16);

it throws exception as it can't convert due to number format.

尝试 2:

byte[] bytes=prvkey.getBytes(StandardCharsets.UTF_16);

它从 ECKey 生成有效地址,我通过 electrumaddress 发送交易。但是钱包没有收到钱。不知道钱去哪儿了。

我应该怎么做才能将主私钥转换成BigInteger or bytes[]

PS: 我是 cryptocurrency

的初学者

将字符串私钥转换成bytes[]:

ECKey key = ECKey.fromPrivate(prv.getBytes());

或者,将字符串私钥转换为BigInteger:

BigInteger privKey = Base58.decodeToBigInteger(prv);
ECKey key = ECKey.fromPrivate(privKey);

Example from bitcoinj's github repo