diff options
author | Wei-Ning Huang <w@dexon.org> | 2018-07-16 00:12:17 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@cobinhood.com> | 2018-07-16 11:06:14 +0800 |
commit | aed24cf020bd11c3b20a7011b96c02e41894fa32 (patch) | |
tree | 720bc1542dd1edb7308c124a5265e21b3c01d08b /simulation/config | |
download | dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar.gz dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar.bz2 dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar.lz dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar.xz dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.tar.zst dexon-consensus-aed24cf020bd11c3b20a7011b96c02e41894fa32.zip |
Initial implementation of DEXON consensus algorithm
Diffstat (limited to 'simulation/config')
-rw-r--r-- | simulation/config/config.go | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/simulation/config/config.go b/simulation/config/config.go new file mode 100644 index 0000000..228d69b --- /dev/null +++ b/simulation/config/config.go @@ -0,0 +1,89 @@ +// Copyright 2018 The dexon-consensus-core Authors +// This file is part of the dexon-consensus-core library. +// +// The dexon-consensus-core library is free software: you can redistribute it +// and/or modify it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// The dexon-consensus-core library is distributed in the hope that it will be +// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser +// General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the dexon-consensus-core library. If not, see +// <http://www.gnu.org/licenses/>. + +package config + +import ( + "os" + + "github.com/naoina/toml" +) + +// Validator config for the simulation. +type Validator struct { + Num int + ProposeIntervalMean float64 + ProposeIntervalSigma float64 +} + +// Networking config. +type Networking struct { + Mean float64 + Sigma float64 + LossRateValue float64 +} + +// Config represents the configuration for simulation. +type Config struct { + Title string + Validator Validator + Networking Networking +} + +// GenerateDefault generates a default configuration file. +func GenerateDefault(path string) error { + f, err := os.Create(path) + if err != nil { + return err + } + defer f.Close() + + config := Config{ + Title: "DEXON Consensus Simulation Config", + Validator: Validator{ + Num: 4, + ProposeIntervalMean: 500, + ProposeIntervalSigma: 30, + }, + Networking: Networking{ + Mean: 100, + Sigma: 30, + LossRateValue: 0, + }, + } + + if err := toml.NewEncoder(f).Encode(&config); err != nil { + return err + } + return nil +} + +// Read reads the config from a file. +func Read(path string) (*Config, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + var config Config + + if toml.NewDecoder(f).Decode(&config); err != nil { + return nil, err + } + return &config, nil +} |