6 "github.com/bytom/protocol/bc"
11 // Max gas that one block contains
12 MaxBlockGas = uint64(100000000)
14 //config parameter for coinbase reward
15 CoinbasePendingBlockNumber = uint64(6)
16 subsidyReductionInterval = uint64(560640)
17 baseSubsidy = uint64(41250000000)
18 InitialBlockSubsidy = uint64(1470000000000000000)
20 // config for pow mining
21 PowMinBits = uint64(2305843009213861724)
22 BlocksPerRetarget = uint64(128)
23 TargetSecondsPerBlock = uint64(60)
24 SeedPerRetarget = uint64(128)
26 // MaxTimeOffsetSeconds is the maximum number of seconds a block time is allowed to be ahead of the current time
27 MaxTimeOffsetSeconds = uint64(60 * 60)
30 PayToWitnessPubKeyHashDataSize = 20
31 PayToWitnessScriptHashDataSize = 32
33 CoinbaseArbitrarySizeLimit = 128
35 VMGasRate = int64(1000)
36 StorageGasRate = int64(5)
37 MaxGasAmount = int64(100000)
38 DefaultGasCredit = int64(80000)
43 BTMDescription = `Bytom Official Issue`
46 // BTMAssetID is BTM's asset id, the soul asset of Bytom
47 var BTMAssetID = &bc.AssetID{
48 V0: uint64(18446744073709551615),
49 V1: uint64(18446744073709551615),
50 V2: uint64(18446744073709551615),
51 V3: uint64(18446744073709551615),
54 // InitialSeed is SHA3-256 of Byte[0^32]
55 var InitialSeed = &bc.Hash{
56 V0: uint64(11412844483649490393),
57 V1: uint64(4614157290180302959),
58 V2: uint64(1780246333311066183),
59 V3: uint64(9357197556716379726),
62 // BTMDefinitionMap is the ....
63 var BTMDefinitionMap = map[string]interface{}{
66 "decimals": BTMDecimals,
67 "description": BTMDescription,
70 // BlockSubsidy calculate the coinbase rewards on given block height
71 func BlockSubsidy(height uint64) uint64 {
73 return InitialBlockSubsidy
75 return baseSubsidy >> uint(height/subsidyReductionInterval)
78 // IsBech32SegwitPrefix returns whether the prefix is a known prefix for segwit
79 // addresses on any default or registered network. This is used when decoding
80 // an address string into a specific address type.
81 func IsBech32SegwitPrefix(prefix string, params *Params) bool {
82 prefix = strings.ToLower(prefix)
83 return prefix == params.Bech32HRPSegwit+"1"
86 // Params store the config for different network
88 // Name defines a human-readable identifier for the network.
90 Bech32HRPSegwit string
93 var ActiveNetParams = &MainNetParams
95 // MainNetParams is the config for production
96 var MainNetParams = Params{
98 Bech32HRPSegwit: "bm",
101 // TestNetParams is the config for test-net
102 var TestNetParams = Params{
104 Bech32HRPSegwit: "tm",