@Override public Address freshReceiveAddress () { return keyList.get(0).toAddress(Constants.getNetwork()); } }
/** * Returns only the addresses that have been issued by {@link #freshReceiveKey()}, {@link #freshReceiveAddress()}, * {@link #currentReceiveKey()} or {@link #currentReceiveAddress()}. */ public List<Address> getIssuedReceiveAddresses() { final List<ECKey> keys = getIssuedReceiveKeys(); List<Address> addresses = new ArrayList<Address>(keys.size()); for (ECKey key : keys) addresses.add(key.toAddress(getParams())); return addresses; }
/** * Returns only the addresses that have been issued by {@link #freshReceiveKey()}, {@link #freshReceiveAddress()}, * {@link #currentReceiveKey()} or {@link #currentReceiveAddress()}. */ public List<Address> getIssuedReceiveAddresses() { final List<ECKey> keys = getIssuedReceiveKeys(); List<Address> addresses = new ArrayList<>(keys.size()); for (ECKey key : keys) addresses.add(key.toAddress(getParams())); return addresses; }
@Override public ECKey findKeyFromPubHash (byte[] pubkeyHash) { for (ECKey k : keyList) { if (Arrays.equals(pubkeyHash, k.toAddress(Constants.getNetwork()).getHash160())) { return k; } } return null; }
/** * Create a fake TX of sufficient realism to exercise the unit tests. Two outputs, one to us, one to somewhere * else to simulate change. There is one random input. */ public static Transaction createFakeTx(NetworkParameters params, Coin value, Address to) { return createFakeTxWithChangeAddress(params, value, to, new ECKey().toAddress(params)); }
private synchronized Transaction makeUnsignedChannelContract(Coin valueToMe) throws ValueOutOfRangeException { Transaction tx = new Transaction(wallet.getParams()); tx.addInput(getContractInternal().getOutput(0)); // Our output always comes first. // TODO: We should drop myKey in favor of output key + multisig key separation // (as its always obvious who the client is based on T2 output order) tx.addOutput(valueToMe, myKey.toAddress(wallet.getParams())); return tx; }
private synchronized Transaction makeUnsignedChannelContract(Coin valueToMe) throws ValueOutOfRangeException { Transaction tx = new Transaction(wallet.getParams()); tx.addInput(getContractInternal().getOutput(0)); // Our output always comes first. // TODO: We should drop myKey in favor of output key + multisig key separation // (as its always obvious who the client is based on T2 output order) tx.addOutput(valueToMe, myKey.toAddress(wallet.getParams())); return tx; }
@Test public void testMini() throws Exception { SerializedKey serializedKey = new SerializedKey(BTC_MINI_PRIV); assertFalse(serializedKey.isEncrypted()); SerializedKey.TypedKey key = serializedKey.getKey(); assertTrue(key.possibleType.contains(BTC)); assertEquals(BTC_MINI_ADDR, key.key.toAddress(BTC).toString()); } }
@Test public void testWif() throws Exception { SerializedKey serializedKey = new SerializedKey(BTC_WIF_PRIV); assertFalse(serializedKey.isEncrypted()); SerializedKey.TypedKey key = serializedKey.getKey(); assertTrue(key.possibleType.contains(BTC)); assertEquals(BTC_WIF_ADDR, key.key.toAddress(BTC).toString()); }
@Test public void testMini() throws Exception { SerializedKey serializedKey = new SerializedKey(BTC_MINI_PRIV); assertFalse(serializedKey.isEncrypted()); SerializedKey.TypedKey key = serializedKey.getKey(); assertTrue(key.possibleType.contains(BTC)); assertEquals(BTC_MINI_ADDR, key.key.toAddress(BTC).toString()); } }
/** Create a fake transaction, without change. */ public static Transaction createFakeTxWithoutChange(final NetworkParameters params, final TransactionOutput output) { Transaction prevTx = FakeTxBuilder.createFakeTx(params, Coin.COIN, new ECKey().toAddress(params)); Transaction tx = new Transaction(params); tx.addOutput(output); tx.addInput(prevTx.getOutput(0)); return tx; }
@Test public void verifyMessage() throws Exception { // Test vector generated by Bitcoin-Qt. String message = "hello"; String sigBase64 = "HxNZdo6ggZ41hd3mM3gfJRqOQPZYcO8z8qdX2BwmpbF11CaOQV+QiZGGQxaYOncKoNW61oRuSMMF8udfK54XqI8="; Address expectedAddress = Address.fromBase58(MainNetParams.get(), "14YPSNPi6NSXnUxtPAsyJSuw3pv7AU3Cag"); ECKey key = ECKey.signedMessageToKey(message, sigBase64); Address gotAddress = key.toAddress(MainNetParams.get()); assertEquals(expectedAddress, gotAddress); }
protected synchronized SendRequest makeUnsignedChannelContract(Coin valueToMe) { Transaction tx = new Transaction(wallet.getParams()); if (!getTotalValue().subtract(valueToMe).equals(Coin.ZERO)) { tx.addOutput(getTotalValue().subtract(valueToMe), getClientKey().toAddress(wallet.getParams())); } tx.addInput(contract.getOutput(0)); return SendRequest.forTx(tx); }
protected synchronized SendRequest makeUnsignedChannelContract(Coin valueToMe) { Transaction tx = new Transaction(wallet.getParams()); if (!getTotalValue().subtract(valueToMe).equals(Coin.ZERO)) { tx.addOutput(getTotalValue().subtract(valueToMe), getClientKey().toAddress(wallet.getParams())); } tx.addInput(contract.getOutput(0)); return SendRequest.forTx(tx); }
protected synchronized SendRequest makeUnsignedChannelContract(Coin valueToMe) { Transaction tx = new Transaction(wallet.getParams()); if (!getTotalValue().subtract(valueToMe).equals(Coin.ZERO)) { tx.addOutput(getTotalValue().subtract(valueToMe), getClientKey().toAddress(wallet.getParams())); } tx.addInput(contract.getOutput(0)); return SendRequest.forTx(tx); }
@Test public void watchingScripts() throws Exception { // Verify that pending transactions to watched addresses are relevant Address watchedAddress = new ECKey().toAddress(PARAMS); wallet.addWatchedAddress(watchedAddress); Coin value = valueOf(5, 0); Transaction t1 = createFakeTx(PARAMS, value, watchedAddress); assertTrue(t1.getWalletOutputs(wallet).size() >= 1); assertTrue(wallet.isPendingTransactionRelevant(t1)); }
public void setUp() throws Exception { BriefLogFormatter.init(); Context.propagate(new Context(PARAMS, 100, Coin.ZERO, false)); wallet = new Wallet(PARAMS); myKey = wallet.currentReceiveKey(); myAddress = myKey.toAddress(PARAMS); blockStore = new MemoryBlockStore(PARAMS); chain = new BlockChain(PARAMS, wallet, blockStore); }
@Test public void removeWatchedAddress() { Address watchedAddress = new ECKey().toAddress(PARAMS); wallet.addWatchedAddress(watchedAddress); wallet.removeWatchedAddress(watchedAddress); assertFalse(wallet.isAddressWatched(watchedAddress)); assertFalse(wallet.isRequiringUpdateAllBloomFilter()); }
@Test(expected = ScriptException.class) public void testAddSignedInputThrowsExceptionWhenScriptIsNotToRawPubKeyAndIsNotToAddress() { ECKey key = new ECKey(); Address addr = key.toAddress(PARAMS); Transaction fakeTx = FakeTxBuilder.createFakeTx(PARAMS, Coin.COIN, addr); Transaction tx = new Transaction(PARAMS); tx.addOutput(fakeTx.getOutput(0)); Script script = ScriptBuilder.createOpReturnScript(new byte[0]); tx.addSignedInput(fakeTx.getOutput(0).getOutPointFor(), script, key); }
@Test public void testKeys() throws Exception { for (int i = 0 ; i < 20 ; i++) { myKey = new ECKey(); myAddress = myKey.toAddress(PARAMS); myWallet = new Wallet(PARAMS); myWallet.importKey(myKey); Wallet wallet1 = roundTrip(myWallet); assertArrayEquals(myKey.getPubKey(), wallet1.findKeyFromPubHash(myKey.getPubKeyHash()).getPubKey()); assertArrayEquals(myKey.getPrivKeyBytes(), wallet1.findKeyFromPubHash(myKey.getPubKeyHash()).getPrivKeyBytes()); } }