Oval Node

Inner workings of the Oval Node.

The Oval Node is designed to simplify the onboarding process of Oval for searchers. Searchers can simply add a new RPC to their list of builders they send bundles to and the Oval Node takes care of all the special logic required to backrun Oval unlocks.

The Oval Node supports two main RPC methods for searchers:

  1. eth_sendBundle, to which searchers can send standard bundle constructions as they would to any other builder.

  2. eth_callBundle to which searchers can send standard simulation payloads.

Both of these endpoints behave from the searchers perspective like any other builder they might send bundles to. Note that the Oval Node is not a builder; conceptually it is like a modified version of an MEV-Share node and acts as a middle layer between a searcher and MEV-Share.

Bundle transformation

The Oval Node receives a bundle on the eth_sendBundle RPC structured as follows:

{
  "method": 'eth_sendBundle',
  "params": [
    {
      "txs": ['0x1234…', '0x4567…'], // Array of signed transactions
      "blockNumber": '0x420', // Hex of target block
    },
  ],
  "id": 1,
  "jsonrpc": '2.0',
}

The Oval Node does three things to this bundle:

  1. It transforms the method from using eth_sendBundle to mev_sendBundle. Equally, it transforms the params block to use the mev_sendBundle definition.

  2. It appends the unlockLatestValue transaction hash to the incoming bundle and forwards this to the MEV-Share node via mev_sendBundle method.

The transformed bundle that is forwarded to MEV-Share looks as follows:

{
  "method": 'mev_sendBundle',
  "params": [
    {
      "inclusion": {
        "block": '0x420', // Original target block, Hex encoded
        "maxBlock": 18492875, // Original target block + lockWindow for given Oval
      },
      "body": [
        { "hash": '0x420' }, // UnlocklatestValue hash, from eth_sendPrivateTransaction
        { "tx": '0x1234', "canRevert": false }, // Searcher payload 1
        { "tx": '0x4567', "canRevert": false }, // Searcher payload 2
      ],
      "validity": {
        "refundConfig": [
          {
            "address": '0x1234', // Oval kickback address
            "Percentage": 90, // How much of the block builder payment to kick back
          },
        ],
      },
      "Builders": ['list', 'of', 'supported', 'builders'],
    },
  ],
};

The kickback address used by the Oval Node is set at the beginning to a multisig controlled by UMA (see Revenue Sharing). The OEV captured in the kickback will be manually distributed to associated projects that integrate with Oval. In the future this can be updated to operate as a contract to automatically distribute OEV revenue.

Last updated