-
Notifications
You must be signed in to change notification settings - Fork 375
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## Description This PR adds the **test4** `genesis.json` and suggested `config.toml`. It also includes a relevant README to highlight important `config.toml` params.⚠️ **IMPORTANT**⚠️ You can view the genesis transactions that differ from the examples folder here: dev/zivkovicmilos/test4-genesis...dev/zivkovicmilos/test4-genesis-prepared In case anyone is curious, I extracted the bech32 representation of the public keys from the `genesis.json` using this script: ```go package main import ( "fmt" _ "github.com/gnolang/gno/gno.land/pkg/gnoland" "github.com/gnolang/gno/tm2/pkg/bft/types" ) func main() { path := "../gno/misc/deployments/test4.gno.land/genesis.json" doc, err := types.GenesisDocFromFile(path) if err != nil { panic(err) } for _, v := range doc.Validators { fmt.Printf("Name: %s\n", v.Name) fmt.Printf("Address: %s\n", v.Address) fmt.Printf("PubKey: %s\n", v.PubKey.String()) fmt.Printf("\n===========================\n\n") } } ``` <details><summary>Contributors' checklist...</summary> - [x] Added new tests, or not needed, or not feasible - [x] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [x] Updated the official documentation or not needed - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [ ] Added references to related issues and PRs - [ ] Provided any useful hints for running manual tests - [ ] Added new benchmarks to [generated graphs](https://gnoland.github.io/benchmarks), if any. More info [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md). </details> --------- Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com> Co-authored-by: Salvatore Mazzarino <salvatore.mazzarino@tendermint.com> Co-authored-by: Blake <104744707+r3v4s@users.noreply.github.com>
- Loading branch information
1 parent
6432573
commit 194903d
Showing
4 changed files
with
4,835 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
## Overview | ||
|
||
This deployment folder contains minimal information needed to launch a full test4.gno.land validator node. | ||
|
||
## `genesis.json` | ||
|
||
The initial `genesis.json` validator set is consisted of 3 entities (7 validators in total): | ||
|
||
- Gno Core - the gno core team (**4 validators**) | ||
- Gno DevX - the gno devX team (**2 validators**) | ||
- Onbloc - the [Onbloc](https://onbloc.xyz/) team (**1 validator**) | ||
|
||
Subsequent validators will be added through the governance mechanism in govdao, employing a preliminary simplified | ||
version Proof of Contribution. | ||
|
||
The addresses premined belong to different faucet accounts, validator entities and implementation partners. | ||
|
||
## `config.toml` | ||
|
||
The `config.toml` located in this directory is a **_guideline_**, and not a definitive configuration on how | ||
all nodes should be configured in the network. | ||
|
||
### Important params | ||
|
||
Some configuration params are required, while others are advised to be set. | ||
|
||
- `moniker` - the recognizable identifier of the node. | ||
- `consensus.timeout_commit` - the timeout value after the consensus commit phase. ⚠️ **Required to be `2s`** ⚠️. | ||
- `mempool.size` - the maximum number of txs in the mempool. **Advised to be `10000`**. | ||
- `p2p.laddr` - the listen address for P2P traffic, **specific to every node deployment**. It is advised to use a | ||
reverse-proxy, and keep this value at `tcp://0.0.0.0:<port>`. | ||
- `p2p.max_num_outbound_peers` - the max number of outbound peer connections. **Advised to be `40`**. | ||
- `p2p.persistent_peers` - the persistent peers. ⚠️ **Required to be `TODO: add p2p addresses`** ⚠️. | ||
- `p2p.pex` - if using a sentry node architecture, should be `false`. **If not, please set to `true`**. | ||
- `p2p.external_address` - the advertised peer dial address. If empty, will use the same port as the `p2p.laddr`. This | ||
value should be **changed to `{{ your_ip_address }}:26656`** | ||
- `rpc.laddr` - the JSON-RPC listen address, **specific to every node deployment**. | ||
- `telemetry.enabled` - flag indicating if telemetry should be turned on. **Advised to be `true`**. | ||
- `telemetry.exporter_endpoint` - endpoint for the otel exported. ⚠️ **Required if `telemetry.enabled=true`** ⚠️. | ||
- `telemetry.service_instance_id` - unique ID of the node telemetry instance, **specific to every node deployment**. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,247 @@ | ||
|
||
# Mechanism to connect to the ABCI application: socket | grpc | ||
abci = "socket" | ||
|
||
# Database backend: goleveldb | boltdb | ||
# * goleveldb (github.com/syndtr/goleveldb - most popular implementation) | ||
# - pure go | ||
# - stable | ||
#* boltdb (uses etcd's fork of bolt - go.etcd.io/bbolt) | ||
# - EXPERIMENTAL | ||
# - may be faster is some use-cases (random reads - indexer) | ||
# - use boltdb build tag (go build -tags boltdb) | ||
db_backend = "goleveldb" | ||
|
||
# Database directory | ||
db_dir = "db" | ||
|
||
# If this node is many blocks behind the tip of the chain, FastSync | ||
# allows them to catchup quickly by downloading blocks in parallel | ||
# and verifying their commits | ||
fast_sync = true | ||
|
||
# If true, query the ABCI app on connecting to a new peer | ||
# so the app can decide if we should keep the connection or not | ||
filter_peers = false | ||
home = "" | ||
|
||
# A custom human readable name for this node | ||
moniker = "artemis.local" # Change me! | ||
|
||
# Path to the JSON file containing the private key to use for node authentication in the p2p protocol | ||
node_key_file = "secrets/node_key.json" | ||
|
||
# Path to the JSON file containing the private key to use as a validator in the consensus protocol | ||
priv_validator_key_file = "secrets/priv_validator_key.json" | ||
|
||
# TCP or UNIX socket address for Tendermint to listen on for | ||
# connections from an external PrivValidator process | ||
priv_validator_laddr = "" | ||
|
||
# Path to the JSON file containing the last sign state of a validator | ||
priv_validator_state_file = "secrets/priv_validator_state.json" | ||
|
||
# TCP or UNIX socket address for the profiling server to listen on | ||
prof_laddr = "" | ||
|
||
# TCP or UNIX socket address of the ABCI application, | ||
# or the name of an ABCI application compiled in with the Tendermint binary | ||
proxy_app = "tcp://127.0.0.1:26658" | ||
|
||
##### consensus configuration options ##### | ||
[consensus] | ||
|
||
# EmptyBlocks mode and possible interval between empty blocks | ||
create_empty_blocks = true | ||
create_empty_blocks_interval = "0s" | ||
home = "" | ||
|
||
# Reactor sleep duration parameters | ||
peer_gossip_sleep_duration = "100ms" | ||
peer_query_maj23_sleep_duration = "2s" | ||
|
||
# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) | ||
skip_timeout_commit = false | ||
timeout_commit = "2s" # Do NOT change me, leave me at 2s! | ||
timeout_precommit = "1s" | ||
timeout_precommit_delta = "500ms" | ||
timeout_prevote = "1s" | ||
timeout_prevote_delta = "500ms" | ||
timeout_propose = "3s" | ||
timeout_propose_delta = "500ms" | ||
wal_file = "wal/cs.wal/wal" | ||
|
||
##### mempool configuration options ##### | ||
[mempool] | ||
broadcast = true | ||
|
||
# Size of the cache (used to filter transactions we saw earlier) in transactions | ||
cache_size = 10000 | ||
home = "" | ||
|
||
# Limit the total size of all txs in the mempool. | ||
# This only accounts for raw transactions (e.g. given 1MB transactions and | ||
# max_txs_bytes=5MB, mempool will only accept 5 transactions). | ||
max_pending_txs_bytes = 1073741824 # ~1GB | ||
recheck = true | ||
|
||
# Maximum number of transactions in the mempool | ||
size = 10000 # Advised value is 10000 | ||
wal_dir = "" | ||
|
||
##### peer to peer configuration options ##### | ||
[p2p] | ||
|
||
# Toggle to disable guard against peers connecting from the same ip. | ||
allow_duplicate_ip = false | ||
dial_timeout = "3s" | ||
|
||
# Address to advertise to peers for them to dial | ||
# If empty, will use the same port as the laddr, | ||
# and will introspect on the listener or use UPnP | ||
# to figure out the address. | ||
external_address = "" # Change me! | ||
|
||
# Time to wait before flushing messages out on the connection | ||
flush_throttle_timeout = "100ms" | ||
|
||
# Peer connection configuration. | ||
handshake_timeout = "20s" | ||
home = "" | ||
|
||
# Address to listen for incoming connections | ||
laddr = "tcp://0.0.0.0:26656" # Change me! | ||
|
||
# Maximum number of inbound peers | ||
max_num_inbound_peers = 40 | ||
|
||
# Maximum number of outbound peers to connect to, excluding persistent peers | ||
max_num_outbound_peers = 40 # Advised value is 40 | ||
|
||
# Maximum size of a message packet payload, in bytes | ||
max_packet_msg_payload_size = 1024 | ||
|
||
# Comma separated list of nodes to keep persistent connections to | ||
persistent_peers = "" | ||
|
||
# Set true to enable the peer-exchange reactor | ||
pex = false # Should be `false` if using a sentry node. Otherwise `true`! | ||
|
||
# Comma separated list of peer IDs to keep private (will not be gossiped to other peers) | ||
private_peer_ids = "" | ||
|
||
# Rate at which packets can be received, in bytes/second | ||
recv_rate = 5120000 | ||
|
||
# Seed mode, in which node constantly crawls the network and looks for | ||
# peers. If another node asks it for addresses, it responds and disconnects. | ||
# | ||
# Does not work if the peer-exchange reactor is disabled. | ||
seed_mode = false | ||
|
||
# Comma separated list of seed nodes to connect to | ||
seeds = "" | ||
|
||
# Rate at which packets can be sent, in bytes/second | ||
send_rate = 5120000 | ||
test_dial_fail = false | ||
test_fuzz = false | ||
|
||
# UPNP port forwarding | ||
upnp = false | ||
|
||
[p2p.test_fuzz_config] | ||
MaxDelay = "3s" | ||
Mode = 0 | ||
ProbDropConn = 0.0 | ||
ProbDropRW = 0.2 | ||
ProbSleep = 0.0 | ||
|
||
##### rpc server configuration options ##### | ||
[rpc] | ||
|
||
# A list of non simple headers the client is allowed to use with cross-domain requests | ||
cors_allowed_headers = ["Origin", "Accept", "Content-Type", "X-Requested-With", "X-Server-Time"] | ||
|
||
# A list of methods the client is allowed to use with cross-domain requests | ||
cors_allowed_methods = ["HEAD", "GET", "POST", "OPTIONS"] | ||
|
||
# A list of origins a cross-domain request can be executed from | ||
# Default value '[]' disables cors support | ||
# Use '["*"]' to allow any origin | ||
cors_allowed_origins = ["*"] | ||
|
||
# TCP or UNIX socket address for the gRPC server to listen on | ||
# NOTE: This server only supports /broadcast_tx_commit | ||
grpc_laddr = "" | ||
|
||
# Maximum number of simultaneous connections. | ||
# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections | ||
# If you want to accept a larger number than the default, make sure | ||
# you increase your OS limits. | ||
# 0 - unlimited. | ||
# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} | ||
# 1024 - 40 - 10 - 50 = 924 = ~900 | ||
grpc_max_open_connections = 900 | ||
home = "" | ||
|
||
# TCP or UNIX socket address for the RPC server to listen on | ||
laddr = "tcp://0.0.0.0:26657" # Please use a reverse proxy! | ||
|
||
# Maximum size of request body, in bytes | ||
max_body_bytes = 1000000 | ||
|
||
# Maximum size of request header, in bytes | ||
max_header_bytes = 1048576 | ||
|
||
# Maximum number of simultaneous connections (including WebSocket). | ||
# Does not include gRPC connections. See grpc_max_open_connections | ||
# If you want to accept a larger number than the default, make sure | ||
# you increase your OS limits. | ||
# 0 - unlimited. | ||
# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files} | ||
# 1024 - 40 - 10 - 50 = 924 = ~900 | ||
max_open_connections = 900 | ||
|
||
# How long to wait for a tx to be committed during /broadcast_tx_commit. | ||
# WARNING: Using a value larger than 10s will result in increasing the | ||
# global HTTP write timeout, which applies to all connections and endpoints. | ||
# See https://github.com/tendermint/classic/issues/3435 | ||
timeout_broadcast_tx_commit = "10s" | ||
|
||
# The path to a file containing certificate that is used to create the HTTPS server. | ||
# Might be either absolute path or path related to tendermint's config directory. | ||
# If the certificate is signed by a certificate authority, | ||
# the certFile should be the concatenation of the server's certificate, any intermediates, | ||
# and the CA's certificate. | ||
# NOTE: both tls_cert_file and tls_key_file must be present for Tendermint to create HTTPS server. Otherwise, HTTP server is run. | ||
tls_cert_file = "" | ||
|
||
# The path to a file containing matching private key that is used to create the HTTPS server. | ||
# Might be either absolute path or path related to tendermint's config directory. | ||
# NOTE: both tls_cert_file and tls_key_file must be present for Tendermint to create HTTPS server. Otherwise, HTTP server is run. | ||
tls_key_file = "" | ||
|
||
# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool | ||
unsafe = false | ||
|
||
##### node telemetry ##### | ||
[telemetry] | ||
enabled = true # Advised to be `true` | ||
|
||
# the endpoint to export metrics to, like a local OpenTelemetry collector | ||
exporter_endpoint = "" # Change me to the OTEL endpoint! | ||
meter_name = "test4.gno.land" | ||
|
||
# the ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service) | ||
service_instance_id = "gno-node-1" | ||
service_name = "gno.land" | ||
|
||
##### event store ##### | ||
[tx_event_store] | ||
|
||
# Type of event store | ||
event_store_type = "none" | ||
|
||
# Event store parameters | ||
[tx_event_store.event_store_params] |
Oops, something went wrong.