mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-01-30 14:52:16 +00:00
Fixing compilation, upated to bitcoinj 0.15, removed Namecoin
This commit is contained in:
parent
9afa0dd01f
commit
e5da0b24df
@ -17,23 +17,47 @@
|
||||
|
||||
package com.dogecoin.dogecoinj.protocols.payments;
|
||||
|
||||
import org.bitcoinj.core.*;
|
||||
import java.io.Serializable;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
import java.security.Signature;
|
||||
import java.security.SignatureException;
|
||||
import java.security.cert.CertPath;
|
||||
import java.security.cert.CertPathValidator;
|
||||
import java.security.cert.CertPathValidatorException;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.CertificateParsingException;
|
||||
import java.security.cert.PKIXCertPathValidatorResult;
|
||||
import java.security.cert.PKIXParameters;
|
||||
import java.security.cert.TrustAnchor;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.bitcoin.protocols.payments.Protos;
|
||||
import org.bitcoinj.core.Address;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.NetworkParameters;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.crypto.X509Utils;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import org.bitcoin.protocols.payments.Protos;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.Serializable;
|
||||
import java.security.*;
|
||||
import java.security.cert.*;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>Utility methods and constants for working with <a href="https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki">
|
||||
@ -270,7 +294,7 @@ public class PaymentProtocol {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this)
|
||||
return MoreObjects.toStringHelper(this)
|
||||
.add("displayName", displayName)
|
||||
.add("rootAuthorityName", rootAuthorityName)
|
||||
.add("merchantSigningKey", merchantSigningKey)
|
||||
|
@ -17,10 +17,9 @@
|
||||
|
||||
package org.bitcoinj.core;
|
||||
|
||||
import org.libdohj.core.AltcoinNetworkParameters;
|
||||
import com.google.common.base.Preconditions;
|
||||
import static org.bitcoinj.core.Utils.reverseBytes;
|
||||
import static org.libdohj.core.Utils.scryptDigest;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
@ -28,13 +27,12 @@ import java.math.BigInteger;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
import static org.bitcoinj.core.Coin.FIFTY_COINS;
|
||||
|
||||
import org.libdohj.core.ScryptHash;
|
||||
import static org.libdohj.core.Utils.scryptDigest;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import static org.bitcoinj.core.Utils.reverseBytes;
|
||||
import org.libdohj.core.AltcoinNetworkParameters;
|
||||
import org.libdohj.core.AuxPoWNetworkParameters;
|
||||
import org.libdohj.params.AbstractLitecoinParams;
|
||||
|
||||
/**
|
||||
* <p>A block is a group of transactions, and is one of the fundamental data structures of the Bitcoin system.
|
||||
@ -61,7 +59,7 @@ public class AltcoinBlock extends org.bitcoinj.core.Block {
|
||||
*/
|
||||
private boolean auxpowChain = false;
|
||||
|
||||
private ScryptHash scryptHash;
|
||||
private Sha256Hash scryptHash;
|
||||
|
||||
/** Special case constructor, used for the genesis node, cloneAsHeader and unit tests.
|
||||
* @param params NetworkParameters object.
|
||||
@ -113,11 +111,11 @@ public class AltcoinBlock extends org.bitcoinj.core.Block {
|
||||
super(params, version, prevBlockHash, merkleRoot, time, difficultyTarget, nonce, transactions);
|
||||
}
|
||||
|
||||
private ScryptHash calculateScryptHash() {
|
||||
private Sha256Hash calculateScryptHash() {
|
||||
try {
|
||||
ByteArrayOutputStream bos = new UnsafeByteArrayOutputStream(HEADER_SIZE);
|
||||
writeHeader(bos);
|
||||
return new ScryptHash(reverseBytes(scryptDigest(bos.toByteArray())));
|
||||
return Sha256Hash.wrap(reverseBytes(scryptDigest(bos.toByteArray())));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e); // Cannot happen.
|
||||
} catch (GeneralSecurityException e) {
|
||||
@ -137,7 +135,7 @@ public class AltcoinBlock extends org.bitcoinj.core.Block {
|
||||
* Returns the Scrypt hash of the block (which for a valid, solved block should be
|
||||
* below the target). Big endian.
|
||||
*/
|
||||
public ScryptHash getScryptHash() {
|
||||
public Sha256Hash getScryptHash() {
|
||||
if (scryptHash == null)
|
||||
scryptHash = calculateScryptHash();
|
||||
return scryptHash;
|
||||
@ -207,7 +205,9 @@ public class AltcoinBlock extends org.bitcoinj.core.Block {
|
||||
@Override
|
||||
public long getVersion() {
|
||||
// TODO: Can we cache the individual parts on parse?
|
||||
if (this.params instanceof AltcoinNetworkParameters) {
|
||||
if(this.params instanceof AbstractLitecoinParams) {
|
||||
return super.getVersion();
|
||||
} else if (this.params instanceof AltcoinNetworkParameters) {
|
||||
// AuxPoW networks use the higher block version bits for flags and
|
||||
// chain ID.
|
||||
return getBaseVersion(super.getVersion());
|
||||
|
@ -122,7 +122,7 @@ public class AuxPoW extends ChildMessage {
|
||||
@Override
|
||||
protected void parse() throws ProtocolException {
|
||||
cursor = offset;
|
||||
transaction = new Transaction(params, payload, cursor, this, serializer, Message.UNKNOWN_LENGTH);
|
||||
transaction = new Transaction(params, payload, cursor, this, serializer, Message.UNKNOWN_LENGTH, null);
|
||||
cursor += transaction.getOptimalEncodingMessageSize();
|
||||
optimalEncodingMessageSize = transaction.getOptimalEncodingMessageSize();
|
||||
|
||||
@ -163,7 +163,7 @@ public class AuxPoW extends ChildMessage {
|
||||
* @param chain If provided, will be used to estimate lock times (if set). Can be null.
|
||||
*/
|
||||
public String toString(@Nullable AbstractBlockChain chain) {
|
||||
return transaction.toString(chain);
|
||||
return transaction.toString(chain, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -23,8 +23,9 @@ import org.bitcoinj.core.Sha256Hash;
|
||||
* but in time the two classes should have a common superclass rather than one
|
||||
* extending the other directly.
|
||||
*/
|
||||
public class ScryptHash extends Sha256Hash {
|
||||
public class ScryptHash { // extends Sha256Hash {
|
||||
|
||||
/*
|
||||
public ScryptHash(byte[] rawHashBytes) {
|
||||
super(rawHashBytes);
|
||||
}
|
||||
@ -32,4 +33,5 @@ public class ScryptHash extends Sha256Hash {
|
||||
public ScryptHash(String hexString) {
|
||||
super(hexString);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
@ -16,9 +16,10 @@
|
||||
*/
|
||||
package org.libdohj.core;
|
||||
|
||||
import com.lambdaworks.crypto.SCrypt;
|
||||
import java.security.GeneralSecurityException;
|
||||
|
||||
import org.bouncycastle.crypto.generators.SCrypt;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -28,6 +29,6 @@ public class Utils {
|
||||
* The resulting hash is in small endian form.
|
||||
*/
|
||||
public static byte[] scryptDigest(byte[] input) throws GeneralSecurityException {
|
||||
return SCrypt.scrypt(input, input, 1024, 1, 1, 32);
|
||||
return SCrypt.generate(input, input, 1024, 1, 1, 32);
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ package org.libdohj.names;
|
||||
|
||||
import org.libdohj.script.NameScript;
|
||||
|
||||
import org.bitcoinj.core.ScriptException;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.script.Script;
|
||||
|
@ -108,8 +108,8 @@ public abstract class AbstractDogecoinParams extends NetworkParameters implement
|
||||
diffChangeTarget = setDiffChangeTarget;
|
||||
|
||||
packetMagic = 0xc0c0c0c0;
|
||||
bip32HeaderPub = 0x0488C42E; //The 4 byte header that serializes in base58 to "xpub". (?)
|
||||
bip32HeaderPriv = 0x0488E1F4; //The 4 byte header that serializes in base58 to "xprv" (?)
|
||||
bip32HeaderP2PKHpub = 0x0488C42E; //The 4 byte header that serializes in base58 to "xpub". (?)
|
||||
bip32HeaderP2PKHpriv = 0x0488E1F4; //The 4 byte header that serializes in base58 to "xprv" (?)
|
||||
}
|
||||
|
||||
private static AltcoinBlock createGenesis(NetworkParameters params) {
|
||||
|
@ -89,8 +89,8 @@ public abstract class AbstractLitecoinParams extends NetworkParameters implement
|
||||
maxTarget = Utils.decodeCompactBits(0x1e0fffffL);
|
||||
|
||||
packetMagic = 0xfbc0b6db;
|
||||
bip32HeaderPub = 0x0488C42E; //The 4 byte header that serializes in base58 to "xpub". (?)
|
||||
bip32HeaderPriv = 0x0488E1F4; //The 4 byte header that serializes in base58 to "xprv" (?)
|
||||
bip32HeaderP2PKHpub = 0x0488C42E; //The 4 byte header that serializes in base58 to "xpub". (?)
|
||||
bip32HeaderP2PKHpriv = 0x0488E1F4; //The 4 byte header that serializes in base58 to "xprv" (?)
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,7 +117,7 @@ public abstract class AbstractLitecoinParams extends NetworkParameters implement
|
||||
|
||||
@Override
|
||||
public Coin getMinNonDustOutput() {
|
||||
return Coin.COIN;
|
||||
return Coin.valueOf(100000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -98,8 +98,8 @@ public abstract class AbstractNamecoinParams extends NetworkParameters implement
|
||||
maxTarget = Utils.decodeCompactBits(0x1e0fffffL); // TODO: figure out the Namecoin value of this
|
||||
|
||||
// BIP 43 recommends using these values regardless of which blockchain is in use.
|
||||
bip32HeaderPub = 0x0488B21E; //The 4 byte header that serializes in base58 to "xpub".
|
||||
bip32HeaderPriv = 0x0488ADE4; //The 4 byte header that serializes in base58 to "xprv"
|
||||
bip32HeaderP2PKHpub = 0x0488B21E; //The 4 byte header that serializes in base58 to "xpub".
|
||||
bip32HeaderP2PKHpriv = 0x0488ADE4; //The 4 byte header that serializes in base58 to "xprv"
|
||||
}
|
||||
|
||||
private static AltcoinBlock createGenesis(NetworkParameters params) {
|
||||
|
@ -35,14 +35,14 @@ public class DogecoinMainNetParams extends AbstractDogecoinParams {
|
||||
dumpedPrivateKeyHeader = 158; //This is always addressHeader + 128
|
||||
addressHeader = 30;
|
||||
p2shHeader = 22;
|
||||
acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
// acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
port = 22556;
|
||||
packetMagic = 0xc0c0c0c0;
|
||||
// Note that while BIP44 makes HD wallets chain-agnostic, for legacy
|
||||
// reasons we use a Doge-specific header for main net. At some point
|
||||
// we'll add independent headers for BIP32 legacy and BIP44.
|
||||
bip32HeaderPub = 0x02facafd; //The 4 byte header that serializes in base58 to "dgub".
|
||||
bip32HeaderPriv = 0x02fac398; //The 4 byte header that serializes in base58 to "dgpv".
|
||||
bip32HeaderP2PKHpub = 0x02facafd; //The 4 byte header that serializes in base58 to "dgub".
|
||||
bip32HeaderP2PKHpriv = 0x02fac398; //The 4 byte header that serializes in base58 to "dgpv".
|
||||
genesisBlock.setDifficultyTarget(0x1e0ffff0L);
|
||||
genesisBlock.setTime(1386325540L);
|
||||
genesisBlock.setNonce(99943L);
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.libdohj.params;
|
||||
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
@ -43,7 +43,7 @@ public class DogecoinTestNet3Params extends AbstractDogecoinParams {
|
||||
port = 44556;
|
||||
addressHeader = 113;
|
||||
p2shHeader = 196;
|
||||
acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
// acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
dumpedPrivateKeyHeader = 241;
|
||||
genesisBlock.setTime(1391503289L);
|
||||
genesisBlock.setDifficultyTarget(0x1e0ffff0L);
|
||||
@ -63,8 +63,8 @@ public class DogecoinTestNet3Params extends AbstractDogecoinParams {
|
||||
};
|
||||
// Note this is the same as the BIP32 testnet, as BIP44 makes HD wallets
|
||||
// chain agnostic. Dogecoin mainnet has its own headers for legacy reasons.
|
||||
bip32HeaderPub = 0x043587CF;
|
||||
bip32HeaderPriv = 0x04358394;
|
||||
bip32HeaderP2PKHpub = 0x043587CF;
|
||||
bip32HeaderP2PKHpriv = 0x04358394;
|
||||
}
|
||||
|
||||
private static DogecoinTestNet3Params instance;
|
||||
|
@ -18,8 +18,6 @@
|
||||
package org.libdohj.params;
|
||||
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import org.bitcoinj.core.AltcoinBlock;
|
||||
@ -32,6 +30,7 @@ import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.params.MainNetParams;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptOpCodes;
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
|
||||
/**
|
||||
* Parameters for the Litecoin main production network on which people trade
|
||||
@ -52,7 +51,7 @@ public class LitecoinMainNetParams extends AbstractLitecoinParams {
|
||||
port = 9333;
|
||||
addressHeader = 48;
|
||||
p2shHeader = 5;
|
||||
acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
// acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
dumpedPrivateKeyHeader = 176;
|
||||
|
||||
this.genesisBlock = createGenesis(this);
|
||||
@ -74,8 +73,8 @@ public class LitecoinMainNetParams extends AbstractLitecoinParams {
|
||||
"dnsseed.koin-project.com",
|
||||
"dnsseed.weminemnc.com"
|
||||
};
|
||||
bip32HeaderPub = 0x0488B21E;
|
||||
bip32HeaderPriv = 0x0488ADE4;
|
||||
bip32HeaderP2PKHpub = 0x0488B21E;
|
||||
bip32HeaderP2PKHpriv = 0x0488ADE4;
|
||||
}
|
||||
|
||||
private static AltcoinBlock createGenesis(NetworkParameters params) {
|
||||
|
@ -18,7 +18,6 @@
|
||||
package org.libdohj.params;
|
||||
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@ -31,6 +30,7 @@ import org.bitcoinj.core.TransactionInput;
|
||||
import org.bitcoinj.core.TransactionOutput;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptOpCodes;
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
|
||||
/**
|
||||
* Parameters for the testnet, a separate public instance of Litecoin that has
|
||||
@ -52,7 +52,7 @@ public class LitecoinTestNet3Params extends AbstractLitecoinParams {
|
||||
port = 19333;
|
||||
addressHeader = 111;
|
||||
p2shHeader = 196;
|
||||
acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
// acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
dumpedPrivateKeyHeader = 239;
|
||||
|
||||
this.genesisBlock = createGenesis(this);
|
||||
@ -73,8 +73,8 @@ public class LitecoinTestNet3Params extends AbstractLitecoinParams {
|
||||
"dnsseed.wemine-testnet.com"
|
||||
};
|
||||
|
||||
bip32HeaderPub = 0x043587CF;
|
||||
bip32HeaderPriv = 0x04358394;
|
||||
bip32HeaderP2PKHpub = 0x043587CF;
|
||||
bip32HeaderP2PKHpriv = 0x04358394;
|
||||
}
|
||||
|
||||
private static AltcoinBlock createGenesis(NetworkParameters params) {
|
||||
|
@ -1,120 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013 Google Inc, 2016 Jeremy Rand.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.libdohj.params;
|
||||
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.spongycastle.util.encoders.Hex;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
// TODO: review this
|
||||
|
||||
/**
|
||||
* Parameters for the main Namecoin production network on which people trade
|
||||
* goods and services.
|
||||
*/
|
||||
public class NamecoinMainNetParams extends AbstractNamecoinParams {
|
||||
public static final int MAINNET_MAJORITY_WINDOW = 1000;
|
||||
public static final int MAINNET_MAJORITY_REJECT_BLOCK_OUTDATED = 950;
|
||||
public static final int MAINNET_MAJORITY_ENFORCE_BLOCK_UPGRADE = 750;
|
||||
|
||||
public NamecoinMainNetParams() {
|
||||
super();
|
||||
dumpedPrivateKeyHeader = 180; //This is always addressHeader + 128
|
||||
addressHeader = 52;
|
||||
p2shHeader = 13;
|
||||
//acceptableAddressCodes = new int[] { addressHeader, p2shHeader };
|
||||
acceptableAddressCodes = new int[] { addressHeader }; // Namecoin doesn't yet enforce P2SH, so we disable it for now.
|
||||
port = 8334;
|
||||
packetMagic = 0xf9beb4fe;
|
||||
|
||||
genesisBlock.setDifficultyTarget(0x1C007FFFL);
|
||||
genesisBlock.setTime(1303000001L);
|
||||
genesisBlock.setNonce(2719916434L);
|
||||
id = ID_NMC_MAINNET;
|
||||
subsidyDecreaseBlockCount = 210000;
|
||||
spendableCoinbaseDepth = 100;
|
||||
auxpowStartHeight = 19200;
|
||||
|
||||
String genesisHash = genesisBlock.getHashAsString();
|
||||
checkState(genesisHash.equals("000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770"),
|
||||
genesisHash);
|
||||
// TODO: remove alert key since it's removed from Bitcoin Core / Namecoin Core
|
||||
alertSigningKey = Hex.decode("04ba207043c1575208f08ea6ac27ed2aedd4f84e70b874db129acb08e6109a3bbb7c479ae22565973ebf0ac0391514511a22cb9345bdb772be20cfbd38be578b0c");
|
||||
|
||||
majorityEnforceBlockUpgrade = MAINNET_MAJORITY_ENFORCE_BLOCK_UPGRADE;
|
||||
majorityRejectBlockOutdated = MAINNET_MAJORITY_REJECT_BLOCK_OUTDATED;
|
||||
majorityWindow = MAINNET_MAJORITY_WINDOW;
|
||||
|
||||
// TODO: check whether there are any non BIP30 blocks in Namecoin; add them here if they exist
|
||||
// This contains (at a minimum) the blocks which are not BIP30 compliant. BIP30 changed how duplicate
|
||||
// transactions are handled. Duplicated transactions could occur in the case where a coinbase had the same
|
||||
// extraNonce and the same outputs but appeared at different heights, and greatly complicated re-org handling.
|
||||
// Having these here simplifies block connection logic considerably.
|
||||
checkpoints.put( 2016, Sha256Hash.wrap("0000000000660bad0d9fbde55ba7ee14ddf766ed5f527e3fbca523ac11460b92"));
|
||||
checkpoints.put( 4032, Sha256Hash.wrap("0000000000493b5696ad482deb79da835fe2385304b841beef1938655ddbc411"));
|
||||
checkpoints.put( 6048, Sha256Hash.wrap("000000000027939a2e1d8bb63f36c47da858e56d570f143e67e85068943470c9"));
|
||||
checkpoints.put( 8064, Sha256Hash.wrap("000000000003a01f708da7396e54d081701ea406ed163e519589717d8b7c95a5"));
|
||||
checkpoints.put( 10080, Sha256Hash.wrap("00000000000fed3899f818b2228b4f01b9a0a7eeee907abd172852df71c64b06"));
|
||||
checkpoints.put( 12096, Sha256Hash.wrap("0000000000006c06988ff361f124314f9f4bb45b6997d90a7ee4cedf434c670f"));
|
||||
checkpoints.put( 14112, Sha256Hash.wrap("00000000000045d95e0588c47c17d593c7b5cb4fb1e56213d1b3843c1773df2b"));
|
||||
checkpoints.put( 16128, Sha256Hash.wrap("000000000001d9964f9483f9096cf9d6c6c2886ed1e5dec95ad2aeec3ce72fa9"));
|
||||
checkpoints.put( 18940, Sha256Hash.wrap("00000000000087f7fc0c8085217503ba86f796fa4984f7e5a08b6c4c12906c05"));
|
||||
checkpoints.put( 30240, Sha256Hash.wrap("e1c8c862ff342358384d4c22fa6ea5f669f3e1cdcf34111f8017371c3c0be1da"));
|
||||
checkpoints.put( 57000, Sha256Hash.wrap("aa3ec60168a0200799e362e2b572ee01f3c3852030d07d036e0aa884ec61f203"));
|
||||
checkpoints.put(112896, Sha256Hash.wrap("73f880e78a04dd6a31efc8abf7ca5db4e262c4ae130d559730d6ccb8808095bf"));
|
||||
checkpoints.put(182000, Sha256Hash.wrap("d47b4a8fd282f635d66ce34ebbeb26ffd64c35b41f286646598abfd813cba6d9"));
|
||||
checkpoints.put(193000, Sha256Hash.wrap("3b85e70ba7f5433049cfbcf0ae35ed869496dbedcd1c0fafadb0284ec81d7b58"));
|
||||
|
||||
dnsSeeds = new String[] {
|
||||
"namecoindnsseed.digi-masters.com", // George Lloyd
|
||||
"namecoindnsseed.digi-masters.uk", // George Lloyd
|
||||
"seed.namecoin.domob.eu", // Daniel Kraft
|
||||
"nmc.seed.quisquis.de", // Peter Conrad
|
||||
"dnsseed.namecoin.webbtc.com", // Marius Hanne
|
||||
};
|
||||
|
||||
// TODO: look into HTTP seeds or Addr seeds as is done for Bitcoin
|
||||
}
|
||||
|
||||
private static NamecoinMainNetParams instance;
|
||||
public static synchronized NamecoinMainNetParams get() {
|
||||
if (instance == null) {
|
||||
instance = new NamecoinMainNetParams();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
// TODO: re-add this when we introduce Testnet2
|
||||
/*
|
||||
@Override
|
||||
public boolean allowMinDifficultyBlocks() {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
@Override
|
||||
public String getPaymentProtocolId() {
|
||||
// TODO: CHANGE THIS (comment from Dogecoin)
|
||||
return ID_NMC_MAINNET;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTestNet() {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -16,10 +16,12 @@
|
||||
|
||||
package org.libdohj.script;
|
||||
|
||||
import org.bitcoinj.core.ScriptException;
|
||||
import org.bitcoinj.script.Script;
|
||||
import org.bitcoinj.script.ScriptBuilder;
|
||||
import org.bitcoinj.script.ScriptChunk;
|
||||
import org.bitcoinj.script.ScriptError;
|
||||
import org.bitcoinj.script.ScriptException;
|
||||
|
||||
import static org.bitcoinj.script.ScriptOpCodes.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -129,7 +131,7 @@ public class NameScript {
|
||||
return false;
|
||||
|
||||
default:
|
||||
throw new ScriptException("Invalid name op");
|
||||
throw new ScriptException(null, "Invalid name op");
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,7 +151,7 @@ public class NameScript {
|
||||
return true;
|
||||
|
||||
default:
|
||||
throw new ScriptException("Not a name op");
|
||||
throw new ScriptException(null, "Not a name op");
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,7 +162,7 @@ public class NameScript {
|
||||
return args.get(0);
|
||||
|
||||
default:
|
||||
throw new ScriptException("Not an AnyUpdate op");
|
||||
throw new ScriptException(null, "Not an AnyUpdate op");
|
||||
}
|
||||
}
|
||||
|
||||
@ -173,7 +175,7 @@ public class NameScript {
|
||||
return args.get(1);
|
||||
|
||||
default:
|
||||
throw new ScriptException("Not an AnyUpdate op");
|
||||
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Not an AnyUpdate op");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user