类org.bitcoinj.core.PeerAddress源码实例Demo

下面列出了怎么用org.bitcoinj.core.PeerAddress的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: bisq-core   文件: WalletNetworkConfig.java
void proposePeers(List<PeerAddress> peers) {
    if (!peers.isEmpty()) {
        log.info("You connect with peerAddresses: {}", peers);
        PeerAddress[] peerAddresses = peers.toArray(new PeerAddress[peers.size()]);
        delegate.setPeerNodes(peerAddresses);
    } else if (proxy != null) {
        if (log.isWarnEnabled()) {
            MainNetParams mainNetParams = MainNetParams.get();
            if (parameters.equals(mainNetParams)) {
                log.warn("You use the public Bitcoin network and are exposed to privacy issues " +
                        "caused by the broken bloom filters. See https://bisq.network/blog/privacy-in-bitsquare/ " +
                        "for more info. It is recommended to use the provided nodes.");
            }
        }
        // SeedPeers uses hard coded stable addresses (from MainNetParams). It should be updated from time to time.
        delegate.setDiscovery(new Socks5MultiDiscovery(proxy, parameters, socks5DiscoverMode));
    } else {
        log.warn("You don't use tor and use the public Bitcoin network and are exposed to privacy issues " +
                "caused by the broken bloom filters. See https://bisq.network/blog/privacy-in-bitsquare/ " +
                "for more info. It is recommended to use Tor and the provided nodes.");
    }
}
 
源代码2 项目: bisq-core   文件: PeerAddressesRepository.java
List<PeerAddress> getPeerAddresses(@Nullable Socks5Proxy proxy, boolean isUseClearNodesWithProxies) {
    List<PeerAddress> result;
    // We connect to onion nodes only in case we use Tor for BitcoinJ (default) to avoid privacy leaks at
    // exit nodes with bloom filters.
    if (proxy != null) {
        List<PeerAddress> onionHosts = getOnionHosts();
        result = new ArrayList<>(onionHosts);

        if (isUseClearNodesWithProxies) {
            // We also use the clear net nodes (used for monitor)
            List<PeerAddress> torAddresses = getClearNodesBehindProxy(proxy);
            result.addAll(torAddresses);
        }
    } else {
        result = getClearNodes();
    }
    return result;
}
 
源代码3 项目: bisq-core   文件: BtcNodeConverter.java
@Nullable
PeerAddress convertOnionHost(BtcNode node) {
    // no DNS lookup for onion addresses
    String onionAddress = Objects.requireNonNull(node.getOnionAddress());
    try {
        // OnionCat.onionHostToInetAddress converts onion to ipv6 representation
        // inetAddress is not used but required for wallet persistence. Throws nullPointer if not set.
        InetAddress inetAddress = facade.onionHostToInetAddress(onionAddress);
        PeerAddress result = new PeerAddress(onionAddress, node.getPort());
        result.setAddr(inetAddress);
        return result;
    } catch (UnknownHostException e) {
        log.error("Failed to convert node", e);
        return null;
    }
}
 
源代码4 项目: bisq-core   文件: PeerAddressesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenConverterReturnsNull() {
    BtcNodeConverter converter = mock(BtcNodeConverter.class);
    when(converter.convertClearNode(any())).thenReturn(null);

    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    PeerAddressesRepository repository = new PeerAddressesRepository(converter,
            Collections.singletonList(node));

    List<PeerAddress> peers = repository.getPeerAddresses(null, false);

    verify(converter).convertClearNode(any());
    assertTrue(peers.isEmpty());
}
 
源代码5 项目: bisq-core   文件: PeerAddressesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenProxyAndClearNodes() {
    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNode onionNode = mock(BtcNode.class);
    when(node.hasOnionAddress()).thenReturn(true);

    BtcNodeConverter converter = mock(BtcNodeConverter.class, RETURNS_DEEP_STUBS);
    PeerAddressesRepository repository = new PeerAddressesRepository(converter,
            Lists.newArrayList(node, onionNode));

    List<PeerAddress> peers = repository.getPeerAddresses(mock(Socks5Proxy.class), true);

    assertEquals(2, peers.size());
}
 
源代码6 项目: bisq-core   文件: PeerAddressesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenOnionNodesOnly() {
    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNode onionNode = mock(BtcNode.class);
    when(node.hasOnionAddress()).thenReturn(true);

    BtcNodeConverter converter = mock(BtcNodeConverter.class, RETURNS_DEEP_STUBS);
    PeerAddressesRepository repository = new PeerAddressesRepository(converter,
            Lists.newArrayList(node, onionNode));

    List<PeerAddress> peers = repository.getPeerAddresses(mock(Socks5Proxy.class), false);

    assertEquals(1, peers.size());
}
 
源代码7 项目: polling-station-app   文件: BlockChain.java
public void startDownload() {
    BriefLogFormatter.init();
    String filePrefix = "voting-wallet";
    File walletFile = new File(Environment.getExternalStorageDirectory() + "/" + Util.FOLDER_DIGITAL_VOTING_PASS);
    if (!walletFile.exists()) {
        walletFile.mkdirs();
    }
    kit = new WalletAppKit(params, walletFile, filePrefix);

    //set the observer
    kit.setDownloadListener(progressTracker);

    kit.setBlockingStartup(false);

    PeerAddress peer = new PeerAddress(params, peeraddr);
    kit.setPeerNodes(peer);
    kit.startAsync();
}
 
源代码8 项目: bisq   文件: BtcNodeConverter.java
@Nullable
PeerAddress convertOnionHost(BtcNode node) {
    // no DNS lookup for onion addresses
    String onionAddress = Objects.requireNonNull(node.getOnionAddress());
    try {
        // OnionCatConverter.onionHostToInetAddress converts onion to ipv6 representation
        // inetAddress is not used but required for wallet persistence. Throws nullPointer if not set.
        InetAddress inetAddress = facade.onionHostToInetAddress(onionAddress);
        PeerAddress result = new PeerAddress(onionAddress, node.getPort());
        result.setAddr(inetAddress);
        return result;
    } catch (UnknownHostException e) {
        log.error("Failed to convert node", e);
        return null;
    }
}
 
源代码9 项目: bisq   文件: BtcNodesRepository.java
public List<PeerAddress> getPeerAddresses(@Nullable Socks5Proxy proxy, boolean isUseClearNodesWithProxies) {
    List<PeerAddress> result;
    // We connect to onion nodes only in case we use Tor for BitcoinJ (default) to avoid privacy leaks at
    // exit nodes with bloom filters.
    if (proxy != null) {
        List<PeerAddress> onionHosts = getOnionHosts();
        result = new ArrayList<>(onionHosts);

        if (isUseClearNodesWithProxies) {
            // We also use the clear net nodes (used for monitor)
            List<PeerAddress> torAddresses = getClearNodesBehindProxy(proxy);
            result.addAll(torAddresses);
        }
    } else {
        result = getClearNodes();
    }
    return result;
}
 
源代码10 项目: bisq   文件: BtcNetworkConfig.java
public void proposePeers(List<PeerAddress> peers) {
    if (!peers.isEmpty()) {
        log.info("You connect with peerAddresses: {}", peers);
        PeerAddress[] peerAddresses = peers.toArray(new PeerAddress[peers.size()]);
        delegate.setPeerNodes(peerAddresses);
    } else if (proxy != null) {
        if (log.isWarnEnabled()) {
            MainNetParams mainNetParams = MainNetParams.get();
            if (parameters.equals(mainNetParams)) {
                log.warn("You use the public Bitcoin network and are exposed to privacy issues " +
                        "caused by the broken bloom filters. See https://bisq.network/blog/privacy-in-bitsquare/ " +
                        "for more info. It is recommended to use the provided nodes.");
            }
        }
        // SeedPeers uses hard coded stable addresses (from MainNetParams). It should be updated from time to time.
        delegate.setDiscovery(new Socks5MultiDiscovery(proxy, parameters, socks5DiscoverMode));
    } else if (Config.baseCurrencyNetwork().isMainnet()) {
        log.warn("You don't use tor and use the public Bitcoin network and are exposed to privacy issues " +
                "caused by the broken bloom filters. See https://bisq.network/blog/privacy-in-bitsquare/ " +
                "for more info. It is recommended to use Tor and the provided nodes.");
    }
}
 
源代码11 项目: bisq   文件: BtcNodesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenConverterReturnsNull() {
    BtcNodeConverter converter = mock(BtcNodeConverter.class);
    when(converter.convertClearNode(any())).thenReturn(null);

    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNodesRepository repository = new BtcNodesRepository(converter,
            Collections.singletonList(node));

    List<PeerAddress> peers = repository.getPeerAddresses(null, false);

    verify(converter).convertClearNode(any());
    assertTrue(peers.isEmpty());
}
 
源代码12 项目: bisq   文件: BtcNodesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenProxyAndClearNodes() {
    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNode onionNode = mock(BtcNode.class);
    when(node.hasOnionAddress()).thenReturn(true);

    BtcNodeConverter converter = mock(BtcNodeConverter.class, RETURNS_DEEP_STUBS);
    BtcNodesRepository repository = new BtcNodesRepository(converter,
            Lists.newArrayList(node, onionNode));

    List<PeerAddress> peers = repository.getPeerAddresses(mock(Socks5Proxy.class), true);

    assertEquals(2, peers.size());
}
 
源代码13 项目: bisq   文件: BtcNodesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenOnionNodesOnly() {
    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNode onionNode = mock(BtcNode.class);
    when(node.hasOnionAddress()).thenReturn(true);

    BtcNodeConverter converter = mock(BtcNodeConverter.class, RETURNS_DEEP_STUBS);
    BtcNodesRepository repository = new BtcNodesRepository(converter,
            Lists.newArrayList(node, onionNode));

    List<PeerAddress> peers = repository.getPeerAddresses(mock(Socks5Proxy.class), false);

    assertEquals(1, peers.size());
}
 
源代码14 项目: bcm-android   文件: WalletProtobufSerializerTest.java
@Test
public void oneTx() throws Exception {
    // Check basic tx serialization.
    Coin v1 = COIN;
    Transaction t1 = createFakeTx(UNITTEST, v1, myAddress);
    t1.getConfidence().markBroadcastBy(new PeerAddress(UNITTEST, InetAddress.getByName("1.2.3.4")));
    t1.getConfidence().markBroadcastBy(new PeerAddress(UNITTEST, InetAddress.getByName("5.6.7.8")));
    t1.getConfidence().setSource(TransactionConfidence.Source.NETWORK);
    myWallet.receivePending(t1, null);
    Wallet wallet1 = roundTrip(myWallet);
    assertEquals(1, wallet1.getTransactions(true).size());
    assertEquals(v1, wallet1.getBalance(Wallet.BalanceType.ESTIMATED));
    Transaction t1copy = wallet1.getTransaction(t1.getHash());
    assertArrayEquals(t1.unsafeBitcoinSerialize(), t1copy.unsafeBitcoinSerialize());
    assertEquals(2, t1copy.getConfidence().numBroadcastPeers());
    assertNotNull(t1copy.getConfidence().getLastBroadcastedAt());
    assertEquals(TransactionConfidence.Source.NETWORK, t1copy.getConfidence().getSource());

    Protos.Wallet walletProto = new WalletProtobufSerializer().walletToProto(myWallet);
    assertEquals(Protos.Key.Type.ORIGINAL, walletProto.getKey(0).getType());
    assertEquals(0, walletProto.getExtensionCount());
    assertEquals(1, walletProto.getTransactionCount());
    assertEquals(6, walletProto.getKeyCount());

    Protos.Transaction t1p = walletProto.getTransaction(0);
    assertEquals(0, t1p.getBlockHashCount());
    assertArrayEquals(t1.getHash().getBytes(), t1p.getHash().toByteArray());
    assertEquals(Protos.Transaction.Pool.PENDING, t1p.getPool());
    assertFalse(t1p.hasLockTime());
    assertFalse(t1p.getTransactionInput(0).hasSequence());
    assertArrayEquals(t1.getInputs().get(0).getOutpoint().getHash().getBytes(),
            t1p.getTransactionInput(0).getTransactionOutPointHash().toByteArray());
    assertEquals(0, t1p.getTransactionInput(0).getTransactionOutPointIndex());
    assertEquals(t1p.getTransactionOutput(0).getValue(), v1.value);
}
 
源代码15 项目: bisq-core   文件: BtcNodeConverter.java
@Nullable
PeerAddress convertClearNode(BtcNode node) {
    int port = node.getPort();

    PeerAddress result = create(node.getHostNameOrAddress(), port);
    if (result == null) {
        String address = node.getAddress();
        if (address != null) {
            result = create(address, port);
        } else {
            log.warn("Lookup failed, no address for node", node);
        }
    }
    return result;
}
 
源代码16 项目: bisq-core   文件: BtcNodeConverter.java
@Nullable
PeerAddress convertWithTor(BtcNode node, Socks5Proxy proxy) {
    int port = node.getPort();

    PeerAddress result = create(proxy, node.getHostNameOrAddress(), port);
    if (result == null) {
        String address = node.getAddress();
        if (address != null) {
            result = create(proxy, address, port);
        } else {
            log.warn("Lookup failed, no address for node", node);
        }
    }
    return result;
}
 
源代码17 项目: bisq-core   文件: BtcNodeConverter.java
@Nullable
private PeerAddress create(Socks5Proxy proxy, String host, int port) {
    try {
        // We use DnsLookupTor to not leak with DNS lookup
        // Blocking call. takes about 600 ms ;-(
        InetAddress lookupAddress = facade.torLookup(proxy, host);
        InetSocketAddress address = new InetSocketAddress(lookupAddress, port);
        return new PeerAddress(address.getAddress(), address.getPort());
    } catch (Exception e) {
        log.error("Failed to create peer address", e);
        return null;
    }
}
 
源代码18 项目: bisq-core   文件: BtcNodeConverter.java
@Nullable
private static PeerAddress create(String hostName, int port) {
    try {
        InetSocketAddress address = new InetSocketAddress(hostName, port);
        return new PeerAddress(address.getAddress(), address.getPort());
    } catch (Exception e) {
        log.error("Failed to create peer address", e);
        return null;
    }
}
 
源代码19 项目: bisq-core   文件: WalletsSetup.java
private void configPeerNodesForRegTestServer() {
    try {
        walletConfig.setPeerNodes(new PeerAddress(InetAddress.getByName(RegTestHost.SERVER_IP), params.getPort()));
    } catch (UnknownHostException e) {
        log.error(e.toString());
        e.printStackTrace();
        throw new RuntimeException(e);
    }
}
 
源代码20 项目: bisq-core   文件: WalletsSetup.java
private void configPeerNodes(@Nullable Socks5Proxy proxy) {
    WalletSetupPreferences walletSetupPreferences = new WalletSetupPreferences(preferences);

    List<BtcNode> nodes = walletSetupPreferences.selectPreferredNodes(bitcoinNodes);
    int minBroadcastConnections = walletSetupPreferences.calculateMinBroadcastConnections(nodes);
    walletConfig.setMinBroadcastConnections(minBroadcastConnections);

    PeerAddressesRepository repository = new PeerAddressesRepository(nodes);
    boolean isUseClearNodesWithProxies = (useAllProvidedNodes || walletSetupPreferences.isUseCustomNodes());
    List<PeerAddress> peers = repository.getPeerAddresses(proxy, isUseClearNodesWithProxies);

    WalletNetworkConfig networkConfig = new WalletNetworkConfig(walletConfig, params, socks5DiscoverMode, proxy);
    networkConfig.proposePeers(peers);
}
 
源代码21 项目: bisq-core   文件: WalletConfig.java
void setPeerNodesForLocalHost() {
    try {
        setPeerNodes(new PeerAddress(InetAddress.getLocalHost(), params.getPort()));
    } catch (UnknownHostException e) {
        log.error(e.toString());
        e.printStackTrace();
        // Borked machine with no loopback adapter configured properly.
        throw new RuntimeException(e);
    }
}
 
源代码22 项目: bisq-core   文件: WalletNetworkConfigTest.java
@Test
public void testProposePeersWhenPeersPresent() {
    WalletNetworkConfig config = new WalletNetworkConfig(delegate, mock(NetworkParameters.class), MODE,
            null);
    config.proposePeers(Collections.singletonList(mock(PeerAddress.class)));

    verify(delegate, never()).setDiscovery(any(Socks5MultiDiscovery.class));
    verify(delegate).setPeerNodes(any());
}
 
源代码23 项目: bisq-core   文件: PeerAddressesRepositoryTest.java
@Test
public void testGetPeerAddressesWhenClearNodes() {
    BtcNode node = mock(BtcNode.class);
    when(node.hasClearNetAddress()).thenReturn(true);

    BtcNodeConverter converter = mock(BtcNodeConverter.class, RETURNS_DEEP_STUBS);
    PeerAddressesRepository repository = new PeerAddressesRepository(converter,
            Collections.singletonList(node));

    List<PeerAddress> peers = repository.getPeerAddresses(null, false);

    assertFalse(peers.isEmpty());
}
 
源代码24 项目: bisq-core   文件: BtcNodeConverterTest.java
@Test
public void testConvertOnionHost() throws UnknownHostException {
    BtcNode node = mock(BtcNode.class);
    when(node.getOnionAddress()).thenReturn("aaa.onion");

    InetAddress inetAddress = mock(InetAddress.class);

    Facade facade = mock(Facade.class);
    when(facade.onionHostToInetAddress(any())).thenReturn(inetAddress);

    PeerAddress peerAddress = new BtcNodeConverter(facade).convertOnionHost(node);
    // noinspection ConstantConditions
    assertEquals(inetAddress, peerAddress.getAddr());
}
 
源代码25 项目: bisq-core   文件: BtcNodeConverterTest.java
@Test
public void testConvertOnionHostOnFailure() throws UnknownHostException {
    BtcNode node = mock(BtcNode.class);
    when(node.getOnionAddress()).thenReturn("aaa.onion");

    Facade facade = mock(Facade.class);
    when(facade.onionHostToInetAddress(any())).thenThrow(UnknownHostException.class);

    PeerAddress peerAddress = new BtcNodeConverter(facade).convertOnionHost(node);
    assertNull(peerAddress);
}
 
源代码26 项目: bisq-core   文件: BtcNodeConverterTest.java
@Ignore
@Test
public void testConvertClearNode() {
    final String ip = "192.168.0.1";

    BtcNode node = mock(BtcNode.class);
    when(node.getHostNameOrAddress()).thenReturn(ip);

    PeerAddress peerAddress = new BtcNodeConverter().convertClearNode(node);
    // noinspection ConstantConditions
    InetAddress inetAddress = peerAddress.getAddr();
    assertEquals(ip, inetAddress.getHostName());
}
 
源代码27 项目: bisq-core   文件: BtcNodeConverterTest.java
@Test
public void testConvertWithTor() throws DnsLookupException {
    InetAddress expected = mock(InetAddress.class);

    Facade facade = mock(Facade.class);
    when(facade.torLookup(any(), anyString())).thenReturn(expected);

    BtcNode node = mock(BtcNode.class);
    when(node.getHostNameOrAddress()).thenReturn("aaa.onion");

    PeerAddress peerAddress = new BtcNodeConverter(facade).convertWithTor(node, mock(Socks5Proxy.class));

    // noinspection ConstantConditions
    assertEquals(expected, peerAddress.getAddr());
}
 
源代码28 项目: green_android   文件: SPV.java
private PeerAddress getPeerAddress(final String address) throws URISyntaxException, UnknownHostException {
    final URI uri = new URI("btc://" + address);
    final String host = uri.getHost();

    if (host == null)
        throw new UnknownHostException(address);

    final NetworkData networkData = mService.getNetwork();
    final int port = uri.getPort() == -1 ? networkData.getNetworkParameters().getPort() : uri.getPort();

    if (!isProxyEnabled() && !getTorEnabled())
        return new PeerAddress(networkData.getNetworkParameters(), InetAddress.getByName(host), port);

    return new PeerAddress(networkData.getNetworkParameters(), host, port) {
               @Override
               public InetSocketAddress toSocketAddress() {
                   return InetSocketAddress.createUnresolved(host, port);
               }

               @Override
               public String toString() {
                   return String.format("%s:%s", host, port);
               }

               @Override
               public int hashCode() {
                   return uri.hashCode();
               }
    };
}
 
源代码29 项目: GreenBits   文件: SPV.java
private PeerAddress getPeerAddress(final String address) throws URISyntaxException, UnknownHostException {
    final URI uri = new URI("btc://" + address);
    final String host = uri.getHost();

    if (host == null)
        throw new UnknownHostException(address);

    final int port = uri.getPort() == -1? mService.getNetworkParameters().getPort() : uri.getPort();

    if (!mService.isProxyEnabled())
        return new PeerAddress(mService.getNetworkParameters(), InetAddress.getByName(host), port);

    return new PeerAddress(mService.getNetworkParameters(), host, port) {
        @Override
        public InetSocketAddress toSocketAddress() {
            return InetSocketAddress.createUnresolved(host, port);
        }

        @Override
        public String toString() {
            return String.format("%s:%s", host, port);
        }

        @Override
        public int hashCode() {
            return uri.hashCode();
        }
    };
}
 
源代码30 项目: bisq   文件: WalletsSetup.java
private void configPeerNodesForRegTestServer() {
    try {
        if (RegTestHost.HOST.endsWith(".onion")) {
            walletConfig.setPeerNodes(new PeerAddress(RegTestHost.HOST, params.getPort()));
        } else {
            walletConfig.setPeerNodes(new PeerAddress(InetAddress.getByName(RegTestHost.HOST), params.getPort()));
        }
    } catch (UnknownHostException e) {
        log.error(e.toString());
        e.printStackTrace();
        throw new RuntimeException(e);
    }
}
 
 类所在包
 类方法
 同包方法