Class NetworkParameters
- Direct Known Subclasses:
AbstractBitcoinNetParams
NetworkParameters contains the data needed for working with an instantiation of a Bitcoin chain.
This is an abstract class, concrete instantiations can be found in the params package. There are four:
one for the main network (MainNetParams), one for the public test network, and two others that are
intended for unit testing and local app development purposes. Although this class contains some aliases for
them, you are encouraged to call the static get() methods on each specific params class directly.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intprotected int[]static final intBlocks with a timestamp after this should enforce BIP 16, aka "Pay to script hash".protected intprotected intprotected intprotected intprotected Map<Integer,Sha256Hash> protected MessageSerializerprotected String[]protected intprotected HttpDiscovery.Details[]protected StringSee getId().static final StringThe string returned by getId() for the main, production network where people trade things.static final StringThe string returned by getId() for regtest mode.static final StringThe string returned by getId() for the testnet.static final StringUnit test network.protected intstatic final intprotected intUsed to check majorities for block version upgradeprotected intprotected intstatic final longThe maximum number of coins to be generatedstatic final CoinThe maximum money to be generatedprotected BigIntegerprotected intprotected longstatic final StringThe string used by the payment protocol to represent the main net.static final Stringstatic final StringThe string used by the payment protocol to represent the test net.static final StringThe string used by the payment protocol to represent unit testing (note that this is non-standard).protected intprotected Stringprotected intThe depth of blocks required for a coinbase transaction to be spendable.protected intstatic final intstatic final intprotected int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanIf we are running in testnet-in-a-box mode, we allow connections to nodes with 0 non-genesis blocks.abstract voidcheckDifficultyTransitions(StoredBlock storedPrev, Block next, BlockStore blockStore) Throws an exception if the block's difficulty is not correct.booleanstatic NetworkParametersReturns the network parameters for the given string ID or NULL if not recognized.static NetworkParametersfromPmtProtocolID(String pmtProtocolId) Returns the network parameters for the given string paymentProtocolID or NULL if not recognized.intFirst byte of a base58 encoded address.int[]Returns IP address of active peers.intReturns the 4 byte header for BIP32 wallet P2PKH - private key part.intReturns the 4 byte header for BIP32 wallet P2PKH - public key part.intReturns the 4 byte header for BIP32 wallet P2WPKH - private key part.intReturns the 4 byte header for BIP32 wallet P2WPKH - public key part.getBlockVerificationFlags(Block block, VersionTally tally, Integer height) The flags indicating which block validation tests should be applied to the given block.final MessageSerializerReturn the default serializer for this network.String[]Returns DNS names that when resolved, give IP addresses of active peers.intFirst byte of a base58 encoded dumped private key.abstract BlockGenesis block for this chain.Returns discovery objects for seeds implementing the Cartographer protocol.getId()A Java package style string acting as unique ID for these parametersintHow many blocks pass between difficulty adjustment periods.intThe number of blocks in the lastgetMajorityWindow()blocks at which to trigger a notice to the user to upgrade their client, where the client does not understand those blocks.intThe number of blocks in the lastgetMajorityWindow()blocks at which to enforce the requirement that all new blocks are of the newer type (i.e.intThe sampling window from which the version numbers of blocks are taken in order to determine if a new block version is now the majority.abstract CoinReturns the number of coins that will be produced in total, on this network.Maximum target represents the easiest allowable proof of work.abstract CoinDeprecated.abstract MonetaryFormatThe monetary object for this currency.intFirst byte of a base58 encoded P2SH address.longThe header bytes that identify the start of a packet on this network.abstract StringintgetPort()Default TCP port on which to connect to nodes.abstract intHuman readable part of bech32 encoded segwit address.abstract BitcoinSerializergetSerializer(boolean parseRetain) Construct and return a custom serializer.intintintHow much time in seconds is supposed to pass between "interval" blocks.getTransactionVerificationFlags(Block block, Transaction transaction, VersionTally tally, Integer height) The flags indicating which script validation tests should be applied to the given transaction.abstract StringScheme part for URIs, for example "bitcoin".inthashCode()abstract booleanReturns whether this network has a maximum number of coins (finite supply) or not.booleanisCheckpoint(int height) Returns true if the given height has a recorded checkpoint.booleanpassesCheckpoint(int height, Sha256Hash hash) Returns true if the block height is either not a checkpoint, or is a checkpoint and the hash matches.
-
Field Details
-
ID_MAINNET
The string returned by getId() for the main, production network where people trade things.- See Also:
-
ID_TESTNET
The string returned by getId() for the testnet.- See Also:
-
ID_REGTEST
The string returned by getId() for regtest mode.- See Also:
-
ID_UNITTESTNET
Unit test network.- See Also:
-
PAYMENT_PROTOCOL_ID_MAINNET
The string used by the payment protocol to represent the main net.- See Also:
-
PAYMENT_PROTOCOL_ID_TESTNET
The string used by the payment protocol to represent the test net.- See Also:
-
PAYMENT_PROTOCOL_ID_UNIT_TESTS
The string used by the payment protocol to represent unit testing (note that this is non-standard).- See Also:
-
PAYMENT_PROTOCOL_ID_REGTEST
- See Also:
-
maxTarget
-
port
protected int port -
packetMagic
protected long packetMagic -
addressHeader
protected int addressHeader -
p2shHeader
protected int p2shHeader -
dumpedPrivateKeyHeader
protected int dumpedPrivateKeyHeader -
segwitAddressHrp
-
interval
protected int interval -
targetTimespan
protected int targetTimespan -
bip32HeaderP2PKHpub
protected int bip32HeaderP2PKHpub -
bip32HeaderP2PKHpriv
protected int bip32HeaderP2PKHpriv -
bip32HeaderP2WPKHpub
protected int bip32HeaderP2WPKHpub -
bip32HeaderP2WPKHpriv
protected int bip32HeaderP2WPKHpriv -
majorityEnforceBlockUpgrade
protected int majorityEnforceBlockUpgradeUsed to check majorities for block version upgrade -
majorityRejectBlockOutdated
protected int majorityRejectBlockOutdated -
majorityWindow
protected int majorityWindow -
id
See getId(). This may be null for old deserialized wallets. In that case we derive it heuristically by looking at the port number. -
spendableCoinbaseDepth
protected int spendableCoinbaseDepthThe depth of blocks required for a coinbase transaction to be spendable. -
subsidyDecreaseBlockCount
protected int subsidyDecreaseBlockCount -
dnsSeeds
-
addrSeeds
protected int[] addrSeeds -
httpSeeds
-
checkpoints
-
defaultSerializer
-
TARGET_TIMESPAN
public static final int TARGET_TIMESPAN- See Also:
-
TARGET_SPACING
public static final int TARGET_SPACING- See Also:
-
INTERVAL
public static final int INTERVAL- See Also:
-
BIP16_ENFORCE_TIME
public static final int BIP16_ENFORCE_TIMEBlocks with a timestamp after this should enforce BIP 16, aka "Pay to script hash". This BIP changed the network rules in a soft-forking manner, that is, blocks that don't follow the rules are accepted but not mined upon and thus will be quickly re-orged out as long as the majority are enforcing the rule.- See Also:
-
MAX_COINS
public static final long MAX_COINSThe maximum number of coins to be generated- See Also:
-
MAX_MONEY
The maximum money to be generated
-
-
Constructor Details
-
NetworkParameters
protected NetworkParameters()
-
-
Method Details
-
getId
A Java package style string acting as unique ID for these parameters -
getPaymentProtocolId
-
equals
-
hashCode
public int hashCode() -
fromID
Returns the network parameters for the given string ID or NULL if not recognized. -
fromPmtProtocolID
Returns the network parameters for the given string paymentProtocolID or NULL if not recognized. -
getSpendableCoinbaseDepth
public int getSpendableCoinbaseDepth() -
checkDifficultyTransitions
public abstract void checkDifficultyTransitions(StoredBlock storedPrev, Block next, BlockStore blockStore) throws VerificationException, BlockStoreException Throws an exception if the block's difficulty is not correct.- Throws:
VerificationException- if the block's difficulty is not correct.BlockStoreException
-
passesCheckpoint
Returns true if the block height is either not a checkpoint, or is a checkpoint and the hash matches. -
isCheckpoint
public boolean isCheckpoint(int height) Returns true if the given height has a recorded checkpoint. -
getSubsidyDecreaseBlockCount
public int getSubsidyDecreaseBlockCount() -
getDnsSeeds
Returns DNS names that when resolved, give IP addresses of active peers. -
getAddrSeeds
public int[] getAddrSeeds()Returns IP address of active peers. -
getHttpSeeds
Returns discovery objects for seeds implementing the Cartographer protocol. SeeHttpDiscoveryfor more info. -
getGenesisBlock
Genesis block for this chain.
The first block in every chain is a well known constant shared between all Bitcoin implementations. For a block to be valid, it must be eventually possible to work backwards to the genesis block by following the prevBlockHash pointers in the block headers.
The genesis blocks for both test and main networks contain the timestamp of when they were created, and a message in the coinbase transaction. It says, "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks".
-
getPort
public int getPort()Default TCP port on which to connect to nodes. -
getPacketMagic
public long getPacketMagic()The header bytes that identify the start of a packet on this network. -
getAddressHeader
public int getAddressHeader()First byte of a base58 encoded address. SeeLegacyAddress. This is the same as acceptableAddressCodes[0] and is the one used for "normal" addresses. Other types of address may be encountered with version codes found in the acceptableAddressCodes array. -
getP2SHHeader
public int getP2SHHeader()First byte of a base58 encoded P2SH address. P2SH addresses are defined as part of BIP0013. -
getDumpedPrivateKeyHeader
public int getDumpedPrivateKeyHeader()First byte of a base58 encoded dumped private key. SeeDumpedPrivateKey. -
getSegwitAddressHrp
Human readable part of bech32 encoded segwit address. -
getTargetTimespan
public int getTargetTimespan()How much time in seconds is supposed to pass between "interval" blocks. If the actual elapsed time is significantly different from this value, the network difficulty formula will produce a different value. Both test and main Bitcoin networks use 2 weeks (1209600 seconds). -
allowEmptyPeerChain
public boolean allowEmptyPeerChain()If we are running in testnet-in-a-box mode, we allow connections to nodes with 0 non-genesis blocks. -
getInterval
public int getInterval()How many blocks pass between difficulty adjustment periods. Bitcoin standardises this to be 2016. -
getMaxTarget
Maximum target represents the easiest allowable proof of work. -
getBip32HeaderP2PKHpub
public int getBip32HeaderP2PKHpub()Returns the 4 byte header for BIP32 wallet P2PKH - public key part. -
getBip32HeaderP2PKHpriv
public int getBip32HeaderP2PKHpriv()Returns the 4 byte header for BIP32 wallet P2PKH - private key part. -
getBip32HeaderP2WPKHpub
public int getBip32HeaderP2WPKHpub()Returns the 4 byte header for BIP32 wallet P2WPKH - public key part. -
getBip32HeaderP2WPKHpriv
public int getBip32HeaderP2WPKHpriv()Returns the 4 byte header for BIP32 wallet P2WPKH - private key part. -
getMaxMoney
Returns the number of coins that will be produced in total, on this network. Where not applicable, a very large number of coins is returned instead (i.e. the main coin issue for Dogecoin). -
getMinNonDustOutput
Deprecated. -
getMonetaryFormat
The monetary object for this currency. -
getUriScheme
Scheme part for URIs, for example "bitcoin". -
hasMaxMoney
public abstract boolean hasMaxMoney()Returns whether this network has a maximum number of coins (finite supply) or not. Always returns true for Bitcoin, but exists to be overridden for other networks. -
getDefaultSerializer
Return the default serializer for this network. This is a shared serializer.- Returns:
- the default serializer for this network.
-
getSerializer
Construct and return a custom serializer. -
getMajorityEnforceBlockUpgrade
public int getMajorityEnforceBlockUpgrade()The number of blocks in the lastgetMajorityWindow()blocks at which to trigger a notice to the user to upgrade their client, where the client does not understand those blocks. -
getMajorityRejectBlockOutdated
public int getMajorityRejectBlockOutdated()The number of blocks in the lastgetMajorityWindow()blocks at which to enforce the requirement that all new blocks are of the newer type (i.e. outdated blocks are rejected). -
getMajorityWindow
public int getMajorityWindow()The sampling window from which the version numbers of blocks are taken in order to determine if a new block version is now the majority. -
getBlockVerificationFlags
public EnumSet<Block.VerifyFlag> getBlockVerificationFlags(Block block, VersionTally tally, Integer height) The flags indicating which block validation tests should be applied to the given block. Enables support for alternative blockchains which enable tests based on different criteria.- Parameters:
block- block to determine flags for.height- height of the block, if known, null otherwise. Returned tests should be a safe subset if block height is unknown.
-
getTransactionVerificationFlags
public EnumSet<Script.VerifyFlag> getTransactionVerificationFlags(Block block, Transaction transaction, VersionTally tally, Integer height) The flags indicating which script validation tests should be applied to the given transaction. Enables support for alternative blockchains which enable tests based on different criteria.- Parameters:
block- block the transaction belongs to.transaction- to determine flags for.height- height of the block, if known, null otherwise. Returned tests should be a safe subset if block height is unknown.
-
getProtocolVersionNum
-
TransactionOutput.getMinNonDustValue()