TestNet3Params.smali

.class public Lorg/bitcoinj/params/TestNet3Params;
.super Lorg/bitcoinj/params/AbstractBitcoinNetParams;
.source "TestNet3Params.java"


# static fields
.field private static instance:Lorg/bitcoinj/params/TestNet3Params;

.field private static final testnetDiffDate:Ljava/util/Date;


# direct methods
.method static constructor <clinit>()V
    .registers 4

    .prologue
    .line 89
    new-instance v0, Ljava/util/Date;

    const-wide v2, 0x1357e4efc00L

    invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V

    sput-object v0, Lorg/bitcoinj/params/TestNet3Params;->testnetDiffDate:Ljava/util/Date;

    return-void
.end method

.method public constructor <init>()V
    .registers 11

    .prologue
    const-wide/32 v8, 0x1d00ffff

    const/16 v7, 0x64

    const/4 v6, 0x2

    const/4 v5, 0x1

    const/4 v4, 0x0

    .line 39
    invoke-direct {p0}, Lorg/bitcoinj/params/AbstractBitcoinNetParams;-><init>()V

    .line 40
    const-string v0, "org.bitcoin.test"

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->id:Ljava/lang/String;

    .line 42
    const-wide/32 v0, 0xb110907

    iput-wide v0, p0, Lorg/bitcoinj/params/TestNet3Params;->packetMagic:J

    .line 43
    const/16 v0, 0x7e0

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->interval:I

    .line 44
    const v0, 0x127500

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->targetTimespan:I

    .line 45
    invoke-static {v8, v9}, Lorg/bitcoinj/core/Utils;->decodeCompactBits(J)Ljava/math/BigInteger;

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->maxTarget:Ljava/math/BigInteger;

    .line 46
    const/16 v0, 0x479d

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->port:I

    .line 47
    const/16 v0, 0x6f

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->addressHeader:I

    .line 48
    const/16 v0, 0xc4

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->p2shHeader:I

    .line 49
    new-array v0, v6, [I

    iget v1, p0, Lorg/bitcoinj/params/TestNet3Params;->addressHeader:I

    aput v1, v0, v4

    iget v1, p0, Lorg/bitcoinj/params/TestNet3Params;->p2shHeader:I

    aput v1, v0, v5

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->acceptableAddressCodes:[I

    .line 50
    const/16 v0, 0xef

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->dumpedPrivateKeyHeader:I

    .line 51
    iget-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->genesisBlock:Lorg/bitcoinj/core/Block;

    const-wide/32 v2, 0x4d49e5da

    invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/Block;->setTime(J)V

    .line 52
    iget-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->genesisBlock:Lorg/bitcoinj/core/Block;

    invoke-virtual {v0, v8, v9}, Lorg/bitcoinj/core/Block;->setDifficultyTarget(J)V

    .line 53
    iget-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->genesisBlock:Lorg/bitcoinj/core/Block;

    const-wide/32 v2, 0x18aea41a

    invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/core/Block;->setNonce(J)V

    .line 54
    iput v7, p0, Lorg/bitcoinj/params/TestNet3Params;->spendableCoinbaseDepth:I

    .line 55
    const v0, 0x33450

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->subsidyDecreaseBlockCount:I

    .line 56
    iget-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->genesisBlock:Lorg/bitcoinj/core/Block;

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getHashAsString()Ljava/lang/String;

    move-result-object v0

    .line 57
    const-string v1, "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V

    .line 58
    sget-object v0, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;

    const-string v1, "04302390343f91cc401d56d68b123028bf52e5fca1939df127f63c6467cdf9c8e2c14b61104cf817d0b780da337893ecc4aaff1309e536162dabbdb45200ca2b0a"

    invoke-virtual {v0, v1}, Lcom/google/common/io/BaseEncoding;->m(Ljava/lang/CharSequence;)[B

    move-result-object v0

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->alertSigningKey:[B

    .line 60
    const/4 v0, 0x4

    new-array v0, v0, [Ljava/lang/String;

    const-string v1, "testnet-seed.bitcoin.jonasschnelli.ch"

    aput-object v1, v0, v4

    const-string v1, "testnet-seed.bluematt.me"

    aput-object v1, v0, v5

    const-string v1, "testnet-seed.bitcoin.petertodd.org"

    aput-object v1, v0, v6

    const/4 v1, 0x3

    const-string v2, "testnet-seed.bitcoin.schildbach.de"

    aput-object v2, v0, v1

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->dnsSeeds:[Ljava/lang/String;

    .line 66
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/bitcoinj/params/TestNet3Params;->addrSeeds:[I

    .line 67
    const v0, 0x43587cf

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->bip32HeaderPub:I

    .line 68
    const v0, 0x4358394

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->bip32HeaderPriv:I

    .line 70
    const/16 v0, 0x33

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->majorityEnforceBlockUpgrade:I

    .line 71
    const/16 v0, 0x4b

    iput v0, p0, Lorg/bitcoinj/params/TestNet3Params;->majorityRejectBlockOutdated:I

    .line 72
    iput v7, p0, Lorg/bitcoinj/params/TestNet3Params;->majorityWindow:I

    .line 73
    return-void
.end method

.method public static declared-synchronized get()Lorg/bitcoinj/params/TestNet3Params;
    .registers 2

    .prologue
    .line 77
    const-class v1, Lorg/bitcoinj/params/TestNet3Params;

    monitor-enter v1

    :try_start_3
    sget-object v0, Lorg/bitcoinj/params/TestNet3Params;->instance:Lorg/bitcoinj/params/TestNet3Params;

    if-nez v0, :cond_e

    .line 78
    new-instance v0, Lorg/bitcoinj/params/TestNet3Params;

    invoke-direct {v0}, Lorg/bitcoinj/params/TestNet3Params;-><init>()V

    sput-object v0, Lorg/bitcoinj/params/TestNet3Params;->instance:Lorg/bitcoinj/params/TestNet3Params;

    .line 80
    :cond_e
    sget-object v0, Lorg/bitcoinj/params/TestNet3Params;->instance:Lorg/bitcoinj/params/TestNet3Params;
    :try_end_10
    .catchall {:try_start_3 .. :try_end_10} :catchall_12

    monitor-exit v1

    return-object v0

    .line 77
    :catchall_12
    move-exception v0

    monitor-exit v1

    throw v0
.end method


# virtual methods
.method public checkDifficultyTransitions(Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/Block;Lorg/bitcoinj/store/BlockStore;)V
    .registers 8

    .prologue
    .line 94
    invoke-virtual {p0, p1}, Lorg/bitcoinj/params/TestNet3Params;->isDifficultyTransitionPoint(Lorg/bitcoinj/core/StoredBlock;)Z

    move-result v0

    if-nez v0, :cond_a1

    invoke-virtual {p2}, Lorg/bitcoinj/core/Block;->getTime()Ljava/util/Date;

    move-result-object v0

    sget-object v1, Lorg/bitcoinj/params/TestNet3Params;->testnetDiffDate:Ljava/util/Date;

    invoke-virtual {v0, v1}, Ljava/util/Date;->after(Ljava/util/Date;)Z

    move-result v0

    if-eqz v0, :cond_a1

    .line 95
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    .line 100
    invoke-virtual {p2}, Lorg/bitcoinj/core/Block;->getTimeSeconds()J

    move-result-wide v2

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getTimeSeconds()J

    move-result-wide v0

    sub-long v0, v2, v0

    .line 103
    const-wide/16 v2, 0x0

    cmp-long v2, v0, v2

    if-ltz v2, :cond_a4

    const-wide/16 v2, 0x4b0

    cmp-long v0, v0, v2

    if-gtz v0, :cond_a4

    .line 107
    :goto_2c
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {p0}, Lorg/bitcoinj/params/TestNet3Params;->getGenesisBlock()Lorg/bitcoinj/core/Block;

    move-result-object v1

    invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Block;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_5c

    .line 108
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeight()I

    move-result v0

    invoke-virtual {p0}, Lorg/bitcoinj/params/TestNet3Params;->getInterval()I

    move-result v1

    rem-int/2addr v0, v1

    if-eqz v0, :cond_5c

    .line 109
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getDifficultyTargetAsInteger()Ljava/math/BigInteger;

    move-result-object v0

    invoke-virtual {p0}, Lorg/bitcoinj/params/TestNet3Params;->getMaxTarget()Ljava/math/BigInteger;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_5c

    .line 110
    invoke-virtual {p1, p3}, Lorg/bitcoinj/core/StoredBlock;->getPrev(Lorg/bitcoinj/store/BlockStore;)Lorg/bitcoinj/core/StoredBlock;

    move-result-object p1

    goto :goto_2c

    .line 111
    :cond_5c
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v0

    invoke-virtual {v0}, Lorg/bitcoinj/core/Block;->getDifficultyTargetAsInteger()Ljava/math/BigInteger;

    move-result-object v0

    .line 112
    invoke-virtual {p2}, Lorg/bitcoinj/core/Block;->getDifficultyTargetAsInteger()Ljava/math/BigInteger;

    move-result-object v1

    .line 113
    invoke-virtual {v0, v1}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_a4

    .line 114
    new-instance v0, Lorg/bitcoinj/core/VerificationException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Testnet block transition that is not allowed: "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 115
    invoke-virtual {p1}, Lorg/bitcoinj/core/StoredBlock;->getHeader()Lorg/bitcoinj/core/Block;

    move-result-object v2

    invoke-virtual {v2}, Lorg/bitcoinj/core/Block;->getDifficultyTarget()J

    move-result-wide v2

    invoke-static {v2, v3}, Ljava/lang/Long;->toHexString(J)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

    const-string v2, " vs "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    .line 116
    invoke-virtual {p2}, Lorg/bitcoinj/core/Block;->getDifficultyTarget()J

    move-result-wide v2

    invoke-static {v2, v3}, Ljava/lang/Long;->toHexString(J)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-direct {v0, v1}, Lorg/bitcoinj/core/VerificationException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 119
    :cond_a1
    invoke-super {p0, p1, p2, p3}, Lorg/bitcoinj/params/AbstractBitcoinNetParams;->checkDifficultyTransitions(Lorg/bitcoinj/core/StoredBlock;Lorg/bitcoinj/core/Block;Lorg/bitcoinj/store/BlockStore;)V

    .line 121
    :cond_a4
    return-void
.end method

.method public getPaymentProtocolId()Ljava/lang/String;
    .registers 2

    .prologue
    .line 85
    const-string v0, "test"

    return-object v0
.end method