diff --git a/core/src/main/java/org/bitcoinj/core/PeerAddress.java b/core/src/main/java/org/bitcoinj/core/PeerAddress.java index 7d5017ca..4305cf1d 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerAddress.java +++ b/core/src/main/java/org/bitcoinj/core/PeerAddress.java @@ -71,7 +71,8 @@ public class PeerAddress extends ChildMessage { /** * Construct a peer address from a memorized or hardcoded address. */ - public PeerAddress(InetAddress addr, int port, int protocolVersion) { + public PeerAddress(NetworkParameters params, InetAddress addr, int port, int protocolVersion) { + super(params); this.addr = checkNotNull(addr); this.port = port; this.protocolVersion = protocolVersion; @@ -80,46 +81,20 @@ public class PeerAddress extends ChildMessage { } /** - * Constructs a peer address from the given IP address and port. Protocol version is the default - * for Bitcoin. - */ - public PeerAddress(InetAddress addr, int port) { - this(addr, port, NetworkParameters.ProtocolVersion.CURRENT.getBitcoinProtocolVersion()); - } - - /** - * Constructs a peer address from the given IP address and port. + * Constructs a peer address from the given IP address and port. Version number is default for the given parameters. */ public PeerAddress(NetworkParameters params, InetAddress addr, int port) { - this(addr, port, params.getProtocolVersionNum(NetworkParameters.ProtocolVersion.CURRENT)); + this(params, addr, port, params.getProtocolVersionNum(NetworkParameters.ProtocolVersion.CURRENT)); } /** - * Constructs a peer address from the given IP address. Port and version number - * are default for Bitcoin mainnet. - */ - public PeerAddress(InetAddress addr) { - this(addr, MainNetParams.get().getPort()); - } - - /** - * Constructs a peer address from the given IP address. Port is default for - * Bitcoin mainnet, version number is default for the given parameters. + * Constructs a peer address from the given IP address. Port and version number are default for the given + * parameters. */ public PeerAddress(NetworkParameters params, InetAddress addr) { this(params, addr, MainNetParams.get().getPort()); } - /** - * Constructs a peer address from an {@link InetSocketAddress}. An InetSocketAddress can take in as parameters an - * InetAddress or a String hostname. If you want to connect to a .onion, set the hostname to the .onion address. - * Protocol version is the default. Protocol version is the default - * for Bitcoin. - */ - public PeerAddress(InetSocketAddress addr) { - this(addr.getAddress(), addr.getPort(), NetworkParameters.ProtocolVersion.CURRENT.getBitcoinProtocolVersion()); - } - /** * Constructs a peer address from an {@link InetSocketAddress}. An InetSocketAddress can take in as parameters an * InetAddress or a String hostname. If you want to connect to a .onion, set the hostname to the .onion address. @@ -128,17 +103,6 @@ public class PeerAddress extends ChildMessage { this(params, addr.getAddress(), addr.getPort()); } - /** - * Constructs a peer address from a stringified hostname+port. Use this if you want to connect to a Tor .onion address. - * Protocol version is the default for Bitcoin. - */ - public PeerAddress(String hostname, int port) { - this.hostname = hostname; - this.port = port; - this.protocolVersion = NetworkParameters.ProtocolVersion.CURRENT.getBitcoinProtocolVersion(); - this.services = BigInteger.ZERO; - } - /** * Constructs a peer address from a stringified hostname+port. Use this if you want to connect to a Tor .onion address. */ diff --git a/core/src/main/java/org/bitcoinj/core/VersionMessage.java b/core/src/main/java/org/bitcoinj/core/VersionMessage.java index c5c92455..86aa5e26 100644 --- a/core/src/main/java/org/bitcoinj/core/VersionMessage.java +++ b/core/src/main/java/org/bitcoinj/core/VersionMessage.java @@ -101,8 +101,8 @@ public class VersionMessage extends Message { // We hard-code the IPv4 localhost address here rather than use InetAddress.getLocalHost() because some // mobile phones have broken localhost DNS entries, also, this is faster. final byte[] localhost = { 127, 0, 0, 1 }; - myAddr = new PeerAddress(InetAddress.getByAddress(localhost), params.getPort(), 0); - theirAddr = new PeerAddress(InetAddress.getByAddress(localhost), params.getPort(), 0); + myAddr = new PeerAddress(params, InetAddress.getByAddress(localhost), params.getPort(), 0); + theirAddr = new PeerAddress(params, InetAddress.getByAddress(localhost), params.getPort(), 0); } catch (UnknownHostException e) { throw new RuntimeException(e); // Cannot happen (illegal IP length). } diff --git a/core/src/test/java/org/bitcoinj/core/PeerAddressTest.java b/core/src/test/java/org/bitcoinj/core/PeerAddressTest.java index 88376d46..25cc901d 100644 --- a/core/src/test/java/org/bitcoinj/core/PeerAddressTest.java +++ b/core/src/test/java/org/bitcoinj/core/PeerAddressTest.java @@ -39,7 +39,7 @@ public class PeerAddressTest @Test public void testBitcoinSerialize() throws Exception { - PeerAddress pa = new PeerAddress(InetAddress.getByName(null), 8333, 0); + PeerAddress pa = new PeerAddress(MainNetParams.get(), InetAddress.getByName(null), 8333, 0); assertEquals("000000000000000000000000000000000000ffff7f000001208d", Utils.HEX.encode(pa.bitcoinSerialize())); } diff --git a/examples/src/main/java/org/bitcoinj/examples/FetchBlock.java b/examples/src/main/java/org/bitcoinj/examples/FetchBlock.java index d549274b..8f0203fb 100644 --- a/examples/src/main/java/org/bitcoinj/examples/FetchBlock.java +++ b/examples/src/main/java/org/bitcoinj/examples/FetchBlock.java @@ -39,7 +39,7 @@ public class FetchBlock { BlockChain chain = new BlockChain(params, blockStore); PeerGroup peerGroup = new PeerGroup(params, chain); peerGroup.start(); - PeerAddress addr = new PeerAddress(InetAddress.getLocalHost(), params.getPort()); + PeerAddress addr = new PeerAddress(params, InetAddress.getLocalHost()); peerGroup.addAddress(addr); peerGroup.waitForPeers(1).get(); Peer peer = peerGroup.getConnectedPeers().get(0); diff --git a/examples/src/main/java/org/bitcoinj/examples/FetchTransactions.java b/examples/src/main/java/org/bitcoinj/examples/FetchTransactions.java index b8e1ce81..df0fc760 100644 --- a/examples/src/main/java/org/bitcoinj/examples/FetchTransactions.java +++ b/examples/src/main/java/org/bitcoinj/examples/FetchTransactions.java @@ -40,7 +40,7 @@ public class FetchTransactions { BlockChain chain = new BlockChain(params, blockStore); PeerGroup peerGroup = new PeerGroup(params, chain); peerGroup.start(); - peerGroup.addAddress(new PeerAddress(InetAddress.getLocalHost(), params.getPort())); + peerGroup.addAddress(new PeerAddress(params, InetAddress.getLocalHost())); peerGroup.waitForPeers(1).get(); Peer peer = peerGroup.getConnectedPeers().get(0); diff --git a/examples/src/main/java/org/bitcoinj/examples/PrintPeers.java b/examples/src/main/java/org/bitcoinj/examples/PrintPeers.java index e7439976..fdccfd0d 100644 --- a/examples/src/main/java/org/bitcoinj/examples/PrintPeers.java +++ b/examples/src/main/java/org/bitcoinj/examples/PrintPeers.java @@ -82,7 +82,7 @@ public class PrintPeers { NioClientManager clientManager = new NioClientManager(); for (final InetAddress addr : addrs) { InetSocketAddress address = new InetSocketAddress(addr, params.getPort()); - final Peer peer = new Peer(params, new VersionMessage(params, 0), null, new PeerAddress(address)); + final Peer peer = new Peer(params, new VersionMessage(params, 0), null, new PeerAddress(params, address)); final SettableFuture future = SettableFuture.create(); // Once the connection has completed version handshaking ... peer.addConnectedEventListener(new PeerConnectedEventListener() { diff --git a/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java b/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java index 961d7545..05f50bc2 100644 --- a/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java +++ b/examples/src/main/java/org/bitcoinj/examples/PrivateKeys.java @@ -63,7 +63,7 @@ public class PrivateKeys { BlockChain chain = new BlockChain(params, wallet, blockStore); final PeerGroup peerGroup = new PeerGroup(params, chain); - peerGroup.addAddress(new PeerAddress(InetAddress.getLocalHost())); + peerGroup.addAddress(new PeerAddress(params, InetAddress.getLocalHost())); peerGroup.startAsync(); peerGroup.downloadBlockChain(); peerGroup.stopAsync(); diff --git a/tools/src/main/java/org/bitcoinj/tools/BuildCheckpoints.java b/tools/src/main/java/org/bitcoinj/tools/BuildCheckpoints.java index 882f4d38..51b28343 100644 --- a/tools/src/main/java/org/bitcoinj/tools/BuildCheckpoints.java +++ b/tools/src/main/java/org/bitcoinj/tools/BuildCheckpoints.java @@ -228,7 +228,7 @@ public class BuildCheckpoints { } private static void startPeerGroup(PeerGroup peerGroup, InetAddress ipAddress) { - final PeerAddress peerAddress = new PeerAddress(ipAddress, params.getPort()); + final PeerAddress peerAddress = new PeerAddress(params, ipAddress); System.out.println("Connecting to " + peerAddress + "..."); peerGroup.addAddress(peerAddress); peerGroup.start(); diff --git a/tools/src/main/java/org/bitcoinj/tools/WalletTool.java b/tools/src/main/java/org/bitcoinj/tools/WalletTool.java index fc74d458..949d8084 100644 --- a/tools/src/main/java/org/bitcoinj/tools/WalletTool.java +++ b/tools/src/main/java/org/bitcoinj/tools/WalletTool.java @@ -1211,7 +1211,7 @@ public class WalletTool { String[] peerAddrs = peersFlag.split(","); for (String peer : peerAddrs) { try { - peers.addAddress(new PeerAddress(InetAddress.getByName(peer), params.getPort())); + peers.addAddress(new PeerAddress(params, InetAddress.getByName(peer))); } catch (UnknownHostException e) { System.err.println("Could not understand peer domain name/IP address: " + peer + ": " + e.getMessage()); System.exit(1);