-
Notifications
You must be signed in to change notification settings - Fork 127
/
config.go
92 lines (80 loc) · 2.26 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package config
import (
"os"
"time"
"github.com/MixinNetwork/mixin/crypto"
"github.com/pelletier/go-toml"
)
const (
Debug = true
BuildVersion = "v0.14.20-BUILD_VERSION"
MainnetId = "6430225c42bb015b4da03102fa962e4f4ef3969e03e04345db229f8377ef7997"
SnapshotRoundGap = uint64(3 * time.Second)
SnapshotReferenceThreshold = 10
SnapshotSyncRoundThreshold = 100
SnapshotRoundSize = 200
CheckpointDuration = 10 * time.Minute
CheckpointPunishmentGrade = 7
TransactionMaximumSize = 1024 * 1024
WithdrawalClaimFee = "0.0001"
GossipSize = 3
KernelMinimumNodesCount = 7
KernelMintTimeBegin = 7
KernelMintTimeEnd = 9
KernelNodeAcceptTimeBegin = 13
KernelNodeAcceptTimeEnd = 19
KernelNodePledgePeriodMinimum = 12 * time.Hour
KernelNodeAcceptPeriodMinimum = 12 * time.Hour
KernelNodeAcceptPeriodMaximum = 7 * 24 * time.Hour
)
type Custom struct {
Node struct {
Signer crypto.Key `toml:"-"`
SignerStr string `toml:"signer-key"`
ConsensusOnly bool `toml:"consensus-only"`
KernelOprationPeriod int `toml:"kernel-operation-period"`
MemoryCacheSize int `toml:"memory-cache-size"`
CacheTTL int `toml:"cache-ttl"`
} `toml:"node"`
Storage struct {
ValueLogGC bool `toml:"value-log-gc"`
} `toml:"storage"`
Network struct {
Listener string `toml:"listener"`
GossipNeighbors bool `toml:"gossip-neighbors"`
Metric bool `toml:"metric"`
Peers []string `toml:"peers"`
} `toml:"network"`
RPC struct {
Runtime bool `toml:"runtime"`
} `toml:"rpc"`
Dev struct {
Profile bool `toml:"profile"`
} `toml:"dev"`
}
func Initialize(file string) (*Custom, error) {
f, err := os.ReadFile(file)
if err != nil {
return nil, err
}
var config Custom
err = toml.Unmarshal(f, &config)
if err != nil {
return nil, err
}
key, err := crypto.KeyFromString(config.Node.SignerStr)
if err != nil {
return nil, err
}
config.Node.Signer = key
if config.Node.KernelOprationPeriod == 0 {
config.Node.KernelOprationPeriod = 700
}
if config.Node.MemoryCacheSize == 0 {
config.Node.MemoryCacheSize = 1024 * 4
}
if config.Node.CacheTTL == 0 {
config.Node.CacheTTL = 3600 * 2
}
return &config, nil
}