From 77073311a4396cf97043a0b27bb6277487a416e2 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Mon, 4 Nov 2024 15:23:51 +0400 Subject: [PATCH 01/11] add sequencing section --- .vitepress/config.ts | 26 + tutorials/astria.md | 3 + tutorials/based.md | 3 + tutorials/centralized.md | 37 ++ tutorials/forced.md | 3 + tutorials/sequencing.md | 31 ++ ~/.celestia-light-mocha-4/config/app.toml | 225 +++++++++ ~/.celestia-light-mocha-4/config/client.toml | 17 + ~/.celestia-light-mocha-4/config/config.toml | 482 +++++++++++++++++++ 9 files changed, 827 insertions(+) create mode 100644 tutorials/astria.md create mode 100644 tutorials/based.md create mode 100644 tutorials/centralized.md create mode 100644 tutorials/forced.md create mode 100644 tutorials/sequencing.md create mode 100644 ~/.celestia-light-mocha-4/config/app.toml create mode 100644 ~/.celestia-light-mocha-4/config/client.toml create mode 100644 ~/.celestia-light-mocha-4/config/config.toml diff --git a/.vitepress/config.ts b/.vitepress/config.ts index d8294bdda..d318f9730 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -243,6 +243,32 @@ function sidebarHome() { }, ], }, + { + text: "Sequencing", + collapsed: true, + items: [ + { + text: "Overview", + link: "/tutorials/sequencing", + }, + { + text: "Centralized", + link: "/tutorials/centralized", + }, + { + text: "Based", + link: "/tutorials/based", + }, + { + text: "Forced Inclusion", + link: "/tutorials/forced", + }, + { + text: "Astria", + link: "/tutorials/astria", + }, + ], + }, { text: "Execution", collapsed: true, diff --git a/tutorials/astria.md b/tutorials/astria.md new file mode 100644 index 000000000..37d894216 --- /dev/null +++ b/tutorials/astria.md @@ -0,0 +1,3 @@ +# Astria Sequencing + +Coming soon ... \ No newline at end of file diff --git a/tutorials/based.md b/tutorials/based.md new file mode 100644 index 000000000..93e3c250f --- /dev/null +++ b/tutorials/based.md @@ -0,0 +1,3 @@ +# Based Sequencing + +Coming soon ... \ No newline at end of file diff --git a/tutorials/centralized.md b/tutorials/centralized.md new file mode 100644 index 000000000..485c992ad --- /dev/null +++ b/tutorials/centralized.md @@ -0,0 +1,37 @@ +# Centralized Sequencer + +A centralized sequencer is a sequencing middleware that receives rollup transactions and provides a local sequencing capabilities. Meaning, the transactions are ordered in the order they are received by the sequencer without any censorship. Further, the sequenced batches are made available in the DA network (such as Celestia). Under the hood, the centralized sequencer is a GRPC server that implements `go-sequencing` interface and the server is hosted by the same node that is running the aggregator for the Rollkit rollup. + +### Installation and Use + +```sh +git clone https://github.com/rollkit/centralized-sequencer.git +cd centralized-sequencer +make build +./build/centralized-sequencer -h +``` + + +```sh +Usage: + -host string + centralized sequencer host (default "localhost") + -port string + centralized sequencer port (default "50051") + -listen-all + listen on all network interfaces (0.0.0.0) instead of just localhost + -rollup-id string + rollup id (default "rollupId") + -batch-time duration + time in seconds to wait before generating a new batch (default 2s) + -da_address string + DA address (default "http://localhost:26658") + -da_auth_token string + auth token for the DA + -da_namespace string + DA namespace where the sequencer submits transactions + -db_path string + path to the database +``` + +As shown by the help command, a centralized sequencer is configured to serve a rollup (via `rollup_id`). The DA network to persist the sequenced batches are specified using `da_address`, `da_auth_token` and `da_namespace`. \ No newline at end of file diff --git a/tutorials/forced.md b/tutorials/forced.md new file mode 100644 index 000000000..4c1f0d6c3 --- /dev/null +++ b/tutorials/forced.md @@ -0,0 +1,3 @@ +# Forced Inclusion + +Coming soon ... \ No newline at end of file diff --git a/tutorials/sequencing.md b/tutorials/sequencing.md new file mode 100644 index 000000000..5739bf3df --- /dev/null +++ b/tutorials/sequencing.md @@ -0,0 +1,31 @@ +# Sequencing + +## Rollkit prior to Sequencing +Rollkit's aggregator node was responsible for selecting and ordering transactions for including in the rollup blocks. The Rollkit aggregator used to follow a FCFS strategy, where every transaction submitted gets included in the block in order without any censorship. Use of a different sequencing strategy or connecting to a sequencing network (e.g., Astria) was not possible. Rollkit `v0.13.8` onwards makes it possible for rollkit to connect to a sequencing network and communicate via grpc. + +### Sequencing Interface + +[go-sequencing](https://github.com/rollkit/go-sequencing) defines a sequencing interface for communicating between any sequencing network and Rollkit. The key functions of the interface are defined as shown below. + +``` +SubmitRollupTransaction(rollupId, data) returns (error) + +GetNextBatch(rollupId, lastBatchHash, maxBytes) returns (batch, timestamp) + +VerifyBatch(rollupId, batchHash) returns (status) +``` + +It mainly consists of: +* `SubmitRollupTransaction` relays the rollup transactions from Rollkit rollup to the sequencing network +* `GetNextBatch` returns the next batch of transactions along with a deterministic timestamp +* `VerifyBatch` validates the sequenced batch + +### Sequencing Implementations + +An implementation of the sequencing interface mainly acts as a middleware that connects Rollkit rollup and the sequencing layer. It implements the sequencing interface functions described above. For example, [centralized-sequencer](https://github.com/rollkit/centralized-sequencer) is the refactored functionality from the Rollkit prior to `v0.13.8`. The centralized sequencer is the middleware run by the aggregator node of the Rollkit rollup. The aggregator node relays rollup transactions to centralized sequencer which then submits them to the DA network (such as Celestia). The header producer node then retrieves (via `GetNextBatch`) the batched transaction from the centralized sequencer to execute the transactions and produce the updated rollup state. Similarly, there are other sequencing middlewares which can be built for various sequencing strategies or even for connecting to different third-party sequencing networks. + +The sequencing implementations that are currently work in progress: +* [centralized-sequencer](https://github.com/rollkit/centralized-sequencer) +* [based-sequencer](https://github.com/rollkit/based-sequencer) +* [forced-inclusion-sequencer]() +* [astria-sequencer](https://github.com/rollkit/astria-sequencer) diff --git a/~/.celestia-light-mocha-4/config/app.toml b/~/.celestia-light-mocha-4/config/app.toml new file mode 100644 index 000000000..7137d36af --- /dev/null +++ b/~/.celestia-light-mocha-4/config/app.toml @@ -0,0 +1,225 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Base Configuration ### +############################################################################### + +# The minimum gas prices a validator is willing to accept for processing a +# transaction. A transaction's fees must meet the minimum of any denomination +# specified in this config (e.g. 0.25token1,0.0001token2). +minimum-gas-prices = "" + +# The maximum gas a query coming over rest/grpc may consume. +# If this is set to zero, the query can consume an unbounded amount of gas. +query-gas-limit = "0" + +# default: the last 362880 states are kept, pruning at 10 block intervals +# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node) +# everything: 2 latest states will be kept; pruning at 10 block intervals. +# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval' +pruning = "default" + +# These are applied if and only if the pruning strategy is custom. +pruning-keep-recent = "0" +pruning-interval = "0" + +# HaltHeight contains a non-zero block height at which a node will gracefully +# halt and shutdown that can be used to assist upgrades and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-height = 0 + +# HaltTime contains a non-zero minimum block time (in Unix seconds) at which +# a node will gracefully halt and shutdown that can be used to assist upgrades +# and testing. +# +# Note: Commitment of state will be attempted on the corresponding block. +halt-time = 0 + +# MinRetainBlocks defines the minimum block height offset from the current +# block being committed, such that all blocks past this offset are pruned +# from CometBFT. It is used as part of the process of determining the +# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates +# that no blocks should be pruned. +# +# This configuration value is only responsible for pruning CometBFT blocks. +# It has no bearing on application state pruning which is determined by the +# "pruning-*" configurations. +# +# Note: CometBFT block pruning is dependant on this parameter in conjunction +# with the unbonding (safety threshold) period, state pruning and state sync +# snapshot parameters to determine the correct minimum value of +# ResponseCommit.RetainHeight. +min-retain-blocks = 0 + +# InterBlockCache enables inter-block caching. +inter-block-cache = true + +# IndexEvents defines the set of events in the form {eventType}.{attributeKey}, +# which informs CometBFT what to index. If empty, all events will be indexed. +# +# Example: +# ["message.sender", "message.recipient"] +index-events = [] + +# IavlCacheSize set the size of the iavl tree cache (in number of nodes). +iavl-cache-size = 781250 + +# IAVLDisableFastNode enables or disables the fast node feature of IAVL. +# Default is false. +iavl-disable-fastnode = false + +# AppDBBackend defines the database backend type to use for the application and snapshots DBs. +# An empty string indicates that a fallback will be used. +# The fallback is the db_backend value set in CometBFT's config.toml. +app-db-backend = "" + +############################################################################### +### Telemetry Configuration ### +############################################################################### + +[telemetry] + +# Prefixed with keys to separate services. +service-name = "" + +# Enabled enables the application telemetry functionality. When enabled, +# an in-memory sink is also enabled by default. Operators may also enabled +# other sinks such as Prometheus. +enabled = false + +# Enable prefixing gauge values with hostname. +enable-hostname = false + +# Enable adding hostname to labels. +enable-hostname-label = false + +# Enable adding service to labels. +enable-service-label = false + +# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink. +prometheus-retention-time = 0 + +# GlobalLabels defines a global set of name/value label tuples applied to all +# metrics emitted using the wrapper functions defined in telemetry package. +# +# Example: +# [["chain_id", "cosmoshub-1"]] +global-labels = [ +] + +############################################################################### +### API Configuration ### +############################################################################### + +[api] + +# Enable defines if the API server should be enabled. +enable = false + +# Swagger defines if swagger documentation should automatically be registered. +swagger = false + +# Address defines the API server to listen on. +address = "tcp://localhost:1317" + +# MaxOpenConnections defines the number of maximum open connections. +max-open-connections = 1000 + +# RPCReadTimeout defines the CometBFT RPC read timeout (in seconds). +rpc-read-timeout = 10 + +# RPCWriteTimeout defines the CometBFT RPC write timeout (in seconds). +rpc-write-timeout = 0 + +# RPCMaxBodyBytes defines the CometBFT maximum request body (in bytes). +rpc-max-body-bytes = 1000000 + +# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). +enabled-unsafe-cors = false + +############################################################################### +### gRPC Configuration ### +############################################################################### + +[grpc] + +# Enable defines if the gRPC server should be enabled. +enable = true + +# Address defines the gRPC server address to bind to. +address = "localhost:9090" + +# MaxRecvMsgSize defines the max message size in bytes the server can receive. +# The default value is 10MB. +max-recv-msg-size = "10485760" + +# MaxSendMsgSize defines the max message size in bytes the server can send. +# The default value is math.MaxInt32. +max-send-msg-size = "2147483647" + +############################################################################### +### gRPC Web Configuration ### +############################################################################### + +[grpc-web] + +# GRPCWebEnable defines if the gRPC-web should be enabled. +# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op. +# NOTE: gRPC-Web uses the same address as the API server. +enable = true + +############################################################################### +### State Sync Configuration ### +############################################################################### + +# State sync snapshots allow other nodes to rapidly join the network without replaying historical +# blocks, instead downloading and applying a snapshot of the application state at a given height. +[state-sync] + +# snapshot-interval specifies the block interval at which local state sync snapshots are +# taken (0 to disable). +snapshot-interval = 0 + +# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). +snapshot-keep-recent = 2 + +############################################################################### +### State Streaming ### +############################################################################### + +# Streaming allows nodes to stream state to external systems. +[streaming] + +# streaming.abci specifies the configuration for the ABCI Listener streaming service. +[streaming.abci] + +# List of kv store keys to stream out via gRPC. +# The store key names MUST match the module's StoreKey name. +# +# Example: +# ["acc", "bank", "gov", "staking", "mint"[,...]] +# ["*"] to expose all keys. +keys = [] + +# The plugin name used for streaming via gRPC. +# Streaming is only enabled if this is set. +# Supported plugins: abci +plugin = "" + +# stop-node-on-err specifies whether to stop the node on message delivery error. +stop-node-on-err = true + +############################################################################### +### Mempool ### +############################################################################### + +[mempool] +# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool. +# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool. +# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount. +# +# Note, this configuration only applies to SDK built-in app-side mempool +# implementations. +max-txs = 5000 diff --git a/~/.celestia-light-mocha-4/config/client.toml b/~/.celestia-light-mocha-4/config/client.toml new file mode 100644 index 000000000..2a8569c81 --- /dev/null +++ b/~/.celestia-light-mocha-4/config/client.toml @@ -0,0 +1,17 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +############################################################################### +### Client Configuration ### +############################################################################### + +# The network chain ID +chain-id = "" +# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory) +keyring-backend = "os" +# CLI output format (text|json) +output = "text" +# : to CometBFT RPC interface for this chain +node = "tcp://localhost:26657" +# Transaction broadcasting mode (sync|async) +broadcast-mode = "sync" diff --git a/~/.celestia-light-mocha-4/config/config.toml b/~/.celestia-light-mocha-4/config/config.toml new file mode 100644 index 000000000..5ea9ad9be --- /dev/null +++ b/~/.celestia-light-mocha-4/config/config.toml @@ -0,0 +1,482 @@ +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +# NOTE: Any path below can be absolute (e.g. "/var/myawesomeapp/data") or +# relative to the home directory (e.g. "data"). The home directory is +# "$HOME/.cometbft" by default, but could be changed via $CMTHOME env variable +# or --home cmd flag. + +# The version of the CometBFT binary that created or +# last modified the config file. Do not modify this. +version = "0.38.5" + +####################################################################### +### Main Base Config Options ### +####################################################################### + +# TCP or UNIX socket address of the ABCI application, +# or the name of an ABCI application compiled in with the CometBFT binary +proxy_app = "tcp://127.0.0.1:26658" + +# A custom human readable name for this node +moniker = "Ganeshas-MacBook-Pro-2.local" + +# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb +# * goleveldb (github.com/syndtr/goleveldb - most popular implementation) +# - pure go +# - stable +# * cleveldb (uses levigo wrapper) +# - fast +# - requires gcc +# - use cleveldb build tag (go build -tags cleveldb) +# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt) +# - EXPERIMENTAL +# - may be faster is some use-cases (random reads - indexer) +# - use boltdb build tag (go build -tags boltdb) +# * rocksdb (uses github.com/tecbot/gorocksdb) +# - EXPERIMENTAL +# - requires gcc +# - use rocksdb build tag (go build -tags rocksdb) +# * badgerdb (uses github.com/dgraph-io/badger) +# - EXPERIMENTAL +# - use badgerdb build tag (go build -tags badgerdb) +db_backend = "goleveldb" + +# Database directory +db_dir = "data" + +# Output level for logging, including package level options +log_level = "info" + +# Output format: 'plain' (colored text) or 'json' +log_format = "plain" + +##### additional base config options ##### + +# Path to the JSON file containing the initial validator set and other meta data +genesis_file = "config/genesis.json" + +# Path to the JSON file containing the private key to use as a validator in the consensus protocol +priv_validator_key_file = "config/priv_validator_key.json" + +# Path to the JSON file containing the last sign state of a validator +priv_validator_state_file = "data/priv_validator_state.json" + +# TCP or UNIX socket address for CometBFT to listen on for +# connections from an external PrivValidator process +priv_validator_laddr = "" + +# Path to the JSON file containing the private key to use for node authentication in the p2p protocol +node_key_file = "config/node_key.json" + +# Mechanism to connect to the ABCI application: socket | grpc +abci = "socket" + +# 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 + + +####################################################################### +### Advanced Configuration Options ### +####################################################################### + +####################################################### +### RPC Server Configuration Options ### +####################################################### +[rpc] + +# TCP or UNIX socket address for the RPC server to listen on +laddr = "tcp://127.0.0.1:26657" + +# 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 = [] + +# A list of methods the client is allowed to use with cross-domain requests +cors_allowed_methods = ["HEAD", "GET", "POST", ] + +# 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", ] + +# 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 + +# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool +unsafe = false + +# 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 + +# Maximum number of unique clientIDs that can /subscribe +# If you're using /broadcast_tx_commit, set to the estimated maximum number +# of broadcast_tx_commit calls per block. +max_subscription_clients = 100 + +# Maximum number of unique queries a given client can /subscribe to +# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to +# the estimated # maximum number of broadcast_tx_commit calls per block. +max_subscriptions_per_client = 5 + +# Experimental parameter to specify the maximum number of events a node will +# buffer, per subscription, before returning an error and closing the +# subscription. Must be set to at least 100, but higher values will accommodate +# higher event throughput rates (and will use more memory). +experimental_subscription_buffer_size = 200 + +# Experimental parameter to specify the maximum number of RPC responses that +# can be buffered per WebSocket client. If clients cannot read from the +# WebSocket endpoint fast enough, they will be disconnected, so increasing this +# parameter may reduce the chances of them being disconnected (but will cause +# the node to use more memory). +# +# Must be at least the same as "experimental_subscription_buffer_size", +# otherwise connections could be dropped unnecessarily. This value should +# ideally be somewhat higher than "experimental_subscription_buffer_size" to +# accommodate non-subscription-related RPC responses. +experimental_websocket_write_buffer_size = 200 + +# If a WebSocket client cannot read fast enough, at present we may +# silently drop events instead of generating an error or disconnecting the +# client. +# +# Enabling this experimental parameter will cause the WebSocket connection to +# be closed instead if it cannot read fast enough, allowing for greater +# predictability in subscription behavior. +experimental_close_on_slow_client = false + +# 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/tendermint/issues/3435 +timeout_broadcast_tx_commit = "10s" + +# Maximum size of request body, in bytes +max_body_bytes = 1000000 + +# Maximum size of request header, in bytes +max_header_bytes = 1048576 + +# The path to a file containing certificate that is used to create the HTTPS server. +# Might be either absolute path or path related to CometBFT'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 CometBFT 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 CometBFT's config directory. +# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server. +# Otherwise, HTTP server is run. +tls_key_file = "" + +# pprof listen address (https://golang.org/pkg/net/http/pprof) +pprof_laddr = "localhost:6060" + +####################################################### +### P2P Configuration Options ### +####################################################### +[p2p] + +# Address to listen for incoming connections +laddr = "tcp://0.0.0.0:26656" + +# 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 to figure out the +# address. IP and port are required. Example: 159.89.10.97:26656 +external_address = "" + +# Comma separated list of seed nodes to connect to +seeds = "" + +# Comma separated list of nodes to keep persistent connections to +persistent_peers = "" + +# Path to address book +addr_book_file = "config/addrbook.json" + +# Set true for strict address routability rules +# Set false for private or local networks +addr_book_strict = true + +# 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 = 10 + +# List of node IDs, to which a connection will be (re)established ignoring any existing limits +unconditional_peer_ids = "" + +# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used) +persistent_peers_max_dial_period = "0s" + +# Time to wait before flushing messages out on the connection +flush_throttle_timeout = "100ms" + +# Maximum size of a message packet payload, in bytes +max_packet_msg_payload_size = 1024 + +# Rate at which packets can be sent, in bytes/second +send_rate = 5120000 + +# Rate at which packets can be received, in bytes/second +recv_rate = 5120000 + +# Set true to enable the peer-exchange reactor +pex = true + +# 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 peer IDs to keep private (will not be gossiped to other peers) +private_peer_ids = "" + +# Toggle to disable guard against peers connecting from the same ip. +allow_duplicate_ip = false + +# Peer connection configuration. +handshake_timeout = "20s" +dial_timeout = "3s" + +####################################################### +### Mempool Configuration Option ### +####################################################### +[mempool] + +# The type of mempool for this node to use. +# +# Possible types: +# - "flood" : concurrent linked list mempool with flooding gossip protocol +# (default) +# - "nop" : nop-mempool (short for no operation; the ABCI app is responsible +# for storing, disseminating and proposing txs). "create_empty_blocks=false" is +# not supported. +type = "flood" + +# Recheck (default: true) defines whether CometBFT should recheck the +# validity for all remaining transaction in the mempool after a block. +# Since a block affects the application state, some transactions in the +# mempool may become invalid. If this does not apply to your application, +# you can disable rechecking. +recheck = true + +# Broadcast (default: true) defines whether the mempool should relay +# transactions to other peers. Setting this to false will stop the mempool +# from relaying transactions to other peers until they are included in a +# block. In other words, if Broadcast is disabled, only the peer you send +# the tx to will see it until it is included in a block. +broadcast = true + +# WalPath (default: "") configures the location of the Write Ahead Log +# (WAL) for the mempool. The WAL is disabled by default. To enable, set +# WalPath to where you want the WAL to be written (e.g. +# "data/mempool.wal"). +wal_dir = "" + +# Maximum number of transactions in the mempool +size = 5000 + +# 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_txs_bytes = 1073741824 + +# Size of the cache (used to filter transactions we saw earlier) in transactions +cache_size = 10000 + +# Do not remove invalid transactions from the cache (default: false) +# Set to true if it's not possible for any invalid transaction to become valid +# again in the future. +keep-invalid-txs-in-cache = false + +# Maximum size of a single transaction. +# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}. +max_tx_bytes = 1048576 + +# Maximum size of a batch of transactions to send to a peer +# Including space needed by encoding (one varint per transaction). +# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796 +max_batch_bytes = 0 + +# Experimental parameters to limit gossiping txs to up to the specified number of peers. +# We use two independent upper values for persistent and non-persistent peers. +# Unconditional peers are not affected by this feature. +# If we are connected to more than the specified number of persistent peers, only send txs to +# ExperimentalMaxGossipConnectionsToPersistentPeers of them. If one of those +# persistent peers disconnects, activate another persistent peer. +# Similarly for non-persistent peers, with an upper limit of +# ExperimentalMaxGossipConnectionsToNonPersistentPeers. +# If set to 0, the feature is disabled for the corresponding group of peers, that is, the +# number of active connections to that group of peers is not bounded. +# For non-persistent peers, if enabled, a value of 10 is recommended based on experimental +# performance results using the default P2P configuration. +experimental_max_gossip_connections_to_persistent_peers = 0 +experimental_max_gossip_connections_to_non_persistent_peers = 0 + +####################################################### +### State Sync Configuration Options ### +####################################################### +[statesync] +# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine +# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in +# the network to take and serve state machine snapshots. State sync is not attempted if the node +# has any local state (LastBlockHeight > 0). The node will have a truncated block history, +# starting from the height of the snapshot. +enable = false + +# RPC servers (comma-separated) for light client verification of the synced state machine and +# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding +# header hash obtained from a trusted source, and a period during which validators can be trusted. +# +# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2 +# weeks) during which they can be financially punished (slashed) for misbehavior. +rpc_servers = "" +trust_height = 0 +trust_hash = "" +trust_period = "168h0m0s" + +# Time to spend discovering snapshots before initiating a restore. +discovery_time = "15s" + +# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp). +# Will create a new, randomly named directory within, and remove it when done. +temp_dir = "" + +# The timeout duration before re-requesting a chunk, possibly from a different +# peer (default: 1 minute). +chunk_request_timeout = "10s" + +# The number of concurrent chunk fetchers to run (default: 1). +chunk_fetchers = "4" + +####################################################### +### Block Sync Configuration Options ### +####################################################### +[blocksync] + +# Block Sync version to use: +# +# In v0.37, v1 and v2 of the block sync protocols were deprecated. +# Please use v0 instead. +# +# 1) "v0" - the default block sync implementation +version = "v0" + +####################################################### +### Consensus Configuration Options ### +####################################################### +[consensus] + +wal_file = "data/cs.wal/wal" + +# How long we wait for a proposal block before prevoting nil +timeout_propose = "3s" +# How much timeout_propose increases with each round +timeout_propose_delta = "500ms" +# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil) +timeout_prevote = "1s" +# How much the timeout_prevote increases with each round +timeout_prevote_delta = "500ms" +# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil) +timeout_precommit = "1s" +# How much the timeout_precommit increases with each round +timeout_precommit_delta = "500ms" +# How long we wait after committing a block, before starting on the new +# height (this gives us a chance to receive some more precommits, even +# though we already have +2/3). +timeout_commit = "5s" + +# How many blocks to look back to check existence of the node's consensus votes before joining consensus +# When non-zero, the node will panic upon restart +# if the same consensus key was used to sign {double_sign_check_height} last blocks. +# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic. +double_sign_check_height = 0 + +# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) +skip_timeout_commit = false + +# EmptyBlocks mode and possible interval between empty blocks +create_empty_blocks = true +create_empty_blocks_interval = "0s" + +# Reactor sleep duration parameters +peer_gossip_sleep_duration = "100ms" +peer_query_maj23_sleep_duration = "2s" + +####################################################### +### Storage Configuration Options ### +####################################################### +[storage] + +# Set to true to discard ABCI responses from the state store, which can save a +# considerable amount of disk space. Set to false to ensure ABCI responses are +# persisted. ABCI responses are required for /block_results RPC queries, and to +# reindex events in the command-line tool. +discard_abci_responses = false + +####################################################### +### Transaction Indexer Configuration Options ### +####################################################### +[tx_index] + +# What indexer to use for transactions +# +# The application will set which txs to index. In some cases a node operator will be able +# to decide which txs to index based on configuration set in the application. +# +# Options: +# 1) "null" +# 2) "kv" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend). +# - When "kv" is chosen "tx.height" and "tx.hash" will always be indexed. +# 3) "psql" - the indexer services backed by PostgreSQL. +# When "kv" or "psql" is chosen "tx.height" and "tx.hash" will always be indexed. +indexer = "kv" + +# The PostgreSQL connection configuration, the connection format: +# postgresql://:@:/? +psql-conn = "" + +####################################################### +### Instrumentation Configuration Options ### +####################################################### +[instrumentation] + +# When true, Prometheus metrics are served under /metrics on +# PrometheusListenAddr. +# Check out the documentation for the list of available metrics. +prometheus = false + +# Address to listen for Prometheus collector(s) connections +prometheus_listen_addr = ":26660" + +# Maximum number of simultaneous connections. +# If you want to accept a larger number than the default, make sure +# you increase your OS limits. +# 0 - unlimited. +max_open_connections = 3 + +# Instrumentation namespace +namespace = "cometbft" From 51502993c03ca34fdf109cfba1ee6792b8d64a61 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Mon, 4 Nov 2024 15:38:39 +0400 Subject: [PATCH 02/11] add a diagram --- public/img/sequencing.jpg | Bin 0 -> 23367 bytes tutorials/centralized.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 public/img/sequencing.jpg diff --git a/public/img/sequencing.jpg b/public/img/sequencing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32f75973041afecb61da7ea9b6833f331dda87a2 GIT binary patch literal 23367 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 y{0$X|3?X3YZGh9nSOcdKb(dtXw ziNv7e=AsF%j>?=Dey*1%0N<{{7ESrO0uSkAinYvZui`y+nq;-)dN$F$+(RX(G?HNE=* zQ)v7{6oo-oZ)w7Kt2ss5^}PXL&cHE^yH}M?Jq8Yw`TJKL;qEVjS6ZhRf4?w8)Ux~& zJwJBVh&MPxrH{7zFexnl4crF)P(IUt7kP)P<4YaAdr3OsG>Yx`k_v98k7={zSw52`W|1^ujBmD#J zQQ(I_bbKY}Ts*;>gG)~3%N)^__PQ!PgOh}!Ptid=MPr3)@()6mqT^xO5SF3LbFpc%)(1KB|kE zUljwBTd|3S)`KI=zUOE|($>%TNqsVf%f!!ep-fy(4qPp1qbvlox#$TEg;%S{S z`ddn@%JxJm{NbqWV8*tf(Mqq?rC;42!K@sqI;hF;l)&bA{+(N?foI1!nfBoX7ur~A z7~gb-1GieL{1mb$?WI36AL&r68u}y)*9Uj!oacmGf$nPIj__+{yD&|VS6h-%b$~1{ zZ)8K-++2QmyZ3m!Tbge#WG}={qhL)2Q*64s%5_6NzUXn=IkQK;G4W$?n8sLNzjF?G8QeFpnX! zoic9F54q&LyXK46JUP4T5IERPoVy#JY1<9HFIaGmEsBt;B4>D#T36s!x?VSF_xfZV z=`~A>(DP^Mg_Ze4BiO4nh~LYQ;g}2A!CO~&Q`W6j&I$M3Kl9>R ztqBgGjBY`+gHL;);qOY($YPi-S2pJ4wx0ia1w~j|a+=CiPom%d^#pMTN>|6GWM?qJ z@Wxw&Cy~S~G&Fk#+K!b}~hMRqh{d&$f0Ha_3+ju?fyyFPjBh_sXc?Q1WsH cRorxpxp8g`3$a|KEPR!ASp1ihIC{wZ2d;jDr~m)} literal 0 HcmV?d00001 diff --git a/tutorials/centralized.md b/tutorials/centralized.md index 485c992ad..a156ee5f9 100644 --- a/tutorials/centralized.md +++ b/tutorials/centralized.md @@ -2,6 +2,8 @@ A centralized sequencer is a sequencing middleware that receives rollup transactions and provides a local sequencing capabilities. Meaning, the transactions are ordered in the order they are received by the sequencer without any censorship. Further, the sequenced batches are made available in the DA network (such as Celestia). Under the hood, the centralized sequencer is a GRPC server that implements `go-sequencing` interface and the server is hosted by the same node that is running the aggregator for the Rollkit rollup. +![Rollkit with Centralized Sequencer](/img/sequencing.jpg) + ### Installation and Use ```sh From 290f380948e6acd7ce2cb3d1a88d723aeeacae8f Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Mon, 4 Nov 2024 15:49:54 +0400 Subject: [PATCH 03/11] v0.14.0 --- tutorials/sequencing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/sequencing.md b/tutorials/sequencing.md index 5739bf3df..b163e9af2 100644 --- a/tutorials/sequencing.md +++ b/tutorials/sequencing.md @@ -1,7 +1,7 @@ # Sequencing ## Rollkit prior to Sequencing -Rollkit's aggregator node was responsible for selecting and ordering transactions for including in the rollup blocks. The Rollkit aggregator used to follow a FCFS strategy, where every transaction submitted gets included in the block in order without any censorship. Use of a different sequencing strategy or connecting to a sequencing network (e.g., Astria) was not possible. Rollkit `v0.13.8` onwards makes it possible for rollkit to connect to a sequencing network and communicate via grpc. +Rollkit's aggregator node was responsible for selecting and ordering transactions for including in the rollup blocks. The Rollkit aggregator used to follow a FCFS strategy, where every transaction submitted gets included in the block in order without any censorship. Use of a different sequencing strategy or connecting to a sequencing network (e.g., Astria) was not possible. Rollkit [v0.14.0](https://github.com/rollkit/rollkit/releases/tag/v0.14.0) onwards makes it possible for rollkit to connect to a sequencing network and communicate via grpc. ### Sequencing Interface @@ -22,7 +22,7 @@ It mainly consists of: ### Sequencing Implementations -An implementation of the sequencing interface mainly acts as a middleware that connects Rollkit rollup and the sequencing layer. It implements the sequencing interface functions described above. For example, [centralized-sequencer](https://github.com/rollkit/centralized-sequencer) is the refactored functionality from the Rollkit prior to `v0.13.8`. The centralized sequencer is the middleware run by the aggregator node of the Rollkit rollup. The aggregator node relays rollup transactions to centralized sequencer which then submits them to the DA network (such as Celestia). The header producer node then retrieves (via `GetNextBatch`) the batched transaction from the centralized sequencer to execute the transactions and produce the updated rollup state. Similarly, there are other sequencing middlewares which can be built for various sequencing strategies or even for connecting to different third-party sequencing networks. +An implementation of the sequencing interface mainly acts as a middleware that connects Rollkit rollup and the sequencing layer. It implements the sequencing interface functions described above. For example, [centralized-sequencer](https://github.com/rollkit/centralized-sequencer) is the refactored functionality from the Rollkit prior to `v0.14.0`. The centralized sequencer is the middleware run by the aggregator node of the Rollkit rollup. The aggregator node relays rollup transactions to centralized sequencer which then submits them to the DA network (such as Celestia). The header producer node then retrieves (via `GetNextBatch`) the batched transaction from the centralized sequencer to execute the transactions and produce the updated rollup state. Similarly, there are other sequencing middlewares which can be built for various sequencing strategies or even for connecting to different third-party sequencing networks. The sequencing implementations that are currently work in progress: * [centralized-sequencer](https://github.com/rollkit/centralized-sequencer) From cf15f4b2d0852ae652a36ccdad5de75079849572 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Tue, 5 Nov 2024 17:06:26 +0400 Subject: [PATCH 04/11] update ignite tutorial with sequencer --- .vitepress/constants/constants.js | 2 +- guides/ignite-rollkit.md | 10 ++++++++++ public/install-local-sequencer.sh | 11 +++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 public/install-local-sequencer.sh diff --git a/.vitepress/constants/constants.js b/.vitepress/constants/constants.js index 63fb6bd82..ad868a131 100644 --- a/.vitepress/constants/constants.js +++ b/.vitepress/constants/constants.js @@ -10,7 +10,7 @@ const constants = Object.freeze({ rollkitIgniteAppVersion: "rollkit/v0.2.1", localDALatestTag: "v0.3.1", - + localSequencerLatestTag: "v0.4.0", igniteVersionTag: "v28.5.3", }); export default constants; diff --git a/guides/ignite-rollkit.md b/guides/ignite-rollkit.md index edda71235..b88799c81 100644 --- a/guides/ignite-rollkit.md +++ b/guides/ignite-rollkit.md @@ -40,6 +40,16 @@ cd $HOME && curl -sSL https://rollkit.dev/install-local-da.sh | sh -s {{constant This script builds and runs a DA node, which will listen on port `7980`. +## Run a local Seuqnecer node {#run-local-sequencer-node} + +First, set up a local sequencer node: + +```bash-vue +cd $HOME && curl -sSL https://rollkit.dev/install-local-sequencer.sh | sh -s {{constants.localSequencerLatestTag}} gm +``` + +This script builds and runs a a local sequencer node, which will listen on port `50051`. + ## Install Ignite App Rollkit {#install-ignite-app-rollkit} In a new terminal window, you'll now install and run the Ignite App Rollkit. diff --git a/public/install-local-sequencer.sh b/public/install-local-sequencer.sh new file mode 100644 index 000000000..b3b91f9ca --- /dev/null +++ b/public/install-local-sequencer.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo "Downloading local sequencer source code..." +git clone https://github.com/rollkit/go-sequencing.git +cd go-sequencing || { echo "Failed to find the downloaded repository"; exit 1; } +git fetch --all --tags +git checkout $1 +echo "Building and installing Local Sequencer..." +make build +echo "Starting Local Sequencer..." +./build/local-sequencer -rollup-id $2 From 99105e05cbf327475e9c20522c081b4e98c93cc0 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Thu, 7 Nov 2024 18:33:15 +0400 Subject: [PATCH 05/11] minor fixes --- .vitepress/constants/constants.js | 2 +- guides/ignite-rollkit.md | 2 +- tutorials/sequencing.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.vitepress/constants/constants.js b/.vitepress/constants/constants.js index ad868a131..dfefe9368 100644 --- a/.vitepress/constants/constants.js +++ b/.vitepress/constants/constants.js @@ -10,7 +10,7 @@ const constants = Object.freeze({ rollkitIgniteAppVersion: "rollkit/v0.2.1", localDALatestTag: "v0.3.1", - localSequencerLatestTag: "v0.4.0", + goSequencingLatestTag: "v0.4.0", igniteVersionTag: "v28.5.3", }); export default constants; diff --git a/guides/ignite-rollkit.md b/guides/ignite-rollkit.md index b88799c81..7083555e7 100644 --- a/guides/ignite-rollkit.md +++ b/guides/ignite-rollkit.md @@ -45,7 +45,7 @@ This script builds and runs a DA node, which will listen on port `7980`. First, set up a local sequencer node: ```bash-vue -cd $HOME && curl -sSL https://rollkit.dev/install-local-sequencer.sh | sh -s {{constants.localSequencerLatestTag}} gm +cd $HOME && curl -sSL https://rollkit.dev/install-local-sequencer.sh | sh -s {{constants.goSequencingLatestTag}} gm ``` This script builds and runs a a local sequencer node, which will listen on port `50051`. diff --git a/tutorials/sequencing.md b/tutorials/sequencing.md index b163e9af2..20e96650d 100644 --- a/tutorials/sequencing.md +++ b/tutorials/sequencing.md @@ -7,7 +7,7 @@ Rollkit's aggregator node was responsible for selecting and ordering transaction [go-sequencing](https://github.com/rollkit/go-sequencing) defines a sequencing interface for communicating between any sequencing network and Rollkit. The key functions of the interface are defined as shown below. -``` +```go SubmitRollupTransaction(rollupId, data) returns (error) GetNextBatch(rollupId, lastBatchHash, maxBytes) returns (batch, timestamp) From 0f8e2aa11aaa417cc291bd9ff553233852c47fa4 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Thu, 7 Nov 2024 18:39:19 +0400 Subject: [PATCH 06/11] minor --- guides/ignite-rollkit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/ignite-rollkit.md b/guides/ignite-rollkit.md index 7083555e7..e3e21c0d1 100644 --- a/guides/ignite-rollkit.md +++ b/guides/ignite-rollkit.md @@ -48,7 +48,7 @@ First, set up a local sequencer node: cd $HOME && curl -sSL https://rollkit.dev/install-local-sequencer.sh | sh -s {{constants.goSequencingLatestTag}} gm ``` -This script builds and runs a a local sequencer node, which will listen on port `50051`. +This script builds and runs a local sequencer node, which will listen on port `50051`. ## Install Ignite App Rollkit {#install-ignite-app-rollkit} From ec644a19bd7b369b1ee463cfad466e8011a3f4f6 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Thu, 7 Nov 2024 18:40:19 +0400 Subject: [PATCH 07/11] meh --- guides/ignite-rollkit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/ignite-rollkit.md b/guides/ignite-rollkit.md index e3e21c0d1..900196782 100644 --- a/guides/ignite-rollkit.md +++ b/guides/ignite-rollkit.md @@ -40,7 +40,7 @@ cd $HOME && curl -sSL https://rollkit.dev/install-local-da.sh | sh -s {{constant This script builds and runs a DA node, which will listen on port `7980`. -## Run a local Seuqnecer node {#run-local-sequencer-node} +## Run a local Sequencer node {#run-local-sequencer-node} First, set up a local sequencer node: From ccbee16a1b24b5a75dbf0e788471f7645ef3c7b3 Mon Sep 17 00:00:00 2001 From: gupadhyaya Date: Thu, 7 Nov 2024 18:42:59 +0400 Subject: [PATCH 08/11] fix --- tutorials/centralized.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/centralized.md b/tutorials/centralized.md index a156ee5f9..eeb3909d6 100644 --- a/tutorials/centralized.md +++ b/tutorials/centralized.md @@ -2,7 +2,7 @@ A centralized sequencer is a sequencing middleware that receives rollup transactions and provides a local sequencing capabilities. Meaning, the transactions are ordered in the order they are received by the sequencer without any censorship. Further, the sequenced batches are made available in the DA network (such as Celestia). Under the hood, the centralized sequencer is a GRPC server that implements `go-sequencing` interface and the server is hosted by the same node that is running the aggregator for the Rollkit rollup. -![Rollkit with Centralized Sequencer](/img/sequencing.jpg) +![Rollkit with Centralized Sequencer](/public/img/sequencing.jpg) ### Installation and Use From 1d59aa2c5d81fd63c91aaa73464d9e4ad7269549 Mon Sep 17 00:00:00 2001 From: Ganesha Upadhyaya Date: Fri, 8 Nov 2024 09:27:05 +0400 Subject: [PATCH 09/11] Delete ~/.celestia-light-mocha-4/config/app.toml --- ~/.celestia-light-mocha-4/config/app.toml | 225 ---------------------- 1 file changed, 225 deletions(-) delete mode 100644 ~/.celestia-light-mocha-4/config/app.toml diff --git a/~/.celestia-light-mocha-4/config/app.toml b/~/.celestia-light-mocha-4/config/app.toml deleted file mode 100644 index 7137d36af..000000000 --- a/~/.celestia-light-mocha-4/config/app.toml +++ /dev/null @@ -1,225 +0,0 @@ -# This is a TOML config file. -# For more information, see https://github.com/toml-lang/toml - -############################################################################### -### Base Configuration ### -############################################################################### - -# The minimum gas prices a validator is willing to accept for processing a -# transaction. A transaction's fees must meet the minimum of any denomination -# specified in this config (e.g. 0.25token1,0.0001token2). -minimum-gas-prices = "" - -# The maximum gas a query coming over rest/grpc may consume. -# If this is set to zero, the query can consume an unbounded amount of gas. -query-gas-limit = "0" - -# default: the last 362880 states are kept, pruning at 10 block intervals -# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node) -# everything: 2 latest states will be kept; pruning at 10 block intervals. -# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval' -pruning = "default" - -# These are applied if and only if the pruning strategy is custom. -pruning-keep-recent = "0" -pruning-interval = "0" - -# HaltHeight contains a non-zero block height at which a node will gracefully -# halt and shutdown that can be used to assist upgrades and testing. -# -# Note: Commitment of state will be attempted on the corresponding block. -halt-height = 0 - -# HaltTime contains a non-zero minimum block time (in Unix seconds) at which -# a node will gracefully halt and shutdown that can be used to assist upgrades -# and testing. -# -# Note: Commitment of state will be attempted on the corresponding block. -halt-time = 0 - -# MinRetainBlocks defines the minimum block height offset from the current -# block being committed, such that all blocks past this offset are pruned -# from CometBFT. It is used as part of the process of determining the -# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates -# that no blocks should be pruned. -# -# This configuration value is only responsible for pruning CometBFT blocks. -# It has no bearing on application state pruning which is determined by the -# "pruning-*" configurations. -# -# Note: CometBFT block pruning is dependant on this parameter in conjunction -# with the unbonding (safety threshold) period, state pruning and state sync -# snapshot parameters to determine the correct minimum value of -# ResponseCommit.RetainHeight. -min-retain-blocks = 0 - -# InterBlockCache enables inter-block caching. -inter-block-cache = true - -# IndexEvents defines the set of events in the form {eventType}.{attributeKey}, -# which informs CometBFT what to index. If empty, all events will be indexed. -# -# Example: -# ["message.sender", "message.recipient"] -index-events = [] - -# IavlCacheSize set the size of the iavl tree cache (in number of nodes). -iavl-cache-size = 781250 - -# IAVLDisableFastNode enables or disables the fast node feature of IAVL. -# Default is false. -iavl-disable-fastnode = false - -# AppDBBackend defines the database backend type to use for the application and snapshots DBs. -# An empty string indicates that a fallback will be used. -# The fallback is the db_backend value set in CometBFT's config.toml. -app-db-backend = "" - -############################################################################### -### Telemetry Configuration ### -############################################################################### - -[telemetry] - -# Prefixed with keys to separate services. -service-name = "" - -# Enabled enables the application telemetry functionality. When enabled, -# an in-memory sink is also enabled by default. Operators may also enabled -# other sinks such as Prometheus. -enabled = false - -# Enable prefixing gauge values with hostname. -enable-hostname = false - -# Enable adding hostname to labels. -enable-hostname-label = false - -# Enable adding service to labels. -enable-service-label = false - -# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink. -prometheus-retention-time = 0 - -# GlobalLabels defines a global set of name/value label tuples applied to all -# metrics emitted using the wrapper functions defined in telemetry package. -# -# Example: -# [["chain_id", "cosmoshub-1"]] -global-labels = [ -] - -############################################################################### -### API Configuration ### -############################################################################### - -[api] - -# Enable defines if the API server should be enabled. -enable = false - -# Swagger defines if swagger documentation should automatically be registered. -swagger = false - -# Address defines the API server to listen on. -address = "tcp://localhost:1317" - -# MaxOpenConnections defines the number of maximum open connections. -max-open-connections = 1000 - -# RPCReadTimeout defines the CometBFT RPC read timeout (in seconds). -rpc-read-timeout = 10 - -# RPCWriteTimeout defines the CometBFT RPC write timeout (in seconds). -rpc-write-timeout = 0 - -# RPCMaxBodyBytes defines the CometBFT maximum request body (in bytes). -rpc-max-body-bytes = 1000000 - -# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk). -enabled-unsafe-cors = false - -############################################################################### -### gRPC Configuration ### -############################################################################### - -[grpc] - -# Enable defines if the gRPC server should be enabled. -enable = true - -# Address defines the gRPC server address to bind to. -address = "localhost:9090" - -# MaxRecvMsgSize defines the max message size in bytes the server can receive. -# The default value is 10MB. -max-recv-msg-size = "10485760" - -# MaxSendMsgSize defines the max message size in bytes the server can send. -# The default value is math.MaxInt32. -max-send-msg-size = "2147483647" - -############################################################################### -### gRPC Web Configuration ### -############################################################################### - -[grpc-web] - -# GRPCWebEnable defines if the gRPC-web should be enabled. -# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op. -# NOTE: gRPC-Web uses the same address as the API server. -enable = true - -############################################################################### -### State Sync Configuration ### -############################################################################### - -# State sync snapshots allow other nodes to rapidly join the network without replaying historical -# blocks, instead downloading and applying a snapshot of the application state at a given height. -[state-sync] - -# snapshot-interval specifies the block interval at which local state sync snapshots are -# taken (0 to disable). -snapshot-interval = 0 - -# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all). -snapshot-keep-recent = 2 - -############################################################################### -### State Streaming ### -############################################################################### - -# Streaming allows nodes to stream state to external systems. -[streaming] - -# streaming.abci specifies the configuration for the ABCI Listener streaming service. -[streaming.abci] - -# List of kv store keys to stream out via gRPC. -# The store key names MUST match the module's StoreKey name. -# -# Example: -# ["acc", "bank", "gov", "staking", "mint"[,...]] -# ["*"] to expose all keys. -keys = [] - -# The plugin name used for streaming via gRPC. -# Streaming is only enabled if this is set. -# Supported plugins: abci -plugin = "" - -# stop-node-on-err specifies whether to stop the node on message delivery error. -stop-node-on-err = true - -############################################################################### -### Mempool ### -############################################################################### - -[mempool] -# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool. -# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool. -# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount. -# -# Note, this configuration only applies to SDK built-in app-side mempool -# implementations. -max-txs = 5000 From 73fb710958af05db2136ce6d7696ffb60d5cc82d Mon Sep 17 00:00:00 2001 From: Ganesha Upadhyaya Date: Fri, 8 Nov 2024 09:27:23 +0400 Subject: [PATCH 10/11] Delete ~/.celestia-light-mocha-4/config/client.toml --- ~/.celestia-light-mocha-4/config/client.toml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 ~/.celestia-light-mocha-4/config/client.toml diff --git a/~/.celestia-light-mocha-4/config/client.toml b/~/.celestia-light-mocha-4/config/client.toml deleted file mode 100644 index 2a8569c81..000000000 --- a/~/.celestia-light-mocha-4/config/client.toml +++ /dev/null @@ -1,17 +0,0 @@ -# This is a TOML config file. -# For more information, see https://github.com/toml-lang/toml - -############################################################################### -### Client Configuration ### -############################################################################### - -# The network chain ID -chain-id = "" -# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory) -keyring-backend = "os" -# CLI output format (text|json) -output = "text" -# : to CometBFT RPC interface for this chain -node = "tcp://localhost:26657" -# Transaction broadcasting mode (sync|async) -broadcast-mode = "sync" From 636bae37cc18ff6fa2061c42c95c26c593494c5a Mon Sep 17 00:00:00 2001 From: Ganesha Upadhyaya Date: Fri, 8 Nov 2024 09:27:36 +0400 Subject: [PATCH 11/11] Delete ~/.celestia-light-mocha-4/config/config.toml --- ~/.celestia-light-mocha-4/config/config.toml | 482 ------------------- 1 file changed, 482 deletions(-) delete mode 100644 ~/.celestia-light-mocha-4/config/config.toml diff --git a/~/.celestia-light-mocha-4/config/config.toml b/~/.celestia-light-mocha-4/config/config.toml deleted file mode 100644 index 5ea9ad9be..000000000 --- a/~/.celestia-light-mocha-4/config/config.toml +++ /dev/null @@ -1,482 +0,0 @@ -# This is a TOML config file. -# For more information, see https://github.com/toml-lang/toml - -# NOTE: Any path below can be absolute (e.g. "/var/myawesomeapp/data") or -# relative to the home directory (e.g. "data"). The home directory is -# "$HOME/.cometbft" by default, but could be changed via $CMTHOME env variable -# or --home cmd flag. - -# The version of the CometBFT binary that created or -# last modified the config file. Do not modify this. -version = "0.38.5" - -####################################################################### -### Main Base Config Options ### -####################################################################### - -# TCP or UNIX socket address of the ABCI application, -# or the name of an ABCI application compiled in with the CometBFT binary -proxy_app = "tcp://127.0.0.1:26658" - -# A custom human readable name for this node -moniker = "Ganeshas-MacBook-Pro-2.local" - -# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb -# * goleveldb (github.com/syndtr/goleveldb - most popular implementation) -# - pure go -# - stable -# * cleveldb (uses levigo wrapper) -# - fast -# - requires gcc -# - use cleveldb build tag (go build -tags cleveldb) -# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt) -# - EXPERIMENTAL -# - may be faster is some use-cases (random reads - indexer) -# - use boltdb build tag (go build -tags boltdb) -# * rocksdb (uses github.com/tecbot/gorocksdb) -# - EXPERIMENTAL -# - requires gcc -# - use rocksdb build tag (go build -tags rocksdb) -# * badgerdb (uses github.com/dgraph-io/badger) -# - EXPERIMENTAL -# - use badgerdb build tag (go build -tags badgerdb) -db_backend = "goleveldb" - -# Database directory -db_dir = "data" - -# Output level for logging, including package level options -log_level = "info" - -# Output format: 'plain' (colored text) or 'json' -log_format = "plain" - -##### additional base config options ##### - -# Path to the JSON file containing the initial validator set and other meta data -genesis_file = "config/genesis.json" - -# Path to the JSON file containing the private key to use as a validator in the consensus protocol -priv_validator_key_file = "config/priv_validator_key.json" - -# Path to the JSON file containing the last sign state of a validator -priv_validator_state_file = "data/priv_validator_state.json" - -# TCP or UNIX socket address for CometBFT to listen on for -# connections from an external PrivValidator process -priv_validator_laddr = "" - -# Path to the JSON file containing the private key to use for node authentication in the p2p protocol -node_key_file = "config/node_key.json" - -# Mechanism to connect to the ABCI application: socket | grpc -abci = "socket" - -# 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 - - -####################################################################### -### Advanced Configuration Options ### -####################################################################### - -####################################################### -### RPC Server Configuration Options ### -####################################################### -[rpc] - -# TCP or UNIX socket address for the RPC server to listen on -laddr = "tcp://127.0.0.1:26657" - -# 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 = [] - -# A list of methods the client is allowed to use with cross-domain requests -cors_allowed_methods = ["HEAD", "GET", "POST", ] - -# 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", ] - -# 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 - -# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool -unsafe = false - -# 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 - -# Maximum number of unique clientIDs that can /subscribe -# If you're using /broadcast_tx_commit, set to the estimated maximum number -# of broadcast_tx_commit calls per block. -max_subscription_clients = 100 - -# Maximum number of unique queries a given client can /subscribe to -# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to -# the estimated # maximum number of broadcast_tx_commit calls per block. -max_subscriptions_per_client = 5 - -# Experimental parameter to specify the maximum number of events a node will -# buffer, per subscription, before returning an error and closing the -# subscription. Must be set to at least 100, but higher values will accommodate -# higher event throughput rates (and will use more memory). -experimental_subscription_buffer_size = 200 - -# Experimental parameter to specify the maximum number of RPC responses that -# can be buffered per WebSocket client. If clients cannot read from the -# WebSocket endpoint fast enough, they will be disconnected, so increasing this -# parameter may reduce the chances of them being disconnected (but will cause -# the node to use more memory). -# -# Must be at least the same as "experimental_subscription_buffer_size", -# otherwise connections could be dropped unnecessarily. This value should -# ideally be somewhat higher than "experimental_subscription_buffer_size" to -# accommodate non-subscription-related RPC responses. -experimental_websocket_write_buffer_size = 200 - -# If a WebSocket client cannot read fast enough, at present we may -# silently drop events instead of generating an error or disconnecting the -# client. -# -# Enabling this experimental parameter will cause the WebSocket connection to -# be closed instead if it cannot read fast enough, allowing for greater -# predictability in subscription behavior. -experimental_close_on_slow_client = false - -# 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/tendermint/issues/3435 -timeout_broadcast_tx_commit = "10s" - -# Maximum size of request body, in bytes -max_body_bytes = 1000000 - -# Maximum size of request header, in bytes -max_header_bytes = 1048576 - -# The path to a file containing certificate that is used to create the HTTPS server. -# Might be either absolute path or path related to CometBFT'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 CometBFT 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 CometBFT's config directory. -# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server. -# Otherwise, HTTP server is run. -tls_key_file = "" - -# pprof listen address (https://golang.org/pkg/net/http/pprof) -pprof_laddr = "localhost:6060" - -####################################################### -### P2P Configuration Options ### -####################################################### -[p2p] - -# Address to listen for incoming connections -laddr = "tcp://0.0.0.0:26656" - -# 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 to figure out the -# address. IP and port are required. Example: 159.89.10.97:26656 -external_address = "" - -# Comma separated list of seed nodes to connect to -seeds = "" - -# Comma separated list of nodes to keep persistent connections to -persistent_peers = "" - -# Path to address book -addr_book_file = "config/addrbook.json" - -# Set true for strict address routability rules -# Set false for private or local networks -addr_book_strict = true - -# 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 = 10 - -# List of node IDs, to which a connection will be (re)established ignoring any existing limits -unconditional_peer_ids = "" - -# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used) -persistent_peers_max_dial_period = "0s" - -# Time to wait before flushing messages out on the connection -flush_throttle_timeout = "100ms" - -# Maximum size of a message packet payload, in bytes -max_packet_msg_payload_size = 1024 - -# Rate at which packets can be sent, in bytes/second -send_rate = 5120000 - -# Rate at which packets can be received, in bytes/second -recv_rate = 5120000 - -# Set true to enable the peer-exchange reactor -pex = true - -# 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 peer IDs to keep private (will not be gossiped to other peers) -private_peer_ids = "" - -# Toggle to disable guard against peers connecting from the same ip. -allow_duplicate_ip = false - -# Peer connection configuration. -handshake_timeout = "20s" -dial_timeout = "3s" - -####################################################### -### Mempool Configuration Option ### -####################################################### -[mempool] - -# The type of mempool for this node to use. -# -# Possible types: -# - "flood" : concurrent linked list mempool with flooding gossip protocol -# (default) -# - "nop" : nop-mempool (short for no operation; the ABCI app is responsible -# for storing, disseminating and proposing txs). "create_empty_blocks=false" is -# not supported. -type = "flood" - -# Recheck (default: true) defines whether CometBFT should recheck the -# validity for all remaining transaction in the mempool after a block. -# Since a block affects the application state, some transactions in the -# mempool may become invalid. If this does not apply to your application, -# you can disable rechecking. -recheck = true - -# Broadcast (default: true) defines whether the mempool should relay -# transactions to other peers. Setting this to false will stop the mempool -# from relaying transactions to other peers until they are included in a -# block. In other words, if Broadcast is disabled, only the peer you send -# the tx to will see it until it is included in a block. -broadcast = true - -# WalPath (default: "") configures the location of the Write Ahead Log -# (WAL) for the mempool. The WAL is disabled by default. To enable, set -# WalPath to where you want the WAL to be written (e.g. -# "data/mempool.wal"). -wal_dir = "" - -# Maximum number of transactions in the mempool -size = 5000 - -# 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_txs_bytes = 1073741824 - -# Size of the cache (used to filter transactions we saw earlier) in transactions -cache_size = 10000 - -# Do not remove invalid transactions from the cache (default: false) -# Set to true if it's not possible for any invalid transaction to become valid -# again in the future. -keep-invalid-txs-in-cache = false - -# Maximum size of a single transaction. -# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}. -max_tx_bytes = 1048576 - -# Maximum size of a batch of transactions to send to a peer -# Including space needed by encoding (one varint per transaction). -# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796 -max_batch_bytes = 0 - -# Experimental parameters to limit gossiping txs to up to the specified number of peers. -# We use two independent upper values for persistent and non-persistent peers. -# Unconditional peers are not affected by this feature. -# If we are connected to more than the specified number of persistent peers, only send txs to -# ExperimentalMaxGossipConnectionsToPersistentPeers of them. If one of those -# persistent peers disconnects, activate another persistent peer. -# Similarly for non-persistent peers, with an upper limit of -# ExperimentalMaxGossipConnectionsToNonPersistentPeers. -# If set to 0, the feature is disabled for the corresponding group of peers, that is, the -# number of active connections to that group of peers is not bounded. -# For non-persistent peers, if enabled, a value of 10 is recommended based on experimental -# performance results using the default P2P configuration. -experimental_max_gossip_connections_to_persistent_peers = 0 -experimental_max_gossip_connections_to_non_persistent_peers = 0 - -####################################################### -### State Sync Configuration Options ### -####################################################### -[statesync] -# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine -# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in -# the network to take and serve state machine snapshots. State sync is not attempted if the node -# has any local state (LastBlockHeight > 0). The node will have a truncated block history, -# starting from the height of the snapshot. -enable = false - -# RPC servers (comma-separated) for light client verification of the synced state machine and -# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding -# header hash obtained from a trusted source, and a period during which validators can be trusted. -# -# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2 -# weeks) during which they can be financially punished (slashed) for misbehavior. -rpc_servers = "" -trust_height = 0 -trust_hash = "" -trust_period = "168h0m0s" - -# Time to spend discovering snapshots before initiating a restore. -discovery_time = "15s" - -# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp). -# Will create a new, randomly named directory within, and remove it when done. -temp_dir = "" - -# The timeout duration before re-requesting a chunk, possibly from a different -# peer (default: 1 minute). -chunk_request_timeout = "10s" - -# The number of concurrent chunk fetchers to run (default: 1). -chunk_fetchers = "4" - -####################################################### -### Block Sync Configuration Options ### -####################################################### -[blocksync] - -# Block Sync version to use: -# -# In v0.37, v1 and v2 of the block sync protocols were deprecated. -# Please use v0 instead. -# -# 1) "v0" - the default block sync implementation -version = "v0" - -####################################################### -### Consensus Configuration Options ### -####################################################### -[consensus] - -wal_file = "data/cs.wal/wal" - -# How long we wait for a proposal block before prevoting nil -timeout_propose = "3s" -# How much timeout_propose increases with each round -timeout_propose_delta = "500ms" -# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil) -timeout_prevote = "1s" -# How much the timeout_prevote increases with each round -timeout_prevote_delta = "500ms" -# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil) -timeout_precommit = "1s" -# How much the timeout_precommit increases with each round -timeout_precommit_delta = "500ms" -# How long we wait after committing a block, before starting on the new -# height (this gives us a chance to receive some more precommits, even -# though we already have +2/3). -timeout_commit = "5s" - -# How many blocks to look back to check existence of the node's consensus votes before joining consensus -# When non-zero, the node will panic upon restart -# if the same consensus key was used to sign {double_sign_check_height} last blocks. -# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic. -double_sign_check_height = 0 - -# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) -skip_timeout_commit = false - -# EmptyBlocks mode and possible interval between empty blocks -create_empty_blocks = true -create_empty_blocks_interval = "0s" - -# Reactor sleep duration parameters -peer_gossip_sleep_duration = "100ms" -peer_query_maj23_sleep_duration = "2s" - -####################################################### -### Storage Configuration Options ### -####################################################### -[storage] - -# Set to true to discard ABCI responses from the state store, which can save a -# considerable amount of disk space. Set to false to ensure ABCI responses are -# persisted. ABCI responses are required for /block_results RPC queries, and to -# reindex events in the command-line tool. -discard_abci_responses = false - -####################################################### -### Transaction Indexer Configuration Options ### -####################################################### -[tx_index] - -# What indexer to use for transactions -# -# The application will set which txs to index. In some cases a node operator will be able -# to decide which txs to index based on configuration set in the application. -# -# Options: -# 1) "null" -# 2) "kv" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend). -# - When "kv" is chosen "tx.height" and "tx.hash" will always be indexed. -# 3) "psql" - the indexer services backed by PostgreSQL. -# When "kv" or "psql" is chosen "tx.height" and "tx.hash" will always be indexed. -indexer = "kv" - -# The PostgreSQL connection configuration, the connection format: -# postgresql://:@:/? -psql-conn = "" - -####################################################### -### Instrumentation Configuration Options ### -####################################################### -[instrumentation] - -# When true, Prometheus metrics are served under /metrics on -# PrometheusListenAddr. -# Check out the documentation for the list of available metrics. -prometheus = false - -# Address to listen for Prometheus collector(s) connections -prometheus_listen_addr = ":26660" - -# Maximum number of simultaneous connections. -# If you want to accept a larger number than the default, make sure -# you increase your OS limits. -# 0 - unlimited. -max_open_connections = 3 - -# Instrumentation namespace -namespace = "cometbft"