{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Haskoin.Constants (
Network(..),
btc,
btcTest,
btcRegTest,
bch,
bchTest,
bchTest4,
bchRegTest,
allNets,
netByName,
) where
import Control.DeepSeq
import Data.Binary (Binary (..))
import Data.ByteString (ByteString)
import Data.Bytes.Get
import Data.Bytes.Put
import Data.Bytes.Serial
import Data.List
import Data.Maybe
import Data.Serialize (Serialize (..))
import Data.String
import Data.Text (Text)
import Data.Word (Word32, Word64, Word8)
import GHC.Generics (Generic)
import Haskoin.Block
import Haskoin.Data
import Haskoin.Network.Common
import Haskoin.Transaction
import Text.Read
versionString :: IsString a => a
#ifdef CURRENT_PACKAGE_VERSION
versionString :: a
versionString = CURRENT_PACKAGE_VERSION
#else
versionString = "Unavailable"
#endif
netByName :: String -> Maybe Network
netByName :: String -> Maybe Network
netByName String
str = (Network -> Bool) -> [Network] -> Maybe Network
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find ((String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
str) (String -> Bool) -> (Network -> String) -> Network -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Network -> String
getNetworkName) [Network]
allNets
btc :: Network
btc :: Network
btc =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"btc"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
0
, getScriptPrefix :: Word8
getScriptPrefix = Word8
5
, getSecretPrefix :: Word8
getSecretPrefix = Word8
128
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x0488b21e
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x0488ade4
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xf9beb4d9
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1231006505
Word32
0x1d00ffff
Word32
2083236893
,
getMaxBlockSize :: Int
getMaxBlockSize = Int
1000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent =
ByteString
"/haskoin-btc:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
8333
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
False
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
False
, getPowLimit :: Integer
getPowLimit =
Integer
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
227931
, BlockHash
"000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"
)
, getBip65Height :: Word32
getBip65Height = Word32
388381
, getBip66Height :: Word32
getBip66Height = Word32
363725
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
11111
, BlockHash
"0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"
)
,
( Word32
33333
, BlockHash
"000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"
)
,
( Word32
74000
, BlockHash
"0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"
)
,
( Word32
105000
, BlockHash
"00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"
)
,
( Word32
134444
, BlockHash
"00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"
)
,
( Word32
168000
, BlockHash
"000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"
)
,
( Word32
193000
, BlockHash
"000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"
)
,
( Word32
210000
, BlockHash
"000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"
)
,
( Word32
216116
, BlockHash
"00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"
)
,
( Word32
225430
, BlockHash
"00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"
)
,
( Word32
250000
, BlockHash
"000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"
)
,
( Word32
279000
, BlockHash
"0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"
)
,
( Word32
295000
, BlockHash
"00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983"
)
]
, getSeeds :: [String]
getSeeds =
[ String
"seed.bitcoin.sipa.be"
, String
"dnsseed.bluematt.me"
, String
"dnsseed.bitcoin.dashjr.org"
, String
"seed.bitcoinstats.com"
, String
"seed.bitcoin.jonasschnelli.ch"
, String
"seed.btc.petertodd.org"
, String
"seed.bitcoin.sprovoost.nl"
, String
"dnsseed.emzy.de"
, String
"seed.bitcoin.wiz.biz"
]
, getBip44Coin :: Word32
getBip44Coin = Word32
0
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Maybe Word32
forall a. Maybe a
Nothing
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Maybe Word32
forall a. Maybe a
Nothing
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
0
, getSegWit :: Bool
getSegWit = Bool
True
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Maybe Text
forall a. Maybe a
Nothing
, getBech32Prefix :: Maybe Text
getBech32Prefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bc"
, getReplaceByFee :: Bool
getReplaceByFee = Bool
True
, getHalvingInterval :: Word32
getHalvingInterval = Word32
210000
}
btcTest :: Network
btcTest :: Network
btcTest =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"btctest"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
111
, getScriptPrefix :: Word8
getScriptPrefix = Word8
196
, getSecretPrefix :: Word8
getSecretPrefix = Word8
239
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x043587cf
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x04358394
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0x0b110907
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1296688602
Word32
486604799
Word32
414098458
,
getMaxBlockSize :: Int
getMaxBlockSize = Int
1000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-btc-test:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
18333
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
True
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
False
, getPowLimit :: Integer
getPowLimit =
Integer
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
21111
, BlockHash
"0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"
)
, getBip65Height :: Word32
getBip65Height = Word32
581885
, getBip66Height :: Word32
getBip66Height = Word32
330776
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
546
, BlockHash
"000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"
)
]
, getSeeds :: [String]
getSeeds =
[ String
"testnet-seed.bitcoin.jonasschnelli.ch"
, String
"seed.tbtc.petertodd.org"
, String
"seed.testnet.bitcoin.sprovoost.nl"
, String
"testnet-seed.bluematt.me"
]
, getBip44Coin :: Word32
getBip44Coin = Word32
1
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Maybe Word32
forall a. Maybe a
Nothing
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Maybe Word32
forall a. Maybe a
Nothing
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
0
, getSegWit :: Bool
getSegWit = Bool
True
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Maybe Text
forall a. Maybe a
Nothing
, getBech32Prefix :: Maybe Text
getBech32Prefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"tb"
, getReplaceByFee :: Bool
getReplaceByFee = Bool
True
, getHalvingInterval :: Word32
getHalvingInterval = Word32
210000
}
btcRegTest :: Network
btcRegTest :: Network
btcRegTest =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"btcreg"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
111
, getScriptPrefix :: Word8
getScriptPrefix = Word8
196
, getSecretPrefix :: Word8
getSecretPrefix = Word8
239
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x043587cf
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x04358394
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xfabfb5da
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1296688602
Word32
0x207fffff
Word32
2
, getMaxBlockSize :: Int
getMaxBlockSize = Int
1000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-btc-regtest:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
18444
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
True
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
True
, getPowLimit :: Integer
getPowLimit =
Integer
0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
100000000
, BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
)
, getBip65Height :: Word32
getBip65Height = Word32
1351
, getBip66Height :: Word32
getBip66Height = Word32
1251
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints = []
, getSeeds :: [String]
getSeeds = [String
"localhost"]
, getBip44Coin :: Word32
getBip44Coin = Word32
1
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Maybe Word32
forall a. Maybe a
Nothing
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Maybe Word32
forall a. Maybe a
Nothing
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
0
, getSegWit :: Bool
getSegWit = Bool
True
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Maybe Text
forall a. Maybe a
Nothing
, getBech32Prefix :: Maybe Text
getBech32Prefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bcrt"
, getReplaceByFee :: Bool
getReplaceByFee = Bool
True
, getHalvingInterval :: Word32
getHalvingInterval = Word32
150
}
bch :: Network
bch :: Network
bch =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"bch"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
0
, getScriptPrefix :: Word8
getScriptPrefix = Word8
5
, getSecretPrefix :: Word8
getSecretPrefix = Word8
128
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x0488b21e
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x0488ade4
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xe3e1f3e8
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1231006505
Word32
0x1d00ffff
Word32
2083236893
,
getMaxBlockSize :: Int
getMaxBlockSize = Int
32000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-bch:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
8333
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
False
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
False
, getPowLimit :: Integer
getPowLimit =
Integer
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
227931
, BlockHash
"000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"
)
, getBip65Height :: Word32
getBip65Height = Word32
388381
, getBip66Height :: Word32
getBip66Height = Word32
363725
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
11111
, BlockHash
"0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"
)
,
( Word32
33333
, BlockHash
"000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"
)
,
( Word32
74000
, BlockHash
"0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"
)
,
( Word32
105000
, BlockHash
"00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"
)
,
( Word32
134444
, BlockHash
"00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"
)
,
( Word32
168000
, BlockHash
"000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"
)
,
( Word32
193000
, BlockHash
"000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"
)
,
( Word32
210000
, BlockHash
"000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"
)
,
( Word32
216116
, BlockHash
"00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"
)
,
( Word32
225430
, BlockHash
"00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"
)
,
( Word32
250000
, BlockHash
"000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"
)
,
( Word32
279000
, BlockHash
"0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"
)
,
( Word32
295000
, BlockHash
"00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983"
)
,
( Word32
478559
, BlockHash
"000000000000000000651ef99cb9fcbe0dadde1d424bd9f15ff20136191a5eec"
)
,
( Word32
504031
, BlockHash
"0000000000000000011ebf65b60d0a3de80b8175be709d653b4c1a1beeb6ab9c"
)
]
, getSeeds :: [String]
getSeeds =
[ String
"seed.bitcoinabc.org"
, String
"seed-bch.bitcoinforks.org"
, String
"btccash-seeder.bitcoinunlimited.info"
, String
"seed.bchd.cash"
, String
"seed.bch.loping.net"
, String
"dnsseed.electroncash.de"
]
, getBip44Coin :: Word32
getBip44Coin = Word32
145
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
0
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
478559
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
404031
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1605441600
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
60 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
60 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
10
, getSegWit :: Bool
getSegWit = Bool
False
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bitcoincash"
, getBech32Prefix :: Maybe Text
getBech32Prefix = Maybe Text
forall a. Maybe a
Nothing
, getReplaceByFee :: Bool
getReplaceByFee = Bool
False
, getHalvingInterval :: Word32
getHalvingInterval = Word32
210000
}
bchTest4 :: Network
bchTest4 :: Network
bchTest4 =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"bchtest4"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
111
, getScriptPrefix :: Word8
getScriptPrefix = Word8
196
, getSecretPrefix :: Word8
getSecretPrefix = Word8
239
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x043587cf
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x04358394
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xe2b7daaf
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1597811185
Word32
0x1d00ffff
Word32
114152193
,
getMaxBlockSize :: Int
getMaxBlockSize = Int
2000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-bch-test4:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
28333
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
True
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
False
, getPowLimit :: Integer
getPowLimit =
Integer
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
2
, BlockHash
"00000000b0c65b1e03baace7d5c093db0d6aac224df01484985ffd5e86a1a20c"
)
, getBip65Height :: Word32
getBip65Height = Word32
3
, getBip66Height :: Word32
getBip66Height = Word32
4
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
5000
, BlockHash
"000000009f092d074574a216faec682040a853c4f079c33dfd2c3ef1fd8108c4"
)
,
( Word32
16845
, BlockHash
"00000000fb325b8f34fe80c96a5f708a08699a68bbab82dba4474d86bd743077"
)
,
( Word32
38000
, BlockHash
"000000000015197537e59f339e3b1bbf81a66f691bd3d7aa08560fc7bf5113fb"
)
,
( Word32
54700
, BlockHash
"00000000009af4379d87f17d0f172ee4769b48839a5a3a3e81d69da4322518b8"
)
]
, getSeeds :: [String]
getSeeds =
[ String
"testnet4-seed-bch.bitcoinforks.org"
, String
"testnet4-seed-bch.toom.im"
, String
"seed.tbch4.loping.net"
, String
"testnet4-seed.flowee.cash"
]
, getBip44Coin :: Word32
getBip44Coin = Word32
1
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
0
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
7
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
3000
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1605441600
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
60 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
60
, getSegWit :: Bool
getSegWit = Bool
False
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bchtest"
, getBech32Prefix :: Maybe Text
getBech32Prefix = Maybe Text
forall a. Maybe a
Nothing
, getReplaceByFee :: Bool
getReplaceByFee = Bool
False
, getHalvingInterval :: Word32
getHalvingInterval = Word32
210000
}
bchTest :: Network
bchTest :: Network
bchTest =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"bchtest"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
111
, getScriptPrefix :: Word8
getScriptPrefix = Word8
196
, getSecretPrefix :: Word8
getSecretPrefix = Word8
239
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x043587cf
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x04358394
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xf4e5f3f4
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1296688602
Word32
486604799
Word32
414098458
,
getMaxBlockSize :: Int
getMaxBlockSize = Int
32000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-bch-test:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
18333
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
True
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
False
, getPowLimit :: Integer
getPowLimit =
Integer
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
21111
, BlockHash
"0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"
)
, getBip65Height :: Word32
getBip65Height = Word32
581885
, getBip66Height :: Word32
getBip66Height = Word32
330776
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
546
, BlockHash
"000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"
)
,
( Word32
1155876
, BlockHash
"00000000000e38fef93ed9582a7df43815d5c2ba9fd37ef70c9a0ea4a285b8f5"
)
,
( Word32
1188697
, BlockHash
"0000000000170ed0918077bde7b4d36cc4c91be69fa09211f748240dabe047fb"
)
]
, getSeeds :: [String]
getSeeds =
[ String
"testnet-seed.bitcoinabc.org"
, String
"testnet-seed-bch.bitcoinforks.org"
, String
"testnet-seed.bchd.cash"
, String
"seed.tbch.loping.net"
]
, getBip44Coin :: Word32
getBip44Coin = Word32
1
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
0
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1155876
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1188697
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1605441600
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
60 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
60
, getSegWit :: Bool
getSegWit = Bool
False
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bchtest"
, getBech32Prefix :: Maybe Text
getBech32Prefix = Maybe Text
forall a. Maybe a
Nothing
, getReplaceByFee :: Bool
getReplaceByFee = Bool
False
, getHalvingInterval :: Word32
getHalvingInterval = Word32
210000
}
bchRegTest :: Network
bchRegTest :: Network
bchRegTest =
Network :: String
-> Word8
-> Word8
-> Word8
-> Word32
-> Word32
-> Word32
-> BlockHeader
-> Int
-> Word64
-> ByteString
-> Int
-> Bool
-> Bool
-> Integer
-> (Word32, BlockHash)
-> Word32
-> Word32
-> Word32
-> Word32
-> [(Word32, BlockHash)]
-> Word32
-> [String]
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Maybe Word32
-> Integer
-> Bool
-> Maybe Text
-> Maybe Text
-> Bool
-> Word32
-> Network
Network
{ getNetworkName :: String
getNetworkName = String
"bchreg"
, getAddrPrefix :: Word8
getAddrPrefix = Word8
111
, getScriptPrefix :: Word8
getScriptPrefix = Word8
196
, getSecretPrefix :: Word8
getSecretPrefix = Word8
239
, getExtPubKeyPrefix :: Word32
getExtPubKeyPrefix = Word32
0x043587cf
, getExtSecretPrefix :: Word32
getExtSecretPrefix = Word32
0x04358394
, getNetworkMagic :: Word32
getNetworkMagic = Word32
0xdab5bffa
, getGenesisHeader :: BlockHeader
getGenesisHeader =
Word32
-> BlockHash
-> Hash256
-> Word32
-> Word32
-> Word32
-> BlockHeader
BlockHeader
Word32
0x01
BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
([TxHash] -> Hash256
buildMerkleRoot [Tx -> TxHash
txHash Tx
genesisTx])
Word32
1296688602
Word32
0x207fffff
Word32
2
, getMaxBlockSize :: Int
getMaxBlockSize = Int
1000000
, getMaxSatoshi :: Word64
getMaxSatoshi = Word64
2100000000000000
, getHaskoinUserAgent :: ByteString
getHaskoinUserAgent = ByteString
"/haskoin-bch-regtest:" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
forall a. IsString a => a
versionString ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
"/"
, getDefaultPort :: Int
getDefaultPort = Int
18444
, getAllowMinDifficultyBlocks :: Bool
getAllowMinDifficultyBlocks = Bool
True
, getPowNoRetargetting :: Bool
getPowNoRetargetting = Bool
True
, getPowLimit :: Integer
getPowLimit =
Integer
0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
, getBip34Block :: (Word32, BlockHash)
getBip34Block =
( Word32
100000000
, BlockHash
"0000000000000000000000000000000000000000000000000000000000000000"
)
, getBip65Height :: Word32
getBip65Height = Word32
1351
, getBip66Height :: Word32
getBip66Height = Word32
1251
, getTargetTimespan :: Word32
getTargetTimespan = Word32
14 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
24 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getTargetSpacing :: Word32
getTargetSpacing = Word32
10 Word32 -> Word32 -> Word32
forall a. Num a => a -> a -> a
* Word32
60
, getCheckpoints :: [(Word32, BlockHash)]
getCheckpoints =
[
( Word32
0
, BlockHash
"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"
)
]
, getSeeds :: [String]
getSeeds = [String
"localhost"]
, getBip44Coin :: Word32
getBip44Coin = Word32
1
, getSigHashForkId :: Maybe Word32
getSigHashForkId = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
0
, getEdaBlockHeight :: Maybe Word32
getEdaBlockHeight = Maybe Word32
forall a. Maybe a
Nothing
, getDaaBlockHeight :: Maybe Word32
getDaaBlockHeight = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
0
, getAsertActivationTime :: Maybe Word32
getAsertActivationTime = Word32 -> Maybe Word32
forall a. a -> Maybe a
Just Word32
1605441600
, getAsertHalfLife :: Integer
getAsertHalfLife = Integer
2 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
24 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
60 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
60
, getSegWit :: Bool
getSegWit = Bool
False
, getCashAddrPrefix :: Maybe Text
getCashAddrPrefix = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"bchreg"
, getBech32Prefix :: Maybe Text
getBech32Prefix = Maybe Text
forall a. Maybe a
Nothing
, getReplaceByFee :: Bool
getReplaceByFee = Bool
False
, getHalvingInterval :: Word32
getHalvingInterval = Word32
150
}
allNets :: [Network]
allNets :: [Network]
allNets = [Network
btc, Network
bch, Network
btcTest, Network
bchTest4, Network
bchTest, Network
btcRegTest, Network
bchRegTest]