// Copyright 2017 Monax Industries Limited // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config const headerCopyright = `# Copyright 2017 Monax Industries Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This is a TOML configuration for burrow chains generated by burrow config. ` const sectionServiceGeneral = `[service] # NOTE: this section is read by CLI tooling, and ignored by burrow. # Image specifies the image name monax needs to pull # for running the chain. image = "{{.ChainImageName}}" # Define whether monax needs to attach the data container # for the chain. data_container = {{.UseDataContainer}} # Specify a list of ports that need to be exported on the container. ports = {{.ExportedPorts}} {{ if ne .ContainerEntrypoint "" }}# Entrypoint points to the default action to execute # in the chain container. entry_point = "{{.ContainerEntrypoint}}"{{ end }} ` const sectionServiceDependencies = `[dependencies] # NOTE: this section is read by Monax tooling, and ignored by burrow. # burrow expects these services to be available; eric-cli tooling will # automatically set these services up for you. # Services to boot with/required by the chain services = [ "keys" ] ` const sectionChainGeneral = `[chain] # ChainId is a human-readable name to identify the chain. # This must correspond to the chain_id defined in the genesis file # and the assertion here provides a safe-guard on misconfiguring chains. assert_chain_id = "{{.AssertChainId}}" # semantic major and minor version major_version = {{.BurrowMajorVersion}} minor_version = {{.BurrowMinorVersion}} # genesis file, relative path is to burrow working directory genesis_file = "{{.GenesisRelativePath}}" ` const separatorChainConsensus = ` ################################################################################ ## ## consensus ## ################################################################################ ` const sectionChainConsensus = ` [chain.consensus] # consensus defines the module to use for consensus and # this will define the peer-to-peer consensus network; # accepted values are ("noops", "abci",) "tendermint" name = "{{.Name}}" # version is the major and minor semantic version; # the version will be asserted on major_version = {{.MajorVersion}} minor_version = {{.MinorVersion}} # relative path to consensus' module root folder relative_root = "{{.ModuleRelativeRoot}}" ` const separatorChainApplicationManager = ` ################################################################################ ## ## application manager ## ################################################################################ ` const sectionChainApplicationManager = ` [chain.manager] # application manager name defines the module to use for handling # the transactions. Supported names are "burrowmint" name = "{{.Name}}" # version is the major and minor semantic version; # the version will be asserted on major_version = {{.MajorVersion}} minor_version = {{.MinorVersion}} # relative path to application manager root folder relative_root = "{{.ModuleRelativeRoot}}" ` const separatorServerConfiguration = ` ################################################################################ ################################################################################ ## ## Server configurations ## ################################################################################ ################################################################################ ` // TODO: [ben] map entries to structure defined in burrow const sectionServers = `[servers] [servers.bind] address = "" port = 1337 [servers.tls] tls = false cert_path = "" key_path = "" [servers.cors] enable = false allow_origins = [] allow_credentials = false allow_methods = [] allow_headers = [] expose_headers = [] max_age = 0 [servers.http] json_rpc_endpoint = "/rpc" [servers.websocket] endpoint = "/socketrpc" max_sessions = 50 read_buffer_size = 4096 write_buffer_size = 4096 [servers.tendermint] # Multiple listeners can be separated with a comma rpc_local_address = "0.0.0.0:46657" endpoint = "/websocket" [servers.logging] console_log_level = "info" file_log_level = "warn" log_file = "" ` const separatorModules = ` ################################################################################ ################################################################################ ## ## Module configurations - dynamically loaded based on chain configuration ## ################################################################################ ################################################################################ ` // TODO: [ben] minimal fields have been made configurable; expand where needed const sectionTendermint = ` ################################################################################ ## ## Tendermint ## version 0.8 ## ## in-process execution of Tendermint consensus engine ## ################################################################################ [tendermint] # private validator file is used by tendermint to keep the status # of the private validator, but also (currently) holds the private key # for the private vaildator to sign with. This private key needs to be moved # out and directly managed by monax-keys # This file needs to be in the root directory private_validator_file = "priv_validator.json" # Tendermint requires additional configuration parameters. # burrow's tendermint consensus module will load [tendermint.configuration] # as the configuration for Tendermint. # burrow will respect the configurations set in this file where applicable, # but reserves the option to override or block conflicting settings. [tendermint.configuration] # moniker is the name of the node on the tendermint p2p network moniker = "{{.Moniker}}" # seeds lists the peers tendermint can connect to join the network seeds = "{{.Seeds}}" # fast_sync allows a tendermint node to catch up faster when joining # the network. # NOTE: Tendermint has reported potential issues with fast_sync enabled. # The recommended setting is for keeping it disabled. fast_sync = {{.FastSync}} # database backend to use for Tendermint. Supported "leveldb" and "memdb". db_backend = "leveldb" # logging level. Supported "error" < "warn" < "notice" < "info" < "debug" log_level = "info" # node local address node_laddr = "0.0.0.0:46656" # rpc local address # NOTE: value is ignored when run in-process as RPC is # handled by [servers.tendermint] rpc_laddr = "0.0.0.0:46657" # proxy application address - used for abci connections, # and this port should not be exposed for in-process Tendermint proxy_app = "tcp://127.0.0.1:46658" # Extended Tendermint configuration settings # for reference to Tendermint see https://github.com/tendermint/tendermint/blob/master/config/tendermint/config.go # genesis_file = "./data/tendermint/genesis.json" # skip_upnp = false # addrbook_file = "./data/tendermint/addrbook.json" # priv_validator_file = "./data/tendermint/priv_validator.json" # db_dir = "./data/tendermint/data" # prof_laddr = "" # revision_file = "./data/tendermint/revision" # cswal = "./data/tendermint/data/cswal" # cswal_light = false # block_size = 10000 # disable_data_hash = false # timeout_propose = 3000 # timeout_propose_delta = 500 # timeout_prevote = 1000 # timeout_prevote_delta = 500 # timeout_precommit = 1000 # timeout_precommit_delta = 500 # timeout_commit = 1000 # mempool_recheck = true # mempool_recheck_empty = true # mempool_broadcast = true [tendermint.configuration.p2p] # Switch config keys dial_timeout_seconds = 3 handshake_timeout_seconds = 20 max_num_peers = 20 authenticated_encryption = true # MConnection config keys send_rate = 512000 recv_rate = 512000 # Fuzz params fuzz_enable = false # use the fuzz wrapped conn fuzz_active = false # toggle fuzzing fuzz_mode = "drop" # eg. drop, delay fuzz_max_delay_milliseconds = 3000 fuzz_prob_drop_rw = 0.2 fuzz_prob_drop_conn = 0.00 fuzz_prob_sleep = 0.00 ` const sectionBurrowMint = ` ################################################################################ ## ## Burrow-Mint ## version 0.16 ## ## The original Ethereum virtual machine with IAVL merkle trees ## and tendermint/go-wire encoding ## ################################################################################ [burrowmint] # Database backend to use for BurrowMint state database. # Supported "leveldb" and "memdb". db_backend = "leveldb" # tendermint host address needs to correspond to tendermints configuration # of the rpc local address tendermint_host = "0.0.0.0:46657" `