Added Address info support for Litecoin

This commit is contained in:
kennycud
2023-11-04 14:49:15 -07:00
parent 5febfaf3ee
commit d4ef175c4d
7 changed files with 335 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import org.bitcoinj.core.Transaction;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.qortal.crosschain.AddressInfo;
import org.qortal.crosschain.Bitcoiny;
import org.qortal.crosschain.BitcoinyHTLC;
import org.qortal.crosschain.ForeignBlockchainException;
@@ -11,6 +12,8 @@ import org.qortal.repository.DataException;
import org.qortal.test.common.Common;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import static org.junit.Assert.*;
@@ -127,4 +130,36 @@ public abstract class BitcoinyTests extends Common {
System.out.println(address);
}
@Test
public void testGenerateRootKeyForTesting() {
String rootKey = BitcoinyTestsUtils.generateBip32RootKey( this.bitcoiny.getNetworkParameters() );
System.out.println(String.format(getCoinName() + " generated BIP32 Root Key: " + rootKey));
}
@Test
public void testGetWalletAddresses() throws ForeignBlockchainException {
String xprv58 = getDeterministicKey58();
Set<String> addresses = this.bitcoiny.getWalletAddresses(xprv58);
System.out.println( "root key = " + xprv58 );
System.out.println( "keys ...");
addresses.stream().forEach(System.out::println);
}
@Test
public void testWalletAddressInfos() throws ForeignBlockchainException {
String xprv58 = getDeterministicKey58();
List<AddressInfo> addressInfos = this.bitcoiny.getWalletAddressInfos(xprv58);
System.out.println("address count = " + addressInfos.size() );
System.out.println( "address infos ..." );
addressInfos.forEach( System.out::println );
}
}

View File

@@ -0,0 +1,42 @@
package org.qortal.test.crosschain;
import com.google.common.collect.ImmutableList;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.crypto.ChildNumber;
import org.bitcoinj.crypto.DeterministicKey;
import org.bitcoinj.script.Script;
import org.bitcoinj.wallet.DeterministicKeyChain;
import org.bitcoinj.wallet.DeterministicSeed;
import org.bitcoinj.wallet.Wallet;
import org.qortal.crosschain.ForeignBlockchainException;
import org.qortal.crosschain.Litecoin;
import org.qortal.repository.DataException;
import org.qortal.test.common.Common;
public class BitcoinyTestsUtils {
public static void main(String[] args) throws DataException, ForeignBlockchainException {
Common.useDefaultSettings();
final String rootKey = generateBip32RootKey( Litecoin.LitecoinNet.TEST3.getParams());
String address = Litecoin.getInstance().getUnusedReceiveAddress(rootKey);
System.out.println("rootKey = " + rootKey);
System.out.println("address = " + address);
System.exit(0);
}
public static String generateBip32RootKey(NetworkParameters networkParameters) {
final Wallet wallet = Wallet.createDeterministic(networkParameters, Script.ScriptType.P2PKH);
final DeterministicSeed seed = wallet.getKeyChainSeed();
final DeterministicKeyChain keyChain = DeterministicKeyChain.builder().seed(seed).build();
final ImmutableList<ChildNumber> path = keyChain.getAccountPath();
final DeterministicKey parent = keyChain.getKeyByPath(path, true);
final String rootKey = parent.serializePrivB58(networkParameters);
return rootKey;
}
}