DefaultRiskAnalysis.smali
.class public Lorg/bitcoinj/wallet/DefaultRiskAnalysis;
.super Ljava/lang/Object;
.source "DefaultRiskAnalysis.java"
# interfaces
.implements Lorg/bitcoinj/wallet/RiskAnalysis;
# static fields
.field public static FACTORY:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;
.field public static final MIN_ANALYSIS_NONDUST_OUTPUT:Lorg/bitcoinj/core/Coin;
.field private static final log:Lorg/slf4j/Logger;
# instance fields
.field protected analyzed:Z
.field protected final dependencies:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;"
}
.end annotation
.end field
.field protected nonFinal:Lorg/bitcoinj/core/Transaction;
.field private nonStandard:Lorg/bitcoinj/core/Transaction;
.field protected final tx:Lorg/bitcoinj/core/Transaction;
.field protected final wallet:Lorg/bitcoinj/wallet/Wallet;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 45
const-class v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;
invoke-static {v0}, Lorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger;
move-result-object v0
sput-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->log:Lorg/slf4j/Logger;
.line 52
sget-object v0, Lorg/bitcoinj/core/Transaction;->MIN_NONDUST_OUTPUT:Lorg/bitcoinj/core/Coin;
sput-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->MIN_ANALYSIS_NONDUST_OUTPUT:Lorg/bitcoinj/core/Coin;
.line 255
new-instance v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;
invoke-direct {v0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;-><init>()V
sput-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->FACTORY:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$Analyzer;
return-void
.end method
.method private constructor <init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/wallet/Wallet;",
"Lorg/bitcoinj/core/Transaction;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;)V"
}
.end annotation
.prologue
.line 62
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 63
iput-object p2, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
.line 64
iput-object p3, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->dependencies:Ljava/util/List;
.line 65
iput-object p1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
.line 66
return-void
.end method
.method synthetic constructor <init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Ljava/util/List;Lorg/bitcoinj/wallet/DefaultRiskAnalysis$1;)V
.registers 5
.prologue
.line 44
invoke-direct {p0, p1, p2, p3}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;-><init>(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Ljava/util/List;)V
return-void
.end method
.method private analyzeIsFinal()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
.registers 7
.prologue
.line 83
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, 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;->SELF:Lorg/bitcoinj/core/TransactionConfidence$Source;
if-ne v0, v1, :cond_11
.line 84
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
.line 112
:goto_10
return-object v0
.line 87
:cond_11
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->isOptInFullRBF()Z
move-result v0
if-eqz v0, :cond_20
.line 88
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
iput-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
.line 89
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->NON_FINAL:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_10
.line 92
:cond_20
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
if-nez v0, :cond_26
.line 93
const/4 v0, 0x0
goto :goto_10
.line 95
:cond_26
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenHeight()I
move-result v0
.line 96
iget-object v1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
invoke-virtual {v1}, Lorg/bitcoinj/wallet/Wallet;->getLastBlockSeenTimeSecs()J
move-result-wide v2
.line 99
add-int/lit8 v1, v0, 0x1
.line 101
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v0, v1, v2, v3}, Lorg/bitcoinj/core/Transaction;->isFinal(IJ)Z
move-result v0
if-nez v0, :cond_43
.line 102
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
iput-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
.line 103
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->NON_FINAL:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_10
.line 105
:cond_43
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->dependencies:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_49
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_60
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 106
invoke-virtual {v0, v1, v2, v3}, Lorg/bitcoinj/core/Transaction;->isFinal(IJ)Z
move-result v5
if-nez v5, :cond_49
.line 107
iput-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
.line 108
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->NON_FINAL:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_10
.line 112
:cond_60
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_10
.end method
.method private analyzeIsStandard()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
.registers 5
.prologue
.line 204
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
if-eqz v0, :cond_19
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->wallet:Lorg/bitcoinj/wallet/Wallet;
invoke-virtual {v0}, Lorg/bitcoinj/wallet/Wallet;->getNetworkParameters()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/NetworkParameters;->getId()Ljava/lang/String;
move-result-object v0
const-string v1, "org.bitcoin.production"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_19
.line 205
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
.line 221
:goto_18
return-object v0
.line 207
:cond_19
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
invoke-static {v0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->isStandard(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
move-result-object v0
.line 208
sget-object v1, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
if-eq v0, v1, :cond_2a
.line 209
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
iput-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonStandard:Lorg/bitcoinj/core/Transaction;
.line 210
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->NON_STANDARD:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_18
.line 213
:cond_2a
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->dependencies:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_30
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_49
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 214
invoke-static {v0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->isStandard(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
move-result-object v2
.line 215
sget-object v3, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
if-eq v2, v3, :cond_30
.line 216
iput-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonStandard:Lorg/bitcoinj/core/Transaction;
.line 217
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->NON_STANDARD:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_18
.line 221
:cond_49
sget-object v0, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
goto :goto_18
.end method
.method public static isInputStandard(Lorg/bitcoinj/core/TransactionInput;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.registers 4
.prologue
.line 179
invoke-virtual {p0}, Lorg/bitcoinj/core/TransactionInput;->getScriptSig()Lorg/bitcoinj/script/Script;
move-result-object v0
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 v2
:cond_c
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/ScriptChunk;
.line 180
iget-object v1, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
if-eqz v1, :cond_25
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isShortestPossiblePushData()Z
move-result v1
if-nez v1, :cond_25
.line 181
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->SHORTEST_POSSIBLE_PUSHDATA:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.line 198
:goto_24
return-object v0
.line 182
:cond_25
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isPushData()Z
move-result v1
if-eqz v1, :cond_c
.line 185
:try_start_2b
iget-object v1, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v1}, Lorg/bitcoinj/core/ECKey$ECDSASignature;->decodeFromDER([B)Lorg/bitcoinj/core/ECKey$ECDSASignature;
:try_end_30
.catch Ljava/lang/RuntimeException; {:try_start_2b .. :try_end_30} :catch_3e
move-result-object v1
.line 190
:goto_31
if-eqz v1, :cond_c
.line 191
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v0}, Lorg/bitcoinj/crypto/TransactionSignature;->isEncodingCanonical([B)Z
move-result v0
if-nez v0, :cond_41
.line 192
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->SIGNATURE_CANONICAL_ENCODING:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_24
.line 188
:catch_3e
move-exception v1
const/4 v1, 0x0
goto :goto_31
.line 193
:cond_41
invoke-virtual {v1}, Lorg/bitcoinj/core/ECKey$ECDSASignature;->isCanonical()Z
move-result v0
if-nez v0, :cond_c
.line 194
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->SIGNATURE_CANONICAL_ENCODING:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_24
.line 198
:cond_4a
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_24
.end method
.method public static isOutputStandard(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.registers 4
.prologue
.line 168
invoke-virtual {p0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
sget-object v1, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->MIN_ANALYSIS_NONDUST_OUTPUT:Lorg/bitcoinj/core/Coin;
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v0
if-gez v0, :cond_f
.line 169
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->DUST:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.line 174
:goto_e
return-object v0
.line 170
:cond_f
invoke-virtual {p0}, Lorg/bitcoinj/core/TransactionOutput;->getScriptPubKey()Lorg/bitcoinj/script/Script;
move-result-object v0
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 v1
:cond_1b
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/script/ScriptChunk;
.line 171
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isPushData()Z
move-result v2
if-eqz v2, :cond_1b
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isShortestPossiblePushData()Z
move-result v0
if-nez v0, :cond_1b
.line 172
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->SHORTEST_POSSIBLE_PUSHDATA:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_e
.line 174
:cond_36
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_e
.end method
.method public static isStandard(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.registers 7
.prologue
const-wide/16 v4, 0x1
const/4 v2, 0x0
.line 136
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getVersion()J
move-result-wide v0
cmp-long v0, v0, v4
if-gtz v0, :cond_13
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getVersion()J
move-result-wide v0
cmp-long v0, v0, v4
if-gez v0, :cond_25
.line 137
:cond_13
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->log:Lorg/slf4j/Logger;
const-string v1, "TX considered non-standard due to unknown version number {}"
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getVersion()J
move-result-wide v2
invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 138
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->VERSION:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
.line 161
:goto_24
return-object v0
.line 141
:cond_25
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getOutputs()Ljava/util/List;
move-result-object v3
move v1, v2
.line 142
:goto_2a
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_4e
.line 143
invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 144
invoke-static {v0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->isOutputStandard(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
move-result-object v0
.line 145
sget-object v4, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
if-eq v0, v4, :cond_4a
.line 146
sget-object v2, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->log:Lorg/slf4j/Logger;
const-string v3, "TX considered non-standard due to output {} violating rule {}"
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
invoke-interface {v2, v3, v1, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
goto :goto_24
.line 142
:cond_4a
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_2a
.line 151
:cond_4e
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getInputs()Ljava/util/List;
move-result-object v1
.line 152
:goto_52
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v0
if-ge v2, v0, :cond_75
.line 153
invoke-interface {v1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionInput;
.line 154
invoke-static {v0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->isInputStandard(Lorg/bitcoinj/core/TransactionInput;)Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
move-result-object v0
.line 155
sget-object v3, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
if-eq v0, v3, :cond_72
.line 156
sget-object v1, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->log:Lorg/slf4j/Logger;
const-string v3, "TX considered non-standard due to input {} violating rule {}"
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v1, v3, v2, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
goto :goto_24
.line 152
:cond_72
add-int/lit8 v2, v2, 0x1
goto :goto_52
.line 161
:cond_75
sget-object v0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;->NONE:Lorg/bitcoinj/wallet/DefaultRiskAnalysis$RuleViolation;
goto :goto_24
.end method
# virtual methods
.method public analyze()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
.registers 3
.prologue
const/4 v1, 0x1
.line 70
iget-boolean v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->analyzed:Z
if-nez v0, :cond_16
move v0, v1
:goto_6
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 71
iput-boolean v1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->analyzed:Z
.line 73
invoke-direct {p0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->analyzeIsFinal()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
move-result-object v0
.line 74
if-eqz v0, :cond_18
sget-object v1, Lorg/bitcoinj/wallet/RiskAnalysis$Result;->OK:Lorg/bitcoinj/wallet/RiskAnalysis$Result;
if-eq v0, v1, :cond_18
.line 77
:goto_15
return-object v0
.line 70
:cond_16
const/4 v0, 0x0
goto :goto_6
.line 77
:cond_18
invoke-direct {p0}, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->analyzeIsStandard()Lorg/bitcoinj/wallet/RiskAnalysis$Result;
move-result-object v0
goto :goto_15
.end method
.method public getNonFinal()Lorg/bitcoinj/core/Transaction;
.registers 2
.prologue
.line 233
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
return-object v0
.end method
.method public getNonStandard()Lorg/bitcoinj/core/Transaction;
.registers 2
.prologue
.line 227
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonStandard:Lorg/bitcoinj/core/Transaction;
return-object v0
.end method
.method public toString()Ljava/lang/String;
.registers 3
.prologue
.line 238
iget-boolean v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->analyzed:Z
if-nez v0, :cond_1a
.line 239
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Pending risk analysis for "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, 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
.line 245
:goto_19
return-object v0
.line 240
:cond_1a
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
if-eqz v0, :cond_34
.line 241
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Risky due to non-finality of "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonFinal:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, 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
goto :goto_19
.line 242
:cond_34
iget-object v0, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonStandard:Lorg/bitcoinj/core/Transaction;
if-eqz v0, :cond_4e
.line 243
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Risky due to non-standard tx "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lorg/bitcoinj/wallet/DefaultRiskAnalysis;->nonStandard:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1}, Lorg/bitcoinj/core/Transaction;->getHashAsString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, 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
goto :goto_19
.line 245
:cond_4e
const-string v0, "Non-risky"
goto :goto_19
.end method