SendRequest.smali
.class public Lorg/bitcoinj/wallet/SendRequest;
.super Ljava/lang/Object;
.source "SendRequest.java"
# instance fields
.field public aesKey:Lorg/spongycastle/crypto/params/KeyParameter;
.field public changeAddress:Lorg/bitcoinj/core/Address;
.field public coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.field completed:Z
.field public emptyWallet:Z
.field public ensureMinRequiredFee:Z
.field public exchangeRate:Lorg/bitcoinj/utils/ExchangeRate;
.field public feePerKb:Lorg/bitcoinj/core/Coin;
.field public memo:Ljava/lang/String;
.field public missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
.field public shuffleOutputs:Z
.field public signInputs:Z
.field public tx:Lorg/bitcoinj/core/Transaction;
# direct methods
.method private constructor <init>()V
.registers 4
.prologue
const/4 v2, 0x1
const/4 v1, 0x0
.line 152
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 71
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
.line 78
iput-object v1, p0, Lorg/bitcoinj/wallet/SendRequest;->changeAddress:Lorg/bitcoinj/core/Address;
.line 92
invoke-static {}, Lorg/bitcoinj/core/Context;->get()Lorg/bitcoinj/core/Context;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Context;->getFeePerKb()Lorg/bitcoinj/core/Coin;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
.line 103
invoke-static {}, Lorg/bitcoinj/core/Context;->get()Lorg/bitcoinj/core/Context;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/Context;->isEnsureMinRequiredFee()Z
move-result v0
iput-boolean v0, p0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
.line 108
iput-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->signInputs:Z
.line 115
iput-object v1, p0, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;
.line 122
iput-object v1, p0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.line 129
iput-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z
.line 136
sget-object v0, Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;->THROW:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
iput-object v0, p0, Lorg/bitcoinj/wallet/SendRequest;->missingSigsMode:Lorg/bitcoinj/wallet/Wallet$MissingSigsMode;
.line 141
iput-object v1, p0, Lorg/bitcoinj/wallet/SendRequest;->exchangeRate:Lorg/bitcoinj/utils/ExchangeRate;
.line 147
iput-object v1, p0, Lorg/bitcoinj/wallet/SendRequest;->memo:Ljava/lang/String;
.line 152
return-void
.end method
.method public static childPaysForParent(Lorg/bitcoinj/wallet/Wallet;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 7
.prologue
.line 207
const/4 v1, 0x0
.line 208
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 v2
:cond_9
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_5a
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/TransactionOutput;
.line 209
invoke-virtual {v0, p0}, Lorg/bitcoinj/core/TransactionOutput;->isMine(Lorg/bitcoinj/core/TransactionBag;)Z
move-result v3
if-eqz v3, :cond_9
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->isAvailableForSpending()Z
move-result v3
if-eqz v3, :cond_9
.line 210
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v3
invoke-virtual {v3, p2}, Lorg/bitcoinj/core/Coin;->isGreaterThan(Lorg/bitcoinj/core/Coin;)Z
move-result v3
if-eqz v3, :cond_9
.line 216
:goto_2b
const-string v1, "Can\'t find adequately sized output that spends to us"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 218
new-instance v1, Lorg/bitcoinj/core/Transaction;
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v2
invoke-direct {v1, v2}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
.line 219
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Transaction;->addInput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionInput;
.line 220
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionOutput;->getValue()Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v0, p2}, Lorg/bitcoinj/core/Coin;->subtract(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
sget-object v2, Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;->CHANGE:Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;
invoke-virtual {p0, v2}, Lorg/bitcoinj/wallet/Wallet;->freshAddress(Lorg/bitcoinj/wallet/KeyChain$KeyPurpose;)Lorg/bitcoinj/core/Address;
move-result-object v2
invoke-virtual {v1, v0, v2}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/core/TransactionOutput;
.line 221
sget-object v0, Lorg/bitcoinj/core/Transaction$Purpose;->RAISE_FEE:Lorg/bitcoinj/core/Transaction$Purpose;
invoke-virtual {v1, v0}, Lorg/bitcoinj/core/Transaction;->setPurpose(Lorg/bitcoinj/core/Transaction$Purpose;)V
.line 222
invoke-static {v1}, Lorg/bitcoinj/wallet/SendRequest;->forTx(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
.line 223
const/4 v1, 0x1
iput-boolean v1, v0, Lorg/bitcoinj/wallet/SendRequest;->completed:Z
.line 224
return-object v0
:cond_5a
move-object v0, v1
goto :goto_2b
.end method
.method public static emptyWallet(Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/wallet/SendRequest;
.registers 4
.prologue
.line 192
new-instance v0, Lorg/bitcoinj/wallet/SendRequest;
invoke-direct {v0}, Lorg/bitcoinj/wallet/SendRequest;-><init>()V
.line 193
invoke-virtual {p0}, Lorg/bitcoinj/core/Address;->getParameters()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v1
.line 194
const-string v2, "Address is for an unknown network"
invoke-static {v1, v2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 195
new-instance v2, Lorg/bitcoinj/core/Transaction;
invoke-direct {v2, v1}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
iput-object v2, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 196
iget-object v1, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
sget-object v2, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
invoke-virtual {v1, v2, p0}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/core/TransactionOutput;
.line 197
const/4 v1, 0x1
iput-boolean v1, v0, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
.line 198
return-object v0
.end method
.method public static forTx(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/SendRequest;
.registers 2
.prologue
.line 186
new-instance v0, Lorg/bitcoinj/wallet/SendRequest;
invoke-direct {v0}, Lorg/bitcoinj/wallet/SendRequest;-><init>()V
.line 187
iput-object p0, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 188
return-object v0
.end method
.method public static to(Lorg/bitcoinj/core/Address;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 5
.prologue
.line 161
new-instance v0, Lorg/bitcoinj/wallet/SendRequest;
invoke-direct {v0}, Lorg/bitcoinj/wallet/SendRequest;-><init>()V
.line 162
invoke-virtual {p0}, Lorg/bitcoinj/core/Address;->getParameters()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v1
.line 163
const-string v2, "Address is for an unknown network"
invoke-static {v1, v2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 164
new-instance v2, Lorg/bitcoinj/core/Transaction;
invoke-direct {v2, v1}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
iput-object v2, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 165
iget-object v1, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1, p1, p0}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;)Lorg/bitcoinj/core/TransactionOutput;
.line 166
return-object v0
.end method
.method public static to(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 5
.prologue
.line 178
new-instance v0, Lorg/bitcoinj/wallet/SendRequest;
invoke-direct {v0}, Lorg/bitcoinj/wallet/SendRequest;-><init>()V
.line 179
new-instance v1, Lorg/bitcoinj/core/Transaction;
invoke-direct {v1, p0}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
iput-object v1, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 180
iget-object v1, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v1, p2, p1}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/ECKey;)Lorg/bitcoinj/core/TransactionOutput;
.line 181
return-object v0
.end method
.method public static toCLTVPaymentChannel(Lorg/bitcoinj/core/NetworkParameters;ILorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 7
.prologue
.line 234
if-ltz p1, :cond_17
const v0, 0x1dcd6500
if-ge p1, v0, :cond_17
const/4 v0, 0x1
:goto_8
const-string v1, "Block number was too large"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 235
int-to-long v0, p1
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
invoke-static {p0, v0, p2, p3, p4}, Lorg/bitcoinj/wallet/SendRequest;->toCLTVPaymentChannel(Lorg/bitcoinj/core/NetworkParameters;Ljava/math/BigInteger;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
return-object v0
.line 234
:cond_17
const/4 v0, 0x0
goto :goto_8
.end method
.method public static toCLTVPaymentChannel(Lorg/bitcoinj/core/NetworkParameters;Ljava/math/BigInteger;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 8
.prologue
.line 239
new-instance v0, Lorg/bitcoinj/wallet/SendRequest;
invoke-direct {v0}, Lorg/bitcoinj/wallet/SendRequest;-><init>()V
.line 240
invoke-static {p1, p2, p3}, Lorg/bitcoinj/script/ScriptBuilder;->createCLTVPaymentChannelOutput(Ljava/math/BigInteger;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;)Lorg/bitcoinj/script/Script;
move-result-object v1
.line 241
new-instance v2, Lorg/bitcoinj/core/Transaction;
invoke-direct {v2, p0}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
iput-object v2, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
.line 242
iget-object v2, v0, Lorg/bitcoinj/wallet/SendRequest;->tx:Lorg/bitcoinj/core/Transaction;
invoke-virtual {v2, p4, v1}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/core/TransactionOutput;
.line 243
return-object v0
.end method
.method public static toCLTVPaymentChannel(Lorg/bitcoinj/core/NetworkParameters;Ljava/util/Date;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
.registers 9
.prologue
.line 228
invoke-virtual {p1}, Ljava/util/Date;->getTime()J
move-result-wide v0
const-wide/16 v2, 0x3e8
div-long v2, v0, v2
.line 229
const-wide/32 v0, 0x1dcd6500
cmp-long v0, v2, v0
if-ltz v0, :cond_1e
const/4 v0, 0x1
:goto_10
const-string v1, "Release time was too small"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 230
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
invoke-static {p0, v0, p2, p3, p4}, Lorg/bitcoinj/wallet/SendRequest;->toCLTVPaymentChannel(Lorg/bitcoinj/core/NetworkParameters;Ljava/math/BigInteger;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
return-object v0
.line 229
:cond_1e
const/4 v0, 0x0
goto :goto_10
.end method
# virtual methods
.method public fromPaymentDetails(Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;)Lorg/bitcoinj/wallet/SendRequest;
.registers 3
.prologue
.line 248
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasMemo()Z
move-result v0
if-eqz v0, :cond_c
.line 249
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getMemo()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/wallet/SendRequest;->memo:Ljava/lang/String;
.line 250
:cond_c
return-object p0
.end method
.method public toString()Ljava/lang/String;
.registers 4
.prologue
.line 256
invoke-static {p0}, Lcom/google/common/base/j;->R(Ljava/lang/Object;)Lcom/google/common/base/k;
move-result-object v1
.line 1174
const/4 v0, 0x1
iput-boolean v0, v1, Lcom/google/common/base/k;->aUn:Z
.line 257
const-string v0, "emptyWallet"
iget-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->emptyWallet:Z
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 258
const-string v0, "changeAddress"
iget-object v2, p0, Lorg/bitcoinj/wallet/SendRequest;->changeAddress:Lorg/bitcoinj/core/Address;
.line 1185
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 259
const-string v0, "feePerKb"
iget-object v2, p0, Lorg/bitcoinj/wallet/SendRequest;->feePerKb:Lorg/bitcoinj/core/Coin;
.line 2185
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 260
const-string v0, "ensureMinRequiredFee"
iget-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->ensureMinRequiredFee:Z
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 261
const-string v0, "signInputs"
iget-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->signInputs:Z
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 262
const-string v2, "aesKey"
iget-object v0, p0, Lorg/bitcoinj/wallet/SendRequest;->aesKey:Lorg/spongycastle/crypto/params/KeyParameter;
if-eqz v0, :cond_48
const-string v0, "set"
.line 3185
:goto_32
invoke-virtual {v1, v2, v0}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 263
const-string v0, "coinSelector"
iget-object v2, p0, Lorg/bitcoinj/wallet/SendRequest;->coinSelector:Lorg/bitcoinj/wallet/CoinSelector;
.line 4185
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 264
const-string v0, "shuffleOutputs"
iget-boolean v2, p0, Lorg/bitcoinj/wallet/SendRequest;->shuffleOutputs:Z
invoke-virtual {v1, v0, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 265
invoke-virtual {v1}, Lcom/google/common/base/k;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.line 262
:cond_48
const/4 v0, 0x0
goto :goto_32
.end method