From a90a8bf341a0615d6ad9393e399168285aaaf3c4 Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Wed, 24 Jul 2013 01:32:43 -0500 Subject: [PATCH] Add genesis block for the regression test network. --- genesis.go | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/genesis.go b/genesis.go index 0ab72fa3..3e575863 100644 --- a/genesis.go +++ b/genesis.go @@ -8,8 +8,8 @@ import ( "time" ) -// GenesisHash is the hash of the first block in the block chain (genesis -// block). +// GenesisHash is the hash of the first block in the block chain for the main +// network (genesis block). var GenesisHash ShaHash = ShaHash{ 0x6f, 0xe2, 0x8c, 0x0a, 0xb6, 0xf1, 0xb3, 0x72, 0xc1, 0xa6, 0xa2, 0x46, 0xae, 0x63, 0xf7, 0x4f, @@ -17,7 +17,8 @@ var GenesisHash ShaHash = ShaHash{ 0x68, 0xd6, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, } -// GenesisMerkleRoot is the hash of the first transaction in the genesis block. +// GenesisMerkleRoot is the hash of the first transaction in the genesis block +// for the main network. var GenesisMerkleRoot ShaHash = ShaHash{ 0x3b, 0xa3, 0xed, 0xfd, 0x7a, 0x7b, 0x12, 0xb2, 0x7a, 0xc7, 0x2c, 0x3e, 0x67, 0x76, 0x8f, 0x61, @@ -26,14 +27,14 @@ var GenesisMerkleRoot ShaHash = ShaHash{ } // GenesisBlock defines the genesis block of the block chain which serves as the -// public transaction ledger. +// public transaction ledger for the main network. var GenesisBlock MsgBlock = MsgBlock{ Header: BlockHeader{ Version: 1, PrevBlock: ShaHash{}, // 0000000000000000000000000000000000000000000000000000000000000000 MerkleRoot: GenesisMerkleRoot, // 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b - Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 12:15:05 -0600 CST - Bits: 0x1d00ffff, // 486604799 + Timestamp: time.Unix(0x495fab29, 0), // 2009-01-03 18:15:05 +0000 UTC + Bits: 0x1d00ffff, // 486604799 [00000000ffff0000000000000000000000000000000000000000000000000000] Nonce: 0x7c2bac1d, // 2083236893 TxnCount: 1, }, @@ -81,3 +82,74 @@ var GenesisBlock MsgBlock = MsgBlock{ }, }, } + +// TestNetGenesisHash is the hash of the first block in the block chain for the +// regression test network (genesis block). +var TestNetGenesisHash ShaHash = ShaHash{ + 0x06, 0x22, 0x6e, 0x46, 0x11, 0x1a, 0x0b, 0x59, + 0xca, 0xaf, 0x12, 0x60, 0x43, 0xeb, 0x5b, 0xbf, + 0x28, 0xc3, 0x4f, 0x3a, 0x5e, 0x33, 0x2a, 0x1f, + 0xc7, 0xb2, 0xb7, 0x3c, 0xf1, 0x88, 0x91, 0x0f, +} + +// TestNetGenesisMerkleRoot is the hash of the first transaction in the genesis +// block for the regression test network. It is the same as the merkle root for +// the main network. +var TestNetGenesisMerkleRoot ShaHash = GenesisMerkleRoot + +// TestNetGenesisBlock defines the genesis block of the block chain which serves +// as the public transaction ledger for the regression test network. +var TestNetGenesisBlock MsgBlock = MsgBlock{ + Header: BlockHeader{ + Version: 1, + PrevBlock: ShaHash{}, // 0000000000000000000000000000000000000000000000000000000000000000 + MerkleRoot: TestNetGenesisMerkleRoot, // 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b + Timestamp: time.Unix(1296688602, 0), // 2011-02-02 23:16:42 +0000 UTC + Bits: 0x207fffff, // 545259519 [7fffff0000000000000000000000000000000000000000000000000000000000] + Nonce: 2, + TxnCount: 1, + }, + Transactions: []*MsgTx{ + &MsgTx{ + Version: 1, + TxIn: []*TxIn{ + &TxIn{ + PreviousOutpoint: OutPoint{ + Hash: ShaHash{}, + Index: 0xffffffff, + }, + SignatureScript: []byte{ + 0x04, 0xff, 0xff, 0x00, 0x1d, 0x01, 0x04, 0x45, /* |.......E| */ + 0x54, 0x68, 0x65, 0x20, 0x54, 0x69, 0x6d, 0x65, /* |The Time| */ + 0x73, 0x20, 0x30, 0x33, 0x2f, 0x4a, 0x61, 0x6e, /* |s 03/Jan| */ + 0x2f, 0x32, 0x30, 0x30, 0x39, 0x20, 0x43, 0x68, /* |/2009 Ch| */ + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x72, /* |ancellor| */ + 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x72, 0x69, 0x6e, /* | on brin| */ + 0x6b, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x65, 0x63, /* |k of sec|*/ + 0x6f, 0x6e, 0x64, 0x20, 0x62, 0x61, 0x69, 0x6c, /* |ond bail| */ + 0x6f, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, /* |out for |*/ + 0x62, 0x61, 0x6e, 0x6b, 0x73, /* |banks| */ + }, + Sequence: 0xffffffff, + }, + }, + TxOut: []*TxOut{ + &TxOut{ + Value: 0x12a05f200, + PkScript: []byte{ + 0x41, 0x04, 0x67, 0x8a, 0xfd, 0xb0, 0xfe, 0x55, /* |A.g....U| */ + 0x48, 0x27, 0x19, 0x67, 0xf1, 0xa6, 0x71, 0x30, /* |H'.g..q0| */ + 0xb7, 0x10, 0x5c, 0xd6, 0xa8, 0x28, 0xe0, 0x39, /* |..\..(.9| */ + 0x09, 0xa6, 0x79, 0x62, 0xe0, 0xea, 0x1f, 0x61, /* |..yb...a| */ + 0xde, 0xb6, 0x49, 0xf6, 0xbc, 0x3f, 0x4c, 0xef, /* |..I..?L.| */ + 0x38, 0xc4, 0xf3, 0x55, 0x04, 0xe5, 0x1e, 0xc1, /* |8..U....| */ + 0x12, 0xde, 0x5c, 0x38, 0x4d, 0xf7, 0xba, 0x0b, /* |..\8M...| */ + 0x8d, 0x57, 0x8a, 0x4c, 0x70, 0x2b, 0x6b, 0xf1, /* |.W.Lp+k.| */ + 0x1d, 0x5f, 0xac, /* |._.| */ + }, + }, + }, + LockTime: 0, + }, + }, +}