diff --git a/core/src/main/java/org/bitcoinj/core/Address.java b/core/src/main/java/org/bitcoinj/core/Address.java index ef4552997..029d18eef 100644 --- a/core/src/main/java/org/bitcoinj/core/Address.java +++ b/core/src/main/java/org/bitcoinj/core/Address.java @@ -64,6 +64,14 @@ public class Address extends VersionedChecksummedBytes { this.params = params; } + /** + * Returns an {@link Address} that represents the public part of the given {@link ECKey}. Note that an address is + * derived from a hash of the public key and is not the public key itself (which is too large to be convenient). + */ + public static Address fromKey(NetworkParameters params, ECKey key) { + return new Address(params, key.getPubKeyHash()); + } + /** Returns an Address that represents the given P2SH script hash. */ public static Address fromP2SHHash(NetworkParameters params, byte[] hash160) { try { diff --git a/core/src/main/java/org/bitcoinj/core/ECKey.java b/core/src/main/java/org/bitcoinj/core/ECKey.java index 97e343519..2df9ca5b9 100644 --- a/core/src/main/java/org/bitcoinj/core/ECKey.java +++ b/core/src/main/java/org/bitcoinj/core/ECKey.java @@ -507,14 +507,6 @@ public class ECKey implements EncryptableItem { return pub.isCompressed(); } - /** - * Returns the address that corresponds to the public part of this ECKey. Note that an address is derived from - * the RIPEMD-160 hash of the public key and is not the public key itself (which is too large to be convenient). - */ - public Address toAddress(NetworkParameters params) { - return new Address(params, getPubKeyHash()); - } - /** * Groups the two components that make up a signature, and provides a way to encode to DER form, which is * how ECDSA signatures are represented when embedded in other data structures in the Bitcoin protocol. The raw @@ -1276,7 +1268,7 @@ public class ECKey implements EncryptableItem { public void formatKeyWithAddress(boolean includePrivateKeys, @Nullable KeyParameter aesKey, StringBuilder builder, NetworkParameters params) { - final Address address = toAddress(params); + final Address address = Address.fromKey(params, this); builder.append(" addr:"); builder.append(address.toString()); builder.append(" hash160:"); diff --git a/core/src/main/java/org/bitcoinj/crypto/BIP38PrivateKey.java b/core/src/main/java/org/bitcoinj/crypto/BIP38PrivateKey.java index 23520d3bb..7cba10bba 100644 --- a/core/src/main/java/org/bitcoinj/crypto/BIP38PrivateKey.java +++ b/core/src/main/java/org/bitcoinj/crypto/BIP38PrivateKey.java @@ -107,7 +107,7 @@ public class BIP38PrivateKey extends VersionedChecksummedBytes { public ECKey decrypt(String passphrase) throws BadPassphraseException { String normalizedPassphrase = Normalizer.normalize(passphrase, Normalizer.Form.NFC); ECKey key = ecMultiply ? decryptEC(normalizedPassphrase) : decryptNoEC(normalizedPassphrase); - Sha256Hash hash = Sha256Hash.twiceOf(key.toAddress(params).toString().getBytes(Charsets.US_ASCII)); + Sha256Hash hash = Sha256Hash.twiceOf(Address.fromKey(params, key).toString().getBytes(Charsets.US_ASCII)); byte[] actualAddressHash = Arrays.copyOfRange(hash.getBytes(), 0, 4); if (!Arrays.equals(actualAddressHash, addressHash)) throw new BadPassphraseException(); diff --git a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java index 124acc60f..9428d813a 100644 --- a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java +++ b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java @@ -617,7 +617,7 @@ public class DeterministicKey extends ECKey { @Override public void formatKeyWithAddress(boolean includePrivateKeys, @Nullable KeyParameter aesKey, StringBuilder builder, NetworkParameters params) { - final Address address = toAddress(params); + final Address address = Address.fromKey(params, this); builder.append(" addr:").append(address); builder.append(" hash160:").append(Utils.HEX.encode(getPubKeyHash())); builder.append(" (").append(getPathAsString()).append(")\n"); diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelClientState.java b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelClientState.java index 40a0fb03c..69c3b3007 100644 --- a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelClientState.java +++ b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelClientState.java @@ -245,7 +245,7 @@ public abstract class PaymentChannelClientState { // 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())); + tx.addOutput(valueToMe, Address.fromKey(wallet.getParams(), myKey)); return tx; } diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelServerState.java b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelServerState.java index 63f37b6db..edec3272f 100644 --- a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelServerState.java +++ b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelServerState.java @@ -220,7 +220,7 @@ public abstract class PaymentChannelServerState { 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.addOutput(getTotalValue().subtract(valueToMe), Address.fromKey(wallet.getParams(), getClientKey())); } tx.addInput(contract.getOutput(0)); return SendRequest.forTx(tx); diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV1ClientState.java b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV1ClientState.java index 7239a35b7..a8ae62029 100644 --- a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV1ClientState.java +++ b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV1ClientState.java @@ -163,10 +163,10 @@ public class PaymentChannelV1ClientState extends PaymentChannelClientState { final Coin valueAfterFee = totalValue.subtract(Transaction.REFERENCE_DEFAULT_MIN_TX_FEE); if (Transaction.MIN_NONDUST_OUTPUT.compareTo(valueAfterFee) > 0) throw new ValueOutOfRangeException("totalValue too small to use"); - refundTx.addOutput(valueAfterFee, myKey.toAddress(params)); + refundTx.addOutput(valueAfterFee, Address.fromKey(params, myKey)); refundFees = multisigFee.add(Transaction.REFERENCE_DEFAULT_MIN_TX_FEE); } else { - refundTx.addOutput(totalValue, myKey.toAddress(params)); + refundTx.addOutput(totalValue, Address.fromKey(params, myKey)); refundFees = multisigFee; } refundTx.getConfidence().setSource(TransactionConfidence.Source.SELF); diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV2ClientState.java b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV2ClientState.java index 193f19be0..a98245af8 100644 --- a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV2ClientState.java +++ b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelV2ClientState.java @@ -134,10 +134,10 @@ public class PaymentChannelV2ClientState extends PaymentChannelClientState { final Coin valueAfterFee = totalValue.subtract(Transaction.REFERENCE_DEFAULT_MIN_TX_FEE); if (Transaction.MIN_NONDUST_OUTPUT.compareTo(valueAfterFee) > 0) throw new ValueOutOfRangeException("totalValue too small to use"); - refundTx.addOutput(valueAfterFee, myKey.toAddress(params)); + refundTx.addOutput(valueAfterFee, Address.fromKey(params, myKey)); refundFees = multisigFee.add(Transaction.REFERENCE_DEFAULT_MIN_TX_FEE); } else { - refundTx.addOutput(totalValue, myKey.toAddress(params)); + refundTx.addOutput(totalValue, Address.fromKey(params, myKey)); refundFees = multisigFee; } diff --git a/core/src/main/java/org/bitcoinj/script/Script.java b/core/src/main/java/org/bitcoinj/script/Script.java index 4597a98dd..01a2fce55 100644 --- a/core/src/main/java/org/bitcoinj/script/Script.java +++ b/core/src/main/java/org/bitcoinj/script/Script.java @@ -345,7 +345,7 @@ public class Script { else if (ScriptPattern.isPayToScriptHash(this)) return Address.fromP2SHScript(params, this); else if (forcePayToPubKey && ScriptPattern.isPayToPubKey(this)) - return ECKey.fromPublicOnly(getPubKey()).toAddress(params); + return Address.fromKey(params, ECKey.fromPublicOnly(getPubKey())); else throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Cannot cast this script to a pay-to-address type"); } diff --git a/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java b/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java index 5874add2a..08c7a28ff 100644 --- a/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java +++ b/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java @@ -188,7 +188,7 @@ public class KeyChainGroup implements KeyBag { } return current; } else { - return currentKey(purpose).toAddress(params); + return Address.fromKey(params, currentKey(purpose)); } } @@ -242,7 +242,7 @@ public class KeyChainGroup implements KeyBag { currentAddresses.put(purpose, freshAddress); return freshAddress; } else { - return freshKey(purpose).toAddress(params); + return Address.fromKey(params, freshKey(purpose)); } } @@ -727,7 +727,7 @@ public class KeyChainGroup implements KeyBag { } else { log.info("Wallet with existing HD chain is being re-upgraded due to change in key rotation time."); } - log.info("Instantiating new HD chain using oldest non-rotating private key (address: {})", keyToUse.toAddress(params)); + log.info("Instantiating new HD chain using oldest non-rotating private key (address: {})", Address.fromKey(params, keyToUse)); byte[] entropy = checkNotNull(keyToUse.getSecretBytes()); // Private keys should be at least 128 bits long. checkState(entropy.length >= DeterministicSeed.DEFAULT_SEED_ENTROPY_BITS / 8); diff --git a/core/src/main/java/org/bitcoinj/wallet/Wallet.java b/core/src/main/java/org/bitcoinj/wallet/Wallet.java index 2fc0b48fd..685e32bd6 100644 --- a/core/src/main/java/org/bitcoinj/wallet/Wallet.java +++ b/core/src/main/java/org/bitcoinj/wallet/Wallet.java @@ -545,7 +545,7 @@ public class Wallet extends BaseTaggableObject final List keys = getIssuedReceiveKeys(); List
addresses = new ArrayList<>(keys.size()); for (ECKey key : keys) - addresses.add(key.toAddress(getParams())); + addresses.add(Address.fromKey(getParams(), key)); return addresses; } diff --git a/core/src/test/java/org/bitcoinj/core/BlockChainTest.java b/core/src/test/java/org/bitcoinj/core/BlockChainTest.java index 129e34aa9..14f2296f3 100644 --- a/core/src/test/java/org/bitcoinj/core/BlockChainTest.java +++ b/core/src/test/java/org/bitcoinj/core/BlockChainTest.java @@ -92,7 +92,7 @@ public class BlockChainTest { resetBlockStore(); chain = new BlockChain(PARAMS, wallet, blockStore); - coinbaseTo = wallet.currentReceiveKey().toAddress(PARAMS); + coinbaseTo = Address.fromKey(PARAMS, wallet.currentReceiveKey()); } @Test @@ -128,7 +128,7 @@ public class BlockChainTest { // Quick check that we can actually receive coins. Transaction tx1 = createFakeTx(PARAMS, COIN, - wallet.currentReceiveKey().toAddress(PARAMS)); + Address.fromKey(PARAMS, wallet.currentReceiveKey())); Block b1 = createFakeBlock(blockStore, height, tx1).block; chain.add(b1); assertTrue(wallet.getBalance().signum() > 0); @@ -291,10 +291,10 @@ public class BlockChainTest { public void intraBlockDependencies() throws Exception { // Covers issue 166 in which transactions that depend on each other inside a block were not always being // considered relevant. - Address somebodyElse = new ECKey().toAddress(PARAMS); + Address somebodyElse = Address.fromKey(PARAMS, new ECKey()); Block b1 = PARAMS.getGenesisBlock().createNextBlock(somebodyElse); ECKey key = wallet.freshReceiveKey(); - Address addr = key.toAddress(PARAMS); + Address addr = Address.fromKey(PARAMS, key); // Create a tx that gives us some coins, and another that spends it to someone else in the same block. Transaction t1 = FakeTxBuilder.createFakeTx(PARAMS, COIN, addr); Transaction t2 = new Transaction(PARAMS); @@ -317,7 +317,7 @@ public class BlockChainTest { int height = 1; chain.addWallet(wallet2); - Address addressToSendTo = receiveKey.toAddress(PARAMS); + Address addressToSendTo = Address.fromKey(PARAMS, receiveKey); // Create a block, sending the coinbase to the coinbaseTo address (which is in the wallet). Block b1 = PARAMS.getGenesisBlock().createNextBlockWithCoinbase(Block.BLOCK_VERSION_GENESIS, wallet.currentReceiveKey().getPubKey(), height++); @@ -341,8 +341,7 @@ public class BlockChainTest { // Check that the coinbase is unavailable to spend for the next spendableCoinbaseDepth - 2 blocks. for (int i = 0; i < PARAMS.getSpendableCoinbaseDepth() - 2; i++) { // Non relevant tx - just for fake block creation. - Transaction tx2 = createFakeTx(PARAMS, COIN, - new ECKey().toAddress(PARAMS)); + Transaction tx2 = createFakeTx(PARAMS, COIN, Address.fromKey(PARAMS, new ECKey())); Block b2 = createFakeBlock(blockStore, height++, tx2).block; chain.add(b2); @@ -363,7 +362,7 @@ public class BlockChainTest { } // Give it one more block - should now be able to spend coinbase transaction. Non relevant tx. - Transaction tx3 = createFakeTx(PARAMS, COIN, new ECKey().toAddress(PARAMS)); + Transaction tx3 = createFakeTx(PARAMS, COIN, Address.fromKey(PARAMS, new ECKey())); Block b3 = createFakeBlock(blockStore, height++, tx3).block; chain.add(b3); diff --git a/core/src/test/java/org/bitcoinj/core/BloomFilterTest.java b/core/src/test/java/org/bitcoinj/core/BloomFilterTest.java index 3248fa9e8..04fae635f 100644 --- a/core/src/test/java/org/bitcoinj/core/BloomFilterTest.java +++ b/core/src/test/java/org/bitcoinj/core/BloomFilterTest.java @@ -73,7 +73,7 @@ public class BloomFilterTest { DumpedPrivateKey privKey = DumpedPrivateKey.fromBase58(params, "5Kg1gnAjaLfKiwhhPpGS3QfRg2m6awQvaj98JCZBZQ5SuS2F15C"); - Address addr = privKey.getKey().toAddress(params); + Address addr = Address.fromKey(params, privKey.getKey()); assertTrue(addr.toString().equals("17Wx1GQfyPTNWpQMHrTwRSMTCAonSiZx9e")); KeyChainGroup group = new KeyChainGroup(params); diff --git a/core/src/test/java/org/bitcoinj/core/ChainSplitTest.java b/core/src/test/java/org/bitcoinj/core/ChainSplitTest.java index 072281cab..a018f4beb 100644 --- a/core/src/test/java/org/bitcoinj/core/ChainSplitTest.java +++ b/core/src/test/java/org/bitcoinj/core/ChainSplitTest.java @@ -65,9 +65,9 @@ public class ChainSplitTest { ECKey key1 = wallet.freshReceiveKey(); ECKey key2 = wallet.freshReceiveKey(); chain = new BlockChain(PARAMS, wallet, blockStore); - coinsTo = key1.toAddress(PARAMS); - coinsTo2 = key2.toAddress(PARAMS); - someOtherGuy = new ECKey().toAddress(PARAMS); + coinsTo = Address.fromKey(PARAMS, key1); + coinsTo2 = Address.fromKey(PARAMS, key2); + someOtherGuy = Address.fromKey(PARAMS, new ECKey()); } @Test @@ -186,7 +186,7 @@ public class ChainSplitTest { Block b1 = PARAMS.getGenesisBlock().createNextBlock(coinsTo); chain.add(b1); assertEquals(FIFTY_COINS, wallet.getBalance()); - Address dest = new ECKey().toAddress(PARAMS); + Address dest = Address.fromKey(PARAMS, new ECKey()); Transaction spend = wallet.createSend(dest, valueOf(10, 0)); wallet.commitTx(spend); // Waiting for confirmation ... make it eligible for selection. @@ -220,7 +220,7 @@ public class ChainSplitTest { Block b1 = PARAMS.getGenesisBlock().createNextBlock(coinsTo); chain.add(b1); assertEquals(FIFTY_COINS, wallet.getBalance()); - Address dest = new ECKey().toAddress(PARAMS); + Address dest = Address.fromKey(PARAMS, new ECKey()); Transaction spend = wallet.createSend(dest, FIFTY_COINS); // We do NOT confirm the spend here. That means it's not considered to be pending because createSend is // stateless. For our purposes it is as if some other program with our keys created the tx. @@ -311,21 +311,21 @@ public class ChainSplitTest { chain.add(b1); Transaction t1 = wallet.createSend(someOtherGuy, valueOf(10, 0)); - Address yetAnotherGuy = new ECKey().toAddress(PARAMS); + Address yetAnotherGuy = Address.fromKey(PARAMS, new ECKey()); Transaction t2 = wallet.createSend(yetAnotherGuy, valueOf(20, 0)); wallet.commitTx(t1); // Receive t1 as confirmed by the network. - Block b2 = b1.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b2 = b1.createNextBlock(Address.fromKey(PARAMS, new ECKey())); b2.addTransaction(t1); b2.solve(); chain.add(roundtrip(b2)); // Now we make a double spend become active after a re-org. - Block b3 = b1.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b3 = b1.createNextBlock(Address.fromKey(PARAMS, new ECKey())); b3.addTransaction(t2); b3.solve(); chain.add(roundtrip(b3)); // Side chain. - Block b4 = b3.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b4 = b3.createNextBlock(Address.fromKey(PARAMS, new ECKey())); chain.add(b4); // New best chain. Threading.waitForUserCode(); // Should have seen a double spend. @@ -354,11 +354,11 @@ public class ChainSplitTest { chain.add(b1); Transaction t1 = checkNotNull(wallet.createSend(someOtherGuy, valueOf(10, 0))); - Address yetAnotherGuy = new ECKey().toAddress(PARAMS); + Address yetAnotherGuy = Address.fromKey(PARAMS, new ECKey()); Transaction t2 = checkNotNull(wallet.createSend(yetAnotherGuy, valueOf(20, 0))); wallet.commitTx(t1); // t1 is still pending ... - Block b2 = b1.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b2 = b1.createNextBlock(Address.fromKey(PARAMS, new ECKey())); chain.add(b2); assertEquals(ZERO, wallet.getBalance()); assertEquals(valueOf(40, 0), wallet.getBalance(Wallet.BalanceType.ESTIMATED)); @@ -366,11 +366,11 @@ public class ChainSplitTest { // Now we make a double spend become active after a re-org. // genesis -> b1 -> b2 [t1 pending] // \-> b3 (t2) -> b4 - Block b3 = b1.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b3 = b1.createNextBlock(Address.fromKey(PARAMS, new ECKey())); b3.addTransaction(t2); b3.solve(); chain.add(roundtrip(b3)); // Side chain. - Block b4 = b3.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b4 = b3.createNextBlock(Address.fromKey(PARAMS, new ECKey())); chain.add(b4); // New best chain. Threading.waitForUserCode(); // Should have seen a double spend against the pending pool. @@ -381,9 +381,9 @@ public class ChainSplitTest { assertEquals(valueOf(30, 0), wallet.getBalance()); // ... and back to our own parallel universe. - Block b5 = b2.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b5 = b2.createNextBlock(Address.fromKey(PARAMS, new ECKey())); chain.add(b5); - Block b6 = b5.createNextBlock(new ECKey().toAddress(PARAMS)); + Block b6 = b5.createNextBlock(Address.fromKey(PARAMS, new ECKey())); chain.add(b6); // genesis -> b1 -> b2 -> b5 -> b6 [t1 still dead] // \-> b3 [t2 resurrected and now pending] -> b4 @@ -530,9 +530,9 @@ public class ChainSplitTest { // Send a couple of payments one after the other (so the second depends on the change output of the first). wallet.allowSpendingUnconfirmedTransactions(); - Transaction t2 = checkNotNull(wallet.createSend(new ECKey().toAddress(PARAMS), CENT)); + Transaction t2 = checkNotNull(wallet.createSend(Address.fromKey(PARAMS, new ECKey()), CENT)); wallet.commitTx(t2); - Transaction t3 = checkNotNull(wallet.createSend(new ECKey().toAddress(PARAMS), CENT)); + Transaction t3 = checkNotNull(wallet.createSend(Address.fromKey(PARAMS, new ECKey()), CENT)); wallet.commitTx(t3); chain.add(FakeTxBuilder.makeSolvedTestBlock(b1, t2, t3)); @@ -600,7 +600,7 @@ public class ChainSplitTest { chain.add(firstTip); } // ... and spend. - Transaction fodder = wallet.createSend(new ECKey().toAddress(PARAMS), FIFTY_COINS); + Transaction fodder = wallet.createSend(Address.fromKey(PARAMS, new ECKey()), FIFTY_COINS); wallet.commitTx(fodder); final AtomicBoolean fodderIsDead = new AtomicBoolean(false); fodder.getConfidence().addEventListener(Threading.SAME_THREAD, new TransactionConfidence.Listener() { diff --git a/core/src/test/java/org/bitcoinj/core/ECKeyTest.java b/core/src/test/java/org/bitcoinj/core/ECKeyTest.java index c66169ec8..dbf4d9908 100644 --- a/core/src/test/java/org/bitcoinj/core/ECKeyTest.java +++ b/core/src/test/java/org/bitcoinj/core/ECKeyTest.java @@ -186,7 +186,7 @@ public class ECKeyTest { String privkey = "92shANodC6Y4evT5kFzjNFQAdjqTtHAnDTLzqBBq4BbKUPyx6CD"; ECKey key = DumpedPrivateKey.fromBase58(TestNet3Params.get(), privkey).getKey(); assertEquals(privkey, key.getPrivateKeyEncoded(TestNet3Params.get()).toString()); - assertEquals(addr, key.toAddress(TestNet3Params.get()).toString()); + assertEquals(addr, Address.fromKey(TestNet3Params.get(), key).toString()); } @Test @@ -214,7 +214,7 @@ public class ECKeyTest { ECKey key = new ECKey(); String message = "聡中本"; String signatureBase64 = key.signMessage(message); - log.info("Message signed with " + key.toAddress(MainNetParams.get()) + ": " + signatureBase64); + log.info("Message signed with " + Address.fromKey(MainNetParams.get(), key) + ": " + signatureBase64); // Should verify correctly. key.verifyMessage(message, signatureBase64); try { @@ -232,7 +232,7 @@ public class ECKeyTest { String sigBase64 = "HxNZdo6ggZ41hd3mM3gfJRqOQPZYcO8z8qdX2BwmpbF11CaOQV+QiZGGQxaYOncKoNW61oRuSMMF8udfK54XqI8="; Address expectedAddress = Address.fromBase58(MainNetParams.get(), "14YPSNPi6NSXnUxtPAsyJSuw3pv7AU3Cag"); ECKey key = ECKey.signedMessageToKey(message, sigBase64); - Address gotAddress = key.toAddress(MainNetParams.get()); + Address gotAddress = Address.fromKey(MainNetParams.get(), key); assertEquals(expectedAddress, gotAddress); } diff --git a/core/src/test/java/org/bitcoinj/core/FilteredBlockAndPartialMerkleTreeTests.java b/core/src/test/java/org/bitcoinj/core/FilteredBlockAndPartialMerkleTreeTests.java index d78b8f175..b672413b2 100644 --- a/core/src/test/java/org/bitcoinj/core/FilteredBlockAndPartialMerkleTreeTests.java +++ b/core/src/test/java/org/bitcoinj/core/FilteredBlockAndPartialMerkleTreeTests.java @@ -92,7 +92,7 @@ public class FilteredBlockAndPartialMerkleTreeTests extends TestWithPeerGroup { ECKey key1 = new ECKey(); ECKey key2 = new ECKey(); Transaction tx1 = FakeTxBuilder.createFakeTx(PARAMS, Coin.COIN, key1); - Transaction tx2 = FakeTxBuilder.createFakeTx(PARAMS, Coin.FIFTY_COINS, key2.toAddress(PARAMS)); + Transaction tx2 = FakeTxBuilder.createFakeTx(PARAMS, Coin.FIFTY_COINS, Address.fromKey(PARAMS, key2)); Block block = FakeTxBuilder.makeSolvedTestBlock(PARAMS.getGenesisBlock(), Address.fromBase58(PARAMS, "msg2t2V2sWNd85LccoddtWysBTR8oPnkzW"), tx1, tx2); BloomFilter filter = new BloomFilter(4, 0.1, 1); filter.insert(key1); diff --git a/core/src/test/java/org/bitcoinj/core/ParseByteCacheTest.java b/core/src/test/java/org/bitcoinj/core/ParseByteCacheTest.java index 1f44d095c..1e25ef4e1 100644 --- a/core/src/test/java/org/bitcoinj/core/ParseByteCacheTest.java +++ b/core/src/test/java/org/bitcoinj/core/ParseByteCacheTest.java @@ -90,17 +90,17 @@ public class ParseByteCacheTest { Transaction tx1 = createFakeTx(PARAMS, valueOf(2, 0), - wallet.currentReceiveKey().toAddress(PARAMS)); + Address.fromKey(PARAMS, wallet.currentReceiveKey())); // add a second input so can test granularity of byte cache. Transaction prevTx = new Transaction(PARAMS); - TransactionOutput prevOut = new TransactionOutput(PARAMS, prevTx, COIN, wallet.currentReceiveKey().toAddress(PARAMS)); + TransactionOutput prevOut = new TransactionOutput(PARAMS, prevTx, COIN, Address.fromKey(PARAMS, wallet.currentReceiveKey())); prevTx.addOutput(prevOut); // Connect it. tx1.addInput(prevOut); Transaction tx2 = createFakeTx(PARAMS, COIN, - new ECKey().toAddress(PARAMS)); + Address.fromKey(PARAMS, new ECKey())); Block b1 = createFakeBlock(blockStore, BLOCK_HEIGHT_GENESIS, tx1, tx2).block; diff --git a/core/src/test/java/org/bitcoinj/core/PeerGroupTest.java b/core/src/test/java/org/bitcoinj/core/PeerGroupTest.java index a6c797cf2..590a1ca4d 100644 --- a/core/src/test/java/org/bitcoinj/core/PeerGroupTest.java +++ b/core/src/test/java/org/bitcoinj/core/PeerGroupTest.java @@ -245,7 +245,7 @@ public class PeerGroupTest extends TestWithPeerGroup { Wallet wallet2 = new Wallet(PARAMS); ECKey key2 = wallet2.freshReceiveKey(); - Address address2 = key2.toAddress(PARAMS); + Address address2 = Address.fromKey(PARAMS, key2); peerGroup.addWallet(wallet2); blockChain.addWallet(wallet2); @@ -804,7 +804,7 @@ public class PeerGroupTest extends TestWithPeerGroup { Coin expectedBalance = Coin.ZERO; Block prev = blockStore.getChainHead().getHeader(); for (ECKey key1 : keys) { - Address addr = key1.toAddress(PARAMS); + Address addr = Address.fromKey(PARAMS, key1); Block next = FakeTxBuilder.makeSolvedTestBlock(prev, FakeTxBuilder.createFakeTx(PARAMS, Coin.FIFTY_COINS, addr)); expectedBalance = expectedBalance.add(next.getTransactions().get(2).getOutput(0).getValue()); blocks.add(next); diff --git a/core/src/test/java/org/bitcoinj/core/PeerTest.java b/core/src/test/java/org/bitcoinj/core/PeerTest.java index 9ac7a125b..e093e3c16 100644 --- a/core/src/test/java/org/bitcoinj/core/PeerTest.java +++ b/core/src/test/java/org/bitcoinj/core/PeerTest.java @@ -870,7 +870,7 @@ public class PeerTest extends TestWithNetworkConnections { connect(); Transaction t1 = new Transaction(PARAMS); t1.addInput(new TransactionInput(PARAMS, t1, new byte[]{})); - t1.addOutput(COIN, new ECKey().toAddress(PARAMS)); + t1.addOutput(COIN, Address.fromKey(PARAMS, new ECKey())); Transaction t2 = new Transaction(PARAMS); t2.addInput(t1.getOutput(0)); t2.addOutput(COIN, wallet.currentChangeAddress()); diff --git a/core/src/test/java/org/bitcoinj/core/TransactionBroadcastTest.java b/core/src/test/java/org/bitcoinj/core/TransactionBroadcastTest.java index 820303e18..0e5ab263d 100644 --- a/core/src/test/java/org/bitcoinj/core/TransactionBroadcastTest.java +++ b/core/src/test/java/org/bitcoinj/core/TransactionBroadcastTest.java @@ -159,7 +159,7 @@ public class TransactionBroadcastTest extends TestWithPeerGroup { assertEquals(FIFTY_COINS, wallet.getBalance()); // Now create a spend, and expect the announcement on p1. - Address dest = new ECKey().toAddress(PARAMS); + Address dest = Address.fromKey(PARAMS, new ECKey()); Wallet.SendResult sendResult = wallet.sendCoins(peerGroup, dest, COIN); assertFalse(sendResult.broadcastComplete.isDone()); Transaction t1; @@ -208,7 +208,7 @@ public class TransactionBroadcastTest extends TestWithPeerGroup { }); // Now create a spend, and expect the announcement on p1. - Address dest = new ECKey().toAddress(PARAMS); + Address dest = Address.fromKey(PARAMS, new ECKey()); Wallet.SendResult sendResult = wallet.sendCoins(peerGroup, dest, COIN); assertNotNull(sendResult.tx); Threading.waitForUserCode(); diff --git a/core/src/test/java/org/bitcoinj/core/TransactionTest.java b/core/src/test/java/org/bitcoinj/core/TransactionTest.java index fad13dcbc..6dbff90ca 100644 --- a/core/src/test/java/org/bitcoinj/core/TransactionTest.java +++ b/core/src/test/java/org/bitcoinj/core/TransactionTest.java @@ -40,7 +40,7 @@ import static org.junit.Assert.*; */ public class TransactionTest { private static final NetworkParameters PARAMS = UnitTestParams.get(); - private static final Address ADDRESS = new ECKey().toAddress(PARAMS); + private static final Address ADDRESS = Address.fromKey(PARAMS, new ECKey()); private Transaction tx; @@ -344,7 +344,7 @@ public class TransactionTest { @Test(expected = ScriptException.class) public void testAddSignedInputThrowsExceptionWhenScriptIsNotToRawPubKeyAndIsNotToAddress() { ECKey key = new ECKey(); - Address addr = key.toAddress(PARAMS); + Address addr = Address.fromKey(PARAMS, key); Transaction fakeTx = FakeTxBuilder.createFakeTx(PARAMS, Coin.COIN, addr); Transaction tx = new Transaction(PARAMS); @@ -409,7 +409,7 @@ public class TransactionTest { @Test public void testHashForSignatureThreadSafety() { Block genesis = UnitTestParams.get().getGenesisBlock(); - Block block1 = genesis.createNextBlock(new ECKey().toAddress(UnitTestParams.get()), + Block block1 = genesis.createNextBlock(Address.fromKey(UnitTestParams.get(), new ECKey()), genesis.getTransactions().get(0).getOutput(0).getOutPointFor()); final Transaction tx = block1.getTransactions().get(1); diff --git a/core/src/test/java/org/bitcoinj/core/TxConfidenceTableTest.java b/core/src/test/java/org/bitcoinj/core/TxConfidenceTableTest.java index 0689431c0..14885ab74 100644 --- a/core/src/test/java/org/bitcoinj/core/TxConfidenceTableTest.java +++ b/core/src/test/java/org/bitcoinj/core/TxConfidenceTableTest.java @@ -38,8 +38,8 @@ public class TxConfidenceTableTest { Context context = new Context(PARAMS); table = context.getConfidenceTable(); - Address to = new ECKey().toAddress(PARAMS); - Address change = new ECKey().toAddress(PARAMS); + Address to = Address.fromKey(PARAMS, new ECKey()); + Address change = Address.fromKey(PARAMS, new ECKey()); tx1 = FakeTxBuilder.createFakeTxWithChangeAddress(PARAMS, COIN, to, change); tx2 = FakeTxBuilder.createFakeTxWithChangeAddress(PARAMS, COIN, to, change); diff --git a/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java b/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java index 61eb07830..177c5dae0 100644 --- a/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java +++ b/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java @@ -341,7 +341,7 @@ public class PaymentChannelStateTest extends TestWithWallet { // we can broadcast the refund and get our balance back. // Spend the client wallet's one coin - Transaction spendCoinTx = wallet.sendCoinsOffline(SendRequest.to(new ECKey().toAddress(PARAMS), COIN)); + Transaction spendCoinTx = wallet.sendCoinsOffline(SendRequest.to(Address.fromKey(PARAMS, new ECKey()), COIN)); assertEquals(Coin.ZERO, wallet.getBalance()); chain.add(makeSolvedTestBlock(blockStore.getChainHead().getHeader(), spendCoinTx, createFakeTx(PARAMS, CENT, myAddress))); assertEquals(CENT, wallet.getBalance()); @@ -473,7 +473,7 @@ public class PaymentChannelStateTest extends TestWithWallet { // Test refund transaction with any number of issues byte[] refundTxBytes = clientV1State().getIncompleteRefundTransaction().bitcoinSerialize(); Transaction refund = new Transaction(PARAMS, refundTxBytes); - refund.addOutput(Coin.ZERO, new ECKey().toAddress(PARAMS)); + refund.addOutput(Coin.ZERO, Address.fromKey(PARAMS, new ECKey())); try { serverV1State().provideRefundTransaction(refund, myKey.getPubKey()); fail(); @@ -692,7 +692,7 @@ public class PaymentChannelStateTest extends TestWithWallet { Context.propagate(new Context(PARAMS, 100, Coin.ZERO, true)); // Spend the client wallet's one coin - final SendRequest request = SendRequest.to(new ECKey().toAddress(PARAMS), COIN); + final SendRequest request = SendRequest.to(Address.fromKey(PARAMS, new ECKey()), COIN); request.ensureMinRequiredFee = false; wallet.sendCoinsOffline(request); assertEquals(Coin.ZERO, wallet.getBalance()); @@ -892,7 +892,7 @@ public class PaymentChannelStateTest extends TestWithWallet { } // Now give the server enough coins to pay the fee - sendMoneyToWallet(serverWallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, COIN, serverKey.toAddress(PARAMS)); + sendMoneyToWallet(serverWallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, COIN, Address.fromKey(PARAMS, serverKey)); // The contract is still not worth redeeming - its worth less than we pay in fee try { @@ -998,7 +998,7 @@ public class PaymentChannelStateTest extends TestWithWallet { doubleSpendContract.addOutput(HALF_COIN, myKey); doubleSpendContract = new Transaction(PARAMS, doubleSpendContract.bitcoinSerialize()); - StoredBlock block = new StoredBlock(PARAMS.getGenesisBlock().createNextBlock(myKey.toAddress(PARAMS)), BigInteger.TEN, 1); + StoredBlock block = new StoredBlock(PARAMS.getGenesisBlock().createNextBlock(Address.fromKey(PARAMS, myKey)), BigInteger.TEN, 1); serverWallet.receiveFromBlock(doubleSpendContract, block, AbstractBlockChain.NewBlockType.BEST_CHAIN, 0); // Now if we try to spend again the server will reject it since it saw a double-spend diff --git a/core/src/test/java/org/bitcoinj/protocols/payments/PaymentProtocolTest.java b/core/src/test/java/org/bitcoinj/protocols/payments/PaymentProtocolTest.java index ab8a7c0bf..c83741c3c 100644 --- a/core/src/test/java/org/bitcoinj/protocols/payments/PaymentProtocolTest.java +++ b/core/src/test/java/org/bitcoinj/protocols/payments/PaymentProtocolTest.java @@ -43,9 +43,9 @@ import static org.junit.Assert.*; public class PaymentProtocolTest { // static test data - private static final NetworkParameters NETWORK_PARAMS = UnitTestParams.get(); + private static final NetworkParameters PARAMS = UnitTestParams.get(); private static final Coin AMOUNT = Coin.SATOSHI; - private static final Address TO_ADDRESS = new ECKey().toAddress(NETWORK_PARAMS); + private static final Address TO_ADDRESS = Address.fromKey(PARAMS, new ECKey()); private static final String MEMO = "memo"; private static final String PAYMENT_URL = "https://example.com"; private static final byte[] MERCHANT_DATA = { 0, 1, 2 }; @@ -122,16 +122,16 @@ public class PaymentProtocolTest { public void testPaymentMessage() throws Exception { // Create List transactions = new LinkedList<>(); - transactions.add(FakeTxBuilder.createFakeTx(NETWORK_PARAMS, AMOUNT, TO_ADDRESS)); + transactions.add(FakeTxBuilder.createFakeTx(PARAMS, AMOUNT, TO_ADDRESS)); Coin refundAmount = Coin.SATOSHI; - Address refundAddress = new ECKey().toAddress(NETWORK_PARAMS); + Address refundAddress = Address.fromKey(PARAMS, new ECKey()); Payment payment = PaymentProtocol.createPaymentMessage(transactions, refundAmount, refundAddress, MEMO, MERCHANT_DATA); byte[] paymentBytes = payment.toByteArray(); // Parse Payment parsedPayment = Payment.parseFrom(paymentBytes); - List parsedTransactions = PaymentProtocol.parseTransactionsFromPaymentMessage(NETWORK_PARAMS, + List parsedTransactions = PaymentProtocol.parseTransactionsFromPaymentMessage(PARAMS, parsedPayment); assertEquals(transactions, parsedTransactions); assertEquals(1, parsedPayment.getRefundToCount()); diff --git a/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java b/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java index b42f55280..591ef64c6 100644 --- a/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java +++ b/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java @@ -18,6 +18,8 @@ package org.bitcoinj.script; import com.google.common.collect.Lists; + +import org.bitcoinj.core.Address; import org.bitcoinj.core.ECKey; import org.bitcoinj.params.MainNetParams; import org.junit.Test; @@ -33,7 +35,7 @@ public class ScriptPatternTest { @Test public void testCommonScripts() { assertTrue(ScriptPattern.isPayToPubKeyHash( - ScriptBuilder.createOutputScript(keys.get(0).toAddress(MainNetParams.get())) + ScriptBuilder.createOutputScript(Address.fromKey(MainNetParams.get(), keys.get(0))) )); assertTrue(ScriptPattern.isPayToScriptHash( ScriptBuilder.createP2SHOutputScript(2, keys) diff --git a/core/src/test/java/org/bitcoinj/script/ScriptTest.java b/core/src/test/java/org/bitcoinj/script/ScriptTest.java index f2f55a62a..6beb1438d 100644 --- a/core/src/test/java/org/bitcoinj/script/ScriptTest.java +++ b/core/src/test/java/org/bitcoinj/script/ScriptTest.java @@ -439,7 +439,7 @@ public class ScriptTest { public void getToAddress() throws Exception { // pay to pubkey ECKey toKey = new ECKey(); - Address toAddress = toKey.toAddress(PARAMS); + Address toAddress = Address.fromKey(PARAMS, toKey); assertEquals(toAddress, ScriptBuilder.createOutputScript(toKey).getToAddress(PARAMS, true)); // pay to pubkey hash assertEquals(toAddress, ScriptBuilder.createOutputScript(toAddress).getToAddress(PARAMS, true)); diff --git a/core/src/test/java/org/bitcoinj/store/SPVBlockStoreTest.java b/core/src/test/java/org/bitcoinj/store/SPVBlockStoreTest.java index 01e207258..ded79a9ca 100644 --- a/core/src/test/java/org/bitcoinj/store/SPVBlockStoreTest.java +++ b/core/src/test/java/org/bitcoinj/store/SPVBlockStoreTest.java @@ -29,18 +29,19 @@ import static org.junit.Assert.assertEquals; public class SPVBlockStoreTest { + private static final NetworkParameters PARAMS = UnitTestParams.get(); + @Test public void basics() throws Exception { - NetworkParameters params = UnitTestParams.get(); File f = File.createTempFile("spvblockstore", null); f.delete(); f.deleteOnExit(); - SPVBlockStore store = new SPVBlockStore(params, f); + SPVBlockStore store = new SPVBlockStore(PARAMS, f); - Address to = new ECKey().toAddress(params); + Address to = Address.fromKey(PARAMS, new ECKey()); // Check the first block in a new store is the genesis block. StoredBlock genesis = store.getChainHead(); - assertEquals(params.getGenesisBlock(), genesis.getHeader()); + assertEquals(PARAMS.getGenesisBlock(), genesis.getHeader()); assertEquals(0, genesis.getHeight()); @@ -51,7 +52,7 @@ public class SPVBlockStoreTest { store.close(); // Check we can get it back out again if we rebuild the store object. - store = new SPVBlockStore(params, f); + store = new SPVBlockStore(PARAMS, f); StoredBlock b2 = store.get(b1.getHeader().getHash()); assertEquals(b1, b2); // Check the chain head was stored correctly also. diff --git a/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java b/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java index 6e8a944b8..1bd65608f 100644 --- a/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java +++ b/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java @@ -78,11 +78,11 @@ public class WalletProtobufSerializerTest { myKey = new ECKey(); myKey.setCreationTimeSeconds(123456789L); myWallet.importKey(myKey); - myAddress = myKey.toAddress(PARAMS); + myAddress = Address.fromKey(PARAMS, myKey); myWallet = new Wallet(PARAMS); myWallet.importKey(myKey); mScriptCreationTime = new Date().getTime() / 1000 - 1234; - myWallet.addWatchedAddress(myWatchedKey.toAddress(PARAMS), mScriptCreationTime); + myWallet.addWatchedAddress(Address.fromKey(PARAMS, myWatchedKey), mScriptCreationTime); myWallet.setDescription(WALLET_DESCRIPTION); } @@ -101,7 +101,7 @@ public class WalletProtobufSerializerTest { assertEquals(mScriptCreationTime, wallet1.getWatchedScripts().get(0).getCreationTimeSeconds()); assertEquals(1, wallet1.getWatchedScripts().size()); - assertEquals(ScriptBuilder.createOutputScript(myWatchedKey.toAddress(PARAMS)), + assertEquals(ScriptBuilder.createOutputScript(Address.fromKey(PARAMS, myWatchedKey)), wallet1.getWatchedScripts().get(0)); assertEquals(WALLET_DESCRIPTION, wallet1.getDescription()); } @@ -176,7 +176,7 @@ public class WalletProtobufSerializerTest { public void testKeys() throws Exception { for (int i = 0 ; i < 20 ; i++) { myKey = new ECKey(); - myAddress = myKey.toAddress(PARAMS); + myAddress = Address.fromKey(PARAMS, myKey); myWallet = new Wallet(PARAMS); myWallet.importKey(myKey); Wallet wallet1 = roundTrip(myWallet); diff --git a/core/src/test/java/org/bitcoinj/testing/FakeTxBuilder.java b/core/src/test/java/org/bitcoinj/testing/FakeTxBuilder.java index 8bb1ff722..20d6d98d0 100644 --- a/core/src/test/java/org/bitcoinj/testing/FakeTxBuilder.java +++ b/core/src/test/java/org/bitcoinj/testing/FakeTxBuilder.java @@ -34,12 +34,12 @@ import static com.google.common.base.Preconditions.checkState; public class FakeTxBuilder { /** Create a fake transaction, without change. */ public static Transaction createFakeTx(final NetworkParameters params) { - return createFakeTxWithoutChangeAddress(params, Coin.COIN, new ECKey().toAddress(params)); + return createFakeTxWithoutChangeAddress(params, Coin.COIN, Address.fromKey(params, new ECKey())); } /** 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 prevTx = FakeTxBuilder.createFakeTx(params, Coin.COIN, Address.fromKey(params, new ECKey())); Transaction tx = new Transaction(params); tx.addOutput(output); tx.addInput(prevTx.getOutput(0)); @@ -53,7 +53,7 @@ public class FakeTxBuilder { Transaction tx = new Transaction(params); tx.addInput(input); TransactionOutput outputToMe = new TransactionOutput(params, tx, Coin.FIFTY_COINS, - new ECKey().toAddress(params)); + Address.fromKey(params, new ECKey())); tx.addOutput(outputToMe); checkState(tx.isCoinBase()); @@ -123,7 +123,7 @@ public class FakeTxBuilder { * 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)); + return createFakeTxWithChangeAddress(params, value, to, Address.fromKey(params, new ECKey())); } /** @@ -157,7 +157,7 @@ public class FakeTxBuilder { Transaction t = new Transaction(params); TransactionOutput outputToMe = new TransactionOutput(params, t, value, to); t.addOutput(outputToMe); - TransactionOutput change = new TransactionOutput(params, t, valueOf(1, 11), new ECKey().toAddress(params)); + TransactionOutput change = new TransactionOutput(params, t, valueOf(1, 11), Address.fromKey(params, new ECKey())); t.addOutput(change); // Make a feeder tx that sends to the from address specified. This feeder tx is not really valid but it doesn't // matter for our purposes. @@ -203,7 +203,7 @@ public class FakeTxBuilder { public static DoubleSpends createFakeDoubleSpendTxns(NetworkParameters params, Address to) { DoubleSpends doubleSpends = new DoubleSpends(); Coin value = COIN; - Address someBadGuy = new ECKey().toAddress(params); + Address someBadGuy = Address.fromKey(params, new ECKey()); doubleSpends.prevTx = new Transaction(params); TransactionOutput prevOut = new TransactionOutput(params, doubleSpends.prevTx, value, someBadGuy); @@ -245,7 +245,7 @@ public class FakeTxBuilder { Transaction... transactions) { try { Block previousBlock = previousStoredBlock.getHeader(); - Address to = new ECKey().toAddress(previousBlock.getParams()); + Address to = Address.fromKey(previousBlock.getParams(), new ECKey()); Block b = previousBlock.createNextBlock(to, version, timeSeconds, height); // Coinbase tx was already added. for (Transaction tx : transactions) { @@ -297,7 +297,7 @@ public class FakeTxBuilder { } public static Block makeSolvedTestBlock(Block prev, Transaction... transactions) throws BlockStoreException { - Address to = new ECKey().toAddress(prev.getParams()); + Address to = Address.fromKey(prev.getParams(), new ECKey()); Block b = prev.createNextBlock(to); // Coinbase tx already exists. for (Transaction tx : transactions) { diff --git a/core/src/test/java/org/bitcoinj/testing/TestWithNetworkConnections.java b/core/src/test/java/org/bitcoinj/testing/TestWithNetworkConnections.java index 6d9bcebb5..a2518442f 100644 --- a/core/src/test/java/org/bitcoinj/testing/TestWithNetworkConnections.java +++ b/core/src/test/java/org/bitcoinj/testing/TestWithNetworkConnections.java @@ -90,7 +90,7 @@ public class TestWithNetworkConnections { if (wallet == null) { wallet = new Wallet(PARAMS); key = wallet.freshReceiveKey(); - address = key.toAddress(PARAMS); + address = Address.fromKey(PARAMS, key); } blockChain = new BlockChain(PARAMS, wallet, blockStore); diff --git a/core/src/test/java/org/bitcoinj/testing/TestWithWallet.java b/core/src/test/java/org/bitcoinj/testing/TestWithWallet.java index 8f77fb617..82f8f2916 100644 --- a/core/src/test/java/org/bitcoinj/testing/TestWithWallet.java +++ b/core/src/test/java/org/bitcoinj/testing/TestWithWallet.java @@ -49,7 +49,7 @@ public class TestWithWallet { Context.propagate(new Context(PARAMS, 100, Coin.ZERO, false)); wallet = new Wallet(PARAMS); myKey = wallet.currentReceiveKey(); - myAddress = myKey.toAddress(PARAMS); + myAddress = Address.fromKey(PARAMS, myKey); blockStore = new MemoryBlockStore(PARAMS); chain = new BlockChain(PARAMS, wallet, blockStore); } diff --git a/core/src/test/java/org/bitcoinj/wallet/DefaultRiskAnalysisTest.java b/core/src/test/java/org/bitcoinj/wallet/DefaultRiskAnalysisTest.java index 098853815..e490ece41 100644 --- a/core/src/test/java/org/bitcoinj/wallet/DefaultRiskAnalysisTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/DefaultRiskAnalysisTest.java @@ -208,7 +208,7 @@ public class DefaultRiskAnalysisTest { Transaction tx = new Transaction(PARAMS); tx.addInput(PARAMS.getGenesisBlock().getTransactions().get(0).getOutput(0)); // A pay to address output - tx.addOutput(Coin.CENT, ScriptBuilder.createOutputScript(key1.toAddress(PARAMS))); + tx.addOutput(Coin.CENT, ScriptBuilder.createOutputScript(Address.fromKey(PARAMS, key1))); // A pay to pubkey output tx.addOutput(Coin.CENT, ScriptBuilder.createOutputScript(key1)); tx.addOutput(Coin.CENT, ScriptBuilder.createOutputScript(key1)); diff --git a/core/src/test/java/org/bitcoinj/wallet/DeterministicKeyChainTest.java b/core/src/test/java/org/bitcoinj/wallet/DeterministicKeyChainTest.java index 7c7113e75..adfd83a94 100644 --- a/core/src/test/java/org/bitcoinj/wallet/DeterministicKeyChainTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/DeterministicKeyChainTest.java @@ -46,6 +46,7 @@ public class DeterministicKeyChainTest { private DeterministicKeyChain chain; private DeterministicKeyChain bip44chain; private final byte[] ENTROPY = Sha256Hash.hash("don't use a string seed like this in real life".getBytes()); + private static final NetworkParameters PARAMS = UnitTestParams.get(); @Before public void setup() { @@ -70,9 +71,9 @@ public class DeterministicKeyChainTest { ECKey key2 = chain.getKey(KeyChain.KeyPurpose.RECEIVE_FUNDS); assertFalse(key2.isPubKeyOnly()); - final Address address = Address.fromBase58(UnitTestParams.get(), "n1bQNoEx8uhmCzzA5JPG6sFdtsUQhwiQJV"); - assertEquals(address, key1.toAddress(UnitTestParams.get())); - assertEquals("mnHUcqUVvrfi5kAaXJDQzBb9HsWs78b42R", key2.toAddress(UnitTestParams.get()).toString()); + final Address address = Address.fromBase58(PARAMS, "n1bQNoEx8uhmCzzA5JPG6sFdtsUQhwiQJV"); + assertEquals(address, Address.fromKey(PARAMS, key1)); + assertEquals("mnHUcqUVvrfi5kAaXJDQzBb9HsWs78b42R", Address.fromKey(PARAMS, key2).toString()); assertEquals(key1, chain.findKeyFromPubHash(address.getHash160())); assertEquals(key2, chain.findKeyFromPubKey(key2.getPubKey())); @@ -81,7 +82,7 @@ public class DeterministicKeyChainTest { ECKey key3 = chain.getKey(KeyChain.KeyPurpose.CHANGE); assertFalse(key3.isPubKeyOnly()); - assertEquals("mqumHgVDqNzuXNrszBmi7A2UpmwaPMx4HQ", key3.toAddress(UnitTestParams.get()).toString()); + assertEquals("mqumHgVDqNzuXNrszBmi7A2UpmwaPMx4HQ", Address.fromKey(PARAMS, key3).toString()); key3.sign(Sha256Hash.ZERO_HASH); assertFalse(key3.isPubKeyOnly()); } @@ -101,16 +102,16 @@ public class DeterministicKeyChainTest { ECKey key1 = chain1.getKey(KeyChain.KeyPurpose.RECEIVE_FUNDS); ECKey key2 = chain1.getKey(KeyChain.KeyPurpose.RECEIVE_FUNDS); - final Address address = Address.fromBase58(UnitTestParams.get(), "n2nHHRHs7TiZScTuVhZUkzZfTfVgGYwy6X"); - assertEquals(address, key1.toAddress(UnitTestParams.get())); - assertEquals("mnp2j9za5zMuz44vNxrJCXXhZsCdh89QXn", key2.toAddress(UnitTestParams.get()).toString()); + final Address address = Address.fromBase58(PARAMS, "n2nHHRHs7TiZScTuVhZUkzZfTfVgGYwy6X"); + assertEquals(address, Address.fromKey(PARAMS, key1)); + assertEquals("mnp2j9za5zMuz44vNxrJCXXhZsCdh89QXn", Address.fromKey(PARAMS, key2).toString()); assertEquals(key1, chain1.findKeyFromPubHash(address.getHash160())); assertEquals(key2, chain1.findKeyFromPubKey(key2.getPubKey())); key1.sign(Sha256Hash.ZERO_HASH); ECKey key3 = chain1.getKey(KeyChain.KeyPurpose.CHANGE); - assertEquals("mpjRhk13rvV7vmnszcUQVYVQzy4HLTPTQU", key3.toAddress(UnitTestParams.get()).toString()); + assertEquals("mpjRhk13rvV7vmnszcUQVYVQzy4HLTPTQU", Address.fromKey(PARAMS, key3).toString()); key3.sign(Sha256Hash.ZERO_HASH); } @@ -135,8 +136,8 @@ public class DeterministicKeyChainTest { DeterministicKeyChain chain1 = new AccountOneChain(ENTROPY, "", secs); ECKey key1 = chain1.getKey(KeyChain.KeyPurpose.RECEIVE_FUNDS); - final Address address = Address.fromBase58(UnitTestParams.get(), "n2nHHRHs7TiZScTuVhZUkzZfTfVgGYwy6X"); - assertEquals(address, key1.toAddress(UnitTestParams.get())); + final Address address = Address.fromBase58(PARAMS, "n2nHHRHs7TiZScTuVhZUkzZfTfVgGYwy6X"); + assertEquals(address, Address.fromKey(PARAMS, key1)); DeterministicKey watching = chain1.getWatchingKey(); @@ -162,14 +163,14 @@ public class DeterministicKeyChainTest { chain1 = DeterministicKeyChain.fromProtobuf(keys, null, factory).get(0); ECKey key2 = chain1.getKey(KeyChain.KeyPurpose.RECEIVE_FUNDS); - assertEquals("mnp2j9za5zMuz44vNxrJCXXhZsCdh89QXn", key2.toAddress(UnitTestParams.get()).toString()); + assertEquals("mnp2j9za5zMuz44vNxrJCXXhZsCdh89QXn", Address.fromKey(PARAMS, key2).toString()); assertEquals(key1, chain1.findKeyFromPubHash(address.getHash160())); assertEquals(key2, chain1.findKeyFromPubKey(key2.getPubKey())); key1.sign(Sha256Hash.ZERO_HASH); ECKey key3 = chain1.getKey(KeyChain.KeyPurpose.CHANGE); - assertEquals("mpjRhk13rvV7vmnszcUQVYVQzy4HLTPTQU", key3.toAddress(UnitTestParams.get()).toString()); + assertEquals("mpjRhk13rvV7vmnszcUQVYVQzy4HLTPTQU", Address.fromKey(PARAMS, key3).toString()); key3.sign(Sha256Hash.ZERO_HASH); assertEquals(watching, chain1.getWatchingKey()); diff --git a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java index 3d1266987..f92958e1c 100644 --- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java @@ -93,7 +93,7 @@ public class WalletTest extends TestWithWallet { private static final CharSequence PASSWORD1 = "my helicopter contains eels"; private static final CharSequence WRONG_PASSWORD = "nothing noone nobody nowhere"; - private final Address OTHER_ADDRESS = new ECKey().toAddress(PARAMS); + private final Address OTHER_ADDRESS = Address.fromKey(PARAMS, new ECKey()); @Before @Override @@ -158,7 +158,7 @@ public class WalletTest extends TestWithWallet { public void basicSpendingWithEncryptedWallet() throws Exception { Wallet encryptedWallet = new Wallet(PARAMS); encryptedWallet.encrypt(PASSWORD1); - Address myEncryptedAddress = encryptedWallet.freshReceiveKey().toAddress(PARAMS); + Address myEncryptedAddress = Address.fromKey(PARAMS, encryptedWallet.freshReceiveKey()); basicSpendingCommon(encryptedWallet, myEncryptedAddress, OTHER_ADDRESS, encryptedWallet); } @@ -776,7 +776,7 @@ public class WalletTest extends TestWithWallet { // Create a send to a merchant of all our coins. Transaction send1 = wallet.createSend(OTHER_ADDRESS, valueOf(2, 90)); // Create a double spend of just the first one. - Address BAD_GUY = new ECKey().toAddress(PARAMS); + Address BAD_GUY = Address.fromKey(PARAMS, new ECKey()); Transaction send2 = wallet.createSend(BAD_GUY, COIN); send2 = PARAMS.getDefaultSerializer().makeTransaction(send2.bitcoinSerialize()); // Broadcast send1, it's now pending. @@ -870,7 +870,7 @@ public class WalletTest extends TestWithWallet { // Create a send to a merchant. Transaction send1 = wallet.createSend(OTHER_ADDRESS, valueOf(0, 50)); // Create a double spend. - Address BAD_GUY = new ECKey().toAddress(PARAMS); + Address BAD_GUY = Address.fromKey(PARAMS, new ECKey()); Transaction send2 = wallet.createSend(BAD_GUY, valueOf(0, 50)); send2 = PARAMS.getDefaultSerializer().makeTransaction(send2.bitcoinSerialize()); // Broadcast send1. @@ -1405,7 +1405,7 @@ public class WalletTest extends TestWithWallet { Coin nanos = COIN; // Create two transactions that share the same input tx. - Address badGuy = new ECKey().toAddress(PARAMS); + Address badGuy = Address.fromKey(PARAMS, new ECKey()); Transaction doubleSpentTx = new Transaction(PARAMS); TransactionOutput doubleSpentOut = new TransactionOutput(PARAMS, doubleSpentTx, nanos, badGuy); doubleSpentTx.addOutput(doubleSpentOut); @@ -1617,7 +1617,7 @@ public class WalletTest extends TestWithWallet { // Expected } - receiveATransaction(watchingWallet, myKey.toAddress(PARAMS)); + receiveATransaction(watchingWallet, Address.fromKey(PARAMS, myKey)); assertEquals(COIN, watchingWallet.getBalance()); assertEquals(COIN, watchingWallet.getBalance(Wallet.BalanceType.AVAILABLE)); assertEquals(ZERO, watchingWallet.getBalance(Wallet.BalanceType.AVAILABLE_SPENDABLE)); @@ -1641,7 +1641,7 @@ public class WalletTest extends TestWithWallet { @Test public void watchingScripts() throws Exception { // Verify that pending transactions to watched addresses are relevant - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); wallet.addWatchedAddress(watchedAddress); Coin value = valueOf(5, 0); Transaction t1 = createFakeTx(PARAMS, value, watchedAddress); @@ -1651,7 +1651,7 @@ public class WalletTest extends TestWithWallet { @Test(expected = InsufficientMoneyException.class) public void watchingScriptsConfirmed() throws Exception { - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); wallet.addWatchedAddress(watchedAddress); sendMoneyToWallet(BlockChain.NewBlockType.BEST_CHAIN, CENT, watchedAddress); assertEquals(CENT, wallet.getBalance()); @@ -1664,7 +1664,7 @@ public class WalletTest extends TestWithWallet { public void watchingScriptsSentFrom() throws Exception { int baseElements = wallet.getBloomFilterElementCount(); - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); wallet.addWatchedAddress(watchedAddress); assertEquals(baseElements + 1, wallet.getBloomFilterElementCount()); @@ -1686,7 +1686,7 @@ public class WalletTest extends TestWithWallet { public void watchingScriptsBloomFilter() throws Exception { assertFalse(wallet.isRequiringUpdateAllBloomFilter()); - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); Transaction t1 = createFakeTx(PARAMS, CENT, watchedAddress); TransactionOutPoint outPoint = new TransactionOutPoint(PARAMS, 0, t1); wallet.addWatchedAddress(watchedAddress); @@ -1701,7 +1701,7 @@ public class WalletTest extends TestWithWallet { @Test public void getWatchedAddresses() throws Exception { - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); wallet.addWatchedAddress(watchedAddress); List
watchedAddresses = wallet.getWatchedAddresses(); assertEquals(1, watchedAddresses.size()); @@ -1712,7 +1712,7 @@ public class WalletTest extends TestWithWallet { public void removeWatchedAddresses() { List
addressesForRemoval = new ArrayList<>(); for (int i = 0; i < 10; i++) { - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); addressesForRemoval.add(watchedAddress); wallet.addWatchedAddress(watchedAddress); } @@ -1726,7 +1726,7 @@ public class WalletTest extends TestWithWallet { @Test public void removeWatchedAddress() { - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); wallet.addWatchedAddress(watchedAddress); wallet.removeWatchedAddress(watchedAddress); assertFalse(wallet.isAddressWatched(watchedAddress)); @@ -1737,7 +1737,7 @@ public class WalletTest extends TestWithWallet { public void removeScriptsBloomFilter() throws Exception { List
addressesForRemoval = new ArrayList<>(); for (int i = 0; i < 10; i++) { - Address watchedAddress = new ECKey().toAddress(PARAMS); + Address watchedAddress = Address.fromKey(PARAMS, new ECKey()); addressesForRemoval.add(watchedAddress); wallet.addWatchedAddress(watchedAddress); } @@ -1866,7 +1866,7 @@ public class WalletTest extends TestWithWallet { ECKey k2 = wallet.freshReceiveKey(); Coin v2 = valueOf(0, 50); Transaction t2 = new Transaction(PARAMS); - TransactionOutput o2 = new TransactionOutput(PARAMS, t2, v2, k2.toAddress(PARAMS)); + TransactionOutput o2 = new TransactionOutput(PARAMS, t2, v2, Address.fromKey(PARAMS, k2)); t2.addOutput(o2); SendRequest req = SendRequest.forTx(t2); wallet.completeTx(req); @@ -1881,7 +1881,7 @@ public class WalletTest extends TestWithWallet { ECKey k3 = new ECKey(); Coin v3 = valueOf(0, 25); Transaction t3 = new Transaction(PARAMS); - t3.addOutput(v3, k3.toAddress(PARAMS)); + t3.addOutput(v3, Address.fromKey(PARAMS, k3)); t3.addInput(o2); wallet.signTransaction(SendRequest.forTx(t3)); @@ -2109,7 +2109,7 @@ public class WalletTest extends TestWithWallet { encryptedWallet.importKeysAndEncrypt(ImmutableList.of(key), PASSWORD1); assertEquals(1, encryptedWallet.getImportedKeys().size()); assertEquals(key.getPubKeyPoint(), encryptedWallet.getImportedKeys().get(0).getPubKeyPoint()); - sendMoneyToWallet(encryptedWallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, Coin.COIN, key.toAddress(PARAMS)); + sendMoneyToWallet(encryptedWallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, Coin.COIN, Address.fromKey(PARAMS, key)); assertEquals(Coin.COIN, encryptedWallet.getBalance()); SendRequest req = SendRequest.emptyWallet(OTHER_ADDRESS); req.aesKey = checkNotNull(encryptedWallet.getKeyCrypter()).deriveKey(PASSWORD1); @@ -2905,9 +2905,9 @@ public class WalletTest extends TestWithWallet { key2.setCreationTimeSeconds(Utils.currentTimeSeconds() - 86400); wallet.importKey(key1); wallet.importKey(key2); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key1.toAddress(PARAMS)); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key2.toAddress(PARAMS)); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key2.toAddress(PARAMS)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key1)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key2)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key2)); Date compromiseTime = Utils.now(); assertEquals(0, broadcaster.size()); assertFalse(wallet.isKeyRotating(key1)); @@ -2938,7 +2938,7 @@ public class WalletTest extends TestWithWallet { assertEquals(0, broadcaster.size()); // Receive money via a new block on key1 and ensure it shows up as a maintenance task. - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key1.toAddress(PARAMS)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key1)); wallet.doMaintenance(null, true); tx = broadcaster.waitForTransactionAndSucceed(); assertNotNull(wallet.findKeyFromPubHash(tx.getOutput(0).getScriptPubKey().getPubKeyHash())); @@ -2980,8 +2980,8 @@ public class WalletTest extends TestWithWallet { wallet = new Wallet(PARAMS); ECKey key1 = wallet.freshReceiveKey(); ECKey key2 = wallet.freshReceiveKey(); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key1.toAddress(PARAMS)); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, key2.toAddress(PARAMS)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key1)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, key2)); DeterministicKey watchKey1 = wallet.getWatchingKey(); // A day later, we get compromised. @@ -3025,7 +3025,7 @@ public class WalletTest extends TestWithWallet { wallet.upgradeToDeterministic(null); DeterministicKey badWatchingKey = wallet.getWatchingKey(); assertEquals(badKey.getCreationTimeSeconds(), badWatchingKey.getCreationTimeSeconds()); - sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, badWatchingKey.toAddress(PARAMS)); + sendMoneyToWallet(wallet, AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, badWatchingKey)); // Now we set the rotation time to the time we started making good keys. This should create a new HD chain. wallet.setKeyRotationTime(goodKey.getCreationTimeSeconds()); @@ -3035,7 +3035,7 @@ public class WalletTest extends TestWithWallet { ECKey usedKey = wallet.findKeyFromPubHash(output.getHash160()); assertEquals(goodKey.getCreationTimeSeconds(), usedKey.getCreationTimeSeconds()); assertEquals(goodKey.getCreationTimeSeconds(), wallet.freshReceiveKey().getCreationTimeSeconds()); - assertEquals("mrM3TpCnav5YQuVA1xLercCGJH4DXujMtv", usedKey.toAddress(PARAMS).toString()); + assertEquals("mrM3TpCnav5YQuVA1xLercCGJH4DXujMtv", Address.fromKey(PARAMS, usedKey).toString()); DeterministicKeyChain c = fChains.get().get(1); assertEquals(c.getEarliestKeyCreationTime(), goodKey.getCreationTimeSeconds()); assertEquals(2, fChains.get().size()); @@ -3058,7 +3058,7 @@ public class WalletTest extends TestWithWallet { public void fragmentedReKeying() throws Exception { // Send lots of small coins and check the fee is correct. ECKey key = wallet.freshReceiveKey(); - Address address = key.toAddress(PARAMS); + Address address = Address.fromKey(PARAMS, key); Utils.setMockClock(); Utils.rollMockClock(86400); for (int i = 0; i < 800; i++) { @@ -3167,7 +3167,7 @@ public class WalletTest extends TestWithWallet { // Send three transactions, with one being an address type and the other being a raw CHECKSIG type pubkey only, // and the final one being a key we do have. We expect the first two inputs to be dummy values and the last // to be signed correctly. - Transaction t1 = sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, pub.toAddress(PARAMS)); + Transaction t1 = sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, Address.fromKey(PARAMS, pub)); Transaction t2 = sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, pub); Transaction t3 = sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, CENT, priv2); diff --git a/examples/src/main/java/org/bitcoinj/examples/ExamplePaymentChannelClient.java b/examples/src/main/java/org/bitcoinj/examples/ExamplePaymentChannelClient.java index 26fa87ee1..7cc260768 100644 --- a/examples/src/main/java/org/bitcoinj/examples/ExamplePaymentChannelClient.java +++ b/examples/src/main/java/org/bitcoinj/examples/ExamplePaymentChannelClient.java @@ -210,7 +210,7 @@ public class ExamplePaymentChannelClient { ListenableFuture balanceFuture = appKit.wallet().getBalanceFuture(amountPlusFee, Wallet.BalanceType.ESTIMATED); if (!balanceFuture.isDone()) { System.out.println("Please send " + amountPlusFee.toFriendlyString() + - " to " + myKey.toAddress(params)); + " to " + Address.fromKey(params, myKey)); Futures.getUnchecked(balanceFuture); } } diff --git a/examples/src/main/java/org/bitcoinj/examples/ForwardingService.java b/examples/src/main/java/org/bitcoinj/examples/ForwardingService.java index 49d6690f2..b37cc67d6 100644 --- a/examples/src/main/java/org/bitcoinj/examples/ForwardingService.java +++ b/examples/src/main/java/org/bitcoinj/examples/ForwardingService.java @@ -111,7 +111,7 @@ public class ForwardingService { } }); - Address sendToAddress = kit.wallet().currentReceiveKey().toAddress(params); + Address sendToAddress = Address.fromKey(params, kit.wallet().currentReceiveKey()); System.out.println("Send coins to: " + sendToAddress); System.out.println("Waiting for coins to arrive. Press Ctrl-C to quit."); diff --git a/examples/src/main/java/org/bitcoinj/examples/GenerateLowSTests.java b/examples/src/main/java/org/bitcoinj/examples/GenerateLowSTests.java index 8f5391b22..64c63d7e5 100644 --- a/examples/src/main/java/org/bitcoinj/examples/GenerateLowSTests.java +++ b/examples/src/main/java/org/bitcoinj/examples/GenerateLowSTests.java @@ -24,6 +24,7 @@ import java.util.EnumSet; import static com.google.common.base.Preconditions.checkNotNull; +import org.bitcoinj.core.Address; import org.bitcoinj.core.Coin; import org.bitcoinj.core.ECKey; import org.bitcoinj.core.NetworkParameters; @@ -81,11 +82,11 @@ public class GenerateLowSTests { final Transaction outputTransaction = new Transaction(params); final Transaction inputTransaction = new Transaction(params); - final TransactionOutput output = new TransactionOutput(params, inputTransaction, Coin.ZERO, key.toAddress(params)); + final TransactionOutput output = new TransactionOutput(params, inputTransaction, Coin.ZERO, Address.fromKey(params, key)); inputTransaction.addOutput(output); outputTransaction.addInput(output); - outputTransaction.addOutput(Coin.ZERO, new ECKey(secureRandom).toAddress(params)); + outputTransaction.addOutput(Coin.ZERO, Address.fromKey(params, new ECKey(secureRandom))); addOutputs(outputTransaction, bag); diff --git a/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java b/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java index 05f50bc22..f5df52cef 100644 --- a/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java +++ b/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java @@ -50,7 +50,7 @@ public class PrivateKeys { BigInteger privKey = Base58.decodeToBigInteger(args[0]); key = ECKey.fromPrivate(privKey); } - System.out.println("Address from private key is: " + key.toAddress(params).toString()); + System.out.println("Address from private key is: " + Address.fromKey(params, key).toString()); // And the address ... Address destination = Address.fromBase58(params, args[1]); diff --git a/tools/src/main/java/org/bitcoinj/tools/WalletTool.java b/tools/src/main/java/org/bitcoinj/tools/WalletTool.java index 255272ea0..4909a80dd 100644 --- a/tools/src/main/java/org/bitcoinj/tools/WalletTool.java +++ b/tools/src/main/java/org/bitcoinj/tools/WalletTool.java @@ -1355,7 +1355,7 @@ public class WalletTool { } key = wallet.freshReceiveKey(); } - System.out.println(key.toAddress(params) + " " + key); + System.out.println(Address.fromKey(params, key) + " " + key); } } @@ -1420,7 +1420,7 @@ public class WalletTool { key = key.encrypt(checkNotNull(wallet.getKeyCrypter()), aesKey); } wallet.importKey(key); - System.out.println(key.toAddress(params) + " " + key); + System.out.println(Address.fromKey(params, key) + " " + key); } catch (KeyCrypterException kce) { System.err.println("There was an encryption related error when adding the key. The error was '" + kce.getMessage() + "'."); } @@ -1480,7 +1480,7 @@ public class WalletTool { private static void currentReceiveAddr() { ECKey key = wallet.currentReceiveKey(); - System.out.println(key.toAddress(params) + " " + key); + System.out.println(Address.fromKey(params, key) + " " + key); } private static void dumpWallet() throws BlockStoreException {