Skip to content
This repository has been archived by the owner on Aug 7, 2023. It is now read-only.

Commit

Permalink
Testnet Reset
Browse files Browse the repository at this point in the history
This adds a new testnet2 network with new genesis block, premine
address, magic number, etc.

Corrected some testnet related comments while there.
  • Loading branch information
jcvernaleo committed Mar 15, 2017
1 parent 98af7c7 commit 9f58376
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 11 deletions.
5 changes: 3 additions & 2 deletions blockchain/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -2193,8 +2193,9 @@ func (b *BlockChain) BestSnapshot() *BestState {
//
// This function MUST be called with the chain state lock held (for reads).
func (b *BlockChain) maxBlockSize(prevNode *blockNode) (int64, error) {
// Hard fork voting on block size is not enabled on mainnet.
if b.chainParams.Net == wire.MainNet {
// Hard fork voting on block size is only enabled on testnet v1 and
// simnet.
if b.chainParams.Net != wire.TestNet && b.chainParams.Net != wire.SimNet {
return int64(b.chainParams.MaximumBlockSizes[0]), nil
}

Expand Down
26 changes: 26 additions & 0 deletions chaincfg/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,32 @@ var testNetGenesisBlock = wire.MsgBlock{
// test network.
var testNetGenesisHash = testNetGenesisBlock.BlockHash()

// TestNet2 ------------------------------------------------------------------------

// testNetGenesisMerkleRoot is the hash of the first transaction in the genesis block
// for the test network.
var testNet2GenesisMerkleRoot = genesisCoinbaseTxLegacy.TxHash()

// testNetGenesisBlock defines the genesis block of the block chain which
// serves as the public transaction ledger for the test network (version 3).
var testNet2GenesisBlock = wire.MsgBlock{
Header: wire.BlockHeader{
Version: 4,
PrevBlock: chainhash.Hash{},
MerkleRoot: testNetGenesisMerkleRoot,
Timestamp: time.Unix(1489550400, 0), // 2017-03-15 TestNet10
Bits: 0x1e00ffff,
SBits: 20000000,
Nonce: 0x18aea41a,
StakeVersion: 0,
},
Transactions: []*wire.MsgTx{&genesisCoinbaseTxLegacy},
}

// testNetGenesisHash is the hash of the first block in the block chain for the
// test network.
var testNet2GenesisHash = testNet2GenesisBlock.BlockHash()

// SimNet -------------------------------------------------------------------------

var regTestGenesisCoinbaseTx = wire.MsgTx{
Expand Down
110 changes: 110 additions & 0 deletions chaincfg/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -709,6 +709,115 @@ var TestNetParams = Params{
BlockOneLedger: BlockOneLedgerTestNet,
}

// Test2NetParams defines the network parameters for the test currency network.
// This network is sometimes simply called "testnet".
// This is the second public iteration of testnet.
var TestNet2Params = Params{
Name: "testnet2",
Net: wire.TestNet2,
DefaultPort: "19108",
DNSSeeds: []string{
"testnet-seed.decred.mindcry.org",
"testnet-seed.decred.netpurgatory.org",
"testnet.decredseed.org",
"testnet-seed.decred.org",
},

// Chain parameters
GenesisBlock: &testNet2GenesisBlock,
GenesisHash: &testNet2GenesisHash,
PowLimit: testNetPowLimit,
PowLimitBits: 0x1e00ffff,
ReduceMinDifficulty: false,
MinDiffReductionTime: 0, // Does not apply since ReduceMinDifficulty false
GenerateSupported: true,
MaximumBlockSizes: []int{1310720},
MaxTxSize: 1000000,
TargetTimePerBlock: time.Minute * 2,
WorkDiffAlpha: 1,
WorkDiffWindowSize: 144,
WorkDiffWindows: 20,
TargetTimespan: time.Minute * 2 * 144, // TimePerBlock * WindowSize
RetargetAdjustmentFactor: 4,

// Subsidy parameters.
BaseSubsidy: 2500000000, // 25 Coin
MulSubsidy: 100,
DivSubsidy: 101,
SubsidyReductionInterval: 2048,
WorkRewardProportion: 6,
StakeRewardProportion: 3,
BlockTaxProportion: 1,

// Checkpoints ordered from oldest to newest.
Checkpoints: []Checkpoint{},

// Consensus rule change deployments.
//
// The miner confirmation window is defined as:
// target proof of work timespan / target proof of work spacing
RuleChangeActivationQuorum: 2520, // 10 % of RuleChangeActivationInterval * TicketsPerBlock
RuleChangeActivationMultiplier: 3, // 75%
RuleChangeActivationDivisor: 4,
RuleChangeActivationInterval: 5040, // 1 week

// Enforce current block version once majority of the network has
// upgraded.
// 51% (51 / 100)
// Reject previous block versions once a majority of the network has
// upgraded.
// 75% (75 / 100)
BlockEnforceNumRequired: 51,
BlockRejectNumRequired: 75,
BlockUpgradeNumToCheck: 100,

// Mempool parameters
RelayNonStdTxs: false,

// Address encoding magics
NetworkAddressPrefix: "T",
PubKeyAddrID: [2]byte{0x28, 0xf7}, // starts with Tk
PubKeyHashAddrID: [2]byte{0x0f, 0x21}, // starts with Ts
PKHEdwardsAddrID: [2]byte{0x0f, 0x01}, // starts with Te
PKHSchnorrAddrID: [2]byte{0x0e, 0xe3}, // starts with TS
ScriptHashAddrID: [2]byte{0x0e, 0xfc}, // starts with Tc
PrivateKeyID: [2]byte{0x23, 0x0e}, // starts with Pt

// BIP32 hierarchical deterministic extended key magics
HDPrivateKeyID: [4]byte{0x04, 0x35, 0x83, 0x97}, // starts with tprv
HDPublicKeyID: [4]byte{0x04, 0x35, 0x87, 0xd1}, // starts with tpub

// BIP44 coin type used in the hierarchical deterministic path for
// address generation.
HDCoinType: 11,

// Decred PoS parameters
MinimumStakeDiff: 20000000, // 0.2 Coin
TicketPoolSize: 1024,
TicketsPerBlock: 5,
TicketMaturity: 16,
TicketExpiry: 6144, // 6*TicketPoolSize
CoinbaseMaturity: 16,
SStxChangeMaturity: 1,
TicketPoolSizeWeight: 4,
StakeDiffAlpha: 1,
StakeDiffWindowSize: 144,
StakeDiffWindows: 20,
StakeVersionInterval: 144 * 2 * 7, // ~1 week
MaxFreshStakePerBlock: 20, // 4*TicketsPerBlock
StakeEnabledHeight: 16 + 16, // CoinbaseMaturity + TicketMaturity
StakeValidationHeight: 768, // Arbitrary
StakeBaseSigScript: []byte{0xDE, 0xAD, 0xBE, 0xEF},
StakeMajorityMultiplier: 3,
StakeMajorityDivisor: 4,

// Decred organization related parameters.
// Organization address is TccTkqj8wFqrUemmHMRSx8SYEueQYLmuuFk
OrganizationPkScript: hexDecode("4fa6cbd0dbe5ec407fe4c8ad374e667771fa0d44"),
OrganizationPkScriptVersion: 0,
BlockOneLedger: BlockOneLedgerTestNet2,
}

// SimNetParams defines the network parameters for the simulation test Decred
// network. This network is similar to the normal test network except it is
// intended for private use within a group of individuals doing simulation
Expand Down Expand Up @@ -1048,5 +1157,6 @@ func init() {
// Register all default networks when the package is initialized.
mustRegister(&MainNetParams)
mustRegister(&TestNetParams)
mustRegister(&TestNet2Params)
mustRegister(&SimNetParams)
}
6 changes: 6 additions & 0 deletions chaincfg/premine.go
Original file line number Diff line number Diff line change
Expand Up @@ -3162,6 +3162,12 @@ var BlockOneLedgerTestNet = []*TokenPayout{
{"TsmWaPM77WSyA3aiQ2Q1KnwGDVWvEkhipBc", 100000 * 1e8},
}

// BlockOneLedgerTestNet2 is the block one output ledger for the 2nd test
// network.
var BlockOneLedgerTestNet2 = []*TokenPayout{
{"TsT5rhHYqJF7sXouh9jHtwQEn5YJ9KKc5L9", 100000 * 1e8},
}

// BlockOneLedgerSimNet is the block one output ledger for the simulation
// network. See under "Decred organization related parameters" in params.go
// for information on how to spend these outputs.
Expand Down
2 changes: 1 addition & 1 deletion config.go
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ func loadConfig() (*config, []string, error) {
// while we're at it
if cfg.TestNet {
numNets++
activeNetParams = &testNetParams
activeNetParams = &testNet2Params
}
if cfg.SimNet {
numNets++
Expand Down
10 changes: 8 additions & 2 deletions params.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,19 @@ var mainNetParams = params{
}

// testNetParams contains parameters specific to the test network (version 0)
// (wire.TestNet). NOTE: The RPC port is intentionally different than the
// reference implementation - see the mainNetParams comment for details.
// (wire.TestNet).
var testNetParams = params{
Params: &chaincfg.TestNetParams,
rpcPort: "19109",
}

// testNetParams contains parameters specific to the test network (version 2)
// (wire.TestNet2).
var testNet2Params = params{
Params: &chaincfg.TestNet2Params,
rpcPort: "19109",
}

// simNetParams contains parameters specific to the simulation test network
// (wire.SimNet).
var simNetParams = params{
Expand Down
16 changes: 10 additions & 6 deletions wire/protocol.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,23 +89,27 @@ const (
// MainNet represents the main decred network.
MainNet CurrencyNet = 0xd9b400f9

// TestNet represents the regression test network.
// RegTest represents the regression test network.
RegTest CurrencyNet = 0xdab500fa

// TestNet represents the test network (version 3).
// TestNet represents the test network.
TestNet CurrencyNet = 0x0709000b

// TestNet2 represents the 2nd test network.
TestNet2 CurrencyNet = 0x48e7a065

// SimNet represents the simulation test network.
SimNet CurrencyNet = 0x12141c16
)

// bnStrings is a map of decred networks back to their constant names for
// pretty printing.
var bnStrings = map[CurrencyNet]string{
MainNet: "MainNet",
TestNet: "TestNet",
RegTest: "RegNet",
SimNet: "SimNet",
MainNet: "MainNet",
TestNet: "TestNet",
TestNet2: "TestNet2",
RegTest: "RegNet",
SimNet: "SimNet",
}

// String returns the CurrencyNet in human-readable form.
Expand Down

0 comments on commit 9f58376

Please sign in to comment.