mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-02-23 14:40:40 +01:00
bitcoinj-core: optimize imports
This commit is contained in:
parent
1f0c1a3bb7
commit
3744876a83
178 changed files with 1740 additions and 818 deletions
|
@ -17,15 +17,17 @@
|
|||
|
||||
package org.bitcoin;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.nio.Buffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import com.google.common.base.Preconditions;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import static org.bitcoin.NativeSecp256k1Util.*;
|
||||
|
||||
import static org.bitcoin.NativeSecp256k1Util.AssertFailException;
|
||||
import static org.bitcoin.NativeSecp256k1Util.assertEquals;
|
||||
|
||||
/**
|
||||
* <p>This class holds native methods to handle ECDSA verification.</p>
|
||||
|
|
|
@ -19,8 +19,6 @@ package org.bitcoin;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.SecurityException;
|
||||
|
||||
/**
|
||||
* This class holds the context reference used in native methods to handle ECDSA operations.
|
||||
*/
|
||||
|
|
|
@ -17,20 +17,42 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.*;
|
||||
import org.bitcoinj.core.listeners.*;
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bitcoinj.core.listeners.NewBestBlockListener;
|
||||
import org.bitcoinj.core.listeners.ReorganizeListener;
|
||||
import org.bitcoinj.core.listeners.TransactionReceivedInBlockListener;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
import org.bitcoinj.store.*;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.H2FullPrunedBlockStore;
|
||||
import org.bitcoinj.store.SPVBlockStore;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.bitcoinj.utils.ListenerRegistration;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.utils.VersionTally;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.locks.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>An AbstractBlockChain holds a series of {@link Block} objects, links them together, and knows how to verify that
|
||||
|
|
|
@ -16,11 +16,10 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.Script.ScriptType;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,12 +17,11 @@
|
|||
package org.bitcoinj.core;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
/**
|
||||
* <p>Implementation of the Bech32 encoding.</p>
|
||||
*
|
||||
|
|
|
@ -29,7 +29,9 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.bitcoinj.core.Utils.*;
|
||||
import static org.bitcoinj.core.Utils.HEX;
|
||||
import static org.bitcoinj.core.Utils.readUint32;
|
||||
import static org.bitcoinj.core.Utils.uint32ToByteArrayBE;
|
||||
|
||||
/**
|
||||
* <p>Methods to serialize and de-serialize messages to the Bitcoin network format as defined in
|
||||
|
|
|
@ -17,21 +17,32 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.annotations.*;
|
||||
import com.google.common.base.*;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bitcoinj.params.AbstractBitcoinNetParams;
|
||||
import org.bitcoinj.script.*;
|
||||
import org.slf4j.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
import org.bitcoinj.script.ScriptOpCodes;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import java.math.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.EnumSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static org.bitcoinj.core.Coin.*;
|
||||
import static org.bitcoinj.core.Sha256Hash.*;
|
||||
import static org.bitcoinj.core.Coin.FIFTY_COINS;
|
||||
import static org.bitcoinj.core.Sha256Hash.hashTwice;
|
||||
|
||||
/**
|
||||
* <p>A block is a group of transactions, and is one of the fundamental data structures of the Bitcoin system.
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.MemoryBlockStore;
|
||||
|
@ -30,6 +28,8 @@ import java.io.File;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
// TODO: Rename this class to SPVBlockChain at some point.
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,12 +17,11 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptChunk;
|
||||
import org.bitcoinj.script.ScriptPattern;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
|
@ -31,7 +30,11 @@ import java.util.List;
|
|||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static java.lang.Math.*;
|
||||
import static java.lang.Math.E;
|
||||
import static java.lang.Math.log;
|
||||
import static java.lang.Math.max;
|
||||
import static java.lang.Math.min;
|
||||
import static java.lang.Math.pow;
|
||||
|
||||
/**
|
||||
* <p>A Bloom filter is a probabilistic data structure which can be sent to another client so that it can avoid
|
||||
|
|
|
@ -16,19 +16,18 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.FullPrunedBlockStore;
|
||||
import com.google.common.hash.HashCode;
|
||||
import com.google.common.hash.Hasher;
|
||||
import com.google.common.hash.Hashing;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.FullPrunedBlockStore;
|
||||
import org.bitcoinj.store.SPVBlockStore;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.DataInputStream;
|
||||
|
@ -45,7 +44,10 @@ import java.util.Arrays;
|
|||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkPositionIndex;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>Vends hard-coded {@link StoredBlock}s for blocks throughout the chain. Checkpoints serve two purposes:</p>
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.utils.MonetaryFormat;
|
||||
import com.google.common.math.LongMath;
|
||||
import org.bitcoinj.utils.MonetaryFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
|
|
@ -18,9 +18,10 @@ package org.bitcoinj.core;
|
|||
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.bitcoinj.wallet.SendRequest;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
// TODO: Finish adding Context c'tors to all the different objects so we can start deprecating the versions that take NetworkParameters.
|
||||
// TODO: Add a working directory notion to Context and make various subsystems that want to use files default to that directory (eg. Orchid, block stores, wallet, etc).
|
||||
|
|
|
@ -18,12 +18,10 @@
|
|||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import org.bitcoinj.params.Networks;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bitcoinj.params.Networks;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Parses and generates private keys in the form used by the Bitcoin "dumpprivkey" command. This is the private key
|
||||
|
|
|
@ -18,27 +18,43 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.crypto.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.primitives.UnsignedBytes;
|
||||
import org.bitcoin.NativeSecp256k1;
|
||||
import org.bitcoin.NativeSecp256k1Util;
|
||||
import org.bitcoin.Secp256k1Context;
|
||||
import org.bitcoinj.crypto.EncryptableItem;
|
||||
import org.bitcoinj.crypto.EncryptedData;
|
||||
import org.bitcoinj.crypto.KeyCrypter;
|
||||
import org.bitcoinj.crypto.KeyCrypterException;
|
||||
import org.bitcoinj.crypto.LazyECPoint;
|
||||
import org.bitcoinj.crypto.LinuxSecureRandom;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.wallet.Protos;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.bouncycastle.asn1.*;
|
||||
import org.bouncycastle.asn1.ASN1InputStream;
|
||||
import org.bouncycastle.asn1.ASN1Integer;
|
||||
import org.bouncycastle.asn1.ASN1OctetString;
|
||||
import org.bouncycastle.asn1.ASN1Primitive;
|
||||
import org.bouncycastle.asn1.ASN1TaggedObject;
|
||||
import org.bouncycastle.asn1.BERTags;
|
||||
import org.bouncycastle.asn1.DERBitString;
|
||||
import org.bouncycastle.asn1.DEROctetString;
|
||||
import org.bouncycastle.asn1.DERSequenceGenerator;
|
||||
import org.bouncycastle.asn1.DERTaggedObject;
|
||||
import org.bouncycastle.asn1.DLSequence;
|
||||
import org.bouncycastle.asn1.x9.X9ECParameters;
|
||||
import org.bouncycastle.asn1.x9.X9IntegerConverter;
|
||||
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
|
||||
import org.bouncycastle.crypto.digests.SHA256Digest;
|
||||
import org.bouncycastle.crypto.ec.CustomNamedCurves;
|
||||
import org.bouncycastle.crypto.generators.ECKeyPairGenerator;
|
||||
import org.bouncycastle.crypto.params.*;
|
||||
import org.bouncycastle.crypto.params.ECDomainParameters;
|
||||
import org.bouncycastle.crypto.params.ECKeyGenerationParameters;
|
||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
import org.bouncycastle.crypto.signers.ECDSASigner;
|
||||
import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
|
||||
import org.bouncycastle.math.ec.ECAlgorithms;
|
||||
|
@ -48,6 +64,8 @@ import org.bouncycastle.math.ec.FixedPointUtil;
|
|||
import org.bouncycastle.math.ec.custom.sec.SecP256K1Curve;
|
||||
import org.bouncycastle.util.Properties;
|
||||
import org.bouncycastle.util.encoders.Base64;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
@ -60,7 +78,9 @@ import java.util.Arrays;
|
|||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>Represents an elliptic curve public and (optionally) private key, usable for digital signatures but not encryption.
|
||||
|
|
|
@ -19,7 +19,12 @@ package org.bitcoinj.core;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.*;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>A FilteredBlock is used to relay a block with its transactions filtered using a {@link BloomFilter}. It consists
|
||||
|
|
|
@ -23,7 +23,7 @@ import org.bitcoinj.script.Script.VerifyFlag;
|
|||
import org.bitcoinj.script.ScriptPattern;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.FullPrunedBlockStore;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.WalletExtension;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -36,7 +36,12 @@ import java.util.LinkedList;
|
|||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.FutureTask;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
|
|
|
@ -18,16 +18,15 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.primitives.UnsignedBytes;
|
||||
import org.bitcoinj.params.Networks;
|
||||
import org.bitcoinj.script.Script.ScriptType;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>A Bitcoin address looks like 1MsScoe2fTJoq4ZPdQgqyhgWeoNamYPevy and is derived from an elliptic curve public key
|
||||
* plus a set of network parameters. Not to be confused with a {@link PeerAddress} or {@link AddressMessage}
|
||||
|
|
|
@ -17,14 +17,14 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
|
||||
/**
|
||||
* <p>Abstract superclass of classes with list based payload, ie InventoryMessage and GetDataMessage.</p>
|
||||
*
|
||||
|
|
|
@ -20,7 +20,10 @@ package org.bitcoinj.core;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
|
|
|
@ -17,20 +17,26 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.params.*;
|
||||
import org.bitcoinj.script.*;
|
||||
import org.bitcoinj.params.MainNetParams;
|
||||
import org.bitcoinj.params.RegTestParams;
|
||||
import org.bitcoinj.params.SigNetParams;
|
||||
import org.bitcoinj.params.TestNet3Params;
|
||||
import org.bitcoinj.params.UnitTestParams;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
|
||||
import org.bitcoinj.utils.MonetaryFormat;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.math.*;
|
||||
import java.util.*;
|
||||
|
||||
import static org.bitcoinj.core.Coin.*;
|
||||
import org.bitcoinj.utils.VersionTally;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.math.BigInteger;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.bitcoinj.core.Coin.COIN;
|
||||
|
||||
/**
|
||||
* <p>NetworkParameters contains the data needed for working with an instantiation of a Bitcoin chain.</p>
|
||||
*
|
||||
|
|
|
@ -25,7 +25,9 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.bitcoinj.core.Utils.*;
|
||||
import static org.bitcoinj.core.Utils.checkBitLE;
|
||||
import static org.bitcoinj.core.Utils.reverseBytes;
|
||||
import static org.bitcoinj.core.Utils.uint32ToByteStreamLE;
|
||||
|
||||
/**
|
||||
* <p>A data structure that contains proofs of block inclusion for one or more transactions, in an efficient manner.</p>
|
||||
|
|
|
@ -16,7 +16,18 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.core.listeners.*;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.base.Throwables;
|
||||
import net.jcip.annotations.GuardedBy;
|
||||
import org.bitcoinj.core.listeners.BlocksDownloadedEventListener;
|
||||
import org.bitcoinj.core.listeners.ChainDownloadStartedEventListener;
|
||||
import org.bitcoinj.core.listeners.GetDataEventListener;
|
||||
import org.bitcoinj.core.listeners.OnTransactionBroadcastListener;
|
||||
import org.bitcoinj.core.listeners.PeerConnectedEventListener;
|
||||
import org.bitcoinj.core.listeners.PeerDisconnectedEventListener;
|
||||
import org.bitcoinj.core.listeners.PreMessageReceivedEventListener;
|
||||
import org.bitcoinj.net.AbstractTimeoutHandler;
|
||||
import org.bitcoinj.net.NioClient;
|
||||
import org.bitcoinj.net.NioClientManager;
|
||||
|
@ -28,18 +39,23 @@ import org.bitcoinj.utils.ListenableCompletableFuture;
|
|||
import org.bitcoinj.utils.ListenerRegistration;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.base.Throwables;
|
||||
import net.jcip.annotations.GuardedBy;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
|
|
@ -17,37 +17,86 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.annotations.*;
|
||||
import com.google.common.base.*;
|
||||
import com.google.common.collect.*;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Ordering;
|
||||
import com.google.common.util.concurrent.Futures;
|
||||
import com.google.common.util.concurrent.ListenableScheduledFuture;
|
||||
import com.google.common.util.concurrent.ListeningScheduledExecutorService;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
import com.google.common.util.concurrent.Runnables;
|
||||
import com.google.common.util.concurrent.Uninterruptibles;
|
||||
import net.jcip.annotations.*;
|
||||
import org.bitcoinj.core.listeners.*;
|
||||
import org.bitcoinj.net.*;
|
||||
import org.bitcoinj.net.discovery.*;
|
||||
import org.bitcoinj.script.*;
|
||||
import org.bitcoinj.utils.*;
|
||||
import net.jcip.annotations.GuardedBy;
|
||||
import org.bitcoinj.core.listeners.BlockchainDownloadEventListener;
|
||||
import org.bitcoinj.core.listeners.BlocksDownloadedEventListener;
|
||||
import org.bitcoinj.core.listeners.ChainDownloadStartedEventListener;
|
||||
import org.bitcoinj.core.listeners.DownloadProgressTracker;
|
||||
import org.bitcoinj.core.listeners.GetDataEventListener;
|
||||
import org.bitcoinj.core.listeners.OnTransactionBroadcastListener;
|
||||
import org.bitcoinj.core.listeners.PeerConnectedEventListener;
|
||||
import org.bitcoinj.core.listeners.PeerDisconnectedEventListener;
|
||||
import org.bitcoinj.core.listeners.PeerDiscoveredEventListener;
|
||||
import org.bitcoinj.core.listeners.PreMessageReceivedEventListener;
|
||||
import org.bitcoinj.net.ClientConnectionManager;
|
||||
import org.bitcoinj.net.FilterMerger;
|
||||
import org.bitcoinj.net.NioClientManager;
|
||||
import org.bitcoinj.net.discovery.MultiplexingDiscovery;
|
||||
import org.bitcoinj.net.discovery.PeerDiscovery;
|
||||
import org.bitcoinj.net.discovery.PeerDiscoveryException;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptPattern;
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.bitcoinj.utils.ExponentialBackoff;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.bitcoinj.utils.ListenerRegistration;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.listeners.KeyChainEventListener;
|
||||
import org.bitcoinj.wallet.listeners.ScriptsChangeEventListener;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsReceivedEventListener;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsSentEventListener;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.locks.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.net.Inet6Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.NoRouteToHostException;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.PriorityQueue;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.RejectedExecutionException;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>Runs a set of connections to the P2P network, brings up connections to replace disconnected nodes and manages
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import org.bitcoinj.net.AbstractTimeoutHandler;
|
||||
import org.bitcoinj.net.MessageWriteTarget;
|
||||
import org.bitcoinj.net.NioClient;
|
||||
|
@ -23,7 +24,6 @@ import org.bitcoinj.net.NioClientManager;
|
|||
import org.bitcoinj.net.StreamConnection;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -37,7 +37,9 @@ import java.nio.ByteBuffer;
|
|||
import java.nio.channels.NotYetConnectedException;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* Handles high-level message (de)serialization for peers, acting as the bridge between the
|
||||
|
|
|
@ -16,17 +16,16 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Comparator;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.primitives.UnsignedBytes;
|
||||
import org.bitcoinj.params.Networks;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Comparator;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
/**
|
||||
* <p>Implementation of native segwit addresses. They are composed of two parts:</p>
|
||||
*
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.google.common.primitives.*;
|
||||
import com.google.common.primitives.Ints;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.math.IntMath;
|
||||
import org.bitcoinj.core.TransactionConfidence.ConfidenceType;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
@ -30,25 +33,33 @@ import org.bitcoinj.signers.TransactionSigner;
|
|||
import org.bitcoinj.utils.ExchangeRate;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.WalletTransaction.Pool;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.math.IntMath;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import static org.bitcoinj.core.NetworkParameters.ProtocolVersion.WITNESS_VERSION;
|
||||
import static org.bitcoinj.core.Utils.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import java.math.BigInteger;
|
||||
import static org.bitcoinj.core.NetworkParameters.ProtocolVersion.WITNESS_VERSION;
|
||||
import static org.bitcoinj.core.Utils.uint32ToByteStreamLE;
|
||||
import static org.bitcoinj.core.Utils.uint64ToByteStreamLE;
|
||||
|
||||
/**
|
||||
* <p>A transaction represents the movement of coins from some addresses to some other addresses. It can also represent
|
||||
|
|
|
@ -17,12 +17,11 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.WalletTransaction;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,19 +16,27 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.annotations.*;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.util.concurrent.Uninterruptibles;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.core.listeners.PreMessageReceivedEventListener;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import org.bitcoinj.core.listeners.PreMessageReceivedEventListener;
|
||||
|
||||
/**
|
||||
* Represents a single transaction broadcast that we are performing. A broadcast occurs after a new transaction is created
|
||||
|
|
|
@ -17,17 +17,24 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.collect.*;
|
||||
|
||||
import org.bitcoinj.utils.*;
|
||||
import com.google.common.collect.Iterators;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.bitcoinj.utils.ListenerRegistration;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.CoinSelector;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
// TODO: Modify the getDepthInBlocks method to require the chain height to be specified, in preparation for ceasing to touch every tx on every block.
|
||||
|
||||
|
|
|
@ -17,14 +17,20 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.script.*;
|
||||
import org.bitcoinj.wallet.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptError;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
import org.bitcoinj.script.ScriptPattern;
|
||||
import org.bitcoinj.wallet.KeyBag;
|
||||
import org.bitcoinj.wallet.RedeemData;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>This message is a reference or pointer to an output of a different transaction.</p>
|
||||
|
|
|
@ -17,17 +17,24 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.script.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
import org.bitcoinj.script.ScriptPattern;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>A TransactionOutput message contains a scriptPubKey that controls who is able to spend its value. It is a sub-part
|
||||
|
|
|
@ -14,19 +14,18 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bitcoinj.script.Script;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
public class TransactionWitness {
|
||||
public static final TransactionWitness EMPTY = new TransactionWitness(0);
|
||||
|
|
|
@ -16,12 +16,15 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.lang.ref.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.ReferenceQueue;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
|
|
@ -17,10 +17,13 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.bitcoinj.script.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import java.io.*;
|
||||
import java.math.*;
|
||||
import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
|
|
|
@ -17,6 +17,14 @@
|
|||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bouncycastle.crypto.digests.RIPEMD160Digest;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
@ -30,17 +38,7 @@ import java.util.Locale;
|
|||
import java.util.TimeZone;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bouncycastle.crypto.digests.RIPEMD160Digest;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
|
||||
|
||||
/**
|
||||
* A collection of various utility methods that are helpful for working with the Bitcoin protocol.
|
||||
|
|
|
@ -16,9 +16,12 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.FilteredBlock;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
|
||||
import javax.annotation.*;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* <p>Implementors can listen to events like blocks being downloaded/transactions being broadcast/connect/disconnects,
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
|
||||
/**
|
||||
* <p>Implementors can listen to events like blocks being downloaded/transactions being broadcast/connect/disconnects,
|
||||
|
|
|
@ -25,7 +25,7 @@ import org.bitcoinj.utils.ListenableCompletableFuture;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
|
|
@ -16,11 +16,14 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.GetDataMessage;
|
||||
import org.bitcoinj.core.Message;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>Implementors can listen to events like blocks being downloaded/transactions being broadcast/connect/disconnects,
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
||||
/**
|
||||
* Called when a new transaction is broadcast over the network.
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
|
||||
/**
|
||||
* <p>Implementors can listen to events like blocks being downloaded/transactions being broadcast/connect/disconnects,
|
||||
|
|
|
@ -16,7 +16,9 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Message;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
|
||||
package org.bitcoinj.core.listeners;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bitcoinj.core.BlockChain;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Listener interface for when the best chain has changed.
|
||||
*/
|
||||
|
|
|
@ -16,14 +16,19 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bouncycastle.crypto.generators.SCrypt;
|
||||
|
||||
import com.google.common.primitives.Bytes;
|
||||
import org.bitcoinj.core.AddressFormatException;
|
||||
import org.bitcoinj.core.Base58;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.PrefixedChecksummedBytes;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bouncycastle.crypto.generators.SCrypt;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.GeneralSecurityException;
|
||||
|
|
|
@ -17,10 +17,14 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Base58;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
import org.bouncycastle.math.ec.ECPoint;
|
||||
|
||||
|
@ -32,8 +36,10 @@ import java.util.Comparator;
|
|||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static org.bitcoinj.core.Utils.HEX;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
|
||||
/**
|
||||
* A deterministic key is a node in a {@link DeterministicHierarchy}. As per
|
||||
|
|
|
@ -16,17 +16,19 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bouncycastle.math.ec.*;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bouncycastle.math.ec.ECPoint;
|
||||
|
||||
import java.math.*;
|
||||
import java.nio.*;
|
||||
import java.security.*;
|
||||
import java.util.*;
|
||||
import java.math.BigInteger;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* Implementation of the <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki">BIP 32</a>
|
||||
|
|
|
@ -22,10 +22,8 @@ import org.bouncycastle.crypto.digests.SHA512Digest;
|
|||
import org.bouncycastle.crypto.macs.HMac;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Static utilities used in BIP 32 Hierarchical Deterministic Wallets (HDW).
|
||||
|
|
|
@ -23,16 +23,16 @@ import org.bitcoinj.core.Utils;
|
|||
import org.bitcoinj.wallet.Protos;
|
||||
import org.bitcoinj.wallet.Protos.ScryptParameters;
|
||||
import org.bitcoinj.wallet.Protos.Wallet.EncryptionType;
|
||||
import org.bouncycastle.crypto.engines.AESEngine;
|
||||
import org.bouncycastle.crypto.generators.SCrypt;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.bouncycastle.crypto.BufferedBlockCipher;
|
||||
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||||
import org.bouncycastle.crypto.engines.AESEngine;
|
||||
import org.bouncycastle.crypto.generators.SCrypt;
|
||||
import org.bouncycastle.crypto.modes.CBCBlockCipher;
|
||||
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
import org.bouncycastle.crypto.params.ParametersWithIV;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
|
|
|
@ -16,10 +16,17 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.security.*;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.security.Provider;
|
||||
import java.security.SecureRandomSpi;
|
||||
import java.security.Security;
|
||||
|
||||
/**
|
||||
* A SecureRandom implementation that is able to override the standard JVM provided implementation, and which simply
|
||||
|
|
|
@ -17,14 +17,13 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -25,7 +25,6 @@ package org.bitcoinj.crypto;
|
|||
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
|
|
|
@ -16,12 +16,13 @@
|
|||
|
||||
package org.bitcoinj.crypto;
|
||||
|
||||
import org.bitcoinj.core.SignatureDecodeException;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
import org.bitcoinj.core.Transaction.SigHash;
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.SignatureDecodeException;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.Transaction.SigHash;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
|
|
|
@ -16,13 +16,17 @@
|
|||
|
||||
package org.bitcoinj.jni;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
|
||||
import java.util.List;
|
||||
import org.bitcoinj.core.BlockChain;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
import org.bitcoinj.core.listeners.NewBestBlockListener;
|
||||
import org.bitcoinj.core.listeners.ReorganizeListener;
|
||||
import org.bitcoinj.core.listeners.TransactionReceivedInBlockListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* An event listener that relays events to a native C++ object. A pointer to that object is stored in
|
||||
* this class using JNI on the native side, thus several instances of this can point to different actual
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
package org.bitcoinj.jni;
|
||||
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.listeners.TransactionConfidenceEventListener;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
||||
/**
|
||||
* An event listener that relays events to a native C++ object. A pointer to that object is stored in
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
package org.bitcoinj.jni;
|
||||
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsReceivedEventListener;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsReceivedEventListener;
|
||||
|
||||
/**
|
||||
* An event listener that relays events to a native C++ object. A pointer to that object is stored in
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
package org.bitcoinj.jni;
|
||||
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsSentEventListener;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.listeners.WalletCoinsSentEventListener;
|
||||
|
||||
/**
|
||||
* An event listener that relays events to a native C++ object. A pointer to that object is stored in
|
||||
|
|
|
@ -19,23 +19,45 @@ package org.bitcoinj.kits;
|
|||
|
||||
import com.google.common.io.Closeables;
|
||||
import com.google.common.util.concurrent.AbstractIdleService;
|
||||
import org.bitcoinj.core.listeners.*;
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.BlockChain;
|
||||
import org.bitcoinj.core.CheckpointManager;
|
||||
import org.bitcoinj.core.Context;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.PeerAddress;
|
||||
import org.bitcoinj.core.PeerGroup;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.core.listeners.DownloadProgressTracker;
|
||||
import org.bitcoinj.crypto.DeterministicKey;
|
||||
import org.bitcoinj.net.discovery.*;
|
||||
import org.bitcoinj.net.discovery.DnsDiscovery;
|
||||
import org.bitcoinj.net.discovery.PeerDiscovery;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.store.*;
|
||||
import org.bitcoinj.wallet.*;
|
||||
import org.slf4j.*;
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.store.SPVBlockStore;
|
||||
import org.bitcoinj.wallet.DeterministicSeed;
|
||||
import org.bitcoinj.wallet.KeyChainGroup;
|
||||
import org.bitcoinj.wallet.KeyChainGroupStructure;
|
||||
import org.bitcoinj.wallet.Wallet;
|
||||
import org.bitcoinj.wallet.WalletExtension;
|
||||
import org.bitcoinj.wallet.WalletProtobufSerializer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.channels.FileLock;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>Utility class that wraps the boilerplate needed to set up a new SPV bitcoinj app. Instantiate it with a directory
|
||||
|
|
|
@ -16,19 +16,24 @@
|
|||
|
||||
package org.bitcoinj.net;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Context;
|
||||
import org.bitcoinj.core.Peer;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import javax.net.*;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.net.SocketFactory;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketAddress;
|
||||
import java.nio.Buffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* <p>Creates a simple connection to a server using a {@link StreamConnection} to process data.</p>
|
||||
|
|
|
@ -17,13 +17,14 @@
|
|||
|
||||
package org.bitcoinj.net;
|
||||
|
||||
import com.google.common.base.*;
|
||||
import com.google.common.base.Throwables;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.slf4j.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.*;
|
||||
import java.io.IOException;
|
||||
import java.net.SocketAddress;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* Creates a simple connection to a server using a {@link StreamConnection} to process data.
|
||||
|
|
|
@ -18,16 +18,26 @@ package org.bitcoinj.net;
|
|||
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.util.concurrent.AbstractExecutionThreadService;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.bitcoinj.utils.ListenableCompletableFuture;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ConnectException;
|
||||
import java.net.SocketAddress;
|
||||
import java.nio.channels.*;
|
||||
import java.nio.channels.ClosedChannelException;
|
||||
import java.nio.channels.SelectionKey;
|
||||
import java.nio.channels.Selector;
|
||||
import java.nio.channels.SocketChannel;
|
||||
import java.nio.channels.spi.SelectorProvider;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
/**
|
||||
* A class which manages a set of client connections. Uses Java NIO to select network events and processes them in a
|
||||
|
|
|
@ -16,17 +16,20 @@
|
|||
|
||||
package org.bitcoinj.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.channels.*;
|
||||
import java.nio.channels.spi.SelectorProvider;
|
||||
import java.util.Iterator;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.util.concurrent.AbstractExecutionThreadService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.channels.SelectionKey;
|
||||
import java.nio.channels.Selector;
|
||||
import java.nio.channels.ServerSocketChannel;
|
||||
import java.nio.channels.SocketChannel;
|
||||
import java.nio.channels.spi.SelectorProvider;
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* Creates a simple server listener which listens for incoming client connections and uses a {@link StreamConnection} to
|
||||
* process data.
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
package org.bitcoinj.net;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import javax.annotation.Nullable;
|
||||
import java.net.InetAddress;
|
||||
|
||||
/**
|
||||
* A factory which generates new {@link StreamConnection}s when a new connection is opened.
|
||||
|
|
|
@ -17,14 +17,22 @@
|
|||
|
||||
package org.bitcoinj.net.discovery;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.core.VersionMessage;
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.bitcoinj.utils.DaemonThreadFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* <p>Supports peer discovery through DNS.</p>
|
||||
|
|
|
@ -20,7 +20,7 @@ package org.bitcoinj.net.discovery;
|
|||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.VersionMessage;
|
||||
import org.bitcoinj.net.discovery.DnsDiscovery.DnsSeedDiscovery;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.bitcoinj.utils.ContextPropagatingThreadFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -29,7 +29,12 @@ import java.util.ArrayList;
|
|||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
|
||||
package org.bitcoinj.net.discovery;
|
||||
|
||||
import org.bitcoinj.core.VersionMessage;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.bitcoinj.core.VersionMessage;
|
||||
|
||||
/**
|
||||
* A PeerDiscovery object is responsible for finding addresses of other nodes in the Bitcoin P2P network. Note that
|
||||
* the addresses returned may or may not be accepting connections.
|
||||
|
|
|
@ -17,11 +17,8 @@
|
|||
|
||||
package org.bitcoinj.params;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import org.bitcoinj.core.BitcoinSerializer;
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
|
@ -30,16 +27,17 @@ import org.bitcoinj.core.StoredBlock;
|
|||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.utils.MonetaryFormat;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
import org.bitcoinj.utils.MonetaryFormat;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import java.math.BigInteger;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.bitcoinj.core.BitcoinSerializer;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* Parameters for Bitcoin-like networks.
|
||||
|
|
|
@ -17,14 +17,10 @@
|
|||
|
||||
package org.bitcoinj.params;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Utils;
|
||||
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,12 +17,7 @@
|
|||
|
||||
package org.bitcoinj.params;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.net.URI;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
|
@ -31,6 +26,9 @@ import org.bitcoinj.core.VerificationException;
|
|||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Date;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,20 +17,41 @@
|
|||
|
||||
package org.bitcoinj.protocols.payments;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.crypto.X509Utils;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import org.bitcoin.protocols.payments.Protos;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.crypto.X509Utils;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.Serializable;
|
||||
import java.security.*;
|
||||
import java.security.cert.*;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
import java.security.Signature;
|
||||
import java.security.SignatureException;
|
||||
import java.security.cert.CertPath;
|
||||
import java.security.cert.CertPathValidator;
|
||||
import java.security.cert.CertPathValidatorException;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.CertificateParsingException;
|
||||
import java.security.cert.PKIXCertPathValidatorResult;
|
||||
import java.security.cert.PKIXParameters;
|
||||
import java.security.cert.TrustAnchor;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
@ -16,7 +16,16 @@
|
|||
|
||||
package org.bitcoinj.protocols.payments;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import org.bitcoin.protocols.payments.Protos;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.crypto.TrustStoreLoader;
|
||||
import org.bitcoinj.params.MainNetParams;
|
||||
import org.bitcoinj.protocols.payments.PaymentProtocol.PkiVerificationData;
|
||||
|
@ -26,16 +35,14 @@ import org.bitcoinj.utils.ListenableCompletableFuture;
|
|||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.SendRequest;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
|
||||
import org.bitcoin.protocols.payments.Protos;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.security.KeyStoreException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
|
|
@ -19,12 +19,28 @@
|
|||
|
||||
package org.bitcoinj.script;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.ProtocolException;
|
||||
import org.bitcoinj.core.SegwitAddress;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.SignatureDecodeException;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionInput;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.core.TransactionWitness;
|
||||
import org.bitcoinj.core.UnsafeByteArrayOutputStream;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.core.VarInt;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
import org.bitcoinj.core.internal.InternalUtils;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bouncycastle.crypto.digests.RIPEMD160Digest;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.bouncycastle.crypto.digests.RIPEMD160Digest;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
@ -34,10 +50,124 @@ import java.io.OutputStream;
|
|||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.bitcoinj.script.ScriptOpCodes.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_0;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_0NOTEQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_10;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_11;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_12;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_13;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_14;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_15;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_16;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1ADD;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1NEGATE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1SUB;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2DIV;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2DROP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2DUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2MUL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2OVER;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2ROT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_2SWAP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_3;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_3DUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_4;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_5;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_6;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_7;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_8;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_9;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ABS;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ADD;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_AND;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_BOOLAND;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_BOOLOR;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CAT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKLOCKTIMEVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKMULTISIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKMULTISIGVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKSEQUENCEVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKSIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKSIGVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CODESEPARATOR;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DEPTH;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DIV;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DROP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ELSE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ENDIF;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUALVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_FROMALTSTACK;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_GREATERTHAN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_GREATERTHANOREQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_HASH160;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_HASH256;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_IF;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_IFDUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_INVALIDOPCODE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_INVERT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_LEFT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_LESSTHAN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_LESSTHANOREQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_LSHIFT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_MAX;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_MIN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_MOD;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_MUL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NEGATE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NIP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP10;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP4;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP5;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP6;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP7;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP8;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOP9;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NOTIF;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NUMEQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NUMEQUALVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_NUMNOTEQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_OR;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_OVER;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PICK;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA2;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA4;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_RETURN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_RIGHT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_RIPEMD160;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ROLL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_ROT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_RSHIFT;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SHA1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SHA256;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SIZE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SUB;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SUBSTR;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_SWAP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_TOALTSTACK;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_TUCK;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_VERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_WITHIN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_XOR;
|
||||
|
||||
// TODO: Redesign this entire API to be more type safe and organised.
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
package org.bitcoinj.script;
|
||||
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.SegwitAddress;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
@ -38,7 +38,18 @@ import java.util.Stack;
|
|||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.*;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_0;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1NEGATE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKMULTISIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKSIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUALVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_HASH160;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA2;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA4;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_RETURN;
|
||||
|
||||
/**
|
||||
* <p>Tools for the construction of commonly used script types. You don't normally need this as it's hidden behind
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.bitcoinj.script;
|
|||
import org.bitcoinj.core.Utils;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
@ -28,7 +27,15 @@ import java.util.Arrays;
|
|||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.*;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_0;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_16;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1NEGATE;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA2;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_PUSHDATA4;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.getOpCodeName;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.getPushDataName;
|
||||
|
||||
/**
|
||||
* A script element that is either a data push (signature, pubkey, etc) or a non-push (logic, numeric, etc) operation.
|
||||
|
|
|
@ -22,12 +22,20 @@ import org.bitcoinj.core.SegwitAddress;
|
|||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Utils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.bitcoinj.script.Script.decodeFromOpN;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.*;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_0;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_1;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_16;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKMULTISIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKMULTISIGVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_CHECKSIG;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_DUP;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUAL;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_EQUALVERIFY;
|
||||
import static org.bitcoinj.script.ScriptOpCodes.OP_HASH160;
|
||||
|
||||
/**
|
||||
* This is a Script pattern matcher with some typical script patterns
|
||||
|
|
|
@ -17,7 +17,11 @@
|
|||
|
||||
package org.bitcoinj.signers;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionInput;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.crypto.ChildNumber;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
|
|
@ -17,11 +17,8 @@
|
|||
|
||||
package org.bitcoinj.signers;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionInput;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
|
@ -29,15 +26,17 @@ import org.bitcoinj.core.TransactionWitness;
|
|||
import org.bitcoinj.crypto.DeterministicKey;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.Script.VerifyFlag;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
import org.bitcoinj.script.ScriptPattern;
|
||||
import org.bitcoinj.script.Script.VerifyFlag;
|
||||
import org.bitcoinj.wallet.KeyBag;
|
||||
import org.bitcoinj.wallet.RedeemData;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
/**
|
||||
* <p>{@link TransactionSigner} implementation for signing inputs using keys from provided {@link KeyBag}.</p>
|
||||
* <p>This signer doesn't create input scripts for tx inputs. Instead it expects inputs to contain scripts with
|
||||
|
|
|
@ -18,7 +18,22 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.ProtocolException;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.StoredUndoableBlock;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionOutputChanges;
|
||||
import org.bitcoinj.core.UTXO;
|
||||
import org.bitcoinj.core.UTXOProviderException;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.Script.ScriptType;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -29,8 +44,18 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.sql.Types;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* <p>A generic full pruned block store for a relational database. This generic class requires
|
||||
|
|
|
@ -16,7 +16,11 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.StoredUndoableBlock;
|
||||
import org.bitcoinj.core.UTXO;
|
||||
import org.bitcoinj.core.UTXOProvider;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,9 +18,10 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
|
||||
import java.sql.*;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
@ -16,7 +16,11 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
|
|
@ -16,11 +16,29 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.LegacyAddress;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.StoredUndoableBlock;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionOutPoint;
|
||||
import org.bitcoinj.core.UTXO;
|
||||
import org.bitcoinj.core.UTXOProviderException;
|
||||
import org.bitcoinj.core.VerificationException;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Used as a key for memory map (to avoid having to think about NetworkParameters,
|
||||
|
|
|
@ -18,7 +18,12 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.StoredUndoableBlock;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
|
@ -16,19 +16,33 @@
|
|||
|
||||
package org.bitcoinj.store;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.bitcoinj.utils.*;
|
||||
import org.slf4j.*;
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.ProtocolException;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.*;
|
||||
import java.io.*;
|
||||
import java.nio.*;
|
||||
import java.nio.channels.*;
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.nio.Buffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.MappedByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.channels.FileLock;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
// TODO: Lose the mmap in this class. There are too many platform bugs that require odd workarounds.
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ import org.bitcoinj.core.NetworkParameters;
|
|||
import org.bitcoinj.params.AbstractBitcoinNetParams;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
import org.bitcoinj.core.Block;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.ProtocolException;
|
||||
|
@ -33,6 +31,8 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
/**
|
||||
* <p>This class reads block files stored in the Bitcoin Core format. This is simply a way to concatenate
|
||||
* blocks together. Importing block data with this tool can be a lot faster than syncing over the network, if you
|
||||
|
|
|
@ -21,7 +21,11 @@ import java.io.StringWriter;
|
|||
import java.io.Writer;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Date;
|
||||
import java.util.logging.*;
|
||||
import java.util.logging.Formatter;
|
||||
import java.util.logging.Handler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogRecord;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* A Java logging formatter that writes more compact output than the default.
|
||||
|
|
|
@ -16,21 +16,19 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static org.bitcoinj.core.Coin.SMALLEST_UNIT_EXPONENT;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import static java.math.BigDecimal.ONE;
|
||||
import static java.math.BigDecimal.ZERO;
|
||||
import java.math.BigDecimal;
|
||||
import static java.math.RoundingMode.HALF_UP;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.text.NumberFormat;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
|
||||
import static java.math.BigDecimal.ONE;
|
||||
import static java.math.BigDecimal.ZERO;
|
||||
import static java.math.RoundingMode.HALF_UP;
|
||||
import static org.bitcoinj.core.Coin.SMALLEST_UNIT_EXPONENT;
|
||||
|
||||
/**
|
||||
* <p>This class, a concrete extension of {@link BtcFormat}, is distinguished by its
|
||||
* accommodation of multiple denominational units as follows:
|
||||
|
|
|
@ -16,17 +16,18 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static org.bitcoinj.core.Coin.SMALLEST_UNIT_EXPONENT;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import java.util.Objects;
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.Format;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.Locale;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static org.bitcoinj.core.Coin.SMALLEST_UNIT_EXPONENT;
|
||||
|
||||
/**
|
||||
* <p>This class, a concrete extension of {@link BtcFormat}, is distinguished in that each
|
||||
|
|
|
@ -16,23 +16,12 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import org.bitcoinj.utils.BtcAutoFormat.Style;
|
||||
import static org.bitcoinj.utils.BtcAutoFormat.Style.*;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import com.google.common.base.Strings;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.utils.BtcAutoFormat.Style;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
|
||||
import static java.math.RoundingMode.HALF_UP;
|
||||
|
||||
import java.text.AttributedCharacterIterator;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
|
@ -41,13 +30,21 @@ import java.text.Format;
|
|||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.ParsePosition;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static java.math.RoundingMode.HALF_UP;
|
||||
import static org.bitcoinj.utils.BtcAutoFormat.Style.CODE;
|
||||
import static org.bitcoinj.utils.BtcAutoFormat.Style.SYMBOL;
|
||||
|
||||
/**
|
||||
* <p>Instances of this class format and parse locale-specific numerical
|
||||
* representations of Bitcoin monetary values.</p>
|
||||
|
|
|
@ -16,10 +16,11 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import org.slf4j.*;
|
||||
import org.bitcoinj.core.Context;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
||||
/**
|
||||
* A {@link ThreadFactory} that propagates a {@link Context} from the creating
|
||||
|
|
|
@ -16,15 +16,14 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigInteger;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
/**
|
||||
* An exchange rate is expressed as a ratio of a {@link Coin} and a {@link Fiat} amount.
|
||||
*/
|
||||
|
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import com.google.common.math.LongMath;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Monetary;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Monetary;
|
||||
import java.util.Objects;
|
||||
import com.google.common.math.LongMath;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
/**
|
||||
* Represents a monetary fiat value. It was decided to not fold this into {@link Coin} because of type
|
||||
|
|
|
@ -16,11 +16,8 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.math.LongMath.checkedMultiply;
|
||||
import static com.google.common.math.LongMath.checkedPow;
|
||||
import static com.google.common.math.LongMath.divide;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Monetary;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
|
@ -30,8 +27,11 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Monetary;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.math.LongMath.checkedMultiply;
|
||||
import static com.google.common.math.LongMath.checkedPow;
|
||||
import static com.google.common.math.LongMath.divide;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
|
@ -16,12 +16,13 @@
|
|||
|
||||
package org.bitcoinj.utils;
|
||||
|
||||
import java.util.Stack;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.store.BlockStore;
|
||||
import org.bitcoinj.store.BlockStoreException;
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
/**
|
||||
* Caching counter for the block versions within a moving window. This class
|
||||
* is NOT thread safe (as if two threads are trying to use it concurrently,
|
||||
|
|
|
@ -17,24 +17,36 @@
|
|||
|
||||
package org.bitcoinj.wallet;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import org.bitcoinj.core.BloomFilter;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.crypto.*;
|
||||
import org.bitcoinj.crypto.EncryptableItem;
|
||||
import org.bitcoinj.crypto.EncryptedData;
|
||||
import org.bitcoinj.crypto.KeyCrypter;
|
||||
import org.bitcoinj.crypto.KeyCrypterException;
|
||||
import org.bitcoinj.crypto.KeyCrypterScrypt;
|
||||
import org.bitcoinj.utils.ListenerRegistration;
|
||||
import org.bitcoinj.utils.Threading;
|
||||
import org.bitcoinj.wallet.listeners.KeyChainEventListener;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
/**
|
||||
* A {@link KeyChain} that implements the simplest model possible: it can have keys imported into it, and just acts as
|
||||
|
|
|
@ -21,7 +21,6 @@ import org.bitcoinj.script.Script;
|
|||
import org.bouncycastle.crypto.params.KeyParameter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -16,15 +16,17 @@
|
|||
|
||||
package org.bitcoinj.wallet;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionConfidence;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class implements a {@link CoinSelector} which attempts to get the highest priority
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
|
||||
package org.bitcoinj.wallet;
|
||||
|
||||
import org.bitcoinj.crypto.*;
|
||||
import org.bitcoinj.crypto.ChildNumber;
|
||||
import org.bitcoinj.crypto.DeterministicKey;
|
||||
import org.bitcoinj.crypto.KeyCrypter;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
||||
import java.util.List;
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
package org.bitcoinj.wallet;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.ECKey;
|
||||
import org.bitcoinj.core.ECKey.ECDSASignature;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
|
@ -32,7 +31,6 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue