--- title: v2 Metrics version: 202.08.24 --- # Manifold Finance Public Dashboard Metrics | Field | Required or Not by Flash Bots | Required or Not by EigenPhi/Manifold | Description | |------------------ |------------------------------- |--------------------------------------------------- |------------------------------------------------------------------------------------------------------------- | | mev_type | No | Required | Arbitrage and transaction types identified by EigenPhi: arbitrage, liquidation, frontrun, victim, backrun. | | transaction_hash | Required | Required | Transaction hash | | block_number | Required | Required | Block number. | | tx_index | Required | No. (We suggest using transaction index instead.) | The index of tx inside of a bundle. | | bundle_type | Required | No | The bundle type from Flash Bots. | | bundle_index | Required | No | index of the bundle inside of the block | | eoa_address | Required | Optional | Address of the externally owned account that created this transaction | ## Business Metrics Latest Dollar Value - Send Transaction [api.securerpc.com/v1](api.securerpc.com/v1)- SushiSwapV1 [api.securerpc.com/v1](api.securerpc.com/v1)- Uniswap2/V3 Latest Dollar Value - External Successful Send Bundle - 14 day [api.securerpc.com/v1](api.securerpc.com/v1)- SushiSwapV1 [api.securerpc.com/v1](api.securerpc.com/v1)- Uniswap2/V3 Total Dollar Value - External Submitted Successful Bundles/Transactions 28day [api.securerpc.com/v1](api.securerpc.com/v1)- SushiSwapV1 [api.securerpc.com/v1](api.securerpc.com/v1)- Uniswap2/V3 Delta Dollar Value - External Successful Bundles 14day [api.securerpc.com/v1](api.securerpc.com/v1)- SushiSwapV1 [api.securerpc.com/v1](api.securerpc.com/v1)- Uniswap2/V3 ## Transaction and Bundle Metrics ### Successful Requests ### Failed Requests Failed Requests - Client Error Failed Requests - Internal Error ### Transaction Routing Total Send Transaction Requests Successful Send Transaction Requests Failed Send Transaction Requests Successful Relay Transaction Requests Failed Relay Transaction Requests ### Bundle Routing Total Send Bundle Requests Successful Send Bundle Requests Failed Send Bundle Requests Total Relay Bundle Requests ## Custom Queries These are log topics ## Process Filter Topics | **process_filter** | |--------------------------------------------------------------------------------------| | processing_chain_inclusion_events_repartition_v2_repartition_offsets_total | | processing_filter_chain_inclusion_events_left_repartition_offsets_total | | processing_filter_chain_inclusion_events_other_join_store_changelog_offsets_total | | processing_filter_chain_inclusion_events_right_repartition_offsets_total | | processing_filter_chain_inclusion_events_this_join_store_changelog_offsets_total | | processing_filter_chain_inclusion_events_v2_other_join_store_changelog_offsets_total | | processing_filter_chain_inclusion_events_v2_right_repartition_offsets_total | | processing_filter_chain_inclusion_events_v2_this_join_store_changelog_offsets_total | | processing_send_bundle_keys_for_timeout_changelog_offsets_total | | processing_send_bundle_timeout_cache_changelog_offsets_total | | processing_send_bundle_timeout_for_key_changelog_offsets_total | | processing_send_tx_keys_for_timeout_changelog_offsets_total | | processing_send_tx_timeout_cache_changelog_offsets_total | | processing_send_tx_timeout_for_key_changelog_offsets_total | | processing_uniswap_v2_events_reorg_state_changelog_offsets_total | | processing_uniswap_v2_liquidity_state_changelog_offsets_total | ## Eth Topics | **eth_topics** | |---------------------------------------------| | eth_block_account_balances_offsets_total | | eth_block_account_balances_v2_offsets_total | | eth_block_receipts_offsets_total | | eth_block_receipts_v2_offsets_total | | eth_block_sushi_liquidity_offsets_total | | eth_block_uni_liquidity_offsets_total | | eth_blocks_offsets_total | | eth_blocks_v2_offsets_total | | eth_gas_prices_offsets_total | | eth_gas_prices_v2_offsets_total | | eth_raw_transaction_new_offsets_total | | eth_uniswap_v2_events_offsets_total | | eth_uniswap_v2_liquidity_offsets_total | | eth_uniswap_v2_pair_offsets_total | | eth_uniswap_v2_router_offsets_total | ## Manifold / MEV Topics | **manifold_topics** | |-------------------------------------------------------| | manifold_transaction_timed_out_offsets_total | | manifold_transaction_timeouts_pending_offsets_total | | manifold_transaction_timeouts_triggered_offsets_total | | manifold_bundle_timeouts_pending_offsets_total | | manifold_bundle_timeouts_triggered_offsets_total | | manifold_bundle_unsigned_offsets_total | | manifold_platform_account_offsets_total | | manifold_platform_token_offsets_total | | manifold_relay_bundle_error_offsets_total | | manifold_relay_bundle_sent_offsets_total | | manifold_relay_transaction_error_offsets_total | | manifold_relay_transaction_sent_offsets_total | | manifold_transaction_arbing_offsets_total | | manifold_transaction_events_offsets_total | | manifold_transaction_mempool_error_offsets_total | | manifold_transaction_mempool_sent_offsets_total | | manifold_transaction_new_offsets_total | | manifold_transaction_pending_offsets_total | | manifold_transaction_relayed_offsets_total | | manifold_transaction_timed_out_offsets_total | | manifold_transaction_timeouts_pending_offsets_total | | manifold_transaction_timeouts_triggered_offsets_total | ## JSON-RPC Methods ### Requests by Method Value eth_accounts eth_blockNumber eth_call eth_chainId eth_coinbase eth_estimateGas eth_gasPrice eth_getBalance eth_getBlockByHash eth_getBlockByNumber eth_getBlockTransactionCountByHash eth_getBlockTransactionCountByNumber eth_getCode eth_getLogs eth_getStorageAt eth_getTransactionByBlockHashAndIndex eth_getTransactionByBlockNumberAndIndex eth_getTransactionByHash eth_getTransactionCount eth_getTransactionReceipt eth_getUncleByBlockHashAndIndex eth_getUncleByBlockNumberAndIndex eth_getUncleCountByBlockHash eth_getUncleCountByBlockNumber eth_protocolVersion eth_sign eth_signTypedData eth_syncing net_listening net_peerCount net_version web3_clientVersion eth_sendRawTransaction ### Flashbots Namespace eth_sendBundle eth_callBundle ### Manifold Namespace > [see https://github.com/manifoldfinance/libsushi](https://github.com/manifoldfinance/libsushi) for usage manifold_bundleStatus manifold_getGasPrices manifold_sendBundle manifold_sendTransaction manifold_transactionStatus ## Submit Tx ```mermaid sequenceDiagram autonumber Eth Client->>+Arbitrage Engine: Chain state for latest block Arbitrage Engine->>+Arbitrage Engine: Analyze txs + receipts Note over Arbitrage Engine,Arbitrage Engine: Looking for our bundles loop Each bundle that we identify loop Each tx Arbitrage Engine->>+Arbitrage Engine: Evalute tx status alt Tx reverted else Tx success Arbitrage Engine->>+Profit Distributor: Request to refund part of the [TX_RECEIPT_CREDIT] to theFee Receipent Note over Arbitrage Engine,Profit Distributor: It may be more efficient to batch up refunds etc. end end end Profit Distributor->>+Profit Distributor: wait n confirmations Profit Distributor->>+Eth Client: A series of txs for refunding [TX_RECEIPT_CREDIT] to Fee Receipent Note over Profit Distributor,Eth Client: If Fee Receipent refund is ever something other than Ether, perhaps the MEV relay would be better for this ``` ### Submit Tx Bundle ```mermaid sequenceDiagram autonumber User->>+Web3: submit tx bundle with target block number Web3->>+Web3: validate target number is for a block that has not been mined alt Target block number has already been mined Web3->>+User: Return error end loop Each tx in bundle Web3->>+Web3: validate tx is for a supported market alt Unsupported market Web3->>+User: Return error end end alt All markets supported and target block has not been mined Web3->>+Bundler: forward user bundle Bundler-->>-Web3: ack user bundle Web3-->>-User: ack tx bundle Bundler->>+Bundler: Aggregate & partition by (block number, market) Note over Bundler,Bundler: User bundles are preserved atomically Bundler->>+Arbitrage Engine: forward one or more bundles Eth Client->>+Arbitrage Engine: Target block number parent is mined Note over Eth Client,Arbitrage Engine: Latest market state is included in this update loop For each bundle targetting the next block number Arbitrage Engine->>+Arbitrage Engine: estimate price impact & interleave arbitrage orders Arbitrage Engine->>+Arbitrage Engine: determine profitability alt Profitable Arbitrage Engine->>+Arbitrage Engine: determine miner bribe Arbitrage Engine->>+Eth Signer: forward backbone bundle Eth Signer->>+Eth Signer: de-reference arbitrage orders for real orders Eth Signer->>+Eth Signer: generate miner bribe tx Eth Signer->>+MEV Relay: forward bundle MEV Relay->>+Miner: relay bundle end end end ``` ### Profit Distribution ```mermaid sequenceDiagram autonumber Eth Client->>+Arbitrage Engine: Chain state for latest block Arbitrage Engine->>+Arbitrage Engine: Analyze txs + receipts Note over Arbitrage Engine,Arbitrage Engine: Looking for our bundles loop Each bundle that we identify loop Each tx Arbitrage Engine->>+Arbitrage Engine: Evalute tx status alt Tx reverted else Tx success Arbitrage Engine->>+Profit Distributor: Request to refund part of the [TX_RECEIPT_CREDIT] to the User Note over Arbitrage Engine,Profit Distributor: It may be more efficient to batch up refunds etc. end end end Profit Distributor->>+Profit Distributor: wait n confirmations Profit Distributor->>+Eth Client: A series of txs for refunding [TX_RECEIPT_CREDIT] to Fee Receipent Note over Profit Distributor,Eth Client: If User refund is ever something other than Ether, perhaps the MEV relay would be better for this ``` ### Handling Fork ```mermaid sequenceDiagram autonumber Eth Client->>+Arbitrage Engine: The block number of the earliest common ancestor Arbitrage Engine->>+Arbitrage Engine: Arbitrage Engine enters fork mode Arbitrage Engine->>+Arbitrage Engine: Reverse out any state back to the earliest common ancestor Note over Arbitrage Engine, Arbitrage Engine: Things such as User positions, refunds, stats and so on Eth Client->>+Arbitrage Engine: Fork blocks in order with txs and receipts etc. loop each fork block Arbitrage Engine->>+Arbitrage Engine: Analyze txs + receipts Note over Arbitrage Engine,Arbitrage Engine: Looking for our bundles loop Each bundle that we identify loop Each tx Arbitrage Engine->>+Arbitrage Engine: Evalute tx status alt Tx reverted else Tx success Arbitrage Engine->>+Profit Distributor: Request to refund part of the [TX_RECEIPT_CREDIT] to the Fee Receipent Note over Arbitrage Engine,Profit Distributor: It may be more efficient to batch up refunds etc. end end end end Eth Client->>+Arbitrage Engine: A full snapshot of market data for the new head Arbitrage Engine->>+Arbitrage Engine: Arbitrage Engine leaves fork mode Profit Distributor->>+Profit Distributor: wait n confirmations Profit Distributor->>+Eth Client: A series of txs for refunding [TX_RECEIPT_CREDIT] to Fee Receipent Note over Profit Distributor,Eth Client: If User refund is ever something other than Ether, perhaps the MEV relay would be better for this ```