CXT Stake
GLMR for gas
Git
, Golang
, Redis
.
Git
is used as the source code version control manager across all our repositories.Go
is the programming language that is used to develop on go-ethereum
and bsp patches, the agent given below is also entirely written in Go.Redis
is our in-memory database, cache and streaming service provider.Go Version: Go 1.22 or later
Clone Repo
Build geth
Start redis (our streaming service) with the following
Start redis-cli
redis-cli
in a separate terminal so you can see the encoded bsps as they are fed into redis streams. ~/bsp-geth
and start geth with the given configuration, here we specify the replication targets (block specimen targets) with Redis stream topic key replication, in snap syncmode.$PATH_TO_GETH_MAINNET_CHAINDATA
with the location of the mainnet snapshot that you will be downloading in the next step via lighthouse. Everything else remains the same as given below.--mainnet
- lets geth know which network to synchronize with, this can be --ropsten
, --goerli
etc --discv5=true
- Enables the node to participate in the Ethereum network’s Discovery v5 protocol, which is used for finding peers. --txlookuplimit
- Disables the limitation on how far back in the chain transactions are indexed, allowing for retrieval of transaction data from any block in the node’s history. --cache
- Sets the memory allocation for the node’s cache in megabytes, which is used to improve performance by holding recently accessed data. --syncmode
- this flag is used to enable different syncing strategies for geth and a full sync allows us to execute every block from block 0; while snap allows us to execute from live blocks --light.ingress
- Limits the bandwidth in kilobytes per second that the node dedicates to serving light clients on Ingress (incoming traffic). --light.egress
- Limits the bandwidth in kilobytes per second that the node dedicates to serving light clients on Egress (outgoing traffic). --light.maxpeers
- Sets the maximum number of light client peers that the node can connect to. --http
- Enable the HTTP-RPC server --http.addr
- HTTP-RPC server listening interface (default: localhost) --http.api
- API’s offered over the HTTP-RPC interface(default: eth,net,web3) --http.vhosts
- Allows all virtual hostnames to access the HTTP-RPC server, effectively disabling the host-based security check. --ws
- Enable the WS-RPC server --ws.addr
- WS-RPC server listening interface (default: localhost) --ws.api
- API’s offered over the WS-RPC interface (default: eth,net,web3) --ws.origins
- Origins from which to accept WebSocket requests --datadir
- specifies a local datadir path for geth (note we use “bsp” as the directory name with the Ethereum directory), this way we don’t overwrite or touch other previously synced geth libraries across other chains --authrpc.jwtsecret
- Specifies the path to the JWT secret file used for authentication in the RPC API, providing an additional layer of security by requiring tokens for access. --replication.targets
- this flag points to redis, and lets the bsp know where and how to send the bsp messages (this flag will not function without the usage of either one or both of the flags below if both are selected a full block-replica is exported) --replica.result
- this flag lets the bsp know if all fields related to the block-result specification need to be exported (if only this flag is selected the exported object is a block-result) --replica.specimen
- this flag lets the bsp know if all fields related to the block-specimen specification need to be exported (if only this flag is selected the exported object is a block-specimen) —replica.blob
- Enables the extraction of blob specimens as part of the complete block specimen export, which includes state specimens and transaction receipts, collectively referred to as a block replica. This flag is used to include additional block content, particularly useful for nodes participating in more extensive data analysis or archiving, ensuring comprehensive block data is available for these purposes. --log.file
- specifies the file location where the log files have to be placed. In case of error (like permission errors), the logs are not recorded in files.Install Lighthouse
eth blockchain
to sync to the tip. Connect to the node’s ipc instance to check how far the node is syncedreplication
. After this you can check that redis is stacking up the bsp messages through the redis-cli with the command below (this should give you the number of messages from the stream)
go-ethereum
and running the bootnode helper.
Go Version: go1.22 or later
, this could change later in time please cross check with operator-releases channel on discord for correct versions.
Clone & Build
Software Prerequisite - Node.Js version 18 or higher and npm version 7
/get
and /upload
With this, the ipfs-pinner is setup and can upload/fetch
network artifacts.Sample Service systemmd file for ipfs-pinner can be found here.direnv
manages and controls sensitive information for the agent, such as Ethereum private keys for operator accounts on the Covalent Network and Redis access passwords. This is crucial since these applications, exposed on HTTP ports, must not log sensitive data.~./bash_profile
or ~./zshrc
depending on which you use as your default shell after installing it using brew. ~/.bashrc
~/.zshrc