banner

mev-tendermint

The purpose of mev-tendermint is to create a private mempool (the “sidecar”) containing atomic bundles of txs and gossip bundles of transactions specifically to the proposer of the next block.

Design Goals

The design goals of MEV-Tendermint is to allow & preserve:

  1. 🔒  Privacy for users submitting bundles
  2. 🎁  Atomicity for bundles of transactions
  3. 🐎  Priority guaranteed for highest paying bundles
  4. 🏛  No new security assumptions for validators and nodes running MEV-Tendermint, including removing the need for ingress or egress for locked-down validators. No new network assumptions are made
  5. 🔄  On-chain transaction submission via gossip, no need for off-chain submission like HTTP endpoints, endpoint querying, etc
  6. 💨  Impossible to slow down block time, i.e. no part of mev-tendermint introduces consensus delays

Basic Functionality Overview

🏦 Auction

🗣️ Gossip

[reinforce that we have different channels on the same reactor]

🏒 Handling Transactions

[reinforce that we have a new transaction data structure]

🚜 Reaping

[reinforce reaping of bundle goes to top if available]

Components

#1 The Sidecar

#2 The Mempool Reactor

#3 Selective Reaping

👨‍💻 How to Configure

1. Tendermint replacement ♻️

In the go.mod file of the directory you use to compile your chain binary, you need to replace the imported version of tendermint with the correct mev-tendermint version, like so:

// ---------------------------------
replace (
	// Other stuff...
	github.com/tendermint/tendermint => github.com/skip-mev/mev-tendermint v0.34.21-mev
)

🚨 After modifying the replace statement, run go mod tidy in your base directory

2. Peering Setup 🤝

mev-tendermint introduces a new section of config in config.toml called sidecar, which contains 2 settings that you must configure in order to receive bundles from the skip sentinel:

3. Information Skip Requires from you ℹ️

In order to participate in the network, you must share with Skip (feel free to contact us at on our website):

  1. The Tendermint Address of your validator (The “address” field of the priv_validator_key.json file generated by Tendermint)
  2. The Tendermint p2p ids of all nodes you wish the Skip sentinel to gossip with directly (Can be obtained by tendermint show-node-id

4. Recompile your binary, and start! 🎉

That’s it! After making the changes above, you can recompile your binary like junod (probably using make install), and restart your node(s)! You will now begin receiving MEV bundles from Skip.