BitcoinJ从私钥生成地址

时间:2018-03-21 07:14:38

标签: java bitcoin bitcoinj

我正面临有关从address生成private key的问题。

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

开始的
xprv9s21xxxxxxxxxxxxxxxxxxxxxxxxxxxx
比特币中的

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

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

尝试:

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

由于数字格式无法转换,因此会引发异常。

尝试2:

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

它会从ECKey生成有效地址,并通过addresselectrum发送交易。但钱包没有收到钱。不知道钱在哪里消失了。

如何将主私钥转换为BigInteger or bytes[]

PS: 我是cryptocurrency

的初学者

1 个答案:

答案 0 :(得分:1)

将字符串私钥转换为bytes[]

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

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

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

Example from bitcoinj's github repo