Skip to content

Latest commit

 

History

History
217 lines (158 loc) · 9.19 KB

File metadata and controls

217 lines (158 loc) · 9.19 KB
title Manual Node Setup
sidebarTitle Manual Node Setup

Below, you'll find a guide tailored for those who prefer a more customized installation approach.

We use the cast CLI tool for making Ethereum RPC calls. If it's not already installed on your system, you can set up the entire Foundry toolchain, including cast, with the following command:

```bash ❯_ terminal
curl -L https://foundry.paradigm.xyz | bash
```

After installation, execute `foundryup` to update to the latest versions of Foundry's suite of tools:
 `forge`, `cast`, `anvil`, and `chisel`:


```bash ❯_ terminal
foundryup
```

For detailed guidance, refer to the official [Foundry Book](https://book.getfoundry.sh/getting-started/installation) installation instructions.
Run the following command which will identify your OS, and chip architecture:

```bash  ❯_ terminal
uname -sm
```

This command will output something like `Linux x86_64` or `Darwin arm64`, depending on your system.
Navigate to the [mev-commit repo](https://github.com/primev/mev-commit/releases/latest)
and select the mev-commit binary tailored to your system.
For example, if `uname -sm` yields `Linux x86_64`, opt for `mev-commit_Linux_x86_64.tar.gz`.
Download, then extract the binary into your preferred root directory to continue with setup.

You can use the following command which automatically downloads and extracts the appropriate
mev-commit binary for your system into your home directory:

```bash  ❯_ terminal
FILENAME="mev-commit_$(uname -s)_$(uname -m).tar.gz"
curl -L \
"https://github.com/primev/mev-commit/releases/download/v0.3.0-rc2/$FILENAME" \
| tar -xz -C $HOME
```

<Accordion title="🕵️‍♂️ Recommended: Verify the checksum">

Before executing any code downloaded from the internet, it's recommended to verify the checksum,
a practice that ensures the file's integrity and authenticity. Checksums, provided with each release on GitHub,
serve as a safeguard, allowing you to confirm that the downloaded binary has not been compromised or altered,
thus protecting your system from potential security risks.

To verify the checksum of the mev-commit binary, you can follow these simplified steps (assumes binary is the home directory):

<Steps>

  <Step title="Grab the checksum">

    Set the binary's name based on your system and retrieve the corresponding checksum:

    ```bash ❯_ terminal
    FILENAME="mev-commit_$(uname -s)_$(uname -m).tar.gz"
    CHECKSUM=$(curl -L \
    "https://github.com/primev/mev-commit/releases/download/v0.3.0-rc2/mev-commit_v0.3.0-rc2_checksums.txt" \
    | awk "/$FILENAME/ {print \$1}")
    ```
  </Step>

  <Step title="Verify">

    Verify the binary's checksum by running the following:

    <CodeGroup>

    ```bash linux
    echo "$CHECKSUM $HOME/$FILENAME" | sha256sum -c -
    ```

    ```bash macOs (Darwin)
    echo "$CHECKSUM $HOME/$FILENAME" | shasum -a 256 -c -
    ```

    </CodeGroup>

   ✅ **Success**

    If the output resembles the following, you may confidently proceed to the next steps:

    ```bash ❯_ terminal
    filename.tar.gz: OK
    ```

    ❌ **Failure**

    Should the output indicate a failure, as shown below, re-download the file and attempt verification once more.

    ```bash ❯_ terminal
    filename.tar.gz: FAILED
    shasum: WARNING: 1 computed checksum did NOT match
    ```

    If checksum verification continues to fail after multiple attempts, reach out to Primev for support.
  </Step>

</Steps>

</Accordion>

Starting up your Node

Execute the script to initiate your node, selecting either a bidder or provider configuration based on your role in the network.

mev-commit --keystore-path ~/.mev-commit \
 --keystore-password <PASSWORD> \
	--bootnodes /dnsaddr/bootnode.testnet.mev-commit.xyz \
	--settlement-rpc-endpoint https://chainrpc.testnet.mev-commit.xyz
mev-commit --peer-type provider --keystore-path ~/.mev-commit \
 --keystore-password <PASSWORD> \
	--bootnodes /dnsaddr/bootnode.testnet.mev-commit.xyz \
	--settlement-rpc-endpoint https://chainrpc.testnet.mev-commit.xyz


Once the node is started you can go through the [funding process](/get-started/bidders/fund-node) to start sending bids.


In order to register as a provider please go through the [registration process](/get-started/providers/registering-a-provider).
  • --bootnodes This should point to the bootnode for the Primev testnet network.
  • --settlement-rpc-endpoint This should point to the Primev Settlement Chain RPC endpoint. At present this is managed by the Primev team.

❗ By default, the node is started as a Bidder node. The --peer-type flag can be used to run a different type of node. This will most likely be the provider node.

❗ The default contract addresses point to the Primev testnet at the moment. All the options can be provided using a YAML config file or environment variables as described in the above help output.

❗ The mev-commit node, when started for the first time will create a private key for the node at ~/.mev-commit/key. This is a plain-text key. In order to store encrypted keys, users need to use the keystore. This can be configured using the --keystore-path and --keystore-password.

CLI Reference

NAME:
   mev-commit - Start mev-commit node

USAGE:
   mev-commit [global options] command [command options]

VERSION:
   v0.2.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --config value                           path to config file [$MEV_COMMIT_CONFIG]
   --peer-type value                        peer type to use, options are 'bidder', 'provider' or 'bootnode' (default: "bidder") [$MEV_COMMIT_PEER_TYPE]
   --priv-key-file value                    path to private key file (default: "~/.mev-commit/key") [$MEV_COMMIT_PRIVKEY_FILE]
   --keystore-password value                use to access keystore [$MEV_COMMIT_KEYSTORE_PASSWORD]
   --keystore-path value                    path to keystore location (default: "~/.mev-commit/keystore") [$MEV_COMMIT_KEYSTORE_PATH]
   --p2p-port value                         port to listen for p2p connections (default: 13522) [$MEV_COMMIT_P2P_PORT]
   --p2p-addr value                         address to bind for p2p connections (default: "0.0.0.0") [$MEV_COMMIT_P2P_ADDR]
   --http-port value                        port to listen for http connections (default: 13523) [$MEV_COMMIT_HTTP_PORT]
   --http-addr value                        address to bind for http connections [$MEV_COMMIT_HTTP_ADDR]
   --rpc-port value                         port to listen for rpc connections (default: 13524) [$MEV_COMMIT_RPC_PORT]
   --rpc-addr value                         address to bind for RPC connections [$MEV_COMMIT_RPC_ADDR]
   --bootnodes value [ --bootnodes value ]  list of bootnodes to connect to [$MEV_COMMIT_BOOTNODES]
   --secret value                           secret to use for signing (default: "secret") [$MEV_COMMIT_SECRET]
   --log-fmt value                          log format to use, options are 'text' or 'json' (default: "text") [$MEV_COMMIT_LOG_FMT]
   --log-level value                        log level to use, options are 'debug', 'info', 'warn', 'error' (default: "info") [$MEV_COMMIT_LOG_LEVEL]
   --bidder-registry-contract value         address of the bidder registry contract (default: "0xa86a41b57Fb73f9118F84847574517258d29eAD0") [$MEV_COMMIT_BIDDER_REGISTRY_ADDR]
   --provider-registry-contract value       address of the provider registry contract (default: "0x5960774AD41D03DAB4916a30bD2190f8b3b3b4b2") [$MEV_COMMIT_PROVIDER_REGISTRY_ADDR]
   --preconf-contract value                 address of the preconfirmation commitment store contract (default: "0x7D1a4707e573D260581f3AB3f90f697Ab03fC6Dd") [$MEV_COMMIT_PRECONF_ADDR]
   --settlement-rpc-endpoint value          rpc endpoint of the settlement layer (default: "http://localhost:8545") [$MEV_COMMIT_SETTLEMENT_RPC_ENDPOINT]
   --nat-addr value                         external address of the node [$MEV_COMMIT_NAT_ADDR]
   --nat-port value                         externally mapped port for the node (default: 13522) [$MEV_COMMIT_NAT_PORT]
   --server-tls-certificate value           Path to the server TLS certificate [$MEV_COMMIT_SERVER_TLS_CERTIFICATE]
   --server-tls-private-key value           Path to the server TLS private key [$MEV_COMMIT_SERVER_TLS_PRIVATE_KEY]
   --help, -h                               show help
   --version, -v                            print the version