import java.util.ArrayList; import java.util.Arrays; import com.google.bitcoin.core.Base58; import com.google.bitcoin.crypto.ChildNumber; import com.google.bitcoin.crypto.DeterministicHierarchy; import com.google.bitcoin.crypto.DeterministicKey; import com.google.bitcoin.crypto.HDKeyDerivation; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; /**August 22, 2013 with bitcoinJ 0.10 */ public class Main { /**compare public keys of 0'/0'/0' and and 0'/0'/0 * @param args none used*/ public static void main(String[] args) { System.out.println("start"); DeterministicHierarchy masterHrchy = new DeterministicHierarchy( HDKeyDerivation.createMasterPrivateKey("BitcoinJRulez".getBytes())); // builder for /0/0 ArrayList zeroZero = new ArrayList(); zeroZero.add(new ChildNumber(0, true)); zeroZero.add(new ChildNumber(0, true)); // builders for public and private nodes at /0/0/0 Builder privateNode = new ImmutableList.Builder(); privateNode.addAll(zeroZero); privateNode.add(new ChildNumber(0, true /* private */)); DeterministicKey priv = masterHrchy.get(privateNode.build(), false, true); Builder pubNode = new ImmutableList.Builder(); pubNode.addAll(zeroZero); pubNode.add(new ChildNumber(0, false /* public */)); DeterministicKey pub = masterHrchy.get(pubNode.build(), false, true); assert Arrays.equals(priv.getPubKeyBytes(), pub.getPubKeyBytes()) : Base58.encode(priv.getPubKeyBytes()) + " vs. " + Base58.encode(pub.getPubKeyBytes()); System.out.println("end"); } }