Wallet.smali
.class public Lorg/bitcoinj/wallet/Wallet;
.super Lorg/bitcoinj/utils/BaseTaggableObject;
.source "Wallet.java"
# interfaces
.implements Lorg/bitcoinj/core/PeerFilterProvider;
.implements Lorg/bitcoinj/core/TransactionBag;
.implements Lorg/bitcoinj/core/listeners/NewBestBlockListener;
.implements Lorg/bitcoinj/core/listeners/ReorganizeListener;
.implements Lorg/bitcoinj/core/listeners/TransactionReceivedInBlockListener;
.implements Lorg/bitcoinj/wallet/KeyBag;
# static fields
.field private static final MINIMUM_BLOOM_DATA_LENGTH:I = 0x8
.field private static final log:Lorg/slf4j/Logger;
# instance fields
.field private acceptRiskyTransactions:Z
.field private balanceFutureRequests:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;",
">;"
}
.end annotation
.end field
.field private final bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;
.field private final bloomOutPoints:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Lorg/bitcoinj/core/TransactionOutPoint;",
">;"
}
.end annotation
.end field
.field private final changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;",
">;>;"
}
.end annotation
.end field
.field protected coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.field private final coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;",
">;>;"
}
.end annotation
.end field
.field private final coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;",
">;>;"
}
.end annotation
.end field
.field private confidenceChanged:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Transaction;",
"Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;",
">;"
}
.end annotation
.end field
.field protected final context:Lorg/bitcoinj/core/Context;
.field private final dead:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field private description:Ljava/lang/String;
.field private final extensions:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap",
"<",
"Ljava/lang/String;",
"Lorg/bitcoinj/wallet/WalletExtension;",
">;"
}
.end annotation
.end field
.field private hardSaveOnNextBlock:Z
.field private ignoreNextNewBlock:Ljava/util/HashSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashSet",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
">;"
}
.end annotation
.end field
.field private insideReorg:Z
.field private keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
.field protected final keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
.field private lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
.field private lastBlockSeenHeight:I
.field private lastBlockSeenTimeSecs:J
.field protected final lock:Ljava/util/concurrent/locks/ReentrantLock;
.field protected final myUnspents:Ljava/util/HashSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashSet",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.end field
.field private onWalletChangedSuppressions:I
.field protected final params:Lorg/bitcoinj/core/NetworkParameters;
.field private final pending:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field private final reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;",
">;>;"
}
.end annotation
.end field
.field private riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
.field private final riskDropped:Ljava/util/LinkedHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/LinkedHashMap",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field private final scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;",
">;>;"
}
.end annotation
.end field
.field private signers:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lorg/bitcoinj/signers/TransactionSigner;",
">;"
}
.end annotation
.end field
.field private final spent:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field private final transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/CopyOnWriteArrayList",
"<",
"Lorg/bitcoinj/utils/ListenerRegistration",
"<",
"Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;",
">;>;"
}
.end annotation
.end field
.field protected final transactions:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field private txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;
.field private final unspent:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field protected volatile vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
.field private volatile vKeyRotationTimestamp:J
.field protected volatile vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
.field private volatile vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
.field private version:I
.field private watchedScripts:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 127
const-class v0, Lorg/bitcoinj/wallet/Wallet;
invoke-static {v0}, Lorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger;
move-result-object v0
sput-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
return-void
.end method
.method public constructor <init>(Lorg/bitcoinj/core/Context;)V
.registers 4
.prologue
.line 267
new-instance v0, Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {p1}, Lorg/bitcoinj/core/Context;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v1
invoke-direct {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V
.line 268
return-void
.end method
.method private constructor <init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V
.registers 5
.prologue
const/4 v1, 0x0
.line 310
invoke-direct {p0}, Lorg/bitcoinj/utils/BaseTaggableObject;-><init>()V
.line 132
const-string v0, "wallet"
invoke-static {v0}, Lorg/bitcoinj/utils/Threading;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
.line 133
const-string v0, "wallet-keychaingroup"
invoke-static {v0}, Lorg/bitcoinj/utils/Threading;->lock(Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
.line 6164
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 164
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
.line 173
new-instance v0, Lorg/bitcoinj/wallet/Wallet$1;
invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/Wallet$1;-><init>(Lorg/bitcoinj/wallet/Wallet;)V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;
.line 194
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 196
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 198
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 200
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 202
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 204
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
.line 219
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->FACTORY:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
.line 234
new-instance v0, Lorg/bitcoinj/wallet/DefaultCoinSelector;
invoke-direct {v0}, Lorg/bitcoinj/wallet/DefaultCoinSelector;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.line 1894
iput-boolean v1, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z
.line 6232
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 3540
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;
.line 7088
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 4553
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
.line 4555
new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;
.line 311
iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;
.line 312
invoke-virtual {p1}, Lorg/bitcoinj/core/Context;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
.line 313
invoke-static {p2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/KeyChainGroup;
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
.line 314
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0}, Lorg/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;
move-result-object v0
const-string v1, "org.bitcoinj.unittest"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_92
.line 315
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
const/4 v1, 0x5
invoke-virtual {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadSize(I)V
.line 319
:cond_92
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->numKeys()I
move-result v0
if-nez v0, :cond_9f
.line 320
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V
.line 7164
:cond_9f
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 321
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
.line 322
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
.line 323
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
.line 324
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
.line 325
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
.line 326
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
.line 327
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
.line 329
new-instance v0, Ljava/util/LinkedHashMap;
invoke-direct {v0}, Ljava/util/LinkedHashMap;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
.line 330
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;
.line 331
new-instance v0, Lorg/bitcoinj/signers/LocalTransactionSigner;
invoke-direct {v0}, Lorg/bitcoinj/signers/LocalTransactionSigner;-><init>()V
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->addTransactionSigner(Lorg/bitcoinj/signers/TransactionSigner;)V
.line 332
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->createTransientState()V
.line 333
return-void
.end method
.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;)V
.registers 3
.prologue
.line 258
invoke-static {p1}, Lorg/bitcoinj/core/Context;->getOrCreate(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Context;
move-result-object v0
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;)V
.line 259
return-void
.end method
.method public constructor <init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V
.registers 4
.prologue
.line 307
invoke-static {p1}, Lorg/bitcoinj/core/Context;->getOrCreate(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Context;
move-result-object v0
invoke-direct {p0, v0, p2}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/Context;Lorg/bitcoinj/wallet/KeyChainGroup;)V
.line 308
return-void
.end method
.method static synthetic access$000(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Coin;)V
.registers 2
.prologue
.line 125
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
return-void
.end method
.method static synthetic access$100(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;)V
.registers 2
.prologue
.line 125
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V
return-void
.end method
.method static synthetic access$400()Lorg/slf4j/Logger;
.registers 1
.prologue
.line 125
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
return-object v0
.end method
.method private addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.registers 7
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 2869
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v2
invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V
.line 2870
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2871
sget-object v2, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I
move-result v3
aget v2, v2, v3
packed-switch v2, :pswitch_data_b6
.line 2885
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Unknown wallet transaction type "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 2873
:pswitch_34
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_71
:goto_40
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2887
:goto_43
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
if-eq p1, v0, :cond_4b
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
if-ne p1, v0, :cond_a9
.line 2888
:cond_4b
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_53
:goto_53
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_a9
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 2889
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
move-result v2
if-eqz v2, :cond_53
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v2
if-eqz v2, :cond_53
.line 2890
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v2, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
goto :goto_53
:cond_71
move v0, v1
.line 2873
goto :goto_40
.line 2876
:pswitch_73
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_83
:goto_7f
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
goto :goto_43
:cond_83
move v0, v1
goto :goto_7f
.line 2879
:pswitch_85
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_95
:goto_91
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
goto :goto_43
:cond_95
move v0, v1
goto :goto_91
.line 2882
:pswitch_97
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_a7
:goto_a3
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
goto :goto_43
:cond_a7
move v0, v1
goto :goto_a3
.line 2895
:cond_a9
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
sget-object v1, Lorg/bitcoinj/utils/Threading;->SAME_THREAD:Ljava/util/concurrent/Executor;
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;
invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionConfidence;->addEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/TransactionConfidence$Listener;)V
.line 2896
return-void
.line 2871
nop
:pswitch_data_b6
.packed-switch 0x1
:pswitch_34
:pswitch_73
:pswitch_85
:pswitch_97
.end packed-switch
.end method
.method private static addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/wallet/WalletTransaction;",
">;",
"Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
"Ljava/util/Collection",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 2846
invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_19
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2847
new-instance v2, Lorg/bitcoinj/wallet/WalletTransaction;
invoke-direct {v2, p1, v0}, Lorg/bitcoinj/wallet/WalletTransaction;-><init>(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
invoke-interface {p0, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_4
.line 2849
:cond_19
return-void
.end method
.method private adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z
.registers 9
.prologue
.line 4087
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v0
array-length v0, v0
invoke-direct {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I
move-result v1
add-int/2addr v0, v1
.line 4088
int-to-long v0, v0
invoke-virtual {p3, v0, v1}, Lorg/bitcoinj/core/Coin;->multiply(J)Lorg/bitcoinj/core/Coin;
move-result-object v0
const-wide/16 v2, 0x3e8
invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/Coin;->divide(J)Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 4089
if-eqz p4, :cond_21
sget-object v1, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v1
if-gez v1, :cond_21
.line 4090
sget-object v0, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
.line 4091
:cond_21
const-wide/16 v2, 0x0
invoke-virtual {p1, v2, v3}, Lorg/bitcoinj/core/Transaction;->getOutput(J)Lorg/bitcoinj/core/TransactionOutput;
move-result-object v1
.line 4092
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/TransactionOutput;->setValue(Lorg/bitcoinj/core/Coin;)V
.line 4093
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z
move-result v0
if-nez v0, :cond_3a
const/4 v0, 0x1
:goto_39
return v0
:cond_3a
const/4 v0, 0x0
goto :goto_39
.end method
.method private calcBloomOutPointsLocked()V
.registers 5
.prologue
.line 4569
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V
.line 4570
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 4571
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 4572
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 4573
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 4574
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_29
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_60
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 4575
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_3d
:goto_3d
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_29
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 4577
:try_start_49
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->isTxOutputBloomFilterable(Lorg/bitcoinj/core/TransactionOutput;)Z
move-result v3
if-eqz v3, :cond_3d
.line 4578
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getOutPointFor()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:try_end_58
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_49 .. :try_end_58} :catch_59
goto :goto_3d
.line 4579
:catch_59
move-exception v0
.line 4581
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 4585
:cond_60
return-void
.end method
.method private checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
.registers 7
.prologue
.line 3583
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 3584
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->listIterator()Ljava/util/ListIterator;
move-result-object v1
.line 3585
:cond_f
:goto_f
invoke-interface {v1}, Ljava/util/ListIterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_37
.line 3586
invoke-interface {v1}, Ljava/util/ListIterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;
.line 3587
iget-object v2, v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->type:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v2
.line 3588
iget-object v3, v0, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->value:Lorg/bitcoinj/core/Coin;
invoke-virtual {v2, v3}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v3
if-ltz v3, :cond_f
.line 3590
invoke-interface {v1}, Ljava/util/ListIterator;->remove()V
.line 3593
sget-object v3, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
new-instance v4, Lorg/bitcoinj/wallet/Wallet$9;
invoke-direct {v4, p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet$9;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;Lorg/bitcoinj/core/Coin;)V
invoke-interface {v3, v4}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_f
.line 3599
:cond_37
return-void
.end method
.method private checkNoDeterministicKeys(Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;)V"
}
.end annotation
.prologue
.line 711
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1c
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
.line 712
instance-of v0, v0, Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_4
.line 713
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Cannot import HD keys back into the wallet"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 714
:cond_1c
return-void
.end method
.method private clearTransactions()V
.registers 2
.prologue
.line 3010
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
.line 3011
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
.line 3012
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
.line 3013
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
.line 3014
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
.line 3015
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0}, Ljava/util/HashSet;->clear()V
.line 3016
return-void
.end method
.method private createTransientState()V
.registers 2
.prologue
.line 336
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;
.line 337
new-instance v0, Lorg/bitcoinj/wallet/Wallet$2;
invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/Wallet$2;-><init>(Lorg/bitcoinj/wallet/Wallet;)V
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->txConfidenceListener:Lorg/bitcoinj/core/TransactionConfidence$Listener;
.line 359
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
.line 360
return-void
.end method
.method private estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I
.registers 8
.prologue
const/4 v2, 0x0
.line 5000
const/4 v0, 0x0
.line 5001
iget-object v1, p1, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v4
move v1, v0
:goto_9
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_53
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 5003
:try_start_15
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v5
.line 5006
invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_35
.line 5007
invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
.line 5008
const-string v3, "Coin selection includes unspendable outputs"
invoke-static {v0, v3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-object v3, v0
move-object v0, v2
.line 5013
:goto_2e
invoke-virtual {v5, v3, v0}, Lorg/bitcoinj/script/Script;->getNumberOfBytesRequiredToSpend(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)I
move-result v0
add-int/2addr v0, v1
move v1, v0
.line 5018
goto :goto_9
.line 5009
:cond_35
invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_54
.line 5010
invoke-virtual {v5}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
move-result-object v0
iget-object v0, v0, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;
.line 5011
const-string v3, "Coin selection includes unspendable outputs"
invoke-static {v0, v3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_4a
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_15 .. :try_end_4a} :catch_4c
move-object v3, v2
goto :goto_2e
.line 5014
:catch_4c
move-exception v0
.line 5017
new-instance v1, Ljava/lang/IllegalStateException;
invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 5020
:cond_53
return v1
:cond_54
move-object v0, v2
move-object v3, v2
goto :goto_2e
.end method
.method private findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;)",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 1813
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 1814
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z
move-result v0
if-eqz v0, :cond_15
.line 9164
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 1833
:goto_14
return-object v0
.line 1816
:cond_15
new-instance v3, Ljava/util/HashSet;
invoke-direct {v3}, Ljava/util/HashSet;-><init>()V
.line 1817
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_22
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_36
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 1818
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
goto :goto_22
.line 10164
:cond_36
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
.line 1822
invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_43
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_72
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
move-object v1, v0
check-cast v1, Lorg/bitcoinj/core/Transaction;
.line 1823
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_58
:goto_58
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_43
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 1826
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
.line 1827
invoke-virtual {v3, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_58
.line 1829
invoke-interface {v2, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_58
:cond_72
move-object v0, v2
.line 1833
goto :goto_14
.end method
.method public static fromKeys(Lorg/bitcoinj/core/NetworkParameters;Ljava/util/List;)Lorg/bitcoinj/wallet/Wallet;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/NetworkParameters;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;)",
"Lorg/bitcoinj/wallet/Wallet;"
}
.end annotation
.prologue
.line 298
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1b
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
.line 299
instance-of v0, v0, Lorg/bitcoinj/crypto/DeterministicKey;
if-nez v0, :cond_19
const/4 v0, 0x1
:goto_15
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
goto :goto_4
:cond_19
const/4 v0, 0x0
goto :goto_15
.line 301
:cond_1b
new-instance v0, Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-direct {v0, p0}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
.line 302
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeys(Ljava/util/List;)I
.line 303
new-instance v1, Lorg/bitcoinj/wallet/Wallet;
invoke-direct {v1, p0, v0}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V
return-object v1
.end method
.method public static fromSeed(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/DeterministicSeed;)Lorg/bitcoinj/wallet/Wallet;
.registers 4
.prologue
.line 271
new-instance v0, Lorg/bitcoinj/wallet/Wallet;
new-instance v1, Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-direct {v1, p0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/DeterministicSeed;)V
invoke-direct {v0, p0, v1}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V
return-object v0
.end method
.method public static fromWatchingKey(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/wallet/Wallet;
.registers 4
.prologue
.line 279
new-instance v0, Lorg/bitcoinj/wallet/Wallet;
new-instance v1, Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-direct {v1, p0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)V
invoke-direct {v0, p0, v1}, Lorg/bitcoinj/wallet/Wallet;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/wallet/KeyChainGroup;)V
return-object v0
.end method
.method public static fromWatchingKeyB58(Lorg/bitcoinj/core/NetworkParameters;Ljava/lang/String;J)Lorg/bitcoinj/wallet/Wallet;
.registers 6
.prologue
.line 289
const/4 v0, 0x0
invoke-static {v0, p1, p0}, Lorg/bitcoinj/crypto/DeterministicKey;->deserializeB58(Lorg/bitcoinj/crypto/DeterministicKey;Ljava/lang/String;Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
.line 290
invoke-virtual {v0, p2, p3}, Lorg/bitcoinj/crypto/DeterministicKey;->setCreationTimeSeconds(J)V
.line 291
invoke-static {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->fromWatchingKey(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/wallet/Wallet;
move-result-object v0
return-object v0
.end method
.method private informConfidenceListenersIfNotReorganizing()V
.registers 5
.prologue
.line 2085
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
if-eqz v0, :cond_5
.line 2093
:goto_4
return-void
.line 2087
:cond_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_f
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_32
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Map$Entry;
.line 2088
invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/Transaction;
.line 2089
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v3
invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-virtual {v3, v0}, Lorg/bitcoinj/core/TransactionConfidence;->queueListeners(Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;)V
.line 2090
invoke-direct {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V
goto :goto_f
.line 2092
:cond_32
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->clear()V
goto :goto_4
.end method
.method private isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z
.registers 5
.prologue
.line 2039
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_8
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_32
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 2040
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransaction(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 2041
if-eqz v0, :cond_8
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v0
invoke-virtual {v0, p2}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_8
.line 2042
const/4 v0, 0x0
.line 2045
:goto_31
return v0
:cond_32
const/4 v0, 0x1
goto :goto_31
.end method
.method private isTxOutputBloomFilterable(Lorg/bitcoinj/core/TransactionOutput;)Z
.registers 6
.prologue
const/4 v1, 0x1
const/4 v0, 0x0
.line 4681
invoke-virtual {p1}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v3
.line 4682
invoke-virtual {v3}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v2
if-nez v2, :cond_12
invoke-virtual {v3}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v2
if-eqz v2, :cond_27
:cond_12
move v2, v1
.line 4683
:goto_13
if-eqz v2, :cond_1d
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v2, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_25
:cond_1d
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v2, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_26
:cond_25
move v0, v1
:cond_26
return v0
:cond_27
move v2, v0
.line 4682
goto :goto_13
.end method
.method private killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;",
"Lorg/bitcoinj/core/Transaction;",
")V"
}
.end annotation
.prologue
.line 2318
new-instance v2, Ljava/util/LinkedList;
invoke-direct {v2, p1}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V
.line 2319
:cond_5
invoke-virtual {v2}, Ljava/util/LinkedList;->isEmpty()Z
move-result v0
if-nez v0, :cond_111
.line 2320
invoke-virtual {v2}, Ljava/util/LinkedList;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2321
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "TX {} killed{}"
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v5
if-eqz p2, :cond_c3
new-instance v1, Ljava/lang/StringBuilder;
const-string v6, " by "
invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 2322
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v6
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 2321
:goto_2e
invoke-interface {v3, v4, v5, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2323
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Disconnecting each input and moving connected transactions."
invoke-interface {v1, v3}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
.line 2325
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 2326
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 2327
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 2328
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v1, v0}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 2329
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_60
:goto_60
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_c7
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionInput;
.line 2330
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v4
.line 2331
if-eqz v4, :cond_60
.line 2332
invoke-virtual {v4}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v5
sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
if-eq v5, v6, :cond_ba
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v5
if-eqz v5, :cond_ba
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v5
invoke-virtual {v5, v1}, Lorg/bitcoinj/core/TransactionInput;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_ba
.line 2333
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v6
invoke-virtual {v5, v6}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
move-result v5
invoke-static {v5}, Lcom/google/common/base/n;->checkState(Z)V
.line 2334
sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, "Added to UNSPENTS: {} in {}"
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v7
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v8
invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionOutput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v8
invoke-virtual {v8}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v8
invoke-interface {v5, v6, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2336
:cond_ba
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z
.line 2337
const-string v1, "kill"
invoke-direct {p0, v4, v1}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
goto :goto_60
.line 2322
:cond_c3
const-string v1, ""
goto/16 :goto_2e
.line 2339
:cond_c7
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v1
invoke-virtual {v1, p2}, Lorg/bitcoinj/core/TransactionConfidence;->setOverridingTransaction(Lorg/bitcoinj/core/Transaction;)V
.line 2340
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v1, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2342
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_dd
:goto_dd
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_5
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 2343
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v3, v0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_f8
.line 2344
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "XX Removed from UNSPENTS: {}"
invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2345
:cond_f8
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v0
.line 2346
if-eqz v0, :cond_dd
.line 2347
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 2348
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "This death invalidated dependent tx {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v5
invoke-interface {v3, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2349
invoke-virtual {v2, v0}, Ljava/util/LinkedList;->push(Ljava/lang/Object;)V
goto :goto_dd
.line 2352
:cond_111
if-nez p2, :cond_114
.line 2370
:cond_113
return-void
.line 2354
:cond_114
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Now attempting to connect the inputs of the overriding transaction."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
.line 2355
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_123
:goto_123
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_113
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 2356
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->DISCONNECT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v2
.line 2357
sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v2, v3, :cond_159
.line 2358
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v2
const-string v3, "kill"
invoke-direct {p0, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
.line 2359
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
.line 2360
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Removing from UNSPENTS: {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_123
.line 2362
:cond_159
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->DISCONNECT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v2
.line 2363
sget-object v3, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v2, v3, :cond_123
.line 2364
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v2
const-string v3, "kill"
invoke-direct {p0, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
.line 2365
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
.line 2366
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Removing from UNSPENTS: {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_123
.end method
.method public static varargs loadFromFile(Ljava/io/File;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
.registers 5
.prologue
.line 1509
const/4 v2, 0x0
.line 1511
:try_start_1
new-instance v1, Ljava/io/FileInputStream;
invoke-direct {v1, p0}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
:try_end_6
.catchall {:try_start_1 .. :try_end_6} :catchall_e
.line 1512
:try_start_6
invoke-static {v1, p1}, Lorg/bitcoinj/wallet/Wallet;->loadFromFileStream(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
:try_end_9
.catchall {:try_start_6 .. :try_end_9} :catchall_1f
move-result-object v0
.line 1514
:try_start_a
invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
.line 1512
return-object v0
.line 1514
:catchall_e
move-exception v0
move-object v1, v2
:goto_10
if-eqz v1, :cond_15
invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
:cond_15
throw v0
:try_end_16
.catch Ljava/io/IOException; {:try_start_a .. :try_end_16} :catch_16
.line 1516
:catch_16
move-exception v0
.line 1517
new-instance v1, Lorg/bitcoinj/wallet/UnreadableWalletException;
const-string v2, "Could not open file"
invoke-direct {v1, v2, v0}, Lorg/bitcoinj/wallet/UnreadableWalletException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 1514
:catchall_1f
move-exception v0
goto :goto_10
.end method
.method public static varargs loadFromFileStream(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
.registers 5
.prologue
.line 1606
new-instance v0, Lorg/bitcoinj/wallet/WalletProtobufSerializer;
invoke-direct {v0}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;-><init>()V
invoke-virtual {v0, p0, p1}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;->readWallet(Ljava/io/InputStream;[Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/Wallet;
move-result-object v0
.line 1607
invoke-virtual {v0}, Lorg/bitcoinj/wallet/Wallet;->isConsistent()Z
move-result v1
if-nez v1, :cond_16
.line 1608
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Loaded an inconsistent wallet"
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
.line 1610
:cond_16
return-object v0
.end method
.method private markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
.registers 6
.prologue
.line 1065
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1067
:try_start_5
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_d
:goto_d
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_65
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
:try_end_19
.catchall {:try_start_5 .. :try_end_19} :catchall_3a
.line 1069
:try_start_19
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v0
.line 1070
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v2
if-eqz v2, :cond_41
.line 1071
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getPubKey()[B
move-result-object v0
.line 1072
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markPubKeyAsUsed([B)V
:try_end_2c
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_19 .. :try_end_2c} :catch_2d
.catchall {:try_start_19 .. :try_end_2c} :catchall_3a
goto :goto_d
.line 1080
:catch_2d
move-exception v0
.line 1082
:try_start_2e
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Could not parse tx output script: {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/ScriptException;->toString()Ljava/lang/String;
move-result-object v0
invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_39
.catchall {:try_start_2e .. :try_end_39} :catchall_3a
goto :goto_d
.line 1086
:catchall_3a
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 1073
:cond_41
:try_start_41
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v2
if-eqz v2, :cond_51
.line 1074
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v0
.line 1075
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markPubKeyHashAsUsed([B)V
goto :goto_d
.line 1076
:cond_51
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v2
if-eqz v2, :cond_d
.line 1077
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v2
invoke-static {v2, v0}, Lorg/bitcoinj/core/Address;->fromP2SHScript(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/core/Address;
move-result-object v0
.line 1078
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->markP2SHAddressAsUsed(Lorg/bitcoinj/core/Address;)V
:try_end_64
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_41 .. :try_end_64} :catch_2d
.catchall {:try_start_41 .. :try_end_64} :catchall_3a
goto :goto_d
.line 1086
:cond_65
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1087
return-void
.end method
.method private maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
.registers 6
.prologue
.line 2377
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2378
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->isEveryOwnedOutputSpent(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v0
if-eqz v0, :cond_38
.line 2380
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_37
.line 2381
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z
move-result v0
if-eqz v0, :cond_2e
.line 2382
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " {} {} <-unspent ->spent"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2, p2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2384
:cond_2e
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2394
:cond_37
:goto_37
return-void
.line 2387
:cond_38
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_37
.line 2388
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z
move-result v0
if-eqz v0, :cond_57
.line 2389
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " {} {} <-spent ->unspent"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2, p2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2391
:cond_57
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_37
.end method
.method private maybeRotateKeys(Lorg/spongycastle/crypto/params/KeyParameter;Z)Ljava/util/List;
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/spongycastle/crypto/params/KeyParameter;",
"Z)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 5185
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 5186
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 13232
new-instance v5, Ljava/util/LinkedList;
invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V
.line 5189
iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J
.line 5190
const-wide/16 v0, 0x0
cmp-long v0, v2, v0
if-nez v0, :cond_20
.line 5225
:cond_1f
:goto_1f
return-object v5
.line 5193
:cond_20
const/4 v1, 0x1
.line 5194
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getDeterministicKeyChains()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_2b
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_9a
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/DeterministicKeyChain;
.line 5195
invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getEarliestKeyCreationTime()J
move-result-wide v6
cmp-long v0, v6, v2
if-ltz v0, :cond_2b
.line 5196
const/4 v0, 0x0
.line 5200
:goto_40
if-eqz v0, :cond_5d
.line 5202
:try_start_42
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getImportedKeys()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v0
if-eqz v0, :cond_78
.line 5203
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "All HD chains are currently rotating and we have no random keys, creating fresh HD chain ..."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 5204
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V
:try_end_5a
.catch Lorg/bitcoinj/wallet/AllRandomKeysRotating; {:try_start_42 .. :try_end_5a} :catch_8c
.line 5214
:goto_5a
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:cond_5d
move-object v1, p0
move-object v4, p1
move v6, p2
.line 5222
invoke-direct/range {v1 .. v6}, Lorg/bitcoinj/wallet/Wallet;->rekeyOneBatch(JLorg/spongycastle/crypto/params/KeyParameter;Ljava/util/List;Z)Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 5223
if-eqz v0, :cond_69
invoke-interface {v5, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 5224
:cond_69
if-eqz v0, :cond_1f
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
const/16 v1, 0x258
if-eq v0, v1, :cond_5d
goto :goto_1f
.line 5206
:cond_78
:try_start_78
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "All HD chains are currently rotating, attempting to create a new one from the next oldest non-rotating key material ..."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 5207
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, v2, v3, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->upgradeToDeterministic(JLorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/wallet/DeterministicKeyChain;
.line 5208
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " ... upgraded to HD again, based on next best oldest key."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
:try_end_8b
.catch Lorg/bitcoinj/wallet/AllRandomKeysRotating; {:try_start_78 .. :try_end_8b} :catch_8c
goto :goto_5a
.line 5211
:catch_8c
move-exception v0
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " ... no non-rotating random keys available, generating entirely new HD tree: backup required after this."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 5212
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->createAndActivateNewHDChain()V
goto :goto_5a
:cond_9a
move v0, v1
goto :goto_40
.end method
.method private maybeUpgradeToHD()V
.registers 2
.prologue
.line 572
const/4 v0, 0x0
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V
.line 573
return-void
.end method
.method private maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V
.registers 5
.prologue
.line 577
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 578
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isDeterministicUpgradeRequired()Z
move-result v0
if-eqz v0, :cond_1b
.line 579
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Upgrade to HD wallets is required, attempting to do so."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 581
:try_start_18
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->upgradeToDeterministic(Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_1b
.catch Lorg/bitcoinj/wallet/DeterministicUpgradeRequiresPassword; {:try_start_18 .. :try_end_1b} :catch_1c
.line 588
:cond_1b
return-void
.line 582
:catch_1c
move-exception v0
.line 583
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Failed to auto upgrade due to encryption. You should call wallet.upgradeToDeterministic with the users AES key to avoid this error."
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
.line 585
throw v0
.end method
.method private processTxFromBestChain(Lorg/bitcoinj/core/Transaction;Z)V
.registers 9
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 2161
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2162
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v0, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_85
move v0, v1
:goto_18
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2167
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z
move-result v0
if-eqz v0, :cond_87
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v0, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_87
move v0, v1
.line 2168
:goto_2e
if-eqz v0, :cond_50
.line 2176
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, " coinbase tx <-dead: confidence {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v4
.line 2177
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->name()Ljava/lang/String;
move-result-object v5
.line 2176
invoke-interface {v0, v3, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2178
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v0, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 2182
:cond_50
invoke-direct {p0, p1, v1}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V
.line 2187
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v0
if-lez v0, :cond_89
.line 2188
:goto_5d
if-eqz v1, :cond_9c
.line 2190
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->isEveryOwnedOutputSpent(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v0
if-eqz v0, :cond_8b
.line 2191
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " tx {} ->spent (by pending)"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2192
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 2208
:cond_75
:goto_75
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
move-result-object v0
.line 2209
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
move-result v1
if-nez v1, :cond_84
.line 2211
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V
.line 2213
:cond_84
return-void
:cond_85
move v0, v2
.line 2162
goto :goto_18
:cond_87
move v0, v2
.line 2167
goto :goto_2e
:cond_89
move v1, v2
.line 2187
goto :goto_5d
.line 2194
:cond_8b
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " tx {} ->unspent"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2195
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
goto :goto_75
.line 2197
:cond_9c
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v0
if-lez v0, :cond_b7
.line 2199
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " tx {} ->spent"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2200
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
goto :goto_75
.line 2201
:cond_b7
if-eqz p2, :cond_75
.line 2203
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " tx {} ->spent (manually added)"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2204
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
goto :goto_75
.end method
.method private queueOnTransactionConfidenceChanged(Lorg/bitcoinj/core/Transaction;)V
.registers 6
.prologue
.line 2723
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2724
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_f
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_34
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2725
iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
sget-object v3, Lorg/bitcoinj/utils/Threading;->SAME_THREAD:Ljava/util/concurrent/Executor;
if-ne v2, v3, :cond_29
.line 2726
iget-object v0, v0, Lorg/bitcoinj/utils/ListenerRegistration;->listener:Ljava/lang/Object;
check-cast v0, Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;
invoke-interface {v0, p0, p1}, Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;->onTransactionConfidenceChanged(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;)V
goto :goto_f
.line 2728
:cond_29
iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v3, Lorg/bitcoinj/wallet/Wallet$3;
invoke-direct {v3, p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet$3;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;)V
invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_f
.line 2736
:cond_34
return-void
.end method
.method private receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
.registers 15
.prologue
.line 1899
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 1901
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 1902
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v5
.line 1903
sget-object v0, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->BEST_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;
if-ne p3, v0, :cond_c5
const/4 v0, 0x1
move v1, v0
.line 1904
:goto_17
sget-object v0, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->SIDE_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;
if-ne p3, v0, :cond_c9
const/4 v0, 0x1
move v2, v0
.line 1906
:goto_1d
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 1907
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v3
.line 1908
invoke-virtual {v3, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v6
.line 1910
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, "Received tx{} for {}: {} [{}] in block {}"
const/4 v0, 0x5
new-array v8, v0, [Ljava/lang/Object;
const/4 v9, 0x0
if-eqz v2, :cond_cd
const-string v0, " on a side chain"
:goto_35
aput-object v0, v8, v9
const/4 v0, 0x1
.line 1911
invoke-virtual {v6}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v9
aput-object v9, v8, v0
const/4 v0, 0x2
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v9
aput-object v9, v8, v0
const/4 v0, 0x3
invoke-static {p4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v9
aput-object v9, v8, v0
const/4 v9, 0x4
if-eqz p2, :cond_d1
.line 1912
invoke-virtual {p2}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
:goto_57
aput-object v0, v8, v9
.line 1910
invoke-interface {v3, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;[Ljava/lang/Object;)V
.line 1916
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
.line 1918
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
.line 1923
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v0, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1924
if-eqz v0, :cond_74
move-object p1, v0
.line 1928
:cond_74
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0, v5}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_d4
const/4 v0, 0x1
move v3, v0
.line 1929
:goto_7e
if-eqz v3, :cond_87
.line 1930
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, " <-pending"
invoke-interface {v0, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 1932
:cond_87
if-eqz v1, :cond_146
.line 1933
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0, v5}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_d7
const/4 v0, 0x1
move v2, v0
.line 1934
:goto_93
if-eqz v2, :cond_9c
.line 1935
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, " <-dead"
invoke-interface {v0, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 1936
:cond_9c
if-eqz v3, :cond_da
.line 1939
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v7
:cond_a6
:goto_a6
invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_da
invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 1940
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v8
.line 1941
if-eqz v8, :cond_a6
.line 1942
iget-object v9, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v9, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 1943
invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z
goto :goto_a6
.line 1903
:cond_c5
const/4 v0, 0x0
move v1, v0
goto/16 :goto_17
.line 1904
:cond_c9
const/4 v0, 0x0
move v2, v0
goto/16 :goto_1d
.line 1910
:cond_cd
const-string v0, ""
goto/16 :goto_35
.line 1912
:cond_d1
const-string v0, "(unit test)"
goto :goto_57
.line 1928
:cond_d4
const/4 v0, 0x0
move v3, v0
goto :goto_7e
.line 1933
:cond_d7
const/4 v0, 0x0
move v2, v0
goto :goto_93
.line 1947
:cond_da
if-nez v3, :cond_de
if-eqz v2, :cond_144
:cond_de
const/4 v0, 0x1
:goto_df
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->processTxFromBestChain(Lorg/bitcoinj/core/Transaction;Z)V
.line 1969
:cond_e2
:goto_e2
if-eqz p2, :cond_179
.line 1972
invoke-virtual {p1, p2, v1, p4}, Lorg/bitcoinj/core/Transaction;->setBlockAppearance(Lorg/bitcoinj/core/StoredBlock;ZI)V
.line 1973
if-eqz v1, :cond_179
.line 1977
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;
invoke-virtual {v0, v5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
.line 1982
const/4 v0, 0x1
new-array v0, v0, [Lorg/bitcoinj/core/Transaction;
const/4 v2, 0x0
aput-object p1, v0, v2
.line 10182
const/4 v2, 0x1
invoke-static {v2}, Lcom/google/common/collect/cy;->db(I)Ljava/util/HashSet;
move-result-object v2
.line 10183
invoke-static {v2, v0}, Ljava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z
.line 1983
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v0
invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V
.line 1984
invoke-interface {v2, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 1985
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->sortTxnsByDependency(Ljava/util/Set;)Ljava/util/List;
move-result-object v0
.line 1986
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_10f
:goto_10f
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_179
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1987
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v5
sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v5, v7}, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_10f
.line 1988
sget-object v5, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-direct {p0, v0, v5}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z
move-result v5
if-eqz v5, :cond_10f
.line 1989
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v5
sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v5, v7}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V
.line 1990
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v7, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v5, v0, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_10f
.line 1947
:cond_144
const/4 v0, 0x0
goto :goto_df
.line 1949
:cond_146
invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V
.line 1953
if-eqz v3, :cond_158
.line 1955
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 1956
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, " ->pending"
invoke-interface {v0, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
goto :goto_e2
.line 1960
:cond_158
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
.line 1961
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_e2
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_e2
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v2, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_e2
.line 1964
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V
goto/16 :goto_e2
.line 1997
:cond_179
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
.line 2000
if-eqz v1, :cond_1c5
.line 2002
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v0, p1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2014
:goto_188
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
if-nez v0, :cond_1b8
if-eqz v1, :cond_1b8
.line 2015
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 2016
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
new-instance v2, Ljava/lang/StringBuilder;
const-string v5, "Balance is now: "
invoke-direct {v2, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v5
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 2017
if-nez v3, :cond_1b5
.line 2018
invoke-virtual {v6}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v1
.line 2021
if-lez v1, :cond_1c9
.line 2022
invoke-virtual {p0, p1, v4, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
.line 2027
:cond_1b5
:goto_1b5
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
.line 2030
:cond_1b8
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V
.line 2031
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
.line 2033
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
.line 2034
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z
.line 2035
return-void
.line 2004
:cond_1c5
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
goto :goto_188
.line 2023
:cond_1c9
if-gez v1, :cond_1b5
.line 2024
invoke-virtual {p0, p1, v4, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
goto :goto_1b5
.end method
.method private rekeyOneBatch(JLorg/spongycastle/crypto/params/KeyParameter;Ljava/util/List;Z)Lorg/bitcoinj/core/Transaction;
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(J",
"Lorg/spongycastle/crypto/params/KeyParameter;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;Z)",
"Lorg/bitcoinj/core/Transaction;"
}
.end annotation
.prologue
const/4 v1, 0x0
const/4 v3, 0x1
.line 5230
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 5240
:try_start_7
new-instance v0, Lorg/bitcoinj/wallet/KeyTimeCoinSelector;
const/4 v2, 0x1
invoke-direct {v0, p0, p1, p2, v2}, Lorg/bitcoinj/wallet/KeyTimeCoinSelector;-><init>(Lorg/bitcoinj/wallet/Wallet;JZ)V
.line 5241
new-instance v2, Lorg/bitcoinj/wallet/FilteringCoinSelector;
invoke-direct {v2, v0}, Lorg/bitcoinj/wallet/FilteringCoinSelector;-><init>(Lorg/bitcoinj/wallet/CoinSelector;)V
.line 5242
invoke-interface {p4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:goto_16
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_34
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 5243
invoke-virtual {v2, v0}, Lorg/bitcoinj/wallet/FilteringCoinSelector;->excludeOutputsSpentBy(Lorg/bitcoinj/core/Transaction;)V
:try_end_25
.catch Lorg/bitcoinj/core/VerificationException; {:try_start_7 .. :try_end_25} :catch_26
.catchall {:try_start_7 .. :try_end_25} :catchall_2d
goto :goto_16
.line 5267
:catch_26
move-exception v0
.line 5268
:try_start_27
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
:try_end_2d
.catchall {:try_start_27 .. :try_end_2d} :catchall_2d
.line 5270
:catchall_2d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 5245
:cond_34
:try_start_34
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates()Ljava/util/List;
move-result-object v4
invoke-virtual {v2, v0, v4}, Lorg/bitcoinj/wallet/FilteringCoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;
move-result-object v4
.line 5246
iget-object v0, v4, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
sget-object v2, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z
:try_end_45
.catch Lorg/bitcoinj/core/VerificationException; {:try_start_34 .. :try_end_45} :catch_26
.catchall {:try_start_34 .. :try_end_45} :catchall_2d
move-result v0
if-eqz v0, :cond_4f
.line 5270
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-object v0, v1
.line 5266
:goto_4e
return-object v0
.line 5247
:cond_4f
:try_start_4f
invoke-direct {p0, p3}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD(Lorg/spongycastle/crypto/params/KeyParameter;)V
.line 5248
new-instance v2, Lorg/bitcoinj/core/Transaction;
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-direct {v2, v0}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
.line 5249
iget-object v0, v4, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_5f
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_6f
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 5250
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;
goto :goto_5f
.line 5253
:cond_6f
iget-object v5, v4, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
if-eqz p5, :cond_91
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->freshReceiveAddress()Lorg/bitcoinj/core/Address;
move-result-object v0
:goto_77
invoke-virtual {v2, v5, v0}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/core/TransactionOutput;
.line 5254
sget-object v0, Lorg/bitcoinj/core/Transaction;->DEFAULT_TX_FEE:Lorg/bitcoinj/core/Coin;
const/4 v5, 0x1
invoke-direct {p0, v2, v4, v0, v5}, Lorg/bitcoinj/wallet/Wallet;->adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z
move-result v0
if-nez v0, :cond_96
.line 5255
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Failed to adjust rekey tx for fees."
invoke-interface {v0, v2}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
:try_end_8a
.catch Lorg/bitcoinj/core/VerificationException; {:try_start_4f .. :try_end_8a} :catch_26
.catchall {:try_start_4f .. :try_end_8a} :catchall_2d
.line 5270
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-object v0, v1
.line 5256
goto :goto_4e
.line 5253
:cond_91
:try_start_91
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->currentReceiveAddress()Lorg/bitcoinj/core/Address;
move-result-object v0
goto :goto_77
.line 5258
:cond_96
invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->SELF:Lorg/bitcoinj/core/TransactionConfidence$Source;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence;->setSource(Lorg/bitcoinj/core/TransactionConfidence$Source;)V
.line 5259
sget-object v0, Lorg/bitcoinj/core/Transaction$Purpose;->KEY_ROTATION:Lorg/bitcoinj/core/Transaction$Purpose;
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->setPurpose(Lorg/bitcoinj/core/Transaction$Purpose;)V
.line 5260
invoke-static {v2}, Lorg/bitcoinj/wallet/SendRequest;->forTx(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
.line 5261
iput-object p3, v0, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;
.line 5262
if-eqz p5, :cond_af
.line 5263
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V
.line 5265
:cond_af
invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v0
array-length v0, v0
const v1, 0x186a0
if-ge v0, v1, :cond_c4
move v0, v3
:goto_ba
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
:try_end_bd
.catch Lorg/bitcoinj/core/VerificationException; {:try_start_91 .. :try_end_bd} :catch_26
.catchall {:try_start_91 .. :try_end_bd} :catchall_2d
.line 5270
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-object v0, v2
.line 5266
goto :goto_4e
.line 5265
:cond_c4
const/4 v0, 0x0
goto :goto_ba
.end method
.method private resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/wallet/SendRequest;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionInput;",
">;)V"
}
.end annotation
.prologue
.line 4994
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->clearInputs()V
.line 4995
invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_9
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1b
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 4996
iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionInput;)Lorg/bitcoinj/core/TransactionInput;
goto :goto_9
.line 4997
:cond_1b
return-void
.end method
.method private subtractDepth(ILjava/util/Collection;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Ljava/util/Collection",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 4539
invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_4
:goto_4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_34
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 4540
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v2
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->BUILDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
if-ne v2, v3, :cond_4
.line 4541
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v2
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v3
invoke-virtual {v3}, Lorg/bitcoinj/core/TransactionConfidence;->getDepthInBlocks()I
move-result v3
sub-int/2addr v3, p1
invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionConfidence;->setDepthInBlocks(I)V
.line 4542
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->DEPTH:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_4
.line 4545
:cond_34
return-void
.end method
.method private toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/StringBuilder;",
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;",
"Lorg/bitcoinj/core/AbstractBlockChain;",
"Ljava/util/Comparator",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 3255
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 3258
if-eqz p4, :cond_78
.line 3259
new-instance v0, Ljava/util/TreeSet;
invoke-direct {v0, p4}, Ljava/util/TreeSet;-><init>(Ljava/util/Comparator;)V
.line 3260
invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Collection;->addAll(Ljava/util/Collection;)Z
.line 3265
:goto_17
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_1b
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_7d
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 3267
:try_start_27
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValue(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v2
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3268
const-string v2, " total value (sends "
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3269
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v2
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3270
const-string v2, " and receives "
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3271
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v2
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3272
const-string v2, ")\n"
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:try_end_57
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_27 .. :try_end_57} :catch_7e
.line 3276
:goto_57
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->hasConfidence()Z
move-result v2
if-eqz v2, :cond_70
.line 3277
const-string v2, " confidence: "
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
const/16 v3, 0xa
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 3278
:cond_70
invoke-virtual {v0, p3}, Lorg/bitcoinj/core/Transaction;->toString(Lorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_1b
.line 3262
:cond_78
invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
goto :goto_17
.line 3280
:cond_7d
return-void
:catch_7e
move-exception v2
goto :goto_57
.end method
.method private updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V
.registers 13
.prologue
const/4 v3, 0x1
const/4 v4, 0x0
.line 2234
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2235
if-eqz p2, :cond_1d
.line 2236
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_b4
move v0, v3
:goto_1a
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2237
:cond_1d
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_25
:goto_25
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_ea
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 2238
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v1
.line 2239
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v1, v2, :cond_55
.line 2241
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v1
.line 2242
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v1, v2, :cond_55
.line 2244
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Ljava/util/Map;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v1
.line 2245
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->NO_SUCH_TX:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-eq v1, v2, :cond_25
:cond_55
move-object v2, v1
.line 2252
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v1
invoke-static {v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionOutput;
.line 2253
sget-object v6, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->ALREADY_SPENT:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v2, v6, :cond_b7
.line 2254
if-nez p2, :cond_25
.line 2265
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, "Saw two pending transactions double spend each other"
invoke-interface {v2, v6}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
.line 2266
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, " offending input is input {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v7
invoke-interface {v7, v0}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
invoke-interface {v2, v6, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 2267
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "{}: {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v6
sget-object v7, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v8
invoke-virtual {v7, v8}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v7
invoke-interface {v0, v2, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2268
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 2269
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "{}: {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v6
sget-object v7, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v0
invoke-virtual {v7, v0}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v0
invoke-interface {v1, v2, v6, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
goto/16 :goto_25
:cond_b4
move v0, v4
.line 2236
goto/16 :goto_1a
.line 2271
:cond_b7
sget-object v6, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v2, v6, :cond_25
.line 2275
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v2
invoke-static {v2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/bitcoinj/core/Transaction;
.line 2276
sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, " marked {} as spent by {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v8
invoke-interface {v6, v7, v0, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2277
const-string v0, "prevtx"
invoke-direct {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
.line 2279
invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v0
if-eqz v0, :cond_25
.line 2280
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
goto/16 :goto_25
.line 2290
:cond_ea
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_f4
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_159
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2291
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v6
:cond_108
:goto_108
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_f4
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionInput;
.line 2292
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectMode;->ABORT_ON_CONFLICT:Lorg/bitcoinj/core/TransactionInput$ConnectMode;
invoke-virtual {v1, p1, v2}, Lorg/bitcoinj/core/TransactionInput;->connect(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionInput$ConnectMode;)Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
move-result-object v7
.line 2293
if-eqz p2, :cond_124
.line 2296
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->ALREADY_SPENT:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-eq v7, v2, :cond_157
move v2, v3
:goto_121
invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V
.line 2298
:cond_124
sget-object v2, Lorg/bitcoinj/core/TransactionInput$ConnectionResult;->SUCCESS:Lorg/bitcoinj/core/TransactionInput$ConnectionResult;
if-ne v7, v2, :cond_108
.line 2299
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, "Connected pending tx input {}:{}"
.line 2300
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v8
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v9
invoke-interface {v9, v1}, Ljava/util/List;->indexOf(Ljava/lang/Object;)I
move-result v9
invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v9
.line 2299
invoke-interface {v2, v7, v8, v9}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
.line 2303
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v7
invoke-virtual {v2, v7}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_108
.line 2304
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, "Removed from UNSPENTS: {}"
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v1
invoke-interface {v2, v7, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_108
:cond_157
move v2, v4
.line 2296
goto :goto_121
.line 2308
:cond_159
if-nez p2, :cond_160
.line 2309
const-string v0, "pendingtx"
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->maybeMovePool(Lorg/bitcoinj/core/Transaction;Ljava/lang/String;)V
.line 2314
:cond_160
return-void
.end method
# virtual methods
.method public addAndActivateHDChain(Lorg/bitcoinj/wallet/DeterministicKeyChain;)V
.registers 4
.prologue
.line 750
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 752
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addAndActivateHDChain(Lorg/bitcoinj/wallet/DeterministicKeyChain;)V
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_10
.line 754
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 755
return-void
.line 754
:catchall_10
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
.registers 5
.prologue
.line 2547
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2548
return-void
.end method
.method public addChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
.registers 3
.prologue
.line 2538
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
.line 2539
return-void
.end method
.method public addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
.registers 5
.prologue
.line 2564
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2565
return-void
.end method
.method public addCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
.registers 3
.prologue
.line 2555
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
.line 2556
return-void
.end method
.method public addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
.registers 5
.prologue
.line 2581
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2582
return-void
.end method
.method public addCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
.registers 3
.prologue
.line 2572
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
.line 2573
return-void
.end method
.method public addEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;)V
.registers 3
.prologue
.line 2512
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
.line 2513
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
.line 2514
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
.line 2515
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
.line 2516
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
.line 2517
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
.line 2518
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
.line 2519
return-void
.end method
.method public addEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;Ljava/util/concurrent/Executor;)V
.registers 3
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 2524
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsReceivedEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)V
.line 2525
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addCoinsSentEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)V
.line 2526
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)V
.line 2527
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
.line 2528
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
.line 2529
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
.line 2530
invoke-virtual {p0, p2, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
.line 2531
return-void
.end method
.method public addExtension(Lorg/bitcoinj/wallet/WalletExtension;)V
.registers 6
.prologue
.line 4721
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;
move-result-object v0
.line 4722
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4724
:try_start_f
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v1, v0}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_33
.line 4725
new-instance v1, Ljava/lang/IllegalStateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Cannot add two extensions with the same ID: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v1
:try_end_2c
.catchall {:try_start_f .. :try_end_2c} :catchall_2c
.line 4729
:catchall_2c
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 4726
:cond_33
:try_start_33
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 4727
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:try_end_3b
.catchall {:try_start_33 .. :try_end_3b} :catchall_2c
.line 4729
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4730
return-void
.end method
.method public addKey(Lorg/bitcoinj/core/ECKey;)Z
.registers 3
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 669
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->importKey(Lorg/bitcoinj/core/ECKey;)Z
move-result v0
return v0
.end method
.method public addKeyChainEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
.registers 4
.prologue
.line 2597
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p2, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;Ljava/util/concurrent/Executor;)V
.line 2598
return-void
.end method
.method public addKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)V
.registers 4
.prologue
.line 2589
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
sget-object v1, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {v0, p1, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->addEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;Ljava/util/concurrent/Executor;)V
.line 2590
return-void
.end method
.method public addKeys(Ljava/util/List;)I
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;)I"
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 685
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->importKeys(Ljava/util/List;)I
move-result v0
return v0
.end method
.method public addOrGetExistingExtension(Lorg/bitcoinj/wallet/WalletExtension;)Lorg/bitcoinj/wallet/WalletExtension;
.registers 4
.prologue
.line 4737
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;
move-result-object v1
.line 4738
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4740
:try_start_f
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
:try_end_17
.catchall {:try_start_f .. :try_end_17} :catchall_2e
.line 4741
if-eqz v0, :cond_1f
.line 4747
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4745
:goto_1e
return-object v0
.line 4743
:cond_1f
:try_start_1f
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v0, v1, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 4744
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:try_end_27
.catchall {:try_start_1f .. :try_end_27} :catchall_2e
.line 4747
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-object v0, p1
.line 4745
goto :goto_1e
.line 4747
:catchall_2e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public addOrUpdateExtension(Lorg/bitcoinj/wallet/WalletExtension;)V
.registers 4
.prologue
.line 4757
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
invoke-interface {v0}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;
move-result-object v0
.line 4758
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4760
:try_start_f
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v1, v0, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 4761
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:try_end_17
.catchall {:try_start_f .. :try_end_17} :catchall_1d
.line 4763
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4764
return-void
.line 4763
:catchall_1d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
.registers 5
.prologue
.line 2614
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2615
return-void
.end method
.method public addReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
.registers 3
.prologue
.line 2605
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addReorganizeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)V
.line 2606
return-void
.end method
.method public addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
.registers 5
.prologue
.line 2631
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2632
return-void
.end method
.method public addScriptsChangeEventListener(Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
.registers 3
.prologue
.line 2622
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addScriptChangeEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)V
.line 2623
return-void
.end method
.method public addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
.registers 5
.prologue
.line 2648
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
new-instance v1, Lorg/bitcoinj/utils/ListenerRegistration;
invoke-direct {v1, p2, p1}, Lorg/bitcoinj/utils/ListenerRegistration;-><init>(Ljava/lang/Object;Ljava/util/concurrent/Executor;)V
invoke-virtual {v0, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
.line 2649
return-void
.end method
.method public addTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
.registers 3
.prologue
.line 2639
sget-object v0, Lorg/bitcoinj/utils/Threading;->USER_THREAD:Ljava/util/concurrent/Executor;
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addTransactionConfidenceEventListener(Ljava/util/concurrent/Executor;Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)V
.line 2640
return-void
.end method
.method public final addTransactionSigner(Lorg/bitcoinj/signers/TransactionSigner;)V
.registers 5
.prologue
.line 380
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 382
:try_start_5
invoke-interface {p1}, Lorg/bitcoinj/signers/TransactionSigner;->isReady()Z
move-result v0
if-eqz v0, :cond_16
.line 383
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;
invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:try_end_10
.catchall {:try_start_5 .. :try_end_10} :catchall_2f
.line 387
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 388
return-void
.line 385
:cond_16
:try_start_16
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Signer instance is not ready to be added into Wallet: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_2f
.catchall {:try_start_16 .. :try_end_2f} :catchall_2f
.line 387
:catchall_2f
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 1841
new-instance v3, Ljava/util/LinkedHashMap;
invoke-direct {v3}, Ljava/util/LinkedHashMap;-><init>()V
.line 1842
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_9
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1d
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1843
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v2
invoke-interface {v3, v2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_9
.line 1845
:cond_1d
invoke-interface {v3}, Ljava/util/Map;->isEmpty()Z
move-result v0
if-nez v0, :cond_87
.line 1846
invoke-interface {v3}, Ljava/util/Map;->keySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v0
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
invoke-interface {v3, v0}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
move-object v2, v0
check-cast v2, Lorg/bitcoinj/core/Transaction;
.line 1847
invoke-interface {p2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_3a
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1d
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1848
invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Transaction;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_3a
.line 1849
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_54
:goto_54
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_3a
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionInput;
.line 1850
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v1
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-virtual {v2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v6
invoke-virtual {v1, v6}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_54
.line 1851
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v3, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
if-nez v1, :cond_54
.line 1852
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-interface {v3, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1853
invoke-interface {p1, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_54
.line 1859
:cond_87
return-void
.end method
.method public addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction;)V
.registers 4
.prologue
.line 2857
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2859
:try_start_5
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction;->getPool()Lorg/bitcoinj/wallet/WalletTransaction$Pool;
move-result-object v0
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction;->getTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
:try_end_10
.catchall {:try_start_5 .. :try_end_10} :catchall_16
.line 2861
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2862
return-void
.line 2861
:catchall_16
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public addWatchedAddress(Lorg/bitcoinj/core/Address;)Z
.registers 8
.prologue
const/4 v1, 0x0
const/4 v0, 0x1
.line 845
invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeMillis()J
move-result-wide v2
const-wide/16 v4, 0x3e8
div-long/2addr v2, v4
.line 846
new-array v4, v0, [Lorg/bitcoinj/core/Address;
aput-object p1, v4, v1
invoke-static {v4}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
move-result-object v4
invoke-virtual {p0, v4, v2, v3}, Lorg/bitcoinj/wallet/Wallet;->addWatchedAddresses(Ljava/util/List;J)I
move-result v2
if-ne v2, v0, :cond_18
:goto_17
return v0
:cond_18
move v0, v1
goto :goto_17
.end method
.method public addWatchedAddress(Lorg/bitcoinj/core/Address;J)Z
.registers 8
.prologue
const/4 v1, 0x0
const/4 v0, 0x1
.line 856
new-array v2, v0, [Lorg/bitcoinj/core/Address;
aput-object p1, v2, v1
invoke-static {v2}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
move-result-object v2
invoke-virtual {p0, v2, p2, p3}, Lorg/bitcoinj/wallet/Wallet;->addWatchedAddresses(Ljava/util/List;J)I
move-result v2
if-ne v2, v0, :cond_11
:goto_10
return v0
:cond_11
move v0, v1
goto :goto_10
.end method
.method public addWatchedAddresses(Ljava/util/List;J)I
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Address;",
">;J)I"
}
.end annotation
.prologue
.line 8088
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 868
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_9
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_20
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Address;
.line 869
invoke-static {v0}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;
move-result-object v0
.line 870
invoke-virtual {v0, p2, p3}, Lorg/bitcoinj/script/Script;->setCreationTimeSeconds(J)V
.line 871
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_9
.line 874
:cond_20
invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->addWatchedScripts(Ljava/util/List;)I
move-result v0
return v0
.end method
.method public addWatchedScripts(Ljava/util/List;)I
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/Script;",
">;)I"
}
.end annotation
.prologue
.line 887
const/4 v0, 0x0
.line 888
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 890
:try_start_6
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
move v1, v0
:goto_b
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3e
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 893
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v3, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_24
.line 894
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v3, v0}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 895
:cond_24
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getCreationTimeSeconds()J
move-result-wide v4
const-wide/16 v6, 0x0
cmp-long v3, v4, v6
if-nez v3, :cond_35
.line 896
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "Adding a script to the wallet with a creation time of zero, this will disable the checkpointing optimization! {}"
invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 897
:cond_35
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v3, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
:try_end_3a
.catchall {:try_start_6 .. :try_end_3a} :catchall_4d
.line 898
add-int/lit8 v0, v1, 0x1
move v1, v0
.line 899
goto :goto_b
.line 901
:cond_3e
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 903
if-lez v1, :cond_4c
.line 904
const/4 v0, 0x1
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnScriptsChanged(Ljava/util/List;Z)V
.line 905
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 907
:cond_4c
return v1
.line 901
:catchall_4d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public allowSpendingUnconfirmedTransactions()V
.registers 2
.prologue
.line 4269
invoke-static {}, Lorg/bitcoinj/wallet/AllowUnconfirmedCoinSelector;->get()Lorg/bitcoinj/wallet/AllowUnconfirmedCoinSelector;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setCoinSelector(Lorg/bitcoinj/wallet/CoinSelector;)V
.line 4270
return-void
.end method
.method public autosaveToFile(Ljava/io/File;JLjava/util/concurrent/TimeUnit;Lorg/bitcoinj/wallet/WalletFiles$Listener;)Lorg/bitcoinj/wallet/WalletFiles;
.registers 14
.prologue
.line 1422
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1424
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
if-nez v0, :cond_25
const/4 v0, 0x1
:goto_a
const-string v1, "Already auto saving this wallet."
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 1425
new-instance v1, Lorg/bitcoinj/wallet/WalletFiles;
move-object v2, p0
move-object v3, p1
move-wide v4, p2
move-object v6, p4
invoke-direct/range {v1 .. v6}, Lorg/bitcoinj/wallet/WalletFiles;-><init>(Lorg/bitcoinj/wallet/Wallet;Ljava/io/File;JLjava/util/concurrent/TimeUnit;)V
.line 1426
if-eqz p5, :cond_1d
.line 1427
invoke-virtual {v1, p5}, Lorg/bitcoinj/wallet/WalletFiles;->setListener(Lorg/bitcoinj/wallet/WalletFiles$Listener;)V
.line 1428
:cond_1d
iput-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
:try_end_1f
.catchall {:try_start_5 .. :try_end_1f} :catchall_27
.line 1431
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1429
return-object v1
.line 1424
:cond_25
const/4 v0, 0x0
goto :goto_a
.line 1431
:catchall_27
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public beginBloomFilterCalculation()V
.registers 3
.prologue
.line 4559
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->incrementAndGet()I
move-result v0
const/4 v1, 0x1
if-le v0, v1, :cond_a
.line 4565
:goto_9
return-void
.line 4561
:cond_a
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4562
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4564
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->calcBloomOutPointsLocked()V
goto :goto_9
.end method
.method public calculateAllSpendCandidates()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.prologue
const/4 v0, 0x1
.line 4101
invoke-virtual {p0, v0, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public calculateAllSpendCandidates(Z)Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(Z)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 4107
const/4 v0, 0x1
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public calculateAllSpendCandidates(ZZ)Ljava/util/List;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(ZZ)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.prologue
.line 4119
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4122
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
if-nez v0, :cond_56
.line 4123
new-instance v2, Ljava/util/ArrayList;
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0}, Ljava/util/HashSet;->size()I
move-result v0
invoke-direct {v2, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 4124
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v0}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_1a
:goto_1a
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_4f
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 4125
if-eqz p2, :cond_32
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v1
invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->canSignFor(Lorg/bitcoinj/script/Script;)Z
move-result v1
if-eqz v1, :cond_1a
.line 4126
:cond_32
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getParentTransaction()Lorg/bitcoinj/core/Transaction;
move-result-object v1
invoke-static {v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/Transaction;
.line 4127
if-eqz p1, :cond_44
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->isMature()Z
move-result v1
if-eqz v1, :cond_1a
.line 4129
:cond_44
invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:try_end_47
.catchall {:try_start_5 .. :try_end_47} :catchall_48
goto :goto_1a
.line 4136
:catchall_48
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:cond_4f
move-object v0, v2
:goto_50
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4134
return-object v0
.line 4132
:cond_56
:try_start_56
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidatesFromUTXOProvider(Z)Ljava/util/LinkedList;
:try_end_59
.catchall {:try_start_56 .. :try_end_59} :catchall_48
move-result-object v0
goto :goto_50
.end method
.method protected calculateAllSpendCandidatesFromUTXOProvider(Z)Ljava/util/LinkedList;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(Z)",
"Ljava/util/LinkedList",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.prologue
.line 4183
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4184
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
const-string v1, "No UTXO provider has been set"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/UTXOProvider;
.line 11232
new-instance v2, Ljava/util/LinkedList;
invoke-direct {v2}, Ljava/util/LinkedList;-><init>()V
.line 4187
:try_start_18
invoke-interface {v0}, Lorg/bitcoinj/core/UTXOProvider;->getChainHeadHeight()I
move-result v1
.line 4188
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getStoredOutputsFromUTXOProvider()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_24
:goto_24
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_5c
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/UTXO;
.line 4189
invoke-virtual {v0}, Lorg/bitcoinj/core/UTXO;->isCoinbase()Z
move-result v4
.line 4190
invoke-virtual {v0}, Lorg/bitcoinj/core/UTXO;->getHeight()I
move-result v5
sub-int v5, v1, v5
add-int/lit8 v5, v5, 0x1
.line 4192
if-eqz p1, :cond_48
if-eqz v4, :cond_48
iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v4}, Lorg/bitcoinj/core/NetworkParameters;->getSpendableCoinbaseDepth()I
move-result v4
if-lt v5, v4, :cond_24
.line 4193
:cond_48
new-instance v4, Lorg/bitcoinj/wallet/Wallet$FreeStandingTransactionOutput;
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-direct {v4, p0, v5, v0, v1}, Lorg/bitcoinj/wallet/Wallet$FreeStandingTransactionOutput;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/UTXO;I)V
invoke-virtual {v2, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
:try_end_52
.catch Lorg/bitcoinj/core/UTXOProviderException; {:try_start_18 .. :try_end_52} :catch_53
goto :goto_24
.line 4196
:catch_53
move-exception v0
.line 4197
new-instance v1, Ljava/lang/RuntimeException;
const-string v2, "UTXO provider error"
invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 4200
:cond_5c
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_66
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_c5
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
move-object v1, v0
check-cast v1, Lorg/bitcoinj/core/Transaction;
.line 4202
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_7b
:goto_7b
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_99
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 4203
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v5
invoke-virtual {v5, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v5
if-eqz v5, :cond_7b
.line 4204
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/LinkedList;->remove(Ljava/lang/Object;)Z
goto :goto_7b
.line 4208
:cond_99
if-eqz p1, :cond_a1
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->isMature()Z
move-result v0
if-eqz v0, :cond_66
.line 4209
:cond_a1
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_a9
:goto_a9
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_66
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 4210
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
move-result v4
if-eqz v4, :cond_a9
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v4
if-eqz v4, :cond_a9
.line 4211
invoke-virtual {v2, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto :goto_a9
.line 4216
:cond_c5
return-object v2
.end method
.method public calculateFee(Lorg/bitcoinj/wallet/SendRequest;Lorg/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lorg/bitcoinj/wallet/Wallet$FeeCalculation;
.registers 29
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/wallet/SendRequest;",
"Lorg/bitcoinj/core/Coin;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionInput;",
">;Z",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;)",
"Lorg/bitcoinj/wallet/Wallet$FeeCalculation;"
}
.end annotation
.prologue
.line 4818
move-object/from16 v0, p0
iget-object v4, v0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v4}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v4
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
.line 4826
const/4 v10, 0x0
.line 4827
const/4 v9, 0x0
.line 4828
const/4 v8, 0x0
.line 4829
const/4 v7, 0x0
.line 4830
const/4 v6, 0x0
.line 4831
const/4 v5, 0x0
.line 4834
const/4 v4, 0x0
.line 4835
const/16 v18, 0x0
move-object v11, v10
move-object v10, v9
move-object v9, v8
move-object v8, v7
move-object v7, v6
move-object v6, v5
move v5, v4
.line 4837
:goto_1b
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p3
invoke-direct {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V
.line 4839
move-object/from16 v0, p1
iget-object v4, v0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
int-to-long v12, v5
invoke-virtual {v4, v12, v13}, Lorg/bitcoinj/core/Coin;->multiply(J)Lorg/bitcoinj/core/Coin;
move-result-object v4
const-wide/16 v12, 0x3e8
invoke-virtual {v4, v12, v13}, Lorg/bitcoinj/core/Coin;->divide(J)Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 4840
if-eqz p4, :cond_3f
sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
invoke-virtual {v4, v12}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v12
if-gez v12, :cond_3f
.line 4841
sget-object v4, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
.line 4843
:cond_3f
move-object/from16 v0, p2
invoke-virtual {v0, v4}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
.line 4844
if-eqz v11, :cond_4b
.line 4845
invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
.line 4849
:cond_4b
move-object/from16 v0, p1
iget-object v13, v0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
if-nez v13, :cond_95
move-object/from16 v0, p0
iget-object v13, v0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.line 4851
:goto_55
new-instance v14, Ljava/util/LinkedList;
move-object/from16 v0, p5
invoke-direct {v14, v0}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V
invoke-interface {v13, v12, v14}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;
move-result-object v19
.line 4853
move-object/from16 v0, v19
iget-object v13, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v13, v12}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v13
if-gez v13, :cond_9a
.line 4854
move-object/from16 v0, v19
iget-object v4, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 4956
:goto_72
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p3
invoke-direct {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->resetTxInputs(Lorg/bitcoinj/wallet/SendRequest;Ljava/util/List;)V
.line 4958
if-nez v10, :cond_233
if-nez v9, :cond_233
if-nez v7, :cond_233
.line 4959
invoke-static {v4}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 4960
sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, "Insufficient value in wallet for send: needed {} more"
invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v7
invoke-interface {v5, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 4961
new-instance v5, Lorg/bitcoinj/core/InsufficientMoneyException;
invoke-direct {v5, v4}, Lorg/bitcoinj/core/InsufficientMoneyException;-><init>(Lorg/bitcoinj/core/Coin;)V
throw v5
.line 4849
:cond_95
move-object/from16 v0, p1
iget-object v13, v0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
goto :goto_55
.line 4857
:cond_9a
move-object/from16 v0, v19
iget-object v13, v0, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;
invoke-interface {v13}, Ljava/util/Collection;->size()I
move-result v13
if-gtz v13, :cond_aa
invoke-interface/range {p3 .. p3}, Ljava/util/List;->size()I
move-result v13
if-lez v13, :cond_162
:cond_aa
const/4 v13, 0x1
:goto_ab
invoke-static {v13}, Lcom/google/common/base/n;->checkState(Z)V
.line 4865
const/4 v13, 0x0
.line 4866
const/16 v16, 0x0
.line 4868
move-object/from16 v0, v19
iget-object v14, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v14, v12}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
.line 4869
if-eqz v11, :cond_bf
.line 4870
invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
.line 4873
:cond_bf
move-object/from16 v0, p1
iget-boolean v14, v0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
if-eqz v14, :cond_2a1
sget-object v14, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z
move-result v14
if-nez v14, :cond_2a1
sget-object v14, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;
.line 4874
invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v14
if-gez v14, :cond_2a1
sget-object v14, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
invoke-virtual {v4, v14}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v14
if-gez v14, :cond_2a1
.line 4876
const/4 v13, 0x1
.line 4877
sget-object v14, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;
.line 4879
sget-object v15, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
invoke-virtual {v15, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
move-object v4, v14
.line 4882
:goto_eb
const/16 v17, 0x0
.line 4883
const/4 v14, 0x0
.line 4884
invoke-virtual {v12}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v15
if-lez v15, :cond_1a0
.line 4888
move-object/from16 v0, p1
iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->changeAddress:Lorg/bitcoinj/core/Address;
.line 4889
if-nez v14, :cond_fe
.line 4890
invoke-virtual/range {p0 .. p0}, Lorg/bitcoinj/wallet/Wallet;->currentChangeAddress()Lorg/bitcoinj/core/Address;
move-result-object v14
.line 4891
:cond_fe
new-instance v15, Lorg/bitcoinj/core/TransactionOutput;
move-object/from16 v0, p0
iget-object v0, v0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
move-object/from16 v20, v0
move-object/from16 v0, p1
iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
move-object/from16 v21, v0
move-object/from16 v0, v20
move-object/from16 v1, v21
invoke-direct {v15, v0, v1, v12, v14}, Lorg/bitcoinj/core/TransactionOutput;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)V
.line 4893
move-object/from16 v0, p1
iget-boolean v12, v0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
if-eqz v12, :cond_165
invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z
move-result v12
if-eqz v12, :cond_165
.line 4895
const/4 v4, 0x1
.line 4896
sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
.line 4897
invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->getMinNonDustValue()Lorg/bitcoinj/core/Coin;
move-result-object v14
sget-object v16, Lorg/bitcoinj/core/Coin;->SATOSHI:Lorg/bitcoinj/core/Coin;
move-object/from16 v0, v16
invoke-virtual {v14, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v14
.line 4896
invoke-virtual {v12, v14}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
move-object v14, v15
move/from16 v16, v17
move v15, v4
.line 4913
:goto_136
move-object/from16 v0, v19
iget-object v4, v0, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;
invoke-interface {v4}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v17
:goto_13e
invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_1b1
invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lorg/bitcoinj/core/TransactionOutput;
.line 4914
move-object/from16 v0, p1
iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
move-object/from16 v20, v0
move-object/from16 v0, v20
invoke-virtual {v0, v4}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;
move-result-object v4
.line 4916
invoke-virtual {v4}, Lorg/bitcoinj/core/TransactionInput;->getScriptBytes()[B
move-result-object v4
array-length v4, v4
if-nez v4, :cond_1af
const/4 v4, 0x1
:goto_15e
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
goto :goto_13e
.line 4857
:cond_162
const/4 v13, 0x0
goto/16 :goto_ab
.line 4899
:cond_165
invoke-virtual {v15}, Lorg/bitcoinj/core/TransactionOutput;->unsafeBitcoinSerialize()[B
move-result-object v12
array-length v12, v12
move-object/from16 v0, p1
iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v14}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v14
invoke-interface {v14}, Ljava/util/List;->size()I
move-result v14
int-to-long v0, v14
move-wide/from16 v20, v0
invoke-static/range {v20 .. v21}, Lorg/bitcoinj/core/VarInt;->sizeOf(J)I
move-result v14
add-int/2addr v12, v14
move-object/from16 v0, p1
iget-object v14, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v14}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v14
invoke-interface {v14}, Ljava/util/List;->size()I
move-result v14
add-int/lit8 v14, v14, -0x1
int-to-long v0, v14
move-wide/from16 v20, v0
invoke-static/range {v20 .. v21}, Lorg/bitcoinj/core/VarInt;->sizeOf(J)I
move-result v14
sub-int/2addr v12, v14
add-int/lit8 v12, v12, 0x0
.line 4901
if-nez v13, :cond_199
.line 4902
const/4 v4, 0x0
:cond_199
move-object v14, v15
move/from16 v15, v16
move/from16 v16, v12
move-object v12, v4
.line 4904
goto :goto_136
.line 4905
:cond_1a0
if-eqz v13, :cond_29a
.line 4907
const/4 v4, 0x1
.line 4908
sget-object v12, Lorg/bitcoinj/core/Transaction;->REFERENCE_DEFAULT_MIN_TX_FEE:Lorg/bitcoinj/core/Coin;
sget-object v15, Lorg/bitcoinj/core/Coin;->SATOSHI:Lorg/bitcoinj/core/Coin;
invoke-virtual {v12, v15}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v12
move v15, v4
move/from16 v16, v17
goto :goto_136
.line 4916
:cond_1af
const/4 v4, 0x0
goto :goto_15e
.line 4921
:cond_1b1
move-object/from16 v0, p1
iget-object v4, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v4}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v4
array-length v4, v4
add-int v4, v4, v16
.line 4922
move-object/from16 v0, p0
move-object/from16 v1, v19
invoke-direct {v0, v1}, Lorg/bitcoinj/wallet/Wallet;->estimateBytesForSigning(Lorg/bitcoinj/wallet/CoinSelection;)I
move-result v16
add-int v4, v4, v16
.line 4923
if-le v4, v5, :cond_1d7
move-object/from16 v0, p1
iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
move-object/from16 v16, v0
invoke-virtual/range {v16 .. v16}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v16
if-lez v16, :cond_1d7
move v5, v4
.line 4927
goto/16 :goto_1b
.line 4930
:cond_1d7
if-eqz v15, :cond_1f7
.line 4931
if-nez v10, :cond_293
move-object v4, v6
move-object v6, v7
move-object v7, v8
move-object v8, v9
move-object/from16 v9, v19
.line 4948
:goto_1e1
if-eqz v12, :cond_28a
.line 4949
if-eqz v11, :cond_282
.line 4950
invoke-virtual {v12, v11}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v10
if-lez v10, :cond_231
const/4 v10, 0x1
:goto_1ec
invoke-static {v10}, Lcom/google/common/base/n;->checkState(Z)V
move-object v10, v9
move-object v11, v12
move-object v9, v8
move-object v8, v7
move-object v7, v6
move-object v6, v4
goto/16 :goto_1b
.line 4933
:cond_1f7
if-eqz v13, :cond_21a
.line 4936
if-nez v9, :cond_218
const/4 v4, 0x1
:goto_1fc
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
.line 4937
sget-object v4, Lorg/bitcoinj/core/Coin;->CENT:Lorg/bitcoinj/core/Coin;
invoke-virtual {v12, v4}, Lorg/bitcoinj/core/Coin;->equals(Ljava/lang/Object;)Z
move-result v4
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
.line 4939
invoke-static {v14}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lorg/bitcoinj/core/TransactionOutput;
move-object/from16 v8, v19
move-object v9, v10
move-object/from16 v22, v4
move-object v4, v6
move-object v6, v7
move-object/from16 v7, v22
goto :goto_1e1
.line 4936
:cond_218
const/4 v4, 0x0
goto :goto_1fc
.line 4942
:cond_21a
if-nez v7, :cond_22d
const/4 v4, 0x1
:goto_21d
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
.line 4943
if-nez v12, :cond_22f
const/4 v4, 0x1
:goto_223
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
move-object v4, v14
move-object/from16 v6, v19
move-object v7, v8
move-object v8, v9
move-object v9, v10
.line 4945
goto :goto_1e1
.line 4942
:cond_22d
const/4 v4, 0x0
goto :goto_21d
.line 4943
:cond_22f
const/4 v4, 0x0
goto :goto_223
.line 4950
:cond_231
const/4 v10, 0x0
goto :goto_1ec
.line 4964
:cond_233
const/4 v5, 0x0
.line 4965
new-instance v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;
const/4 v4, 0x0
invoke-direct {v11, v4}, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;-><init>(Lorg/bitcoinj/wallet/Wallet$1;)V
.line 4966
if-eqz v7, :cond_24d
.line 4967
if-eqz v6, :cond_27d
.line 4968
iget-object v4, v7, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v6}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v5
invoke-virtual {v4, v5}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 4971
:goto_248
iput-object v7, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;
.line 4972
iput-object v6, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;
move-object v5, v4
.line 4975
:cond_24d
if-eqz v9, :cond_280
.line 4976
iget-object v6, v9, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-static {v8}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lorg/bitcoinj/core/TransactionOutput;
invoke-virtual {v4}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v4
invoke-virtual {v6, v4}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 4977
if-eqz v5, :cond_267
invoke-virtual {v4, v5}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v6
if-gez v6, :cond_280
.line 4979
:cond_267
iput-object v9, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;
.line 4980
iput-object v8, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;
.line 4984
:goto_26b
if-eqz v10, :cond_27c
.line 4985
if-eqz v4, :cond_277
iget-object v5, v10, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v5, v4}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v4
if-gez v4, :cond_27c
.line 4986
:cond_277
iput-object v10, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;
.line 4987
const/4 v4, 0x0
iput-object v4, v11, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;
.line 4990
:cond_27c
return-object v11
.line 4970
:cond_27d
iget-object v4, v7, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
goto :goto_248
:cond_280
move-object v4, v5
goto :goto_26b
:cond_282
move-object v10, v9
move-object v11, v12
move-object v9, v8
move-object v8, v7
move-object v7, v6
move-object v6, v4
goto/16 :goto_1b
:cond_28a
move-object v10, v9
move-object v9, v8
move-object v8, v7
move-object v7, v6
move-object v6, v4
move-object/from16 v4, v18
goto/16 :goto_72
:cond_293
move-object v4, v6
move-object v6, v7
move-object v7, v8
move-object v8, v9
move-object v9, v10
goto/16 :goto_1e1
:cond_29a
move/from16 v15, v16
move-object v12, v4
move/from16 v16, v17
goto/16 :goto_136
:cond_2a1
move-object v4, v11
goto/16 :goto_eb
.end method
.method public canSignFor(Lorg/bitcoinj/script/Script;)Z
.registers 7
.prologue
const/4 v2, 0x0
const/4 v1, 0x1
.line 4145
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v0
if-eqz v0, :cond_22
.line 4146
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKey()[B
move-result-object v0
.line 4147
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
.line 4148
if-eqz v0, :cond_20
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v3
if-nez v3, :cond_1e
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z
move-result v0
if-eqz v0, :cond_20
:cond_1e
move v0, v1
.line 4175
:goto_1f
return v0
:cond_20
move v0, v2
.line 4148
goto :goto_1f
.line 4149
:cond_22
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_3e
.line 4150
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
move-result-object v0
.line 4151
if-eqz v0, :cond_3c
iget-object v0, v0, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->canSignFor(Lorg/bitcoinj/script/Script;)Z
move-result v0
if-eqz v0, :cond_3c
move v0, v1
goto :goto_1f
:cond_3c
move v0, v2
goto :goto_1f
.line 4152
:cond_3e
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_5e
.line 4153
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
.line 4154
if-eqz v0, :cond_5c
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v3
if-nez v3, :cond_5a
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z
move-result v0
if-eqz v0, :cond_5c
:cond_5a
move v0, v1
goto :goto_1f
:cond_5c
move v0, v2
goto :goto_1f
.line 4155
:cond_5e
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-eqz v0, :cond_90
.line 4156
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getPubKeys()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_6c
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_ca
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
.line 4157
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->getPubKey()[B
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
.line 4158
if-eqz v0, :cond_6c
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v4
if-nez v4, :cond_8e
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z
move-result v0
if-eqz v0, :cond_6c
:cond_8e
move v0, v1
.line 4159
goto :goto_1f
.line 4161
:cond_90
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z
move-result v0
if-eqz v0, :cond_ca
.line 4163
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getCLTVPaymentChannelSenderPubKey()[B
move-result-object v0
.line 4164
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
move-result-object v3
.line 4165
if-eqz v3, :cond_af
invoke-virtual {v3}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v4
if-nez v4, :cond_ac
invoke-virtual {v3}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z
move-result v3
if-eqz v3, :cond_af
:cond_ac
move v0, v1
.line 4166
goto/16 :goto_1f
.line 4168
:cond_af
invoke-virtual {p1}, Lorg/bitcoinj/script/Script;->getCLTVPaymentChannelRecipientPubKey()[B
.line 4169
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
.line 4170
if-eqz v0, :cond_c7
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v3
if-nez v3, :cond_c4
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->hasPrivKey()Z
move-result v0
if-eqz v0, :cond_c7
:cond_c4
move v0, v1
.line 4171
goto/16 :goto_1f
:cond_c7
move v0, v2
.line 4173
goto/16 :goto_1f
:cond_ca
move v0, v2
.line 4175
goto/16 :goto_1f
.end method
.method public changeEncryptionKey(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;Lorg/spongycastle/crypto/params/KeyParameter;)V
.registers 6
.prologue
.line 1266
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1268
:try_start_5
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
.line 1269
invoke-virtual {p0, p1, p3}, Lorg/bitcoinj/wallet/Wallet;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_b
.catchall {:try_start_5 .. :try_end_b} :catchall_11
.line 1271
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1272
return-void
.line 1271
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public changeEncryptionPassword(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
.registers 5
.prologue
.line 1255
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1257
:try_start_5
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->decrypt(Ljava/lang/CharSequence;)V
.line 1258
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->encrypt(Ljava/lang/CharSequence;)V
:try_end_b
.catchall {:try_start_5 .. :try_end_b} :catchall_11
.line 1260
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1261
return-void
.line 1260
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public checkAESKey(Lorg/spongycastle/crypto/params/KeyParameter;)Z
.registers 4
.prologue
.line 1208
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1210
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->checkAESKey(Lorg/spongycastle/crypto/params/KeyParameter;)Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 1212
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1210
return v0
.line 1212
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public checkForFilterExhaustion(Lorg/bitcoinj/core/FilteredBlock;)Z
.registers 7
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 4692
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4694
:try_start_7
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I
move-result v3
.line 4695
invoke-virtual {p1}, Lorg/bitcoinj/core/FilteredBlock;->getAssociatedTransactions()Ljava/util/Map;
move-result-object v0
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v4
:goto_19
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_30
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 4696
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
:try_end_28
.catchall {:try_start_7 .. :try_end_28} :catchall_29
goto :goto_19
.line 4705
:catchall_29
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 4698
:cond_30
:try_start_30
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I
move-result v4
.line 4699
if-lt v4, v3, :cond_45
move v0, v1
:goto_39
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
:try_end_3c
.catchall {:try_start_30 .. :try_end_3c} :catchall_29
.line 4703
if-le v4, v3, :cond_47
move v0, v1
.line 4705
:goto_3f
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4703
return v0
:cond_45
move v0, v2
.line 4699
goto :goto_39
:cond_47
move v0, v2
.line 4703
goto :goto_3f
.end method
.method public checkPassword(Ljava/lang/CharSequence;)Z
.registers 4
.prologue
.line 1194
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1196
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->checkPassword(Ljava/lang/CharSequence;)Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 1198
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1196
return v0
.line 1198
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public cleanup()V
.registers 7
.prologue
.line 3053
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3055
const/4 v0, 0x0
.line 3056
:try_start_6
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v2
move v1, v0
:cond_11
:goto_11
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_ae
.line 3057
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 3058
const/4 v3, 0x0
invoke-virtual {p0, v0, v3}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z
move-result v3
if-eqz v3, :cond_11
iget-boolean v3, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
if-nez v3, :cond_11
.line 3059
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "Found risky transaction {} in wallet during cleanup."
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v5
invoke-interface {v3, v4, v5}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;Ljava/lang/Object;)V
.line 3060
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isAnyOutputSpent()Z
move-result v3
if-nez v3, :cond_a1
.line 3062
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_41
:goto_41
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_6d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionInput;
.line 3063
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v4
.line 3064
if-eqz v4, :cond_41
.line 3065
invoke-virtual {v4, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v5
if-eqz v5, :cond_62
.line 3066
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v5, v4}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
move-result v4
invoke-static {v4}, Lcom/google/common/base/n;->checkState(Z)V
.line 3067
:cond_62
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z
:try_end_65
.catchall {:try_start_6 .. :try_end_65} :catchall_66
goto :goto_41
.line 3090
:catchall_66
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3069
:cond_6d
:try_start_6d
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_75
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_87
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionOutput;
.line 3070
iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v4, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
goto :goto_75
.line 3072
:cond_87
invoke-interface {v2}, Ljava/util/Iterator;->remove()V
.line 3073
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 3074
const/4 v1, 0x1
.line 3075
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "Removed transaction {} from pending pool during cleanup."
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v0
invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto/16 :goto_11
.line 3077
:cond_a1
sget-object v3, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "Cannot remove transaction {} from pending pool during cleanup, as it\'s already spent partially."
.line 3079
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v0
.line 3077
invoke-interface {v3, v4, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto/16 :goto_11
.line 3083
:cond_ae
if-eqz v1, :cond_cf
.line 3084
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
.line 3085
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
.line 3086
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z
move-result v0
if-eqz v0, :cond_cf
.line 3087
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Estimated balance is now: {}"
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_cf
.catchall {:try_start_6d .. :try_end_cf} :catchall_66
.line 3090
:cond_cf
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3091
return-void
.end method
.method public clearTransactions(I)V
.registers 4
.prologue
.line 2996
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2998
if-nez p1, :cond_13
.line 2999
:try_start_7
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->clearTransactions()V
.line 3000
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
:try_end_d
.catchall {:try_start_7 .. :try_end_d} :catchall_19
.line 3005
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3006
return-void
.line 3002
:cond_13
:try_start_13
new-instance v0, Ljava/lang/UnsupportedOperationException;
invoke-direct {v0}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw v0
:try_end_19
.catchall {:try_start_13 .. :try_end_19} :catchall_19
.line 3005
:catchall_19
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public commitTx(Lorg/bitcoinj/core/Transaction;)V
.registers 4
.prologue
.line 2498
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->maybeCommitTx(Lorg/bitcoinj/core/Transaction;)Z
move-result v0
const-string v1, "commitTx called on the same transaction twice"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 2499
return-void
.end method
.method public completeTx(Lorg/bitcoinj/wallet/SendRequest;)V
.registers 10
.prologue
const/4 v6, 0x0
const/4 v4, 0x1
.line 3923
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3925
:try_start_7
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->completed:Z
if-nez v0, :cond_34
move v0, v4
:goto_c
const-string v1, "Given SendRequest has already been completed."
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 3927
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3928
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
move-object v2, v0
:goto_1e
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_36
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 3929
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
move-object v2, v0
.line 3930
goto :goto_1e
:cond_34
move v0, v6
.line 3925
goto :goto_c
.line 3932
:cond_36
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Completing send tx with {} outputs totalling {} and a fee of {}/kB"
const/4 v3, 0x3
new-array v3, v3, [Ljava/lang/Object;
const/4 v5, 0x0
iget-object v7, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v7
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v7
invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v7
aput-object v7, v3, v5
const/4 v5, 0x1
.line 3933
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v7
aput-object v7, v3, v5
const/4 v5, 0x2
iget-object v7, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
invoke-virtual {v7}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v7
aput-object v7, v3, v5
.line 3932
invoke-interface {v0, v1, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;[Ljava/lang/Object;)V
.line 3936
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3937
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
move-object v1, v0
:goto_6e
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_9d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 3938
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v5
if-eqz v5, :cond_8e
.line 3939
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
move-object v1, v0
goto :goto_6e
.line 3941
:cond_8e
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "SendRequest transaction already has inputs but we don\'t know how much they are worth - they will be added to fee."
invoke-interface {v0, v5}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
:try_end_95
.catchall {:try_start_7 .. :try_end_95} :catchall_96
goto :goto_6e
.line 4024
:catchall_96
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3942
:cond_9d
:try_start_9d
invoke-virtual {v2, v1}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v2
.line 3944
new-instance v3, Ljava/util/ArrayList;
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-direct {v3, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 3947
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
if-eqz v0, :cond_ed
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
if-nez v0, :cond_ed
.line 3949
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
move v1, v6
:goto_bf
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_e5
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 3950
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isDust()Z
move-result v7
if-eqz v7, :cond_d7
.line 3951
new-instance v0, Lorg/bitcoinj/wallet/Wallet$DustySendRequested;
invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$DustySendRequested;-><init>()V
throw v0
.line 3952
:cond_d7
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isOpReturn()Z
move-result v0
if-eqz v0, :cond_1f1
.line 3953
add-int/lit8 v0, v1, 0x1
:goto_e3
move v1, v0
.line 3954
goto :goto_bf
.line 3955
:cond_e5
if-le v1, v4, :cond_ed
.line 3956
new-instance v0, Lorg/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;
invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$MultipleOpReturnRequested;-><init>()V
throw v0
.line 3963
:cond_ed
const/4 v1, 0x1
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
sget-object v5, Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;->THROW:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
if-ne v0, v5, :cond_124
move v0, v4
:goto_f5
invoke-virtual {p0, v1, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v5
.line 3966
const/4 v0, 0x0
.line 3967
iget-boolean v1, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
if-nez v1, :cond_126
.line 3969
iget-boolean v4, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
move-object v0, p0
move-object v1, p1
invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet;->calculateFee(Lorg/bitcoinj/wallet/SendRequest;Lorg/bitcoinj/core/Coin;Ljava/util/List;ZLjava/util/List;)Lorg/bitcoinj/wallet/Wallet$FeeCalculation;
move-result-object v0
.line 3970
iget-object v1, v0, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestCoinSelection:Lorg/bitcoinj/wallet/CoinSelection;
.line 3971
iget-object v0, v0, Lorg/bitcoinj/wallet/Wallet$FeeCalculation;->bestChangeOutput:Lorg/bitcoinj/core/TransactionOutput;
move-object v2, v1
move-object v1, v0
.line 3983
:goto_10c
iget-object v0, v2, Lorg/bitcoinj/wallet/CoinSelection;->gathered:Ljava/util/Collection;
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_112
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_16a
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 3984
iget-object v4, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v4, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;
goto :goto_112
:cond_124
move v0, v6
.line 3963
goto :goto_f5
.line 3975
:cond_126
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
if-ne v1, v4, :cond_165
move v1, v4
:goto_133
const-string v2, "Empty wallet TX must have a single output only."
invoke-static {v1, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 3976
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
if-nez v1, :cond_167
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.line 3977
:goto_13e
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v2}, Lorg/bitcoinj/core/NetworkParameters;->getMaxMoney()Lorg/bitcoinj/core/Coin;
move-result-object v2
invoke-interface {v1, v2, v5}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;
move-result-object v1
.line 3979
iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
const-wide/16 v4, 0x0
invoke-virtual {v2, v4, v5}, Lorg/bitcoinj/core/Transaction;->getOutput(J)Lorg/bitcoinj/core/TransactionOutput;
move-result-object v2
iget-object v3, v1, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionOutput;->setValue(Lorg/bitcoinj/core/Coin;)V
.line 3980
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, " emptying {}"
iget-object v4, v1, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v4
invoke-interface {v2, v3, v4}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
move-object v2, v1
move-object v1, v0
goto :goto_10c
:cond_165
move v1, v6
.line 3975
goto :goto_133
.line 3976
:cond_167
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
goto :goto_13e
.line 3986
:cond_16a
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
if-eqz v0, :cond_187
.line 3987
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
if-nez v0, :cond_184
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3988
:goto_174
iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
iget-boolean v4, p1, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
invoke-direct {p0, v3, v2, v0, v4}, Lorg/bitcoinj/wallet/Wallet;->adjustOutputDownwardsForFee(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/wallet/CoinSelection;Lorg/bitcoinj/core/Coin;Z)Z
move-result v0
if-nez v0, :cond_187
.line 3989
new-instance v0, Lorg/bitcoinj/wallet/Wallet$CouldNotAdjustDownwards;
invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$CouldNotAdjustDownwards;-><init>()V
throw v0
.line 3987
:cond_184
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
goto :goto_174
.line 3992
:cond_187
if-eqz v1, :cond_19d
.line 3993
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionOutput;
.line 3994
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, " with {} change"
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v2, v1}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 3998
:cond_19d
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z
if-eqz v0, :cond_1a6
.line 3999
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->shuffleOutputs()V
.line 4002
:cond_1a6
iget-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->signInputs:Z
if-eqz v0, :cond_1ad
.line 4003
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V
.line 4006
:cond_1ad
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->unsafeBitcoinSerialize()[B
move-result-object v0
array-length v0, v0
.line 4007
const v1, 0x186a0
if-le v0, v1, :cond_1bf
.line 4008
new-instance v0, Lorg/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;
invoke-direct {v0}, Lorg/bitcoinj/wallet/Wallet$ExceededMaxTransactionSize;-><init>()V
throw v0
.line 4013
:cond_1bf
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->SELF:Lorg/bitcoinj/core/TransactionConfidence$Source;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence;->setSource(Lorg/bitcoinj/core/TransactionConfidence$Source;)V
.line 4017
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
sget-object v1, Lorg/bitcoinj/core/Transaction$Purpose;->USER_PAYMENT:Lorg/bitcoinj/core/Transaction$Purpose;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setPurpose(Lorg/bitcoinj/core/Transaction$Purpose;)V
.line 4019
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->exchangeRate:Lorg/bitcoinj/utils/ExchangeRate;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setExchangeRate(Lorg/bitcoinj/utils/ExchangeRate;)V
.line 4020
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->memo:Ljava/lang/String;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Transaction;->setMemo(Ljava/lang/String;)V
.line 4021
const/4 v0, 0x1
iput-boolean v0, p1, Lorg/bitcoinj/wallet/SendRequest;->completed:Z
.line 4022
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, " completed: {}"
iget-object v2, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_1eb
.catchall {:try_start_9d .. :try_end_1eb} :catchall_96
.line 4024
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4025
return-void
:cond_1f1
move v0, v1
goto/16 :goto_e3
.end method
.method public createSend(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Transaction;
.registers 6
.prologue
.line 3743
invoke-static {p1, p2}, Lorg/bitcoinj/wallet/SendRequest;->to(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
.line 3744
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;
move-result-object v1
const-string v2, "org.bitcoinj.unittest"
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_15
.line 3745
const/4 v1, 0x0
iput-boolean v1, v0, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z
.line 3746
:cond_15
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->completeTx(Lorg/bitcoinj/wallet/SendRequest;)V
.line 3747
iget-object v0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
return-object v0
.end method
.method public currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
.registers 4
.prologue
.line 433
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 435
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 436
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_14
move-result-object v0
.line 438
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 436
return-object v0
.line 438
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public currentChangeAddress()Lorg/bitcoinj/core/Address;
.registers 2
.prologue
.line 652
sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->CHANGE:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
move-result-object v0
return-object v0
.end method
.method public currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 4
.prologue
.line 412
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 414
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 415
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_14
move-result-object v0
.line 417
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 415
return-object v0
.line 417
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public currentReceiveAddress()Lorg/bitcoinj/core/Address;
.registers 2
.prologue
.line 447
sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
move-result-object v0
return-object v0
.end method
.method public currentReceiveKey()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 2
.prologue
.line 426
sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->currentKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public decrypt(Ljava/lang/CharSequence;)V
.registers 5
.prologue
.line 1159
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1161
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v1
.line 1162
if-eqz v1, :cond_25
const/4 v0, 0x1
:goto_e
const-string v2, "Not encrypted"
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 1163
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-interface {v1, p1}, Lorg/bitcoinj/crypto/KeyCrypter;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_1c
.catchall {:try_start_5 .. :try_end_1c} :catchall_27
.line 1165
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1167
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 1168
return-void
.line 1162
:cond_25
const/4 v0, 0x0
goto :goto_e
.line 1165
:catchall_27
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
.registers 4
.prologue
.line 1177
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1179
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_13
.line 1181
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1183
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 1184
return-void
.line 1181
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public deserializeExtension(Lorg/bitcoinj/wallet/WalletExtension;[B)V
.registers 6
.prologue
.line 4783
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4784
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4787
:try_start_a
invoke-interface {p1, p0, p2}, Lorg/bitcoinj/wallet/WalletExtension;->deserializeWalletExtension(Lorg/bitcoinj/wallet/Wallet;[B)V
.line 4788
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-interface {p1}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_16
.catch Ljava/lang/Throwable; {:try_start_a .. :try_end_16} :catch_21
.catchall {:try_start_a .. :try_end_16} :catchall_40
.line 4794
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4795
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4796
:goto_20
return-void
.line 4789
:catch_21
move-exception v0
.line 4790
:try_start_22
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Error during extension deserialization"
invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 4791
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-interface {p1}, Lorg/bitcoinj/wallet/WalletExtension;->getWalletExtensionID()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 4792
invoke-static {v0}, Lcom/google/common/base/v;->c(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
:try_end_35
.catchall {:try_start_22 .. :try_end_35} :catchall_40
.line 4794
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4795
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_20
.line 4794
:catchall_40
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4795
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public doMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/spongycastle/crypto/params/KeyParameter;",
"Z)",
"Lcom/google/common/util/concurrent/y",
"<",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;>;"
}
.end annotation
.prologue
.line 5147
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 5148
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 5150
:try_start_a
invoke-direct {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->maybeRotateKeys(Lorg/spongycastle/crypto/params/KeyParameter;Z)Ljava/util/List;
move-result-object v1
.line 5151
if-nez p2, :cond_1f
.line 5152
invoke-static {v1}, Lcom/google/common/util/concurrent/r;->ag(Ljava/lang/Object;)Lcom/google/common/util/concurrent/y;
:try_end_13
.catchall {:try_start_a .. :try_end_13} :catchall_6d
move-result-object v0
.line 5154
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5155
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5179
:goto_1e
return-object v0
.line 5154
:cond_1f
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5155
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5157
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
if-nez v0, :cond_79
const/4 v0, 0x1
:goto_32
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 5158
new-instance v2, Ljava/util/ArrayList;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v0
invoke-direct {v2, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 5159
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
.line 5160
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_44
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_7b
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 5162
:try_start_50
invoke-interface {v3, v0}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionBroadcast;->future()Lcom/google/common/util/concurrent/y;
move-result-object v0
.line 5163
invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 5164
new-instance v4, Lorg/bitcoinj/wallet/Wallet$10;
invoke-direct {v4, p0}, Lorg/bitcoinj/wallet/Wallet$10;-><init>(Lorg/bitcoinj/wallet/Wallet;)V
invoke-static {v0, v4}, Lcom/google/common/util/concurrent/r;->a(Lcom/google/common/util/concurrent/y;Lcom/google/common/util/concurrent/q;)V
:try_end_63
.catch Ljava/lang/Exception; {:try_start_50 .. :try_end_63} :catch_64
goto :goto_44
.line 5175
:catch_64
move-exception v0
.line 5176
sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "Failed to broadcast rekey tx"
invoke-interface {v4, v5, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_44
.line 5154
:catchall_6d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5155
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 5157
:cond_79
const/4 v0, 0x0
goto :goto_32
.line 5179
:cond_7b
invoke-static {v2}, Lcom/google/common/util/concurrent/r;->k(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/y;
move-result-object v0
goto :goto_1e
.end method
.method public encrypt(Ljava/lang/CharSequence;)V
.registers 5
.prologue
.line 1126
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1128
:try_start_5
new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterScrypt;
invoke-direct {v0}, Lorg/bitcoinj/crypto/KeyCrypterScrypt;-><init>()V
.line 1129
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/crypto/KeyCrypterScrypt;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;
move-result-object v2
invoke-virtual {v1, v0, v2}, Lorg/bitcoinj/wallet/KeyChainGroup;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_13
.catchall {:try_start_5 .. :try_end_13} :catchall_1c
.line 1131
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1133
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 1134
return-void
.line 1131
:catchall_1c
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
.registers 5
.prologue
.line 1145
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1147
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)V
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_13
.line 1149
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1151
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 1152
return-void
.line 1149
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public endBloomFilterCalculation()V
.registers 2
.prologue
.line 4589
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomFilterGuard:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I
move-result v0
if-lez v0, :cond_9
.line 4594
:goto_8
return-void
.line 4591
:cond_9
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V
.line 4592
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4593
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_8
.end method
.method public findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
.registers 4
.prologue
.line 983
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 985
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 987
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 985
return-object v0
.line 987
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
.registers 4
.prologue
.line 1025
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1027
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 1029
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1027
return-object v0
.line 1029
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
.registers 4
.prologue
.line 1046
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1048
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 1050
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1048
return-object v0
.line 1050
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
.registers 4
.prologue
.line 498
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 500
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_14
move-result-object v0
.line 502
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 504
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 505
return-object v0
.line 502
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public freshKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 4
.prologue
.line 459
const/4 v0, 0x1
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;
move-result-object v0
const/4 v1, 0x0
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/DeterministicKey;
return-object v0
.end method
.method public freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;",
"I)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/DeterministicKey;",
">;"
}
.end annotation
.prologue
.line 472
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 474
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 475
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->freshKeys(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;I)Ljava/util/List;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_17
move-result-object v0
.line 477
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 481
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 482
return-object v0
.line 477
:catchall_17
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public freshReceiveAddress()Lorg/bitcoinj/core/Address;
.registers 2
.prologue
.line 513
sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
move-result-object v0
return-object v0
.end method
.method public freshReceiveKey()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 2
.prologue
.line 490
sget-object v0, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->RECEIVE_FUNDS:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->freshKey(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
.registers 2
.prologue
.line 370
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v0
return-object v0
.end method
.method public getBalance()Lorg/bitcoinj/core/Coin;
.registers 2
.prologue
.line 3492
sget-object v0, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v0
return-object v0
.end method
.method public getBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;
.registers 4
.prologue
.line 3524
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3526
:try_start_5
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3527
const/4 v0, 0x1
const/4 v1, 0x0
invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v0
.line 3528
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getMaxMoney()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-interface {p1, v1, v0}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;
move-result-object v0
.line 3529
iget-object v0, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
:try_end_1a
.catchall {:try_start_5 .. :try_end_1a} :catchall_20
.line 3531
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3529
return-object v0
.line 3531
:catchall_20
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 3499
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3501
:try_start_7
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-eq p1, v2, :cond_f
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-ne p1, v2, :cond_2a
.line 3502
:cond_f
const/4 v2, 0x1
sget-object v3, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-ne p1, v3, :cond_28
:goto_14
invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v0
.line 3503
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
sget-object v2, Lorg/bitcoinj/core/NetworkParameters;->MAX_MONEY:Lorg/bitcoinj/core/Coin;
invoke-interface {v1, v2, v0}, Lorg/bitcoinj/wallet/CoinSelector;->select(Lorg/bitcoinj/core/Coin;Ljava/util/List;)Lorg/bitcoinj/wallet/CoinSelection;
move-result-object v0
.line 3504
iget-object v0, v0, Lorg/bitcoinj/wallet/CoinSelection;->valueGathered:Lorg/bitcoinj/core/Coin;
:try_end_22
.catchall {:try_start_7 .. :try_end_22} :catchall_67
.line 3514
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3509
:goto_27
return-object v0
:cond_28
move v0, v1
.line 3502
goto :goto_14
.line 3505
:cond_2a
:try_start_2a
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-eq p1, v2, :cond_32
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-ne p1, v2, :cond_5f
.line 3506
:cond_32
const/4 v2, 0x0
sget-object v3, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
if-ne p1, v3, :cond_56
:goto_37
invoke-virtual {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->calculateAllSpendCandidates(ZZ)Ljava/util/List;
move-result-object v0
.line 3507
sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3508
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_41
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_58
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
:try_end_54
.catchall {:try_start_2a .. :try_end_54} :catchall_67
move-result-object v1
goto :goto_41
:cond_56
move v0, v1
.line 3506
goto :goto_37
.line 3514
:cond_58
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-object v0, v1
.line 3509
goto :goto_27
.line 3511
:cond_5f
:try_start_5f
new-instance v0, Ljava/lang/AssertionError;
const-string v1, "Unknown balance type"
invoke-direct {v0, v1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
throw v0
:try_end_67
.catchall {:try_start_5f .. :try_end_67} :catchall_67
.line 3514
:catchall_67
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getBalanceFuture(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lcom/google/common/util/concurrent/y;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Coin;",
"Lorg/bitcoinj/wallet/Wallet$BalanceType;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/core/Coin;",
">;"
}
.end annotation
.prologue
.line 3557
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3559
:try_start_5
invoke-static {}, Lcom/google/common/util/concurrent/ao;->yj()Lcom/google/common/util/concurrent/ao;
move-result-object v0
.line 3560
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v1
.line 3561
invoke-virtual {v1, p1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v2
if-ltz v2, :cond_1c
.line 3563
invoke-virtual {v0, v1}, Lcom/google/common/util/concurrent/ao;->set(Ljava/lang/Object;)Z
:try_end_16
.catchall {:try_start_5 .. :try_end_16} :catchall_2e
.line 3576
:goto_16
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3574
return-object v0
.line 3568
:cond_1c
:try_start_1c
new-instance v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;
const/4 v2, 0x0
invoke-direct {v1, v2}, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;-><init>(Lorg/bitcoinj/wallet/Wallet$1;)V
.line 3569
iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->future:Lcom/google/common/util/concurrent/ao;
.line 3570
iput-object p1, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->value:Lorg/bitcoinj/core/Coin;
.line 3571
iput-object p2, v1, Lorg/bitcoinj/wallet/Wallet$BalanceFutureRequest;->type:Lorg/bitcoinj/wallet/Wallet$BalanceType;
.line 3572
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->balanceFutureRequests:Ljava/util/List;
invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:try_end_2d
.catchall {:try_start_1c .. :try_end_2d} :catchall_2e
goto :goto_16
.line 3576
:catchall_2e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getBloomFilter(D)Lorg/bitcoinj/core/BloomFilter;
.registers 10
.prologue
.line 4637
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V
.line 4639
:try_start_3
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBloomFilterElementCount()I
move-result v1
invoke-static {}, Ljava/lang/Math;->random()D
move-result-wide v2
const-wide/high16 v4, 0x43e0000000000000L # 9.223372036854776E18
mul-double/2addr v2, v4
double-to-long v4, v2
move-object v0, p0
move-wide v2, p1
invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet;->getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;
:try_end_14
.catchall {:try_start_3 .. :try_end_14} :catchall_19
move-result-object v0
.line 4641
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
.line 4639
return-object v0
.line 4641
:catchall_19
move-exception v0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
throw v0
.end method
.method public getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;
.registers 12
.prologue
.line 4658
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V
.line 4660
:try_start_3
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
move v1, p1
move-wide v2, p2
move-wide v4, p4
invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/wallet/KeyChainGroup;->getBloomFilter(IDJ)Lorg/bitcoinj/core/BloomFilter;
move-result-object v1
.line 4661
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_12
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_4a
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 4662
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getChunks()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_26
:goto_26
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_12
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 4666
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v4
if-nez v4, :cond_26
iget-object v4, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
array-length v4, v4
const/16 v5, 0x8
if-lt v4, v5, :cond_26
.line 4667
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/BloomFilter;->insert([B)V
:try_end_44
.catchall {:try_start_3 .. :try_end_44} :catchall_45
goto :goto_26
.line 4675
:catchall_45
move-exception v0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
throw v0
.line 4671
:cond_4a
:try_start_4a
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_50
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_64
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutPoint;
.line 4672
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->unsafeBitcoinSerialize()[B
move-result-object v0
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/BloomFilter;->insert([B)V
:try_end_63
.catchall {:try_start_4a .. :try_end_63} :catchall_45
goto :goto_50
.line 4675
:cond_64
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
.line 4673
return-object v1
.end method
.method public getBloomFilterElementCount()I
.registers 3
.prologue
.line 4602
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->beginBloomFilterCalculation()V
.line 4604
:try_start_3
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->bloomOutPoints:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
.line 4605
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v1}, Lorg/bitcoinj/wallet/KeyChainGroup;->getBloomFilterElementCount()I
move-result v1
add-int/2addr v0, v1
.line 4608
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v1}, Ljava/util/Set;->size()I
:try_end_15
.catchall {:try_start_3 .. :try_end_15} :catchall_1b
move-result v1
add-int/2addr v0, v1
.line 4611
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
.line 4609
return v0
.line 4611
:catchall_1b
move-exception v0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->endBloomFilterCalculation()V
throw v0
.end method
.method public getChangeAddress()Lorg/bitcoinj/core/Address;
.registers 2
.prologue
.line 658
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->currentChangeAddress()Lorg/bitcoinj/core/Address;
move-result-object v0
return-object v0
.end method
.method public getCoinSelector()Lorg/bitcoinj/wallet/CoinSelector;
.registers 3
.prologue
.line 4240
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4242
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 4244
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4242
return-object v0
.line 4244
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
")",
"Ljava/util/EnumSet",
"<",
"Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
">;"
}
.end annotation
.prologue
.line 3095
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3097
:try_start_5
const-class v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-static {v0}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v0
.line 3098
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
.line 3099
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_1c
.line 3100
sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z
.line 3102
:cond_1c
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_29
.line 3103
sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z
.line 3105
:cond_29
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_36
.line 3106
sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-virtual {v0, v2}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z
.line 3108
:cond_36
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v2, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_43
.line 3109
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-virtual {v0, v1}, Ljava/util/EnumSet;->add(Ljava/lang/Object;)Z
:try_end_43
.catchall {:try_start_5 .. :try_end_43} :catchall_49
.line 3113
:cond_43
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3111
return-object v0
.line 3113
:catchall_49
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getContext()Lorg/bitcoinj/core/Context;
.registers 2
.prologue
.line 1497
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;
return-object v0
.end method
.method public getDescription()Ljava/lang/String;
.registers 2
.prologue
.line 3432
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->description:Ljava/lang/String;
return-object v0
.end method
.method public getEarliestKeyCreationTime()J
.registers 7
.prologue
.line 3308
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3310
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getEarliestKeyCreationTime()J
move-result-wide v2
.line 3311
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_11
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_26
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 3312
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->getCreationTimeSeconds()J
move-result-wide v4
invoke-static {v4, v5, v2, v3}, Ljava/lang/Math;->min(JJ)J
move-result-wide v2
goto :goto_11
.line 3313
:cond_26
const-wide v0, 0x7fffffffffffffffL
cmp-long v0, v2, v0
if-nez v0, :cond_39
.line 3314
invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeSeconds()J
:try_end_32
.catchall {:try_start_5 .. :try_end_32} :catchall_40
move-result-wide v0
.line 3317
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3315
:goto_38
return-wide v0
.line 3317
:cond_39
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move-wide v0, v2
.line 3315
goto :goto_38
.line 3317
:catchall_40
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
.registers 3
.prologue
.line 1236
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1238
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v0
.line 1239
if-eqz v0, :cond_17
.line 1240
invoke-interface {v0}, Lorg/bitcoinj/crypto/KeyCrypter;->getUnderstoodEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
:try_end_10
.catchall {:try_start_5 .. :try_end_10} :catchall_1f
move-result-object v0
.line 1244
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1242
:goto_16
return-object v0
:cond_17
:try_start_17
sget-object v0, Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;->UNENCRYPTED:Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
:try_end_19
.catchall {:try_start_17 .. :try_end_19} :catchall_1f
.line 1244
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_16
:catchall_1f
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getExtensions()Ljava/util/Map;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Map",
"<",
"Ljava/lang/String;",
"Lorg/bitcoinj/wallet/WalletExtension;",
">;"
}
.end annotation
.prologue
.line 4769
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4771
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-static {v0}, Lcom/google/common/collect/ImmutableMap;->copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 4773
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4771
return-object v0
.line 4773
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getImportedKeys()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;"
}
.end annotation
.prologue
.line 642
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 644
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getImportedKeys()Ljava/util/List;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 646
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 644
return-object v0
.line 646
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getIssuedReceiveAddresses()Ljava/util/List;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Address;",
">;"
}
.end annotation
.prologue
.line 534
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getIssuedReceiveKeys()Ljava/util/List;
move-result-object v0
.line 535
new-instance v1, Ljava/util/ArrayList;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v2
invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(I)V
.line 536
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_11
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_29
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
.line 537
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v3
invoke-virtual {v0, v3}, Lorg/bitcoinj/core/ECKey;->toAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
move-result-object v0
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_11
.line 538
:cond_29
return-object v1
.end method
.method public getIssuedReceiveKeys()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;"
}
.end annotation
.prologue
.line 521
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 523
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getIssuedReceiveKeys()Ljava/util/List;
:try_end_e
.catchall {:try_start_5 .. :try_end_e} :catchall_15
move-result-object v0
.line 525
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 523
return-object v0
.line 525
:catchall_15
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyByPath(Ljava/util/List;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;)",
"Lorg/bitcoinj/crypto/DeterministicKey;"
}
.end annotation
.prologue
.line 1111
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1113
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 1114
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v0
const/4 v1, 0x0
invoke-virtual {v0, p1, v1}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getKeyByPath(Ljava/util/List;Z)Lorg/bitcoinj/crypto/DeterministicKey;
:try_end_12
.catchall {:try_start_5 .. :try_end_12} :catchall_19
move-result-object v0
.line 1116
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1114
return-object v0
.line 1116
:catchall_19
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyChainGroupCombinedKeyLookaheadEpochs()I
.registers 3
.prologue
.line 630
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 632
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getCombinedKeyLookaheadEpochs()I
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 634
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 632
return v0
.line 634
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyChainGroupLookaheadSize()I
.registers 3
.prologue
.line 770
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 772
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getLookaheadSize()I
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 774
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 772
return v0
.line 774
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyChainGroupLookaheadThreshold()I
.registers 3
.prologue
.line 791
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 793
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 794
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getLookaheadThreshold()I
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_14
move-result v0
.line 796
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 794
return v0
.line 796
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyChainGroupSize()I
.registers 3
.prologue
.line 620
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 622
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->numKeys()I
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 624
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 622
return v0
.line 624
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyChainSeed()Lorg/bitcoinj/wallet/DeterministicSeed;
.registers 3
.prologue
.line 1095
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1097
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getSeed()Lorg/bitcoinj/wallet/DeterministicSeed;
move-result-object v0
.line 1098
if-nez v0, :cond_1e
.line 1099
new-instance v0, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;
invoke-direct {v0}, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;-><init>()V
throw v0
:try_end_17
.catchall {:try_start_5 .. :try_end_17} :catchall_17
.line 1102
:catchall_17
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:cond_1e
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1100
return-object v0
.end method
.method public getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
.registers 3
.prologue
.line 1222
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1224
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 1226
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1224
return-object v0
.line 1226
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getKeyRotationTime()Ljava/util/Date;
.registers 7
.prologue
.line 5095
iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J
.line 5096
const-wide/16 v0, 0x0
cmp-long v0, v2, v0
if-eqz v0, :cond_11
.line 5097
new-instance v0, Ljava/util/Date;
const-wide/16 v4, 0x3e8
mul-long/2addr v2, v4
invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V
.line 5099
:goto_10
return-object v0
:cond_11
const/4 v0, 0x0
goto :goto_10
.end method
.method public getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;
.registers 3
.prologue
.line 3324
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3326
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3328
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3326
return-object v0
.line 3328
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getLastBlockSeenHeight()I
.registers 3
.prologue
.line 3396
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3398
:try_start_5
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3400
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3398
return v0
.line 3400
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getLastBlockSeenTime()Ljava/util/Date;
.registers 7
.prologue
.line 3384
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenTimeSecs()J
move-result-wide v2
.line 3385
const-wide/16 v0, 0x0
cmp-long v0, v2, v0
if-nez v0, :cond_c
.line 3386
const/4 v0, 0x0
.line 3388
:goto_b
return-object v0
:cond_c
new-instance v0, Ljava/util/Date;
const-wide/16 v4, 0x3e8
mul-long/2addr v2, v4
invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V
goto :goto_b
.end method
.method public getLastBlockSeenTimeSecs()J
.registers 4
.prologue
.line 3367
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3369
:try_start_5
iget-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3371
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3369
return-wide v0
.line 3371
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getNetworkParameters()Lorg/bitcoinj/core/NetworkParameters;
.registers 2
.prologue
.line 363
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
return-object v0
.end method
.method public getParams()Lorg/bitcoinj/core/NetworkParameters;
.registers 2
.prologue
.line 1492
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
return-object v0
.end method
.method public getPendingTransactions()Ljava/util/Collection;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Collection",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 3286
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3288
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-static {v0}, Ljava/util/Collections;->unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;
:try_end_e
.catchall {:try_start_5 .. :try_end_e} :catchall_15
move-result-object v0
.line 3290
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3288
return-object v0
.line 3290
:catchall_15
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getPoolSize(Lorg/bitcoinj/wallet/WalletTransaction$Pool;)I
.registers 4
.prologue
.line 3119
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3121
:try_start_5
sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I
move-result v1
aget v0, v0, v1
packed-switch v0, :pswitch_data_50
.line 3131
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Unreachable"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_18
.catchall {:try_start_5 .. :try_end_18} :catchall_18
.line 3133
:catchall_18
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3123
:pswitch_1f
:try_start_1f
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
:try_end_24
.catchall {:try_start_1f .. :try_end_24} :catchall_18
move-result v0
.line 3133
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3129
:goto_2a
return v0
.line 3125
:pswitch_2b
:try_start_2b
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
:try_end_30
.catchall {:try_start_2b .. :try_end_30} :catchall_18
move-result v0
.line 3133
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3127
:pswitch_37
:try_start_37
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
:try_end_3c
.catchall {:try_start_37 .. :try_end_3c} :catchall_18
move-result v0
.line 3133
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3129
:pswitch_43
:try_start_43
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
:try_end_48
.catchall {:try_start_43 .. :try_end_48} :catchall_18
move-result v0
.line 3133
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3121
nop
:pswitch_data_50
.packed-switch 0x1
:pswitch_1f
:pswitch_2b
:pswitch_37
:pswitch_43
.end packed-switch
.end method
.method public getRecentTransactions(IZ)Ljava/util/List;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(IZ)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 2914
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2916
if-ltz p1, :cond_3e
const/4 v0, 0x1
:goto_8
:try_start_8
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 2918
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->size()I
move-result v1
add-int/2addr v0, v1
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->size()I
move-result v1
add-int/2addr v0, v1
.line 2919
if-gt p1, v0, :cond_23
if-nez p1, :cond_24
:cond_23
move p1, v0
.line 2922
:cond_24
new-instance v0, Ljava/util/ArrayList;
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 2924
sget-object v1, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;
invoke-static {v0, v1}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
.line 2925
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
:try_end_35
.catchall {:try_start_8 .. :try_end_35} :catchall_51
move-result v1
if-ne p1, v1, :cond_40
.line 2932
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2929
:goto_3d
return-object v0
.line 2916
:cond_3e
const/4 v0, 0x0
goto :goto_8
.line 2928
:cond_40
:try_start_40
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v1
invoke-virtual {v0, p1, v1}, Ljava/util/ArrayList;->subList(II)Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->clear()V
:try_end_4b
.catchall {:try_start_40 .. :try_end_4b} :catchall_51
.line 2932
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_3d
:catchall_51
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getRiskAnalyzer()Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
.registers 3
.prologue
.line 1390
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1392
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 1394
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1392
return-object v0
.line 1394
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method protected getStoredOutputsFromUTXOProvider()Ljava/util/List;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/UTXO;",
">;"
}
.end annotation
.prologue
.line 4225
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
const-string v1, "No UTXO provider has been set"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/UTXOProvider;
.line 4226
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 4227
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getImportedKeys()Ljava/util/List;
move-result-object v1
.line 4228
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v3
invoke-virtual {v3}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getLeafKeys()Ljava/util/List;
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
.line 4229
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 4230
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:goto_27
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_42
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/ECKey;
.line 4231
new-instance v5, Lorg/bitcoinj/core/Address;
iget-object v6, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v1}, Lorg/bitcoinj/core/ECKey;->getPubKeyHash()[B
move-result-object v1
invoke-direct {v5, v6, v1}, Lorg/bitcoinj/core/Address;-><init>(Lorg/bitcoinj/core/NetworkParameters;[B)V
.line 4232
invoke-interface {v3, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_27
.line 4234
:cond_42
invoke-interface {v0, v3}, Lorg/bitcoinj/core/UTXOProvider;->getOpenTransactionOutputs(Ljava/util/List;)Ljava/util/List;
move-result-object v0
invoke-interface {v2, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
.line 4235
return-object v2
.end method
.method public getTotalReceived()Lorg/bitcoinj/core/Coin;
.registers 8
.prologue
.line 3608
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3612
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v4
move-object v2, v0
:goto_d
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_77
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 3613
sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3614
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v3
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
move-object v3, v1
:goto_24
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_40
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionOutput;
.line 3615
invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v6
if-eqz v6, :cond_7c
.line 3616
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-virtual {v3, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v1
:goto_3e
move-object v3, v1
.line 3618
goto :goto_24
.line 3619
:cond_40
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
move-object v1, v3
:goto_49
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_6b
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 3620
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
.line 3621
if-eqz v0, :cond_7a
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v3
if-eqz v3, :cond_7a
.line 3622
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
:goto_69
move-object v1, v0
.line 3624
goto :goto_49
.line 3625
:cond_6b
invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->isPositive()Z
move-result v0
if-eqz v0, :cond_78
.line 3626
invoke-virtual {v2, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
:goto_75
move-object v2, v0
.line 3628
goto :goto_d
.line 3629
:cond_77
return-object v2
:cond_78
move-object v0, v2
goto :goto_75
:cond_7a
move-object v0, v1
goto :goto_69
:cond_7c
move-object v1, v3
goto :goto_3e
.end method
.method public getTotalSent()Lorg/bitcoinj/core/Coin;
.registers 9
.prologue
.line 3641
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3643
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v5
move-object v2, v0
:goto_d
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_a6
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 3645
sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3646
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v3
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
move-object v3, v1
:goto_24
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_40
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionOutput;
.line 3647
invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v6
if-nez v6, :cond_a9
.line 3648
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-virtual {v3, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v1
:goto_3e
move-object v3, v1
.line 3650
goto :goto_24
.line 3653
:cond_40
sget-object v1, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 3654
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v4
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v6
move-object v4, v1
:goto_4b
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_6e
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/TransactionInput;
.line 3655
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v1
.line 3656
if-eqz v1, :cond_a7
invoke-virtual {v1, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v7
if-eqz v7, :cond_a7
.line 3657
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-virtual {v4, v1}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
move-object v1, v4
:goto_6c
move-object v4, v1
.line 3659
goto :goto_4b
.line 3662
:cond_6e
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getInputSum()Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 3663
if-eq v4, v0, :cond_9f
.line 3666
new-instance v1, Ljava/math/BigInteger;
invoke-virtual {v3}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v1, v3}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V
.line 3667
new-instance v3, Ljava/math/BigInteger;
invoke-virtual {v4}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;
move-result-object v4
invoke-direct {v3, v4}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v3}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v1
.line 3668
new-instance v3, Ljava/math/BigInteger;
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v3, v0}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v3}, Ljava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v0
.line 3669
invoke-virtual {v0}, Ljava/math/BigInteger;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;
move-result-object v3
.line 3671
:cond_9f
invoke-virtual {v2, v3}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
move-object v2, v0
.line 3673
goto/16 :goto_d
.line 3674
:cond_a6
return-object v2
:cond_a7
move-object v1, v4
goto :goto_6c
:cond_a9
move-object v1, v3
goto :goto_3e
.end method
.method public getTransaction(Lorg/bitcoinj/core/Sha256Hash;)Lorg/bitcoinj/core/Transaction;
.registers 4
.prologue
.line 2941
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2943
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_13
.line 2945
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2943
return-object v0
.line 2945
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getTransactionPool(Lorg/bitcoinj/wallet/WalletTransaction$Pool;)Ljava/util/Map;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/wallet/WalletTransaction$Pool;",
")",
"Ljava/util/Map",
"<",
"Lorg/bitcoinj/core/Sha256Hash;",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 2952
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2954
:try_start_5
sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I
move-result v1
aget v0, v0, v1
packed-switch v0, :pswitch_data_4c
.line 2964
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Unknown wallet transaction type "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_25
.catchall {:try_start_5 .. :try_end_25} :catchall_25
.line 2967
:catchall_25
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 2956
:pswitch_2c
:try_start_2c
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
:try_end_2e
.catchall {:try_start_2c .. :try_end_2e} :catchall_25
.line 2967
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2962
:goto_33
return-object v0
.line 2958
:pswitch_34
:try_start_34
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
:try_end_36
.catchall {:try_start_34 .. :try_end_36} :catchall_25
.line 2967
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_33
.line 2960
:pswitch_3c
:try_start_3c
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
:try_end_3e
.catchall {:try_start_3c .. :try_end_3e} :catchall_25
.line 2967
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_33
.line 2962
:pswitch_44
:try_start_44
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
:try_end_46
.catchall {:try_start_44 .. :try_end_46} :catchall_25
.line 2967
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_33
.line 2954
:pswitch_data_4c
.packed-switch 0x1
:pswitch_2c
:pswitch_34
:pswitch_3c
:pswitch_44
.end packed-switch
.end method
.method public getTransactionSigners()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/signers/TransactionSigner;",
">;"
}
.end annotation
.prologue
.line 392
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 394
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;
invoke-static {v0}, Lcom/google/common/collect/ImmutableList;->copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 396
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 394
return-object v0
.line 396
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getTransactions(Z)Ljava/util/Set;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(Z)",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
.line 2813
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2815
:try_start_5
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 2816
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 2817
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 2818
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 2819
if-eqz p1, :cond_30
.line 2820
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
:try_end_30
.catchall {:try_start_5 .. :try_end_30} :catchall_36
.line 2823
:cond_30
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2821
return-object v0
.line 2823
:catchall_36
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getTransactionsByTime()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
const/4 v0, 0x0
.line 2902
invoke-virtual {p0, v0, v0}, Lorg/bitcoinj/wallet/Wallet;->getRecentTransactions(IZ)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public getUTXOProvider()Lorg/bitcoinj/core/UTXOProvider;
.registers 3
.prologue
.line 4277
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4279
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 4281
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4279
return-object v0
.line 4281
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getUnspents()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.prologue
.line 3159
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3161
:try_start_5
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
:try_end_c
.catchall {:try_start_5 .. :try_end_c} :catchall_12
.line 3163
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3161
return-object v0
.line 3163
:catchall_12
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getVersion()I
.registers 2
.prologue
.line 3410
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->version:I
return v0
.end method
.method public getWalletTransactions()Ljava/lang/Iterable;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/lang/Iterable",
"<",
"Lorg/bitcoinj/wallet/WalletTransaction;",
">;"
}
.end annotation
.prologue
.line 2831
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2833
:try_start_5
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 2834
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->UNSPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v2
invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
.line 2835
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->SPENT:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v2
invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
.line 2836
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v2
invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
.line 2837
sget-object v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v2
invoke-static {v0, v1, v2}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransactionsToSet(Ljava/util/Set;Lorg/bitcoinj/wallet/WalletTransaction$Pool;Ljava/util/Collection;)V
:try_end_36
.catchall {:try_start_5 .. :try_end_36} :catchall_3c
.line 2840
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2838
return-object v0
.line 2840
:catchall_3c
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getWatchedAddresses()Ljava/util/List;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Address;",
">;"
}
.end annotation
.prologue
.line 962
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 964
:try_start_5
new-instance v1, Ljava/util/LinkedList;
invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V
.line 965
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_10
:goto_10
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_33
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 966
invoke-virtual {v0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v3
if-eqz v3, :cond_10
.line 967
iget-object v3, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/Script;->getToAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
move-result-object v0
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:try_end_2b
.catchall {:try_start_5 .. :try_end_2b} :catchall_2c
goto :goto_10
.line 970
:catchall_2c
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:cond_33
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 968
return-object v1
.end method
.method public getWatchedBalance()Lorg/bitcoinj/core/Coin;
.registers 2
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 3478
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;
move-result-object v0
return-object v0
.end method
.method public getWatchedBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;
.registers 3
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 3484
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/CoinSelector;)Lorg/bitcoinj/core/Coin;
move-result-object v0
return-object v0
.end method
.method public getWatchedOutputs(Z)Ljava/util/List;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(Z)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/TransactionOutput;",
">;"
}
.end annotation
.prologue
.line 3024
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3025
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 10232
:try_start_a
new-instance v1, Ljava/util/LinkedList;
invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V
.line 3028
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v2
invoke-static {v0, v2}, Lcom/google/common/collect/ay;->a(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;
move-result-object v0
invoke-interface {v0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_23
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_63
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 3029
if-eqz p1, :cond_37
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isMature()Z
move-result v3
if-eqz v3, :cond_23
.line 3030
:cond_37
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_3f
:goto_3f
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_23
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 3031
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
:try_end_4e
.catchall {:try_start_a .. :try_end_4e} :catchall_6e
move-result v4
if-eqz v4, :cond_3f
.line 3033
:try_start_51
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v4
.line 3034
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v5, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_3f
.line 3035
invoke-virtual {v1, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
:try_end_60
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_51 .. :try_end_60} :catch_61
.catchall {:try_start_51 .. :try_end_60} :catchall_6e
goto :goto_3f
.line 3039
:catch_61
move-exception v0
goto :goto_3f
.line 3043
:cond_63
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3044
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3041
return-object v1
.line 3043
:catchall_6e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3044
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getWatchedScripts()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/Script;",
">;"
}
.end annotation
.prologue
.line 594
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 596
:try_start_5
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
:try_end_c
.catchall {:try_start_5 .. :try_end_c} :catchall_12
.line 598
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 596
return-object v0
.line 598
:catchall_12
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public getWatchingKey()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 3
.prologue
.line 807
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 809
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 810
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getActiveKeyChain()Lorg/bitcoinj/wallet/DeterministicKeyChain;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/wallet/DeterministicKeyChain;->getWatchingKey()Lorg/bitcoinj/crypto/DeterministicKey;
:try_end_11
.catchall {:try_start_5 .. :try_end_11} :catchall_18
move-result-object v0
.line 812
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 810
return-object v0
.line 812
:catchall_18
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public hasKey(Lorg/bitcoinj/core/ECKey;)Z
.registers 4
.prologue
.line 993
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 995
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->hasKey(Lorg/bitcoinj/core/ECKey;)Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 997
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 995
return v0
.line 997
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public importKey(Lorg/bitcoinj/core/ECKey;)Z
.registers 5
.prologue
const/4 v1, 0x0
const/4 v0, 0x1
.line 679
new-array v2, v0, [Lorg/bitcoinj/core/ECKey;
aput-object p1, v2, v1
invoke-static {v2}, Lcom/google/common/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
move-result-object v2
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->importKeys(Ljava/util/List;)I
move-result v2
if-ne v2, v0, :cond_11
:goto_10
return v0
:cond_11
move v0, v1
goto :goto_10
.end method
.method public importKeys(Ljava/util/List;)I
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;)I"
}
.end annotation
.prologue
.line 697
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkNoDeterministicKeys(Ljava/util/List;)V
.line 699
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 701
:try_start_8
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeys(Ljava/util/List;)I
:try_end_d
.catchall {:try_start_8 .. :try_end_d} :catchall_17
move-result v0
.line 703
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 705
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 706
return v0
.line 703
:catchall_17
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public importKeysAndEncrypt(Ljava/util/List;Ljava/lang/CharSequence;)I
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;",
"Ljava/lang/CharSequence;",
")I"
}
.end annotation
.prologue
.line 718
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 720
:try_start_5
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v0
const-string v1, "Wallet is not encrypted"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 721
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v0
invoke-interface {v0, p2}, Lorg/bitcoinj/crypto/KeyCrypter;->deriveKey(Ljava/lang/CharSequence;)Lorg/spongycastle/crypto/params/KeyParameter;
move-result-object v0
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
:try_end_19
.catchall {:try_start_5 .. :try_end_19} :catchall_20
move-result v0
.line 723
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 721
return v0
.line 723
:catchall_20
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;",
"Lorg/spongycastle/crypto/params/KeyParameter;",
")I"
}
.end annotation
.prologue
.line 729
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 731
:try_start_5
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->checkNoDeterministicKeys(Ljava/util/List;)V
.line 732
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1, p2}, Lorg/bitcoinj/wallet/KeyChainGroup;->importKeysAndEncrypt(Ljava/util/List;Lorg/spongycastle/crypto/params/KeyParameter;)I
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_14
move-result v0
.line 734
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 732
return v0
.line 734
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isAcceptRiskyTransactions()Z
.registers 3
.prologue
.line 1364
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1366
:try_start_5
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 1368
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1366
return v0
.line 1368
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isAddressWatched(Lorg/bitcoinj/core/Address;)Z
.registers 3
.prologue
.line 837
invoke-static {p1}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;
move-result-object v0
.line 838
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->isWatchedScript(Lorg/bitcoinj/script/Script;)Z
move-result v0
return v0
.end method
.method public isConsistent()Z
.registers 4
.prologue
.line 1527
:try_start_0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
:try_end_3
.catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_3} :catch_5
.line 1528
const/4 v0, 0x1
.line 1536
:goto_4
return v0
.line 1529
:catch_5
move-exception v0
.line 1530
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-virtual {v0}, Ljava/lang/IllegalStateException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-interface {v1, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
.line 1532
:try_start_f
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->toString()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
:try_end_18
.catch Ljava/lang/RuntimeException; {:try_start_f .. :try_end_18} :catch_1a
.line 1536
:goto_18
const/4 v0, 0x0
goto :goto_4
.line 1533
:catch_1a
move-exception v0
.line 1534
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Printing inconsistent wallet failed"
invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_18
.end method
.method public isConsistentOrThrow()V
.registers 6
.prologue
.line 1545
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1547
const/4 v0, 0x1
:try_start_6
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v1
.line 1549
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
.line 1550
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_13
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2e
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1551
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-interface {v2, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
:try_end_26
.catchall {:try_start_6 .. :try_end_26} :catchall_27
goto :goto_13
.line 1576
:catchall_27
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 1554
:cond_2e
:try_start_2e
invoke-interface {v1}, Ljava/util/Set;->size()I
move-result v0
.line 1555
invoke-interface {v2}, Ljava/util/Set;->size()I
move-result v1
if-eq v0, v1, :cond_40
.line 1556
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Two transactions with same hash"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 1559
:cond_40
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->size()I
move-result v1
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
add-int/2addr v1, v2
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
add-int/2addr v1, v2
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
add-int/2addr v1, v2
.line 1560
if-eq v0, v1, :cond_7c
.line 1561
new-instance v2, Ljava/lang/IllegalStateException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Inconsistent wallet sizes: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v3, ", "
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v2, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v2
.line 1564
:cond_7c
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_86
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_b2
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1565
const/4 v2, 0x0
invoke-virtual {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z
move-result v2
if-nez v2, :cond_86
.line 1566
new-instance v1, Ljava/lang/IllegalStateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Inconsistent unspent tx: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v1
.line 1570
:cond_b2
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_bc
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_e8
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1571
const/4 v2, 0x1
invoke-virtual {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z
move-result v2
if-nez v2, :cond_bc
.line 1572
new-instance v1, Ljava/lang/IllegalStateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Inconsistent spent tx: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v1
:try_end_e8
.catchall {:try_start_2e .. :try_end_e8} :catchall_27
.line 1576
:cond_e8
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1577
return-void
.end method
.method public isDeterministicUpgradeRequired()Z
.registers 3
.prologue
.line 563
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 565
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isDeterministicUpgradeRequired()Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 567
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 565
return v0
.line 567
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isEncrypted()Z
.registers 3
.prologue
.line 1250
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getEncryptionType()Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
move-result-object v0
sget-object v1, Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;->UNENCRYPTED:Lorg/bitcoinj/wallet/Protos$Wallet$EncryptionType;
if-eq v0, v1, :cond_a
const/4 v0, 0x1
:goto_9
return v0
:cond_a
const/4 v0, 0x0
goto :goto_9
.end method
.method public isKeyRotating(Lorg/bitcoinj/core/ECKey;)Z
.registers 6
.prologue
.line 5121
iget-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J
.line 5122
const-wide/16 v2, 0x0
cmp-long v2, v0, v2
if-eqz v2, :cond_12
invoke-virtual {p1}, Lorg/bitcoinj/core/ECKey;->getCreationTimeSeconds()J
move-result-wide v2
cmp-long v0, v2, v0
if-gez v0, :cond_12
const/4 v0, 0x1
:goto_11
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method
.method public isPayToScriptHashMine([B)Z
.registers 3
.prologue
.line 1057
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findRedeemDataFromScriptHash([B)Lorg/bitcoinj/wallet/RedeemData;
move-result-object v0
if-eqz v0, :cond_8
const/4 v0, 0x1
:goto_7
return v0
:cond_8
const/4 v0, 0x0
goto :goto_7
.end method
.method public isPendingTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
.registers 6
.prologue
const/4 v0, 0x0
.line 1765
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1769
:try_start_6
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;
move-result-object v1
.line 1770
const-class v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-static {v2}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/EnumSet;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_34
.line 1771
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Received tx we already saw in a block or created ourselves: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
:try_end_2e
.catchall {:try_start_6 .. :try_end_2e} :catchall_4e
.line 1784
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1782
:goto_33
return v0
.line 1778
:cond_34
:try_start_34
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
move-result v1
if-nez v1, :cond_47
.line 1779
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Received tx that isn\'t relevant to this wallet, discarding."
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
:try_end_41
.catchall {:try_start_34 .. :try_end_41} :catchall_4e
.line 1784
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_33
:cond_47
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1782
const/4 v0, 0x1
goto :goto_33
.line 1784
:catchall_4e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isPubKeyHashMine([B)Z
.registers 3
.prologue
.line 1004
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubHash([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
if-eqz v0, :cond_8
const/4 v0, 0x1
:goto_7
return v0
:cond_8
const/4 v0, 0x0
goto :goto_7
.end method
.method public isPubKeyMine([B)Z
.registers 3
.prologue
.line 1036
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->findKeyFromPubKey([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
if-eqz v0, :cond_8
const/4 v0, 0x1
:goto_7
return v0
:cond_8
const/4 v0, 0x0
goto :goto_7
.end method
.method public isRequiringUpdateAllBloomFilter()Z
.registers 3
.prologue
.line 4624
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4626
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_16
move-result v0
if-nez v0, :cond_14
const/4 v0, 0x1
.line 4628
:goto_e
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4626
return v0
:cond_14
const/4 v0, 0x0
goto :goto_e
.line 4628
:catchall_16
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
.registers 4
.prologue
.line 1797
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1799
:try_start_5
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v0
if-gtz v0, :cond_25
.line 1800
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v0
if-gtz v0, :cond_25
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
.line 1801
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
:try_end_22
.catchall {:try_start_5 .. :try_end_22} :catchall_2e
move-result v0
if-nez v0, :cond_2c
:cond_25
const/4 v0, 0x1
.line 1803
:goto_26
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1799
return v0
.line 1801
:cond_2c
const/4 v0, 0x0
goto :goto_26
.line 1803
:catchall_2e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)Z"
}
.end annotation
.prologue
.line 1727
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1729
if-nez p2, :cond_b
.line 1730
:try_start_7
invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;
move-result-object p2
.line 1731
:cond_b
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
invoke-interface {v0, p0, p1, p2}, Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;->create(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Lorg/bitcoinj/wallet/RiskAnalysis;
move-result-object v0
.line 1732
invoke-interface {v0}, Lorg/bitcoinj/wallet/RiskAnalysis;->analyze()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
move-result-object v1
.line 1733
sget-object v2, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
if-eq v1, v2, :cond_27
.line 1734
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Pending transaction was considered risky: {}\n{}"
invoke-interface {v1, v2, v0, p1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_20
.catchall {:try_start_7 .. :try_end_20} :catchall_2e
.line 1739
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1735
const/4 v0, 0x1
.line 1737
:goto_26
return v0
.line 1739
:cond_27
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1737
const/4 v0, 0x0
goto :goto_26
.line 1739
:catchall_2e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method isTxConsistent(Lorg/bitcoinj/core/Transaction;Z)Z
.registers 9
.prologue
const/4 v2, 0x1
const/4 v3, 0x0
.line 1586
.line 1587
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
move v1, v2
:goto_b
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_43
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 1588
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
move-result v5
if-eqz v5, :cond_32
.line 1589
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v5
if-eqz v5, :cond_24
move v1, v3
.line 1590
:cond_24
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v0
if-eqz v0, :cond_40
.line 1591
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "isAvailableForSpending != spentBy"
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
.line 1601
:cond_31
:goto_31
return v3
.line 1595
:cond_32
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v0
if-nez v0, :cond_40
.line 1596
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "isAvailableForSpending != spentBy"
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->error(Ljava/lang/String;)V
goto :goto_31
:cond_40
move v0, v1
move v1, v0
.line 1600
goto :goto_b
.line 1601
:cond_43
if-ne v1, p2, :cond_31
move v3, v2
goto :goto_31
.end method
.method public isWatchedScript(Lorg/bitcoinj/script/Script;)Z
.registers 4
.prologue
.line 1010
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1012
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0, p1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 1014
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1012
return v0
.line 1014
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public isWatching()Z
.registers 3
.prologue
.line 824
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 826
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 827
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->isWatching()Z
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_14
move-result v0
.line 829
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 827
return v0
.line 829
:catchall_14
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public maybeCommitTx(Lorg/bitcoinj/core/Transaction;)Z
.registers 9
.prologue
const/4 v1, 0x1
const/4 v0, 0x0
.line 2402
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->verify()V
.line 2403
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2405
:try_start_a
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v2, v3}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
:try_end_13
.catchall {:try_start_a .. :try_end_13} :catchall_13f
move-result v2
if-eqz v2, :cond_1c
.line 2481
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2483
:goto_1b
return v0
.line 2407
:cond_1c
:try_start_1c
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "commitTx of {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v3
invoke-interface {v0, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2408
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;
move-result-object v3
.line 2409
invoke-static {}, Lorg/bitcoinj/core/Utils;->now()Ljava/util/Date;
move-result-object v0
invoke-virtual {p1, v0}, Lorg/bitcoinj/core/Transaction;->setUpdateTime(Ljava/util/Date;)V
.line 2411
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
.line 2412
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v2
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
move-object v2, v0
:cond_3d
:goto_3d
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_59
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 2413
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v5
if-eqz v5, :cond_3d
.line 2414
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
move-object v2, v0
.line 2415
goto :goto_3d
.line 2419
:cond_59
const/4 v0, 0x0
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V
.line 2421
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
move-result-object v0
.line 2422
iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
move-result-object v4
.line 2423
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-direct {p0, p1, v5}, Lorg/bitcoinj/wallet/Wallet;->findDoubleSpendsAgainst(Lorg/bitcoinj/core/Transaction;Ljava/util/Map;)Ljava/util/Set;
move-result-object v5
.line 2425
invoke-interface {v4}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-eqz v4, :cond_83
.line 2426
invoke-interface {v5}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-eqz v4, :cond_83
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
.line 2427
invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z
move-result v4
if-nez v4, :cond_f5
.line 2430
:cond_83
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "->dead: {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v5
invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2431
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->DEAD:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v0, v4}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V
.line 2432
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v0, p1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2433
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->DEAD:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 2455
:cond_a3
:goto_a3
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-interface {v0}, Lorg/slf4j/Logger;->isInfoEnabled()Z
move-result v0
if-eqz v0, :cond_bc
.line 2456
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "Estimated balance is now: {}"
sget-object v5, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v5}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v5
invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2460
:cond_bc
invoke-direct {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->markKeysAsUsed(Lorg/bitcoinj/core/Transaction;)V
:try_end_bf
.catchall {:try_start_1c .. :try_end_bf} :catchall_13f
.line 2462
:try_start_bf
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 2463
invoke-virtual {v3, v2}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
invoke-virtual {v4, v0}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v4
.line 2464
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v2
if-lez v2, :cond_d8
.line 2465
const/4 v2, 0x0
invoke-direct {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
.line 2466
invoke-virtual {p0, p1, v3, v4}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
.line 2468
:cond_d8
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->signum()I
move-result v0
if-lez v0, :cond_e1
.line 2469
invoke-virtual {p0, p1, v3, v4}, Lorg/bitcoinj/wallet/Wallet;->queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
.line 2471
:cond_e1
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
:try_end_e4
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_bf .. :try_end_e4} :catch_168
.catchall {:try_start_bf .. :try_end_e4} :catchall_13f
.line 2477
:try_start_e4
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
.line 2478
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V
.line 2479
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:try_end_ed
.catchall {:try_start_e4 .. :try_end_ed} :catchall_13f
.line 2481
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
move v0, v1
.line 2483
goto/16 :goto_1b
.line 2434
:cond_f5
:try_start_f5
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-eqz v4, :cond_103
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
.line 2435
invoke-direct {p0, p1, v4}, Lorg/bitcoinj/wallet/Wallet;->isNotSpendingTxnsInConfidenceType(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)Z
move-result v4
if-nez v4, :cond_146
.line 2439
:cond_103
sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "->pending (IN_CONFLICT): {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v6
invoke-interface {v4, v5, v6}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2440
sget-object v4, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v4, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 2441
invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 2442
const/4 v4, 0x1
invoke-virtual {p0, v4}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v4
invoke-virtual {p0, v0, v4}, Lorg/bitcoinj/wallet/Wallet;->addTransactionsDependingOn(Ljava/util/Set;Ljava/util/Set;)V
.line 2443
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v4
:goto_122
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_a3
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2444
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v5
sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v5, v6}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V
.line 2445
iget-object v5, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v6, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v5, v0, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_13e
.catchall {:try_start_f5 .. :try_end_13e} :catchall_13f
goto :goto_122
.line 2481
:catchall_13f
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 2450
:cond_146
:try_start_146
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v4, "->pending: {}"
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v5
invoke-interface {v0, v4, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 2451
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v0, v4}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V
.line 2452
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v0, p1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 2453
sget-object v0, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
goto/16 :goto_a3
.line 2472
:catch_168
move-exception v0
.line 2474
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
:try_end_16f
.catchall {:try_start_146 .. :try_end_16f} :catchall_13f
.end method
.method public maybeDoMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/spongycastle/crypto/params/KeyParameter;",
"Z)",
"Lcom/google/common/util/concurrent/y",
"<",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;>;"
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 5128
invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->doMaintenance(Lorg/spongycastle/crypto/params/KeyParameter;Z)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method protected maybeQueueOnWalletChanged()V
.registers 5
.prologue
.line 2741
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2742
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
if-ltz v0, :cond_16
const/4 v0, 0x1
:goto_e
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2743
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
if-lez v0, :cond_18
.line 2752
:cond_15
return-void
.line 2742
:cond_16
const/4 v0, 0x0
goto :goto_e
.line 2744
:cond_18
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_1e
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_15
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2745
iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v3, Lorg/bitcoinj/wallet/Wallet$4;
invoke-direct {v3, p0, v0}, Lorg/bitcoinj/wallet/Wallet$4;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;)V
invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_1e
.end method
.method public notifyNewBestBlock(Lorg/bitcoinj/core/StoredBlock;)V
.registers 7
.prologue
.line 2107
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
.line 2108
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_13
.line 2153
:goto_12
return-void
.line 2110
:cond_13
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2113
:try_start_18
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V
.line 2114
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I
move-result v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHeight(I)V
.line 2115
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getTimeSeconds()J
move-result-wide v0
invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenTimeSecs(J)V
.line 2118
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v0
.line 2119
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_36
:goto_36
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_82
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2120
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_5f
.line 2123
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->ignoreNextNewBlock:Ljava/util/HashSet;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
:try_end_57
.catchall {:try_start_18 .. :try_end_57} :catchall_58
goto :goto_36
.line 2152
:catchall_58
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 2125
:cond_5f
:try_start_5f
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v2
.line 2126
invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v3
sget-object v4, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->BUILDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
if-ne v3, v4, :cond_36
.line 2134
invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->incrementDepthInBlocks()I
move-result v3
iget-object v4, p0, Lorg/bitcoinj/wallet/Wallet;->context:Lorg/bitcoinj/core/Context;
invoke-virtual {v4}, Lorg/bitcoinj/core/Context;->getEventHorizon()I
move-result v4
if-le v3, v4, :cond_7a
.line 2135
invoke-virtual {v2}, Lorg/bitcoinj/core/TransactionConfidence;->clearBroadcastBy()V
.line 2136
:cond_7a
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->DEPTH:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_36
.line 2141
:cond_82
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V
.line 2142
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
.line 2144
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z
if-eqz v0, :cond_99
.line 2145
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 2146
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->hardSaveOnNextBlock:Z
:try_end_92
.catchall {:try_start_5f .. :try_end_92} :catchall_58
.line 2152
:goto_92
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto/16 :goto_12
.line 2149
:cond_99
:try_start_99
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
:try_end_9c
.catchall {:try_start_99 .. :try_end_9c} :catchall_58
goto :goto_92
.end method
.method public notifyTransactionIsInBlock(Lorg/bitcoinj/core/Sha256Hash;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)Z
.registers 9
.prologue
.line 1641
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1643
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactions:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1644
if-nez v0, :cond_24
.line 1645
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;
invoke-virtual {v0, p1}, Ljava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 1646
if-eqz v0, :cond_2e
.line 1648
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Risk analysis dropped tx {} but was included in block anyway"
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v3
invoke-interface {v1, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 1654
:cond_24
invoke-direct {p0, v0, p2, p3, p4}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
:try_end_27
.catchall {:try_start_5 .. :try_end_27} :catchall_35
.line 1657
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1655
const/4 v0, 0x1
:goto_2d
return v0
.line 1657
:cond_2e
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1651
const/4 v0, 0x0
goto :goto_2d
.line 1657
:catchall_35
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public poolContainsTxHash(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Sha256Hash;)Z
.registers 5
.prologue
.line 3139
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3141
:try_start_5
sget-object v0, Lorg/bitcoinj/wallet/Wallet$11;->$SwitchMap$org$bitcoinj$wallet$WalletTransaction$Pool:[I
invoke-virtual {p1}, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->ordinal()I
move-result v1
aget v0, v0, v1
packed-switch v0, :pswitch_data_50
.line 3151
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Unreachable"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_18
.catchall {:try_start_5 .. :try_end_18} :catchall_18
.line 3153
:catchall_18
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3143
:pswitch_1f
:try_start_1f
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
:try_end_24
.catchall {:try_start_1f .. :try_end_24} :catchall_18
move-result v0
.line 3153
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3149
:goto_2a
return v0
.line 3145
:pswitch_2b
:try_start_2b
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
:try_end_30
.catchall {:try_start_2b .. :try_end_30} :catchall_18
move-result v0
.line 3153
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3147
:pswitch_37
:try_start_37
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
:try_end_3c
.catchall {:try_start_37 .. :try_end_3c} :catchall_18
move-result v0
.line 3153
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3149
:pswitch_43
:try_start_43
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
:try_end_48
.catchall {:try_start_43 .. :try_end_48} :catchall_18
move-result v0
.line 3153
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_2a
.line 3141
nop
:pswitch_data_50
.packed-switch 0x1
:pswitch_1f
:pswitch_2b
:pswitch_37
:pswitch_43
.end packed-switch
.end method
.method protected queueOnCoinsReceived(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
.registers 12
.prologue
.line 2755
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2756
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_f
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2a
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2757
iget-object v7, v2, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v0, Lorg/bitcoinj/wallet/Wallet$5;
move-object v1, p0
move-object v3, p1
move-object v4, p2
move-object v5, p3
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet$5;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
invoke-interface {v7, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_f
.line 2764
:cond_2a
return-void
.end method
.method protected queueOnCoinsSent(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
.registers 12
.prologue
.line 2767
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2768
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_f
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2a
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2769
iget-object v7, v2, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v0, Lorg/bitcoinj/wallet/Wallet$6;
move-object v1, p0
move-object v3, p1
move-object v4, p2
move-object v5, p3
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/wallet/Wallet$6;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Coin;)V
invoke-interface {v7, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_f
.line 2776
:cond_2a
return-void
.end method
.method protected queueOnReorganize()V
.registers 5
.prologue
.line 2779
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2780
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 2781
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_14
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2b
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2782
iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v3, Lorg/bitcoinj/wallet/Wallet$7;
invoke-direct {v3, p0, v0}, Lorg/bitcoinj/wallet/Wallet$7;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;)V
invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_14
.line 2789
:cond_2b
return-void
.end method
.method protected queueOnScriptsChanged(Ljava/util/List;Z)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/Script;",
">;Z)V"
}
.end annotation
.prologue
.line 2792
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_6
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1d
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/utils/ListenerRegistration;
.line 2793
iget-object v2, v0, Lorg/bitcoinj/utils/ListenerRegistration;->executor:Ljava/util/concurrent/Executor;
new-instance v3, Lorg/bitcoinj/wallet/Wallet$8;
invoke-direct {v3, p0, v0, p1, p2}, Lorg/bitcoinj/wallet/Wallet$8;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/utils/ListenerRegistration;Ljava/util/List;Z)V
invoke-interface {v2, v3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_6
.line 2800
:cond_1d
return-void
.end method
.method public receiveFromBlock(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
.registers 7
.prologue
.line 1883
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1885
:try_start_5
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
:try_end_8
.catchall {:try_start_5 .. :try_end_8} :catchall_1a
move-result v0
if-nez v0, :cond_11
.line 1889
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1890
:goto_10
return-void
.line 1887
:cond_11
:try_start_11
invoke-direct {p0, p1, p2, p3, p4}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
:try_end_14
.catchall {:try_start_11 .. :try_end_14} :catchall_1a
.line 1889
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_10
:catchall_1a
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 1755
const/4 v0, 0x0
invoke-virtual {p0, p1, p2, v0}, Lorg/bitcoinj/wallet/Wallet;->receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;Z)V
.line 1756
return-void
.end method
.method public receivePending(Lorg/bitcoinj/core/Transaction;Ljava/util/List;Z)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;Z)V"
}
.end annotation
.prologue
.line 1678
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1680
:try_start_5
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->verify()V
.line 1683
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->getContainingPools(Lorg/bitcoinj/core/Transaction;)Ljava/util/EnumSet;
move-result-object v0
.line 1684
const-class v1, Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-static {v1}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/EnumSet;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_36
.line 1685
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Received tx we already saw in a block or created ourselves: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;)V
:try_end_30
.catchall {:try_start_5 .. :try_end_30} :catchall_c4
.line 1713
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1714
:goto_35
return-void
.line 1690
:cond_36
if-nez p3, :cond_44
:try_start_38
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->isPendingTransactionRelevant(Lorg/bitcoinj/core/Transaction;)Z
:try_end_3b
.catchall {:try_start_38 .. :try_end_3b} :catchall_c4
move-result v0
if-nez v0, :cond_44
.line 1713
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_35
.line 1692
:cond_44
:try_start_44
invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/wallet/Wallet;->isTransactionRisky(Lorg/bitcoinj/core/Transaction;Ljava/util/List;)Z
move-result v0
if-eqz v0, :cond_6e
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
if-nez v0, :cond_6e
.line 1694
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-virtual {v0, v1, p1}, Ljava/util/LinkedHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1695
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "There are now {} risk dropped transactions being kept in memory"
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->riskDropped:Ljava/util/LinkedHashMap;
invoke-virtual {v2}, Ljava/util/LinkedHashMap;->size()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_68
.catchall {:try_start_44 .. :try_end_68} :catchall_c4
.line 1713
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_35
.line 1698
:cond_6e
:try_start_6e
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentToMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 1699
invoke-virtual {p1, p0}, Lorg/bitcoinj/core/Transaction;->getValueSentFromMe(Lorg/bitcoinj/core/TransactionBag;)Lorg/bitcoinj/core/Coin;
move-result-object v1
.line 1700
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
invoke-interface {v2}, Lorg/slf4j/Logger;->isInfoEnabled()Z
move-result v2
if-eqz v2, :cond_a3
.line 1701
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
sget-object v3, Ljava/util/Locale;->US:Ljava/util/Locale;
const-string v4, "Received a pending transaction %s that spends %s from our own wallet, and sends us %s"
const/4 v5, 0x3
new-array v5, v5, [Ljava/lang/Object;
const/4 v6, 0x0
.line 1702
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v7
aput-object v7, v5, v6
const/4 v6, 0x1
invoke-virtual {v1}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v1
aput-object v1, v5, v6
const/4 v1, 0x2
.line 1703
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v0
aput-object v0, v5, v1
.line 1701
invoke-static {v3, v4, v5}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-interface {v2, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 1705
:cond_a3
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionConfidence;->getSource()Lorg/bitcoinj/core/TransactionConfidence$Source;
move-result-object v0
sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$Source;->UNKNOWN:Lorg/bitcoinj/core/TransactionConfidence$Source;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/TransactionConfidence$Source;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_ba
.line 1706
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Wallet received transaction with an unknown source. Consider tagging it!"
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
.line 1711
:cond_ba
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V
:try_end_bd
.catchall {:try_start_6e .. :try_end_bd} :catchall_c4
.line 1713
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto/16 :goto_35
:catchall_c4
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public removeChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)Z
.registers 3
.prologue
.line 2671
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->changeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)Z
.registers 3
.prologue
.line 2679
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsReceivedListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)Z
.registers 3
.prologue
.line 2687
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinsSentListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeEventListener(Lorg/bitcoinj/wallet/listeners/WalletEventListener;)Z
.registers 3
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 2658
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeChangeEventListener(Lorg/bitcoinj/wallet/listeners/WalletChangeEventListener;)Z
move-result v0
if-nez v0, :cond_24
.line 2659
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeCoinsReceivedEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsReceivedEventListener;)Z
move-result v0
if-nez v0, :cond_24
.line 2660
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeCoinsSentEventListener(Lorg/bitcoinj/wallet/listeners/WalletCoinsSentEventListener;)Z
move-result v0
if-nez v0, :cond_24
.line 2661
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z
move-result v0
if-nez v0, :cond_24
.line 2662
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)Z
move-result v0
if-nez v0, :cond_24
.line 2663
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->removeTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)Z
move-result v0
if-eqz v0, :cond_26
:cond_24
const/4 v0, 0x1
:goto_25
return v0
:cond_26
const/4 v0, 0x0
.line 2658
goto :goto_25
.end method
.method public removeKey(Lorg/bitcoinj/core/ECKey;)Z
.registers 4
.prologue
.line 608
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 610
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->removeImportedKey(Lorg/bitcoinj/core/ECKey;)Z
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result v0
.line 612
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 610
return v0
.line 612
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public removeKeyChainEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z
.registers 3
.prologue
.line 2695
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->removeEventListener(Lorg/bitcoinj/wallet/listeners/KeyChainEventListener;)Z
move-result v0
return v0
.end method
.method public removeReorganizeEventListener(Lorg/bitcoinj/wallet/listeners/WalletReorganizeEventListener;)Z
.registers 3
.prologue
.line 2703
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->reorganizeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeScriptChangeEventListener(Lorg/bitcoinj/wallet/listeners/ScriptsChangeEventListener;)Z
.registers 3
.prologue
.line 2711
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->scriptChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeTransactionConfidenceEventListener(Lorg/bitcoinj/core/listeners/TransactionConfidenceEventListener;)Z
.registers 3
.prologue
.line 2719
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->transactionConfidenceListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-static {p1, v0}, Lorg/bitcoinj/utils/ListenerRegistration;->removeFromList(Ljava/lang/Object;Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeWatchedAddress(Lorg/bitcoinj/core/Address;)Z
.registers 3
.prologue
.line 916
invoke-static {p1}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->removeWatchedAddresses(Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeWatchedAddresses(Ljava/util/List;)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Address;",
">;)Z"
}
.end annotation
.prologue
.line 9088
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 927
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_9
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1d
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Address;
.line 928
invoke-static {v0}, Lorg/bitcoinj/script/ScriptBuilder;->createOutputScript(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/script/Script;
move-result-object v0
.line 929
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_9
.line 932
:cond_1d
invoke-virtual {p0, v1}, Lorg/bitcoinj/wallet/Wallet;->removeWatchedScripts(Ljava/util/List;)Z
move-result v0
return v0
.end method
.method public removeWatchedScripts(Ljava/util/List;)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/Script;",
">;)Z"
}
.end annotation
.prologue
.line 941
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 943
:try_start_5
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_9
:goto_9
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2a
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 944
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v2, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_9
.line 947
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v2, v0}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
:try_end_22
.catchall {:try_start_5 .. :try_end_22} :catchall_23
goto :goto_9
.line 954
:catchall_23
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 950
:cond_2a
const/4 v0, 0x0
:try_start_2b
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->queueOnScriptsChanged(Ljava/util/List;Z)V
.line 951
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
:try_end_31
.catchall {:try_start_2b .. :try_end_31} :catchall_23
.line 954
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 952
const/4 v0, 0x1
return v0
.end method
.method public reorganize(Lorg/bitcoinj/core/StoredBlock;Ljava/util/List;Ljava/util/List;)V
.registers 16
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/StoredBlock;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/StoredBlock;",
">;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/StoredBlock;",
">;)V"
}
.end annotation
.prologue
const/4 v2, 0x1
const/4 v3, 0x0
.line 4390
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4406
:try_start_7
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
if-nez v0, :cond_7d
move v0, v2
:goto_10
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4407
iget-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
if-nez v0, :cond_7f
move v0, v2
:goto_18
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4408
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
.line 4409
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
if-nez v0, :cond_81
move v0, v2
:goto_23
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4410
iget v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
.line 4414
invoke-static {}, Lcom/google/common/collect/ArrayListMultimap;->create()Lcom/google/common/collect/ArrayListMultimap;
move-result-object v4
.line 4415
const/4 v0, 0x1
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getTransactions(Z)Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v5
:cond_39
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_83
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 4416
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getAppearsInHashes()Ljava/util/Map;
move-result-object v1
.line 4417
if-eqz v1, :cond_39
.line 4418
invoke-interface {v1}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v1
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_53
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_39
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Map$Entry;
.line 4419
invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v7
new-instance v8, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;
invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
invoke-direct {v8, v0, v1}, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;-><init>(Lorg/bitcoinj/core/Transaction;I)V
invoke-virtual {v4, v7, v8}, Lcom/google/common/collect/ArrayListMultimap;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
:try_end_75
.catchall {:try_start_7 .. :try_end_75} :catchall_76
goto :goto_53
.line 4531
:catchall_76
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:cond_7d
move v0, v3
.line 4406
goto :goto_10
:cond_7f
move v0, v3
.line 4407
goto :goto_18
:cond_81
move v0, v3
.line 4409
goto :goto_23
.line 4421
:cond_83
:try_start_83
invoke-virtual {v4}, Lcom/google/common/collect/ArrayListMultimap;->keySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_8b
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_9f
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Sha256Hash;
.line 4422
invoke-virtual {v4, v0}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V
goto :goto_8b
.line 4424
:cond_9f
new-instance v1, Ljava/util/ArrayList;
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v0
invoke-direct {v1, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 4425
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "Old part of chain (top to bottom):"
invoke-interface {v0, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 4426
invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_b3
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_da
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/StoredBlock;
.line 4427
sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, " {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v8
invoke-virtual {v8}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;
move-result-object v8
invoke-interface {v6, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 4428
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_b3
.line 4430
:cond_da
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "New part of chain (top to bottom):"
invoke-interface {v0, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 4431
invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_e5
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_101
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/StoredBlock;
.line 4432
sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, " {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;
move-result-object v0
invoke-interface {v6, v7, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_e5
.line 4435
:cond_101
invoke-static {p3}, Ljava/util/Collections;->reverse(Ljava/util/List;)V
.line 12232
new-instance v5, Ljava/util/LinkedList;
invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V
.line 4439
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_10d
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1a4
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Sha256Hash;
.line 4440
invoke-virtual {v4, v0}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_121
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_10d
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;
.line 4441
iget-object v7, v0, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;
.line 4442
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v8
.line 4443
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z
move-result v0
if-eqz v0, :cond_14d
.line 4452
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v8, "Coinbase killed by re-org: {}"
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v9
invoke-interface {v0, v8, v9}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 4453
invoke-static {v7}, Lcom/google/common/collect/ImmutableSet;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;
move-result-object v0
const/4 v7, 0x0
invoke-direct {p0, v0, v7}, Lorg/bitcoinj/wallet/Wallet;->killTxns(Ljava/util/Set;Lorg/bitcoinj/core/Transaction;)V
goto :goto_121
.line 4455
:cond_14d
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v9
:cond_155
:goto_155
invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_17a
invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 4456
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getSpentBy()Lorg/bitcoinj/core/TransactionInput;
move-result-object v10
.line 4457
if-eqz v10, :cond_155
.line 4458
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMineOrWatched(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v11
if-eqz v11, :cond_176
.line 4459
iget-object v11, p0, Lorg/bitcoinj/wallet/Wallet;->myUnspents:Ljava/util/HashSet;
invoke-virtual {v11, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4460
:cond_176
invoke-virtual {v10}, Lorg/bitcoinj/core/TransactionInput;->disconnect()Z
goto :goto_155
.line 4463
:cond_17a
invoke-virtual {v5, v7}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4464
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0, v8}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 4465
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0, v8}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 4466
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0, v8}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1a0
move v0, v2
:goto_190
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 4467
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0, v8}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1a2
move v0, v2
:goto_19c
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
goto :goto_121
:cond_1a0
move v0, v3
.line 4466
goto :goto_190
:cond_1a2
move v0, v3
.line 4467
goto :goto_19c
.line 4473
:cond_1a4
invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_1a8
:goto_1a8
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1df
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 4476
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isCoinBase()Z
move-result v2
if-nez v2, :cond_1a8
.line 4477
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, " ->pending {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v5
invoke-interface {v2, v3, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 4479
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v2
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
invoke-virtual {v2, v3}, Lorg/bitcoinj/core/TransactionConfidence;->setConfidenceType(Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;)V
.line 4480
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->confidenceChanged:Ljava/util/Map;
sget-object v3, Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;->TYPE:Lorg/bitcoinj/core/TransactionConfidence$Listener$ChangeReason;
invoke-interface {v2, v0, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 4481
sget-object v2, Lorg/bitcoinj/wallet/WalletTransaction$Pool;->PENDING:Lorg/bitcoinj/wallet/WalletTransaction$Pool;
invoke-direct {p0, v2, v0}, Lorg/bitcoinj/wallet/Wallet;->addWalletTransaction(Lorg/bitcoinj/wallet/WalletTransaction$Pool;Lorg/bitcoinj/core/Transaction;)V
.line 4482
const/4 v2, 0x0
invoke-direct {p0, v0, v2}, Lorg/bitcoinj/wallet/Wallet;->updateForSpends(Lorg/bitcoinj/core/Transaction;Z)V
goto :goto_1a8
.line 4493
:cond_1df
invoke-interface {p2}, Ljava/util/List;->size()I
move-result v0
.line 4494
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "depthToSubtract = "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->info(Ljava/lang/String;)V
.line 4496
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V
.line 4497
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V
.line 4498
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->subtractDepth(ILjava/util/Collection;)V
.line 4501
invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V
.line 4507
invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_221
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_27a
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/StoredBlock;
.line 4508
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Replaying block {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v5
invoke-virtual {v5}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;
move-result-object v5
invoke-interface {v1, v3, v5}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 4509
invoke-virtual {v0}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;
move-result-object v1
invoke-virtual {v1}, Lorg/bitcoinj/core/Block;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v1
invoke-virtual {v4, v1}, Lcom/google/common/collect/ArrayListMultimap;->get(Ljava/lang/Object;)Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_24c
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_276
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;
.line 4510
sget-object v5, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, " tx {}"
iget-object v7, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v7}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v7
invoke-interface {v5, v6, v7}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_265
.catchall {:try_start_83 .. :try_end_265} :catchall_76
.line 4512
:try_start_265
iget-object v5, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->tx:Lorg/bitcoinj/core/Transaction;
sget-object v6, Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;->BEST_CHAIN:Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;
iget v1, v1, Lorg/bitcoinj/wallet/Wallet$TxOffsetPair;->offset:I
invoke-direct {p0, v5, v0, v6, v1}, Lorg/bitcoinj/wallet/Wallet;->receive(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/AbstractBlockChain$NewBlockType;I)V
:try_end_26e
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_265 .. :try_end_26e} :catch_26f
.catchall {:try_start_265 .. :try_end_26e} :catchall_76
goto :goto_24c
.line 4513
:catch_26f
move-exception v0
.line 4514
:try_start_270
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 4517
:cond_276
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->notifyNewBestBlock(Lorg/bitcoinj/core/StoredBlock;)V
goto :goto_221
.line 4519
:cond_27a
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isConsistentOrThrow()V
.line 4520
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getBalance()Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 4521
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "post-reorg balance is {}"
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v3
invoke-interface {v1, v2, v3}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 4523
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->queueOnReorganize()V
.line 4524
const/4 v1, 0x0
iput-boolean v1, p0, Lorg/bitcoinj/wallet/Wallet;->insideReorg:Z
.line 4525
iget v1, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
add-int/lit8 v1, v1, -0x1
iput v1, p0, Lorg/bitcoinj/wallet/Wallet;->onWalletChangedSuppressions:I
.line 4526
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
.line 4527
invoke-direct {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->checkBalanceFuturesLocked(Lorg/bitcoinj/core/Coin;)V
.line 4528
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->informConfidenceListenersIfNotReorganizing()V
.line 4529
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
:try_end_2a4
.catchall {:try_start_270 .. :try_end_2a4} :catchall_76
.line 4531
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4532
return-void
.end method
.method public reset()V
.registers 3
.prologue
.line 2977
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 2979
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->clearTransactions()V
.line 2980
const/4 v0, 0x0
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
.line 2981
const/4 v0, -0x1
iput v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I
.line 2982
const-wide/16 v0, 0x0
iput-wide v0, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J
.line 2983
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveLater()V
.line 2984
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeQueueOnWalletChanged()V
:try_end_18
.catchall {:try_start_5 .. :try_end_18} :catchall_1e
.line 2986
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 2987
return-void
.line 2986
:catchall_1e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method protected saveLater()V
.registers 2
.prologue
.line 1456
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
.line 1457
if-eqz v0, :cond_7
.line 1458
invoke-virtual {v0}, Lorg/bitcoinj/wallet/WalletFiles;->saveLater()V
.line 1459
:cond_7
return-void
.end method
.method protected saveNow()V
.registers 4
.prologue
.line 1463
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
.line 1464
if-eqz v0, :cond_7
.line 1466
:try_start_4
invoke-virtual {v0}, Lorg/bitcoinj/wallet/WalletFiles;->saveNow()V
:try_end_7
.catch Ljava/io/IOException; {:try_start_4 .. :try_end_7} :catch_8
.line 1475
:cond_7
:goto_7
return-void
.line 1467
:catch_8
move-exception v0
.line 1469
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Failed to save wallet to disk!"
invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 1470
sget-object v1, Lorg/bitcoinj/utils/Threading;->uncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
.line 1471
if-eqz v1, :cond_7
.line 1472
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v2
invoke-interface {v1, v2, v0}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
goto :goto_7
.end method
.method public saveToFile(Ljava/io/File;)V
.registers 5
.prologue
.line 1336
invoke-virtual {p1}, Ljava/io/File;->getAbsoluteFile()Ljava/io/File;
move-result-object v0
invoke-virtual {v0}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object v0
.line 1337
const-string v1, "wallet"
const/4 v2, 0x0
invoke-static {v1, v2, v0}, Ljava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
move-result-object v0
.line 1338
invoke-virtual {p0, v0, p1}, Lorg/bitcoinj/wallet/Wallet;->saveToFile(Ljava/io/File;Ljava/io/File;)V
.line 1339
return-void
.end method
.method public saveToFile(Ljava/io/File;Ljava/io/File;)V
.registers 8
.prologue
const/4 v1, 0x0
.line 1294
.line 1295
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1297
:try_start_6
new-instance v2, Ljava/io/FileOutputStream;
invoke-direct {v2, p1}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
:try_end_b
.catch Ljava/lang/RuntimeException; {:try_start_6 .. :try_end_b} :catch_39
.catchall {:try_start_6 .. :try_end_b} :catchall_42
.line 1298
:try_start_b
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->saveToFileStream(Ljava/io/OutputStream;)V
.line 1301
invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V
.line 1302
invoke-virtual {v2}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;
move-result-object v0
invoke-virtual {v0}, Ljava/io/FileDescriptor;->sync()V
.line 1303
invoke-virtual {v2}, Ljava/io/FileOutputStream;->close()V
:try_end_1b
.catch Ljava/lang/RuntimeException; {:try_start_b .. :try_end_1b} :catch_cf
.catchall {:try_start_b .. :try_end_1b} :catchall_cb
.line 1305
:try_start_1b
invoke-static {}, Lorg/bitcoinj/core/Utils;->isWindows()Z
move-result v0
if-eqz v0, :cond_93
.line 1307
invoke-virtual {p2}, Ljava/io/File;->getCanonicalFile()Ljava/io/File;
move-result-object v0
.line 1308
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v2
if-eqz v2, :cond_5b
invoke-virtual {v0}, Ljava/io/File;->delete()Z
move-result v2
if-nez v2, :cond_5b
.line 1309
new-instance v0, Ljava/io/IOException;
const-string v2, "Failed to delete canonical wallet file for replacement with autosave"
invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_39
.catch Ljava/lang/RuntimeException; {:try_start_1b .. :try_end_39} :catch_39
.catchall {:try_start_1b .. :try_end_39} :catchall_42
.line 1316
:catch_39
move-exception v0
.line 1317
:goto_3a
:try_start_3a
sget-object v2, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v3, "Failed whilst saving wallet"
invoke-interface {v2, v3, v0}, Lorg/slf4j/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 1318
throw v0
:try_end_42
.catchall {:try_start_3a .. :try_end_42} :catchall_42
.line 1320
:catchall_42
move-exception v0
:goto_43
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1321
if-eqz v1, :cond_4d
.line 1322
invoke-virtual {v1}, Ljava/io/FileOutputStream;->close()V
.line 1324
:cond_4d
invoke-virtual {p1}, Ljava/io/File;->exists()Z
move-result v1
if-eqz v1, :cond_5a
.line 1325
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v2, "Temp file still exists after failed save."
invoke-interface {v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
:cond_5a
throw v0
.line 1310
:cond_5b
:try_start_5b
invoke-virtual {p1, v0}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
:try_end_5e
.catch Ljava/lang/RuntimeException; {:try_start_5b .. :try_end_5e} :catch_39
.catchall {:try_start_5b .. :try_end_5e} :catchall_42
move-result v2
if-eqz v2, :cond_74
.line 1320
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1324
invoke-virtual {p1}, Ljava/io/File;->exists()Z
move-result v0
if-eqz v0, :cond_73
.line 1325
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Temp file still exists after failed save."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
.line 1328
:cond_73
:goto_73
return-void
.line 1312
:cond_74
:try_start_74
new-instance v2, Ljava/io/IOException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Failed to rename "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
const-string v4, " to "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v2, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1313
:cond_93
invoke-virtual {p1, p2}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
move-result v0
if-nez v0, :cond_b8
.line 1314
new-instance v0, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Failed to rename "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v0, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_b8
.catch Ljava/lang/RuntimeException; {:try_start_74 .. :try_end_b8} :catch_39
.catchall {:try_start_74 .. :try_end_b8} :catchall_42
.line 1320
:cond_b8
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1324
invoke-virtual {p1}, Ljava/io/File;->exists()Z
move-result v0
if-eqz v0, :cond_73
.line 1325
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v1, "Temp file still exists after failed save."
invoke-interface {v0, v1}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;)V
goto :goto_73
.line 1320
:catchall_cb
move-exception v0
move-object v1, v2
goto/16 :goto_43
.line 1316
:catch_cf
move-exception v0
move-object v1, v2
goto/16 :goto_3a
.end method
.method public saveToFileStream(Ljava/io/OutputStream;)V
.registers 4
.prologue
.line 1482
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1484
:try_start_5
new-instance v0, Lorg/bitcoinj/wallet/WalletProtobufSerializer;
invoke-direct {v0}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;-><init>()V
invoke-virtual {v0, p0, p1}, Lorg/bitcoinj/wallet/WalletProtobufSerializer;->writeWallet(Lorg/bitcoinj/wallet/Wallet;Ljava/io/OutputStream;)V
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_13
.line 1486
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1487
return-void
.line 1486
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public sendCoins(Lorg/bitcoinj/core/Peer;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
.registers 4
.prologue
.line 3882
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 3883
invoke-virtual {p1, v0}, Lorg/bitcoinj/core/Peer;->sendMessage(Lorg/bitcoinj/core/Message;)V
.line 3884
return-object v0
.end method
.method public sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/Wallet$SendResult;
.registers 5
.prologue
.line 3802
invoke-static {p2, p3}, Lorg/bitcoinj/wallet/SendRequest;->to(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
.line 3803
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/wallet/Wallet;->sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
move-result-object v0
return-object v0
.end method
.method public sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
.registers 5
.prologue
.line 3830
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z
move-result v0
if-nez v0, :cond_26
const/4 v0, 0x1
:goto_9
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 3834
invoke-virtual {p0, p2}, Lorg/bitcoinj/wallet/Wallet;->sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
move-result-object v0
.line 3835
new-instance v1, Lorg/bitcoinj/wallet/Wallet$SendResult;
invoke-direct {v1}, Lorg/bitcoinj/wallet/Wallet$SendResult;-><init>()V
.line 3836
iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->tx:Lorg/bitcoinj/core/Transaction;
.line 3842
invoke-interface {p1, v0}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;
move-result-object v0
iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcast:Lorg/bitcoinj/core/TransactionBroadcast;
.line 3843
iget-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcast:Lorg/bitcoinj/core/TransactionBroadcast;
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionBroadcast;->future()Lcom/google/common/util/concurrent/y;
move-result-object v0
iput-object v0, v1, Lorg/bitcoinj/wallet/Wallet$SendResult;->broadcastComplete:Lcom/google/common/util/concurrent/y;
.line 3844
return-object v1
.line 3830
:cond_26
const/4 v0, 0x0
goto :goto_9
.end method
.method public sendCoins(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
.registers 5
.prologue
.line 3862
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
.line 3863
if-eqz v1, :cond_f
const/4 v0, 0x1
:goto_5
const-string v2, "No transaction broadcaster is configured"
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 3864
invoke-virtual {p0, v1, p1}, Lorg/bitcoinj/wallet/Wallet;->sendCoins(Lorg/bitcoinj/core/TransactionBroadcaster;Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/wallet/Wallet$SendResult;
move-result-object v0
return-object v0
.line 3863
:cond_f
const/4 v0, 0x0
goto :goto_5
.end method
.method public sendCoinsOffline(Lorg/bitcoinj/wallet/SendRequest;)Lorg/bitcoinj/core/Transaction;
.registers 4
.prologue
.line 3765
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3767
:try_start_5
invoke-virtual {p0, p1}, Lorg/bitcoinj/wallet/Wallet;->completeTx(Lorg/bitcoinj/wallet/SendRequest;)V
.line 3768
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->commitTx(Lorg/bitcoinj/core/Transaction;)V
.line 3769
iget-object v0, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
:try_end_f
.catchall {:try_start_5 .. :try_end_f} :catchall_15
.line 3771
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3769
return-object v0
.line 3771
:catchall_15
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public serializeKeyChainGroupToProtobuf()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/wallet/Protos$Key;",
">;"
}
.end annotation
.prologue
.line 1284
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1286
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->serializeToProtobuf()Ljava/util/List;
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_11
move-result-object v0
.line 1288
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1286
return-object v0
.line 1288
:catchall_11
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setAcceptRiskyTransactions(Z)V
.registers 4
.prologue
.line 1352
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1354
:try_start_5
iput-boolean p1, p0, Lorg/bitcoinj/wallet/Wallet;->acceptRiskyTransactions:Z
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 1356
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1357
return-void
.line 1356
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setCoinSelector(Lorg/bitcoinj/wallet/CoinSelector;)V
.registers 4
.prologue
.line 4255
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4257
:try_start_5
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/CoinSelector;
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_13
.line 4259
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4260
return-void
.line 4259
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setDescription(Ljava/lang/String;)V
.registers 2
.prologue
.line 3425
iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->description:Ljava/lang/String;
.line 3426
return-void
.end method
.method public setKeyChainGroupLookaheadSize(I)V
.registers 4
.prologue
.line 760
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 762
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadSize(I)V
:try_end_a
.catchall {:try_start_5 .. :try_end_a} :catchall_10
.line 764
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 765
return-void
.line 764
:catchall_10
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setKeyChainGroupLookaheadThreshold(I)V
.registers 4
.prologue
.line 780
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 782
:try_start_5
invoke-direct {p0}, Lorg/bitcoinj/wallet/Wallet;->maybeUpgradeToHD()V
.line 783
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->setLookaheadThreshold(I)V
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_13
.line 785
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 786
return-void
.line 785
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setKeyRotationTime(J)V
.registers 10
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 5113
invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeSeconds()J
move-result-wide v4
cmp-long v0, p1, v4
if-gtz v0, :cond_21
move v0, v1
:goto_b
const-string v3, "Given time (%s) cannot be in the future."
new-array v1, v1, [Ljava/lang/Object;
const-wide/16 v4, 0x3e8
mul-long/2addr v4, p1
.line 5114
invoke-static {v4, v5}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(J)Ljava/lang/String;
move-result-object v4
aput-object v4, v1, v2
.line 5113
invoke-static {v0, v3, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/String;[Ljava/lang/Object;)V
.line 5115
iput-wide p1, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J
.line 5116
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 5117
return-void
:cond_21
move v0, v2
.line 5113
goto :goto_b
.end method
.method public setKeyRotationTime(Ljava/util/Date;)V
.registers 6
.prologue
.line 5087
invoke-virtual {p1}, Ljava/util/Date;->getTime()J
move-result-wide v0
const-wide/16 v2, 0x3e8
div-long/2addr v0, v2
invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->setKeyRotationTime(J)V
.line 5088
return-void
.end method
.method public setLastBlockSeenHash(Lorg/bitcoinj/core/Sha256Hash;)V
.registers 4
.prologue
.line 3333
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3335
:try_start_5
iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHash:Lorg/bitcoinj/core/Sha256Hash;
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3337
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3338
return-void
.line 3337
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setLastBlockSeenHeight(I)V
.registers 4
.prologue
.line 3342
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3344
:try_start_5
iput p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenHeight:I
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3346
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3347
return-void
.line 3346
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setLastBlockSeenTimeSecs(J)V
.registers 6
.prologue
.line 3351
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3353
:try_start_5
iput-wide p1, p0, Lorg/bitcoinj/wallet/Wallet;->lastBlockSeenTimeSecs:J
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_d
.line 3355
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3356
return-void
.line 3355
:catchall_d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setRiskAnalyzer(Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;)V
.registers 4
.prologue
.line 1378
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1380
:try_start_5
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->riskAnalyzer:Lorg/bitcoinj/wallet/RiskAnalysis$Analyzer;
:try_end_d
.catchall {:try_start_5 .. :try_end_d} :catchall_13
.line 1382
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1383
return-void
.line 1382
:catchall_13
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setTag(Ljava/lang/String;Lcom/google/protobuf/ByteString;)V
.registers 3
.prologue
.line 4801
invoke-super {p0, p1, p2}, Lorg/bitcoinj/utils/BaseTaggableObject;->setTag(Ljava/lang/String;Lcom/google/protobuf/ByteString;)V
.line 4802
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->saveNow()V
.line 4803
return-void
.end method
.method public setTransactionBroadcaster(Lorg/bitcoinj/core/TransactionBroadcaster;)V
.registers 12
.prologue
const/4 v3, 0x1
const/4 v2, 0x0
.line 5050
new-array v0, v2, [Lorg/bitcoinj/core/Transaction;
.line 5051
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 5053
:try_start_9
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
:try_end_b
.catchall {:try_start_9 .. :try_end_b} :catchall_60
if-ne v1, p1, :cond_13
.line 5060
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5076
:cond_12
:goto_12
return-void
.line 5055
:cond_13
:try_start_13
iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->vTransactionBroadcaster:Lorg/bitcoinj/core/TransactionBroadcaster;
:try_end_15
.catchall {:try_start_13 .. :try_end_15} :catchall_60
.line 5056
if-nez p1, :cond_1d
.line 5060
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
goto :goto_12
.line 5058
:cond_1d
:try_start_1d
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1, v0}, Ljava/util/Collection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lorg/bitcoinj/core/Transaction;
:try_end_29
.catchall {:try_start_1d .. :try_end_29} :catchall_60
.line 5060
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 5065
array-length v5, v0
move v4, v2
:goto_30
if-ge v4, v5, :cond_12
aget-object v6, v0, v4
.line 5066
invoke-virtual {v6}, Lorg/bitcoinj/core/Transaction;->getConfidence()Lorg/bitcoinj/core/TransactionConfidence;
move-result-object v1
invoke-virtual {v1}, Lorg/bitcoinj/core/TransactionConfidence;->getConfidenceType()Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
move-result-object v7
.line 5067
sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->PENDING:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
if-eq v7, v1, :cond_44
sget-object v1, Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;->IN_CONFLICT:Lorg/bitcoinj/core/TransactionConfidence$ConfidenceType;
if-ne v7, v1, :cond_67
:cond_44
move v1, v3
:goto_45
const-string v8, "Expected PENDING or IN_CONFLICT, was %s."
new-array v9, v3, [Ljava/lang/Object;
aput-object v7, v9, v2
invoke-static {v1, v8, v9}, Lcom/google/common/base/n;->checkState(ZLjava/lang/String;[Ljava/lang/Object;)V
.line 5073
sget-object v1, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, "New broadcaster so uploading waiting tx {}"
invoke-virtual {v6}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v8
invoke-interface {v1, v7, v8}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
.line 5074
invoke-interface {p1, v6}, Lorg/bitcoinj/core/TransactionBroadcaster;->broadcastTransaction(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/core/TransactionBroadcast;
.line 5065
add-int/lit8 v1, v4, 0x1
move v4, v1
goto :goto_30
.line 5060
:catchall_60
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
:cond_67
move v1, v2
.line 5067
goto :goto_45
.end method
.method public setUTXOProvider(Lorg/bitcoinj/core/UTXOProvider;)V
.registers 4
.prologue
.line 4295
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4297
if-eqz p1, :cond_13
:try_start_7
invoke-interface {p1}, Lorg/bitcoinj/core/UTXOProvider;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/NetworkParameters;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1f
:cond_13
const/4 v0, 0x1
:goto_14
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 4298
iput-object p1, p0, Lorg/bitcoinj/wallet/Wallet;->vUTXOProvider:Lorg/bitcoinj/core/UTXOProvider;
:try_end_19
.catchall {:try_start_7 .. :try_end_19} :catchall_21
.line 4300
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4301
return-void
.line 4297
:cond_1f
const/4 v0, 0x0
goto :goto_14
.line 4300
:catchall_21
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public setVersion(I)V
.registers 2
.prologue
.line 3417
iput p1, p0, Lorg/bitcoinj/wallet/Wallet;->version:I
.line 3418
return-void
.end method
.method public shutdownAutosaveAndWait()V
.registers 4
.prologue
.line 1443
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 1445
:try_start_5
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
.line 1446
const/4 v0, 0x0
iput-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->vFileManager:Lorg/bitcoinj/wallet/WalletFiles;
.line 1447
if-eqz v1, :cond_1b
const/4 v0, 0x1
:goto_d
const-string v2, "Auto saving not enabled."
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 1448
invoke-virtual {v1}, Lorg/bitcoinj/wallet/WalletFiles;->shutdownAndWait()V
:try_end_15
.catchall {:try_start_5 .. :try_end_15} :catchall_1d
.line 1450
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 1451
return-void
.line 1447
:cond_1b
const/4 v0, 0x0
goto :goto_d
.line 1450
:catchall_1d
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method
.method public signTransaction(Lorg/bitcoinj/wallet/SendRequest;)V
.registers 13
.prologue
const/4 v1, 0x1
const/4 v0, 0x0
.line 4035
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v2}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 4037
:try_start_7
iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 4038
invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v2
.line 4039
invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v4
.line 4040
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
if-lez v2, :cond_60
move v2, v1
:goto_18
invoke-static {v2}, Lcom/google/common/base/n;->checkState(Z)V
.line 4041
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v2
if-lez v2, :cond_62
:goto_21
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 4043
new-instance v2, Lorg/bitcoinj/wallet/DecryptingKeyBag;
iget-object v1, p1, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;
invoke-direct {v2, p0, v1}, Lorg/bitcoinj/wallet/DecryptingKeyBag;-><init>(Lorg/bitcoinj/wallet/KeyBag;Lorg/spongycastle/crypto/params/KeyParameter;)V
.line 4045
invoke-virtual {v3}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v4
move v1, v0
.line 4046
:goto_34
if-ge v1, v4, :cond_a5
.line 4047
int-to-long v6, v1
invoke-virtual {v3, v6, v7}, Lorg/bitcoinj/core/Transaction;->getInput(J)Lorg/bitcoinj/core/TransactionInput;
move-result-object v5
.line 4048
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
:try_end_3e
.catchall {:try_start_7 .. :try_end_3e} :catchall_9e
move-result-object v0
if-eqz v0, :cond_5c
.line 4057
:try_start_41
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getScriptSig()Lorg/bitcoinj/script/Script;
move-result-object v0
int-to-long v6, v1
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v8
invoke-virtual {v8}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v8
invoke-virtual {v0, v3, v6, v7, v8}, Lorg/bitcoinj/script/Script;->correctlySpends(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;)V
.line 4058
sget-object v0, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v6, "Input {} already correctly spends output, assuming SIGHASH type used will be safe and skipping signing."
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v7
invoke-interface {v0, v6, v7}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
:try_end_5c
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_41 .. :try_end_5c} :catch_64
.catchall {:try_start_41 .. :try_end_5c} :catchall_9e
.line 4046
:cond_5c
:goto_5c
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_34
:cond_60
move v2, v0
.line 4040
goto :goto_18
:cond_62
move v1, v0
.line 4041
goto :goto_21
.line 4060
:catch_64
move-exception v0
.line 4061
:try_start_65
sget-object v6, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v7, "Input contained an incorrect signature"
invoke-interface {v6, v7, v0}, Lorg/slf4j/Logger;->debug(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 4065
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getConnectedOutput()Lorg/bitcoinj/core/TransactionOutput;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v6
.line 4066
invoke-virtual {v5, v2}, Lorg/bitcoinj/core/TransactionInput;->getConnectedRedeemData(Lorg/bitcoinj/wallet/KeyBag;)Lorg/bitcoinj/wallet/RedeemData;
move-result-object v7
.line 4067
const-string v0, "Transaction exists in wallet that we cannot redeem: %s"
const/4 v8, 0x1
new-array v8, v8, [Ljava/lang/Object;
const/4 v9, 0x0
invoke-virtual {v5}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v10
invoke-virtual {v10}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v10
aput-object v10, v8, v9
invoke-static {v7, v0, v8}, Lcom/google/common/base/n;->b(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
.line 4068
iget-object v0, v7, Lorg/bitcoinj/wallet/RedeemData;->keys:Ljava/util/List;
const/4 v8, 0x0
invoke-interface {v0, v8}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
iget-object v7, v7, Lorg/bitcoinj/wallet/RedeemData;->redeemScript:Lorg/bitcoinj/script/Script;
invoke-virtual {v6, v0, v7}, Lorg/bitcoinj/script/Script;->createEmptyInputScript(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/script/Script;
move-result-object v0
invoke-virtual {v5, v0}, Lorg/bitcoinj/core/TransactionInput;->setScriptSig(Lorg/bitcoinj/script/Script;)V
:try_end_9d
.catchall {:try_start_65 .. :try_end_9d} :catchall_9e
goto :goto_5c
.line 4080
:catchall_9e
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 4071
:cond_a5
:try_start_a5
new-instance v1, Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;
invoke-direct {v1, v3}, Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;-><init>(Lorg/bitcoinj/core/Transaction;)V
.line 4072
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->signers:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_b0
:goto_b0
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_d2
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/signers/TransactionSigner;
.line 4073
invoke-interface {v0, v1, v2}, Lorg/bitcoinj/signers/TransactionSigner;->signInputs(Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;Lorg/bitcoinj/wallet/KeyBag;)Z
move-result v4
if-nez v4, :cond_b0
.line 4074
sget-object v4, Lorg/bitcoinj/wallet/Wallet;->log:Lorg/slf4j/Logger;
const-string v5, "{} returned false for the tx"
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-interface {v4, v5, v0}, Lorg/slf4j/Logger;->info(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_b0
.line 4078
:cond_d2
new-instance v0, Lorg/bitcoinj/signers/MissingSigResolutionSigner;
iget-object v3, p1, Lorg/bitcoinj/wallet/SendRequest;->missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
invoke-direct {v0, v3}, Lorg/bitcoinj/signers/MissingSigResolutionSigner;-><init>(Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;)V
invoke-virtual {v0, v1, v2}, Lorg/bitcoinj/signers/MissingSigResolutionSigner;->signInputs(Lorg/bitcoinj/signers/TransactionSigner$ProposedTransaction;Lorg/bitcoinj/wallet/KeyBag;)Z
:try_end_dc
.catchall {:try_start_a5 .. :try_end_dc} :catchall_9e
.line 4080
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 4081
return-void
.end method
.method sortTxnsByDependency(Ljava/util/Set;)Ljava/util/List;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.prologue
const/4 v3, 0x0
.line 2056
new-instance v5, Ljava/util/ArrayList;
invoke-direct {v5, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
move v2, v3
.line 2057
:goto_7
invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
move-result v0
add-int/lit8 v0, v0, -0x1
if-ge v2, v0, :cond_3e
.line 2061
:cond_f
add-int/lit8 v0, v2, 0x1
move v4, v0
:goto_12
invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
move-result v0
if-ge v4, v0, :cond_3f
.line 2062
invoke-virtual {v5, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
invoke-virtual {v5, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/bitcoinj/core/Transaction;
invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/wallet/Wallet;->spends(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Transaction;)Z
move-result v0
if-eqz v0, :cond_3a
.line 2063
invoke-virtual {v5, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 2064
invoke-virtual {v5, v4, v0}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
.line 2065
const/4 v0, 0x1
.line 2069
:goto_34
if-nez v0, :cond_f
.line 2057
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_7
.line 2061
:cond_3a
add-int/lit8 v0, v4, 0x1
move v4, v0
goto :goto_12
.line 2071
:cond_3e
return-object v5
:cond_3f
move v0, v3
goto :goto_34
.end method
.method spends(Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Transaction;)Z
.registers 6
.prologue
.line 2076
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_8
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_28
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 2077
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->getOutpoint()Lorg/bitcoinj/core/TransactionOutPoint;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutPoint;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v0
invoke-virtual {p2}, Lorg/bitcoinj/core/Transaction;->getHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v2
invoke-virtual {v0, v2}, Lorg/bitcoinj/core/Sha256Hash;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_8
.line 2078
const/4 v0, 0x1
.line 2081
:goto_27
return v0
:cond_28
const/4 v0, 0x0
goto :goto_27
.end method
.method public toString()Ljava/lang/String;
.registers 4
.prologue
const/4 v2, 0x1
.line 3169
const/4 v0, 0x0
const/4 v1, 0x0
invoke-virtual {p0, v0, v2, v2, v1}, Lorg/bitcoinj/wallet/Wallet;->toString(ZZZLorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public toString(ZZZLorg/bitcoinj/core/AbstractBlockChain;)Ljava/lang/String;
.registers 11
.prologue
.line 3183
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3184
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 3186
:try_start_a
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 3187
sget-object v0, Lorg/bitcoinj/wallet/Wallet$BalanceType;->ESTIMATED:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v0}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v0
.line 3188
sget-object v2, Lorg/bitcoinj/wallet/Wallet$BalanceType;->AVAILABLE_SPENDABLE:Lorg/bitcoinj/wallet/Wallet$BalanceType;
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->getBalance(Lorg/bitcoinj/wallet/Wallet$BalanceType;)Lorg/bitcoinj/core/Coin;
move-result-object v2
.line 3189
const-string v3, "Wallet containing "
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v0}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v3, " (spendable: "
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
.line 3190
invoke-virtual {v2}, Lorg/bitcoinj/core/Coin;->toFriendlyString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, ") in:\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3191
const-string v0, " "
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " pending transactions\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3192
const-string v0, " "
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " unspent transactions\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3193
const-string v0, " "
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " spent transactions\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3194
const-string v0, " "
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " dead transactions\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3195
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenTime()Ljava/util/Date;
move-result-object v0
.line 3196
const-string v2, "Last seen best block: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHeight()I
move-result v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " ("
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
if-nez v0, :cond_161
const-string v0, "time unknown"
.line 3197
:goto_ac
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "): "
.line 3198
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHash()Lorg/bitcoinj/core/Sha256Hash;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
const/16 v2, 0xa
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 3199
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/KeyChainGroup;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v0
.line 3200
if-eqz v0, :cond_da
.line 3201
const-string v2, "Encryption: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
const/16 v2, 0xa
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 3202
:cond_da
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->isWatching()Z
move-result v0
if-eqz v0, :cond_e5
.line 3203
const-string v0, "Wallet is watching.\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3206
:cond_e5
const-string v0, "\nKeys:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3207
const-string v0, "Earliest creation time: "
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getEarliestKeyCreationTime()J
move-result-wide v2
const-wide/16 v4, 0x3e8
mul-long/2addr v2, v4
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(J)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const/16 v2, 0xa
.line 3208
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 3209
invoke-virtual {p0}, Lorg/bitcoinj/wallet/Wallet;->getKeyRotationTime()Ljava/util/Date;
move-result-object v0
.line 3210
if-eqz v0, :cond_11d
.line 3211
const-string v2, "Key rotation time: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v0}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const/16 v2, 0xa
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 3212
:cond_11d
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
invoke-virtual {v0, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->toString(Z)Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3214
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-nez v0, :cond_167
.line 3215
const-string v0, "\nWatched scripts:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3216
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->watchedScripts:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_139
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_167
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/Script;
.line 3217
const-string v3, " "
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v3, "\n"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:try_end_154
.catchall {:try_start_a .. :try_end_154} :catchall_155
goto :goto_139
.line 3248
:catchall_155
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3249
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.line 3197
:cond_161
:try_start_161
invoke-static {v0}, Lorg/bitcoinj/core/Utils;->dateTimeFormat(Ljava/util/Date;)Ljava/lang/String;
move-result-object v0
goto/16 :goto_ac
.line 3221
:cond_167
if-eqz p2, :cond_1b9
.line 3223
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
if-lez v0, :cond_17d
.line 3224
const-string v0, "\n>>> PENDING:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3225
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->pending:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;
invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
.line 3227
:cond_17d
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
if-lez v0, :cond_191
.line 3228
const-string v0, "\n>>> UNSPENT:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3229
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->unspent:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;
invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
.line 3231
:cond_191
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
if-lez v0, :cond_1a5
.line 3232
const-string v0, "\n>>> SPENT:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3233
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->spent:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_HEIGHT:Ljava/util/Comparator;
invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
.line 3235
:cond_1a5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v0
if-lez v0, :cond_1b9
.line 3236
const-string v0, "\n>>> DEAD:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3237
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->dead:Ljava/util/Map;
sget-object v2, Lorg/bitcoinj/core/Transaction;->SORT_TX_BY_UPDATE_TIME:Ljava/util/Comparator;
invoke-direct {p0, v1, v0, p4, v2}, Lorg/bitcoinj/wallet/Wallet;->toStringHelper(Ljava/lang/StringBuilder;Ljava/util/Map;Lorg/bitcoinj/core/AbstractBlockChain;Ljava/util/Comparator;)V
.line 3240
:cond_1b9
if-eqz p3, :cond_1e8
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v0}, Ljava/util/HashMap;->size()I
move-result v0
if-lez v0, :cond_1e8
.line 3241
const-string v0, "\n>>> EXTENSIONS:\n"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 3242
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->extensions:Ljava/util/HashMap;
invoke-virtual {v0}, Ljava/util/HashMap;->values()Ljava/util/Collection;
move-result-object v0
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_1d2
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1e8
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/wallet/WalletExtension;
.line 3243
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v3, "\n\n"
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_1d2
.line 3246
:cond_1e8
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
:try_end_1eb
.catchall {:try_start_161 .. :try_end_1eb} :catchall_155
move-result-object v0
.line 3248
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3249
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->lock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 3246
return-object v0
.end method
.method public upgradeToDeterministic(Lorg/spongycastle/crypto/params/KeyParameter;)V
.registers 6
.prologue
.line 549
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V
.line 551
:try_start_5
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroup:Lorg/bitcoinj/wallet/KeyChainGroup;
iget-wide v2, p0, Lorg/bitcoinj/wallet/Wallet;->vKeyRotationTimestamp:J
invoke-virtual {v0, v2, v3, p1}, Lorg/bitcoinj/wallet/KeyChainGroup;->upgradeToDeterministic(JLorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/wallet/DeterministicKeyChain;
:try_end_c
.catchall {:try_start_5 .. :try_end_c} :catchall_12
.line 553
iget-object v0, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
.line 554
return-void
.line 553
:catchall_12
move-exception v0
iget-object v1, p0, Lorg/bitcoinj/wallet/Wallet;->keyChainGroupLock:Ljava/util/concurrent/locks/ReentrantLock;
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V
throw v0
.end method