1 // Aleth: Ethereum C++ client, tools and libraries.
2 // Copyright 2014-2019 Aleth Authors.
3 // Licensed under the GNU General Public License, Version 3.
4 
5 #pragma once
6 
7 #include <string>
8 #include <libdevcore/FixedHash.h>
9 #include <libethcore/Common.h>
10 
11 namespace dev
12 {
13 namespace eth
14 {
15 
16 /// The network id.
17 enum class Network
18 {
19     ///< Normal Olympic chain.
20     // Olympic = 0,
21     /// Normal Frontier/Homestead/DAO/EIP150/EIP158/Byzantium/Constantinople chain.
22     MainNetwork = 1,
23     /// Normal Morden chain.
24     // Morden = 2,
25     /// New Ropsten Test Network
26     Ropsten = 3,
27     /// MainNetwork rules but without genesis accounts (for transaction tests).
28     MainNetworkTest = 69,
29     /// Normal Frontier/Homestead/DAO/EIP150/EIP158 chain without all the premine.
30     TransitionnetTest = 70,
31     /// Just test the Frontier-era characteristics "forever" (no Homestead portion).
32     FrontierTest = 71,
33     /// Just test the Homestead-era characteristics "forever" (no Frontier portion).
34     HomesteadTest = 72,
35     /// Homestead + EIP150 Rules active from block 0 For BlockchainTests
36     EIP150Test = 73,
37     /// Homestead + EIP150 + EIP158 Rules active from block 0
38     EIP158Test = 74,
39     /// EIP158Test + Byzantium active from block 0
40     ByzantiumTest = 75,
41     /// EIP158Test + Byzantium active from block 2
42     ByzantiumTransitionTest = 76,
43     /// Frontier rules + NoProof seal engine
44     FrontierNoProofTest = 77,
45     /// ByzantiumTest + Constantinople active from block 0
46     ConstantinopleTest = 78,
47     /// ConstantinopleTest + Experimental active from block 2
48     ExperimentalTransitionTest = 79,
49     /// MainNetwork rules without genesis accounts + NoProof seal engine
50     MainNetworkNoProofTest = 80,
51     /// Byzantium rules + NoProof seal engine
52     ByzantiumNoProofTest = 81,
53     /// Constantinople rules + NoProof seal engine
54     ConstantinopleNoProofTest = 82,
55     /// Byzantium + Constantinople + ConstantinopleFix active from block 0
56     ConstantinopleFixTest = 83,
57     /// Istanbul active from block 0
58     IstanbulTest = 84,
59     /// ConstantinopleFixTest + Istanbul active from block 2
60     IstanbulTransitionTest = 85,
61     /// Muir Glacier active from block 0
62     MuirGlacierTest = 86,
63     /// Berlin active from block 0
64     BerlinTest = 87,
65 
66 
67     // TransitionTest networks
68     FrontierToHomesteadAt5 = 100,
69     HomesteadToDaoAt5 = 101,
70     HomesteadToEIP150At5 = 102,
71     EIP158ToByzantiumAt5 = 103,
72     ByzantiumToConstantinopleFixAt5 = 104,
73 
74     Special = 0xff,         ///< Something else.
75     qtumMainNetwork = 9,    ///< QTUM Homestead + EIP150 + EIP158 Rules active from block 0 to enum class Network
76     qtumTestNetwork = 10
77 };
78 
79 std::string const& genesisInfo(Network _n);
80 h256 const& genesisStateRoot(Network _n);
81 
82 }
83 }
84