SnipeMe
SnipeMe allows DeFi projects to submit MEV bundle for their initial token offering while giving MEV searchers (snipers) an opportunity to snipe the transaction bundle to produce extra backrunning profit. This offering makes it possible for DeFi projects to receive additional rewards from their initial offering. The usage of MEV bundle keeps DeFi projectsβ token offering information hidden from frontrunning bots, and the DeFi projects can receive a portion of the sniper bid (backrunning profit) when a bid is available.
With SnipeMe, DeFi projects can submit a bundle that contains the pool creation (or start trading) transaction, together with several swaps made by the project. The sniper bid has no negative impact on the MEV bundle submitted by the DeFi project because the sniperβs transaction would always be executed after the DeFi projectβs transaction is confirmed.
Integration steps for DeFi projects
REQUEST
Method: blxr_snipe_me
The DeFi project sends bundle to bloXroute SnipeMe program with blxr_snipe_me
method.
Parameters
Parameter
Description
transaction
A list of raw transaction bytes without a 0x
prefix that are meant to immediately follow the trigger transaction.
mev_builders
List of MEV builders, as described in ETH Bundle Submission page.
recipient_address
ETH wallet address for the DeFi project to collect βcash backβ. This address can be the From address of the βstart tradingβ transaction or a separate address.
number_of_blocks
[Optional, default 5] A window of blocks that the bundle is valid for. Suppose the latest confirmed block number is 1000, and a value 5 is used for this parameter, then the bundle may be included in any block from block number 1001 to block number 1005
platform
[Optional, default empty string] The DeFi project can use this field to indicate the platform used to launch the tokens on. For example, some popular platforms are βuniswapv2β, βuniswapv3β, βbalancerv2β.
Example
RESPONSE
Example
Notes:
Without the SnipeMe program, the MEV(or sniperβs bribe, sniperβs tx fee) generated by such a βstart tradingβ bundle would all go to ETH validator (or builder). WIth SnipeMe program, the profit will be shared between the DeFi project, builder and bloXroute, such that the DeFi project can receive the majority of the profit instantly, as opposed to receiving none.
The βstart tradingβ bundle must include the βtrigger transactionβ that allows the public to start buying/selling the token immediately. Depending on the DeFi projectβs rules, the DeFi project can include other transactions in the same bundle. For example, including transactions to add liquidity and create pool before the βtrigger transactionβ, or transactions to purchase some tokens from the new pool for the team as team allocation after the βtrigger transactionβ.
bloXroute receives the sniper bids and bundle them together with the βstart tradingβ orderflow. Snipers with the highest payout to the project will win the auction.
Using the SnipeMe method will not cause a delay to the bundle inclusion. bloXroute tries to get bids from users, and, more importantly, aims to land the bundle at the next block even if there are no bids.
Integration steps for Snipers
There are two steps involved for snipers: firstly using snipeMeStream
to obtain information, and then using blxr_submit_snipe_me_bundle
to submit a sniping bundle.
REQUEST
Name: snipeMeStream
snipeMeStream
is a ws stream for snipers to subscribe to, and only whitelisted searchers can have access to this stream. In addition to the commonly seen transactions data (signature fields v/r/s are excluded), there are 6 important fields:
blockNumber
Bundleβs block number.
bundleHash
Bundleβs bundle hash.
numberOfBlocks
Number of blocks for which the notification is valid (starting from blockNumber).
platform
Name of DeFi platform that token is swapped on. This field can be an empty string. Itβs solely for logging purposes, and searchers should not rely on this field to determine the token pool involved in the bundle.
splitConfig
Profit sharing ratios between projectShare
, bloxrouteShare
, builderShare
, and the total of three float numbers should be equal to 100.
projectWallet
DeFi proeject's wallet to receive bids.
Example
Note that the searcher is expected to simulate transactions from the stream, to double check if the transactions can trigger a new token launch that the searcher is interested in, as well as to examine it to make sure the transactions and tokens involved are not a βtrapβ that could result into a loss of funds.
REQUEST
Method: blxr_submit_snipe_me_bundle
The sniper uses blxr_submit_snipe_me_bundle
to submit the sniping bundle, which is expected to distribute profits to three wallets accordingly based on the splitConfig
field from the snipeMeStream
stream. The fields in this new request are mostly similar to those in regular blxr_submit_bundle request, but with 2 new fields:
target_bundle_hash
Bundle hash of the target "start trading" bundle that was provided in the stream output.
total_profit
Total profit in wei (with block base fee excluded) that is expected to be shared with the three wallets.
Example
Note that some parameters of blxr_submit_bundle
, like uuid
, are not supported in this new request. The mev builder list (mev_builders
parameter) provided in this request, if any, would always be ignored, and this sniping bundle would potentially be sent to all block builders.
Last updated