Private Keys
Creating a Private Key
There are several classes for working with private keys, all with slightly different intent.
class | intent |
---|---|
PrivateKey | A simple wrapper around an ECKey |
DumpedPrivateKey | Parses and generates private keys in bitcoin’s serialised text format |
ECKey | Represents an elliptic curve public and (optionally) private key |
import org.twostack.bitcoin4j.ECKey
import org.twostack.bitcoin4j.PrivateKey
//creates random private key and public keys (generates random point on elliptic curve)
val ecKey = ECKey()
//create a PrivateKey to wrap the ECKey
val privateKey = PrivateKey(ecKey);
Private Keys do not directly have anything to do with network selection. However, the PrivateKey() and DumpedPrivateKey() classes have convenience methods for serializing to user-friendly text representation (WIF), which does encapsulate the NetworkType in it’s envelope as a signal to Wallets.
You can select from the following networks (note that all the TEST networks are functionally equivalent in terms of Private Keys. i.e. selecting any of them results in the same serialised WIF text )
NetworkType | Description |
---|---|
MAIN | The Bitcoin Mainnet |
REGTEST | The Regression Test Network (local node) |
TEST | The Public Test network |
SCALING_TESTNET | The Public High-volume test network |
Exporting to WIF
The Wallet-import-format (WIF) is a widely used standard for serialising private keys to base58 text encoding that make them less prone to errors during copying since they include a built-in checksum.
import org.twostack.bitcoin4j.ECKey
import org.twostack.bitcoin4j.PrivateKey
val privateKey = ECKey();
val dpk = DumpedPrivateKey(NetworkType.TEST, privateKey.getPrivKeyBytes(), true);
var wifString = dpk.toBase58();
Importing from WIF
import org.twostack.bitcoin4j.params.NetworkType;
import org.twostack.bitcoin4j.crypto.DumpedPrivateKey;
val privkeyWif = "92shANodC6Y4evT5kFzjNFQAdjqTtHAnDTLzqBBq4BbKUPyx6CD";
val key: ECKey = DumpedPrivateKey.fromBase58(NetworkType.TEST, privkeyWif).getKey();