# Table of Contents - [Welcome to Blink | Blink](#welcome-to-blink-blink) - [Tx Originators | Blink](#tx-originators-blink) - [General | Blink](#general-blink) - [Integration | Blink](#integration-blink) - [Oracles | Blink](#oracles-blink) - [Wallets | Blink](#wallets-blink) - [Bots | Blink](#bots-blink) - [Individual Users | Blink](#individual-users-blink) - [Security | Blink](#security-blink) - [eth_sendRawTransaction | Blink](#eth-sendrawtransaction-blink) - [eth_sendPrivateTransaction | Blink](#eth-sendprivatetransaction-blink) - [Custom Configuration | Blink](#custom-configuration-blink) - [API Reference | Blink](#api-reference-blink) - [eth_sendBundle | Blink](#eth-sendbundle-blink) - [Misc | Blink](#misc-blink) - [eth_getTransactionByHash | Blink](#eth-gettransactionbyhash-blink) - [eth_getTransactionCount | Blink](#eth-gettransactioncount-blink) - [Additional Features | Blink](#additional-features-blink) - [Querying a Bundle | Blink](#querying-a-bundle-blink) - [Listen To Transactions | Blink](#listen-to-transactions-blink) - [API Reference | Blink](#api-reference-blink) - [Gas Sponsored Swaps | Blink](#gas-sponsored-swaps-blink) - [eth_sendBundle | Blink](#eth-sendbundle-blink) - [Bid on Transactions | Blink](#bid-on-transactions-blink) - [MEVBlocker Compatible (V3) | Blink](#mevblocker-compatible-v3-blink) - [V1 (Deprecated) | Blink](#v1-deprecated-blink) - [Integration | Blink](#integration-blink) - [Gas Recoveries | Blink](#gas-recoveries-blink) - [eth_cancelBundle | Blink](#eth-cancelbundle-blink) - [Page | Blink](#page-blink) - [MEV | Blink](#mev-blink) - [Privacy Policy | Blink](#privacy-policy-blink) - [State Update Auction | Blink](#state-update-auction-blink) - [API Reference | Blink](#api-reference-blink) - [sendBundle | Blink](#sendbundle-blink) - [MEVBlocker Compatible (V2) | Blink](#mevblocker-compatible-v2-blink) - [Rust Decoding A Transaction | Blink](#rust-decoding-a-transaction-blink) - [Searchers | Blink](#searchers-blink) - [How it works | Blink](#how-it-works-blink) - [API Reference | Blink](#api-reference-blink) - [Integration | Blink](#integration-blink) - [getSignature | Blink](#getsignature-blink) - [Searchers | Blink](#searchers-blink) - [Senior Software Engineer | Blink](#senior-software-engineer-blink) - [Gas Sponsorship | Blink](#gas-sponsorship-blink) - [Email Protection | Cloudflare](#email-protection-cloudflare) --- # Welcome to Blink | Blink Blink is a research organization specializing in the lifecycle of on-chain transactions, focusing on value recovery and optimizing security and latency for users. [](https://docs.blinklabs.xyz/blink#quick-start) Quick Start ----------------------------------------------------------------- Start building in minutes: * Request an API key by emailing [contact@blinklabs.xyz](mailto:contact@blinklabs.xyz) * Check out the [integration guide](https://docs.blinklabs.xyz/blink/get-started/integration) for your originator type * * * [](https://docs.blinklabs.xyz/blink#getting-started) Getting Started ------------------------------------------------------------------------- * [**Transaction Originators**](https://docs.blinklabs.xyz/blink/get-started/tx-originators) * What is a Transaction Originator? * Do I qualify as a Transaction Originator? * What type of Transaction Originator am I? * [**State Update Auction**](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction) * What is a State Update Auction? * How do I integrate with the auction? * What are the benefits of the auction? * RPC / API reference * [**Searchers**](https://docs.blinklabs.xyz/blink/searchers/integration) * How do I integrate with Blink as a Searcher? * How do I listen to new transactions? * How do I bid on transactions? * RPC / API reference [NextTx Originators](https://docs.blinklabs.xyz/blink/get-started/tx-originators) Last updated 1 year ago --- # Tx Originators | Blink [](https://docs.blinklabs.xyz/blink/get-started/tx-originators#what-is-a-transaction-originator) What is a Transaction Originator? --------------------------------------------------------------------------------------------------------------------------------------- Any entity broadcasting on-chain transactions qualifies as a "Transaction Originator", making it eligible for the "State Update Auction". Transaction broadcasting occurs when an entity executes the RPC call [eth\_sendRawTransaction](https://docs.alchemy.com/reference/eth-sendrawtransaction) to a node for a specific transaction. [](https://docs.blinklabs.xyz/blink/get-started/tx-originators#get-started-integrating) Get Started Integrating -------------------------------------------------------------------------------------------------------------------- Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint. This endpoint replicates the standard node endpoint provided by RPC services such as Alchemy or Quicknode, eliminating the need for additional changes. For a quick setup of your individual account and dashboard, please contact us at [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#6d0e0203190c0e192d0f01040306010c0f1e43151417) . Individual users can get started with Blink quickly by visiting [https://blinklabs.xyz](https://blinklabs.xyz/) and clicking the "Get Protected" button. * * * See additional details on your specific integration below: * [General](https://docs.blinklabs.xyz/blink/get-started/integration/general) * [Wallets](https://docs.blinklabs.xyz/blink/get-started/integration/wallets) * [Oracles](https://docs.blinklabs.xyz/blink/get-started/integration/oracles) * [Bots](https://docs.blinklabs.xyz/blink/get-started/integration/bots) * [Individual Users](https://docs.blinklabs.xyz/blink/get-started/integration/individual-users) [PreviousWelcome to Blink](https://docs.blinklabs.xyz/blink) [NextIntegration](https://docs.blinklabs.xyz/blink/get-started/integration) Last updated 8 months ago --- # General | Blink Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint. This endpoint mirrors the standard node endpoint you get from RPC providers like Alchemy or Quicknode so no additional changes would be required. Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#4c2f2322382d2f380c2e20252227202d2e3f62343536) to get set up with your own custom endpoint & dashboard. [](https://docs.blinklabs.xyz/blink/get-started/integration/general#integration-steps) Integration Steps ------------------------------------------------------------------------------------------------------------- * Acquire custom RPC endpoint via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#cba8a4a5bfaaa8bf8ba9a7a2a5a0a7aaa9b8e5b3b2b1) * Highlight any custom configurations you may want * Switch out existing RPC endpoint for the custom Blink endpoint * `https://eth.blinklabs.xyz/v1/{$API_KEY}` * Track recoveries via Blink's dashboard ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FpMNrba2mhNpB1LN3WiTF%252Fblink_dashboard.jpg%3Falt%3Dmedia%26token%3Deebb05a4-e9c8-445c-8d94-ed50816a0c6c&width=768&dpr=4&quality=100&sign=be270de0&sv=2) [PreviousIntegration](https://docs.blinklabs.xyz/blink/get-started/integration) [NextWallets](https://docs.blinklabs.xyz/blink/get-started/integration/wallets) Last updated 10 months ago --- # Integration | Blink The Blink's RPC endpoint mirrors the standard node endpoint you get from RPC providers like Alchemy or Quicknode so no additional changes would be required. This means integrating with Blink is a one-line configuration for most of our customers. Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#a0c3cfced4c1c3d4e0c2ccc9cecbccc1c2d38ed8d9da) to get set up with your own custom endpoint & dashboard. * * * See additional details on your specific integration below: * [General](https://docs.blinklabs.xyz/blink/get-started/integration/general) * [Wallets](https://docs.blinklabs.xyz/blink/get-started/integration/wallets) * [Oracles](https://docs.blinklabs.xyz/blink/get-started/integration/oracles) * [Individual Users](https://docs.blinklabs.xyz/blink/get-started/integration/individual-users) [PreviousTx Originators](https://docs.blinklabs.xyz/blink/get-started/tx-originators) [NextGeneral](https://docs.blinklabs.xyz/blink/get-started/integration/general) Last updated 10 months ago --- # Oracles | Blink [](https://docs.blinklabs.xyz/blink/get-started/integration/oracles#chainlink-node-providers) Chainlink Node Providers --------------------------------------------------------------------------------------------------------------------------- Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoints. These endpoints mirrors the standard node endpoint you get from RPC providers like Alchemy or Quicknode so no additional changes would be required. Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#a7c4c8c9d3c6c4d3e7c5cbcec9cccbc6c5d489dfdedd) to get set up with your own custom endpoint & dashboard. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/oracles#integration-steps) Integration Steps * Acquire custom RPC endpoints (https & wss) via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#e0838f8e94818394a0828c898e8b8c818293ce98999a) * Highlight any custom configurations you may want * Switch out existing RPC endpoints for the custom Blink endpoint in the ["Node Config"](https://docs.chain.link/chainlink-nodes/v1/node-config) Copy [[EVM.Nodes]] Name = 'Blink' # Required WSURL = 'wss://eth.blinklabs.xyz/ws/v1/{$API_KEY}' HTTPURL = 'https://eth.blinklabs.xyz/v1/{$API_KEY}' * Track recoveries via Blink's dashboard ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FpMNrba2mhNpB1LN3WiTF%252Fblink_dashboard.jpg%3Falt%3Dmedia%26token%3Deebb05a4-e9c8-445c-8d94-ed50816a0c6c&width=768&dpr=4&quality=100&sign=be270de0&sv=2) [PreviousWallets](https://docs.blinklabs.xyz/blink/get-started/integration/wallets) [NextBots](https://docs.blinklabs.xyz/blink/get-started/integration/bots) Last updated 10 months ago --- # Wallets | Blink Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint. This endpoint mirrors the standard node endpoint you get from RPC providers like Alchemy or Quicknode so no additional changes would be required. Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#e2818d8c96838196a2808e8b8c898e838091cc9a9b98) to get set up with your own custom endpoint & dashboard. [](https://docs.blinklabs.xyz/blink/get-started/integration/wallets#integration-steps) Integration Steps ------------------------------------------------------------------------------------------------------------- * Acquire custom RPC endpoint via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#660509081207051226040a0f080d0a070415481e1f1c) * Highlight any custom configurations you may want * Switch out existing RPC endpoint for the custom Blink endpoint * `https://eth.blinklabs.xyz/v1/{$API_KEY}` * Track recoveries via Blink's dashboard ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FpMNrba2mhNpB1LN3WiTF%252Fblink_dashboard.jpg%3Falt%3Dmedia%26token%3Deebb05a4-e9c8-445c-8d94-ed50816a0c6c&width=768&dpr=4&quality=100&sign=be270de0&sv=2) [PreviousGeneral](https://docs.blinklabs.xyz/blink/get-started/integration/general) [NextOracles](https://docs.blinklabs.xyz/blink/get-started/integration/oracles) Last updated 10 months ago --- # Bots | Blink [](https://docs.blinklabs.xyz/blink/get-started/integration/bots#rpc-node-integration) RPC Node Integration ---------------------------------------------------------------------------------------------------------------- Blink's "RPC Node" integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint. This endpoint mirrors the standard node endpoint you get from RPC providers like Alchemy or Quicknode so no additional changes would be required. Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#c8aba7a6bca9abbc88aaa4a1a6a3a4a9aabbe6b0b1b2) to get set up with your own custom endpoint & dashboard. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/bots#integration-steps) Integration Steps * Acquire custom RPC endpoint via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#365559584257554276545a5f585d5a575445184e4f4c) * Highlight any custom configurations you may want * Switch out existing RPC endpoint for the custom Blink endpoint * `https://eth.blinklabs.xyz/v1/{$API_KEY}` * Track recoveries via Blink's dashboard ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FpMNrba2mhNpB1LN3WiTF%252Fblink_dashboard.jpg%3Falt%3Dmedia%26token%3Deebb05a4-e9c8-445c-8d94-ed50816a0c6c&width=768&dpr=4&quality=100&sign=be270de0&sv=2) [](https://docs.blinklabs.xyz/blink/get-started/integration/bots#builder-integration) Builder Integration -------------------------------------------------------------------------------------------------------------- Blink's "Builder Integration" enables Bot companies to add a Blink endpoint to their builder list and receive some of the benefits from the "RPC Node" integration. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/bots#integration-steps-1) Integration Steps * Acquire custom builder endpoint via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#85e6eaebf1e4e6f1c5e7e9ecebeee9e4e7f6abfdfcff) * Highlight any custom configurations you may want * Add Blink builder endpoint to your list of builders * `https://builder.blinklabs.xyz/v1/{$API_KEY}` [PreviousOracles](https://docs.blinklabs.xyz/blink/get-started/integration/oracles) [NextIndividual Users](https://docs.blinklabs.xyz/blink/get-started/integration/individual-users) Last updated 10 months ago --- # Individual Users | Blink Individual users will be able to access Blink by updating their Wallet's RPC, just visit [https://blinklabs.xyz](https://blinklabs.xyz/) and click the "Get Protected" button. If you have any issues the instructions for how to manually do this on Metamask are below, this will provide Front-running protection & MEV Recovery. [](https://docs.blinklabs.xyz/blink/get-started/integration/individual-users#enabling-blink-via-metamask) Enabling Blink via Metamask ------------------------------------------------------------------------------------------------------------------------------------------ Complete the following steps: 1. Open up Metamask on your desktop and click on the network button located at the top of the wallet tile. 2. Clicking the network button will open up another tile that shows the networks set up on your Metamask. Click "Add Network". 3. Add Network will open a new tab where you can input the details for a new network. 1. Network Name, the custom name for the network, we recommend "**Ethereum Blink**" 2. New RPC URL, the endpoint your transactions will be sent to, **https://ethereum.blinklabs.xyz** 3. ChainID, ID of the chain, **1** for Ethereum mainnet 4. Currency Symbol, **ETH** for Ethereum mainnet 5. Block Explorer URL, [**https://etherscan.io**](https://etherscan.io/) 6. Click "Save" 7. The network button at the top should have changed to the Network Name we set in 3.1 "Ethereum Blink" ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FDmW8w3XlhItAhhtqv7nK%252Fimage.png%3Falt%3Dmedia%26token%3D74afa1fa-31a0-42ed-bff7-7098551f9c72&width=768&dpr=4&quality=100&sign=44368992&sv=2) Adding a custom network to Metamask ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252F2kgQbEBEPXloNabNnpJb%252Fimage.png%3Falt%3Dmedia%26token%3Daa972b74-4fca-4b6f-a57f-5a4b7ad251d6&width=768&dpr=4&quality=100&sign=a4e0f760&sv=2) Adding a custom network to Metamask [PreviousBots](https://docs.blinklabs.xyz/blink/get-started/integration/bots) [NextSecurity](https://docs.blinklabs.xyz/blink/get-started/integration/security) Last updated 9 months ago --- # Security | Blink As a trusted RPC provider for write transactions on the Ethereum blockchain, our infrastructure is designed with transparency, reliability, and user protection in mind. We understand the importance of safeguarding your transactions, and we're committed to maintaining the highest levels of security. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/security#immutable-transactions) Immutable Transactions When you submit a transaction through Blink, we only handle **signed transactions**. This means that Blink can in no way alter or interfere with what the underlying transaction does. Once your transaction is signed with your private key, it is cryptographically sealed, and its integrity is assured. The transaction's content, including who it's sent to, what actions it will perform, and how much value is being transferred, is locked in and cannot be changed by Blink. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/security#public-data-handling) Public Data Handling The data we receive at Blink is **public data**. Ethereum transactions that are sent to the public mempool are available for anyone to view. Blink facilitates getting your transaction on chain, ensuring efficient submission to the Ethereum blockchain without exposing any sensitive information. It is no different from sending the same transaction directly to the Ethereum network, except that Blink helps streamline the process. ### [](https://docs.blinklabs.xyz/blink/get-started/integration/security#transparency-and-trust) Transparency and Trust Our system is built on the foundation of blockchain transparency. Since Ethereum is an open and public network, every transaction and action taken is recorded immutably on the blockchain for anyone to audit. Blink operates within this framework, providing a secure, transparent method for you to interact with Ethereum. By using Blink, you're taking advantage of a reliable, secure infrastructure that is designed with trust in mind. We strive to ensure that your Ethereum interactions remain safe & secure. [PreviousIndividual Users](https://docs.blinklabs.xyz/blink/get-started/integration/individual-users) [NextCustom Configuration](https://docs.blinklabs.xyz/blink/get-started/custom-configuration) Last updated 9 months ago --- # eth_sendRawTransaction | Blink Blink will intercept eth\_sendRawTransaction requests, it will; * Bypass the mempool * Send the transaction directly to builders * Run the "State Update Auction" for the received transaction ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendrawtransaction#example-request) Example request Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendRawTransaction", "params": [\ "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833",\ ], } ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendrawtransaction#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" } [PreviousAPI Reference](https://docs.blinklabs.xyz/blink/get-started/api-reference) [Nexteth\_sendPrivateTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendprivatetransaction) Last updated 10 months ago --- # eth_sendPrivateTransaction | Blink Blink will intercept eth\_sendPrivateTransaction requests, it will; * Bypass the mempool * Send the transaction directly to builders * Run the "State Update Auction" for the received transaction ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendprivatetransaction#example-request) Example request Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendPrivateTransaction", "params": [\ "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833",\ ], } ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendprivatetransaction#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" } [Previouseth\_sendRawTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendrawtransaction) [Nexteth\_getTransactionByHash](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactionbyhash) Last updated 10 months ago --- # Custom Configuration | Blink [](https://docs.blinklabs.xyz/blink/get-started/custom-configuration#state-update-auction-configurations) State Update Auction Configurations -------------------------------------------------------------------------------------------------------------------------------------------------- Several configuration options are available for the **State Update Auction** to tailor the transaction flow to your needs: #### [](https://docs.blinklabs.xyz/blink/get-started/custom-configuration#id-1.-builder-set) 1\. **Builder Set** Specifies which block builders the transactions will be forwarded to. #### [](https://docs.blinklabs.xyz/blink/get-started/custom-configuration#id-2.-mev-recovery-default-on) 2\. **MEV Recovery** (Default: On) Enables the recovery of value from non-malicious MEV (Maximal Extractable Value) opportunities. #### [](https://docs.blinklabs.xyz/blink/get-started/custom-configuration#id-3.-gas-recovery-default-on) 3\. **Gas Recovery** (Default: On) Allows you to receive gas rebates on transactions, optimizing gas costs. #### [](https://docs.blinklabs.xyz/blink/get-started/custom-configuration#id-4.-revert-protection) 4\. **Revert Protection** `eth_sendRawTransaction` - **Default: Off** When transactions are sent using `eth_sendRawTransaction`, revert protection is turned off by default, aligning with standard Ethereum node behaviour. This means that transactions can revert without additional safeguards. `eth_sendBundle` or `eth_sendPrivateTransaction` **- Default: On** Transactions send to these endpoints will not be included if they will revert. **Note**: If you enable this feature, consider any necessary changes to your user interface (UI/UX) to ensure that users understand why their transaction may not have landed on-chain if it reverts. [PreviousSecurity](https://docs.blinklabs.xyz/blink/get-started/integration/security) [NextAPI Reference](https://docs.blinklabs.xyz/blink/get-started/api-reference) Last updated 10 months ago --- # API Reference | Blink List of API / RPC requests. * [eth\_sendRawTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendrawtransaction) * [eth\_sendPrivateTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendprivatetransaction) * [eth\_getTransactionByHash](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactionbyhash) * [eth\_sendBundle](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendbundle) [PreviousCustom Configuration](https://docs.blinklabs.xyz/blink/get-started/custom-configuration) [Nexteth\_sendRawTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendrawtransaction) Last updated 10 months ago --- # eth_sendBundle | Blink **Note this is for originators who send transactions via bundles rather than searchers who are bundling with other transactions.** Blink will intercept eth\_sendBundle requests, it will; * Send the transaction directly to builders * Run the "State Update Auction" for single transaction bundles ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendbundle#example-request) Example request Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_sendBundle", "params": [\ {\ txs, // Array[String], A list of signed transactions to execute in an atomic bundle\ blockNumber, // (Optional) String, a hex-encoded block number for which this bundle is valid. Default, current block number\ }\ ] } ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendbundle#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": "0x164d7d41f24b7f333af3b4a70b690cf93f636227165ea2b699fbb7eed09c46c7" } [Previouseth\_getTransactionByHash](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactionbyhash) [Nexteth\_getTransactionCount](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactioncount) Last updated 10 months ago --- # Misc | Blink [Privacy Policy](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy) [Previouseth\_getTransactionCount](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactioncount) [NextPrivacy Policy](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy) Last updated 5 months ago --- # eth_getTransactionByHash | Blink Blink will intercept eth\_getTransactionByHash requests, it will; * Check if the transaction is on-chain / in mempool and return a standard response * If not it will check Blink's own data and provide the standard response minus the transaction signatures (the v, r, s components) and the gas price ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactionbyhash#example-request) Example request Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_getTransactionByHash", "params": [\ "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"\ ] } ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactionbyhash#example-response) Example response Copy { "id" : 1, "jsonrpc" : "2.0", "result" : { "blockHash" : "0xb3b20624f8f0f86eb50dd04688409e5cea4bd02d700bf6e79e9384d47d6a5a35", "blockNumber" : "0x5bad55", "chainId" : "0x1", "from" : "0x398137383b3d25c92898c656696e41950e47316b", "gas" : "0x1d45e", "gasPrice" : "0x0", "hash" : "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", "input" : "0xf7d8c88300000000000000000000000000000000000000000000000000000000000cee6100000000000000000000000000000000000000000000000000000000000ac3e1", "nonce" : "0x18", "r" : "0x0", "s" : "0x0", "to" : "0x0", "transactionIndex" : "0x11", "type" : "0x0", "v" : "0x0", "value" : "0x1c6bf526340000" } } [Previouseth\_sendPrivateTransaction](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendprivatetransaction) [Nexteth\_sendBundle](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendbundle) Last updated 1 year ago --- # eth_getTransactionCount | Blink If eth\_getTransactionCount is submitted with the "pending" param Blink will intercept the call, check its data for any transactions in the last 24 seconds (2 blocks) and return the highest nonce we have received. All calls with "latest" or "earliest" will be forwarded onto an Ethereum node. This endpoint is default disabled as it isn't relevant for most originators, it can be enabled for your custom endpoint. ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactioncount#example-request) Example request Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_getTransactionCount", "params": [\ "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97",\ "pending"\ ] } ### [](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_gettransactioncount#example-response) Example response Copy { "id" : 1, "jsonrpc" : "2.0", "result" : "0x31" } [Previouseth\_sendBundle](https://docs.blinklabs.xyz/blink/get-started/api-reference/eth_sendbundle) [NextMisc](https://docs.blinklabs.xyz/blink/get-started/misc) Last updated 1 year ago --- # Additional Features | Blink [Gas Sponsored Swaps](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps) [PreviousMEV](https://docs.blinklabs.xyz/blink/how-it-works/mev) [NextGas Sponsored Swaps](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps) Last updated 5 months ago --- # Querying a Bundle | Blink ### [](https://docs.blinklabs.xyz/blink/searchers/integration/querying-a-bundle#query-bundle) Query Bundle Once you have submitted a bundle you may want to verify the status of the bundle. This can be achieved via https://ethauction.blinklabs.xyz/bundle/v1/{$API\_KEY}?hash={$BUNDLE\_HASH} Below is an example response. Copy { "bundleHash": "0x9f8b0be7ba73dd049d0c13f8bee2f35ab1ba6401f07d1c60d77a7f81020fb187", "wasSentToRelay": true, "searcherAddress": "0xa81b75207dd53258c2307b64b7af15388c5592ab", "bidValueWei": "500000000000000", "blockNumber": "0x84a729", "timeReceived": 1666340740, "titanBundleHash": "0xb43eeb71cc55e1bd36597c2e2bf0d2e990a8edac0ccb88fbb8485ce827ab9144", "error": "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000034761730000000000000000000000000000000000000000000000000000000000" } * `wasSentToRelay` indicates the bundle was sent onto the builder network, false indicates there was an issue with the bundle * `timeReceived` is the Unix timestamp of when the bid was received. * `titanBundleHash` is the bundle hash returned by Titan which can be queried using their [titan\_getBundleStats](https://docs.titanbuilder.xyz/bundle-tracing#using-titan_getbundlestats-endpoint) endpoint (only non-nil is returned) * `error` is the reversion or error reason returned by the Reth node simulating the bundle (only non-nil is returned) [PreviousBid on Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions) [NextAPI Reference](https://docs.blinklabs.xyz/blink/searchers/api-reference) Last updated 1 month ago --- # Listen To Transactions | Blink To listen to transactions subscribe to one of the websockets below. * [V2 Websocket - MEVBlocker Compatible](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2) * [V3 Websocket - MEVBlocker Compatible](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3) [PreviousIntegration](https://docs.blinklabs.xyz/blink/searchers/integration) [NextMEVBlocker Compatible (V2)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2) Last updated 1 year ago --- # API Reference | Blink List of API / RPC requests. * [eth\_sendBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_sendbundle) * [eth\_cancelBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_cancelbundle) [PreviousQuerying a Bundle](https://docs.blinklabs.xyz/blink/searchers/integration/querying-a-bundle) [Nexteth\_sendBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_sendbundle) Last updated 1 year ago --- # Gas Sponsored Swaps | Blink ### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#overview) Overview Gas sponsored swaps allow users to execute token swaps without needing to hold native blockchain currency for gas fees. This is typically done using smart contract accounts or signature-based transactions (e.g., CoWSwap) where transactions are executed on behalf of the user. Blink's gas sponsored swap solution enables transactions directly from Externally Owned Accounts (EOAs) that lack sufficient native currency to cover gas fees. ### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#how-it-works) How It Works Blink utilizes **bundles / block sequencing** to facilitate gas sponsored swaps for EOAs. When a user initiates a swap but lacks the required gas, a small amount of native currency is transferred to their address before their transaction in the same block. This allows them to complete the transaction. _Note that while the below example references swaps when the swap fee is greater than X, Blink can in reality configure any transaction to be "Gas Sponsored" including non-swaps or swaps where the fee is less than X._ _One use case we've encountered for gas sponsored transactions is when a user moves assets from a Centralised Exchange to a wallet for the first time and doesn't have the native currency. Blink can sponsor the user's first transactions to create a seamless UX when they land on-chain_. #### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#bundled-gas-sponsored-swap-process) **Bundled Gas S**ponsored **Swap Process** 1. Blink detects when a user does not have enough native currency to execute a swap. 2. We simulate the transaction to determine the **swap fee** and **notional USD value**. 3. If the swap fee meets or exceeds the gas cost threshold, a small amount of native currency is transferred to the user's wallet. 4. The user executes the swap using the provided gas. 5. The wallet benefits from a seamless user experience and earns additional swap fee revenue. ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252F5yxkn6TdrkU4SJRaGoOu%252Fimage.png%3Falt%3Dmedia%26token%3Df3c544dc-2050-4b64-8037-7ca89cc82343&width=768&dpr=4&quality=100&sign=92c96b7f&sv=2) Gas Sponsored Swap Flow ### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#gas-transfer-thresholds) **Gas Transfer Thresholds** Since transferring gas incurs a cost, Wallets can configure parameters to ensure gas is only transferred if the **swap fee is greater than or equal to the gas cost**. This helps optimize costs and ensures efficiency in gas allocation. ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FERVHjHcQ9OUlQlonZDLb%252Fimage.png%3Falt%3Dmedia%26token%3D6a855fb9-79b7-4eb6-91cc-2de10b1ba022&width=768&dpr=4&quality=100&sign=79f3defd&sv=2) Gas Sponsored Swap Which Exceeds Threshold Let's run through the image above as an example. * A user wants to make a $100,000 USDC swap but does not have sufficient gas * The Wallet has an associated Swap Fee of 0.5% * This will result in $500 worth of revenue for the Wallet if the swap is executed * The gas fee to make this swap is $5 worth of the native currency * Since $500 > $5 (swap fee > gas cost) Blink will execute the gas sponsored swap for the user * The Wallet net revenue for this swap will be $495 after factoring in the cost of the gas ### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#benefits) **Benefits** * **Improved User Experience**: Users no longer need to manually acquire native currency to complete swaps, reducing friction and increasing transaction completion rates. * **Additional Wallet Revenue**: Gas sponsored swaps enhance swap volume, generating more fee revenue for the wallet. * **Zero Tech Lift for Customers**: Blink fully manages the gas sponsored swap process, requiring no additional integration effort from customers. * **Customer UX Enhancements**: Wallets can incorporate user-friendly features such as **"We sponsored your gas"** messaging to highlight the seamless experience. ### [](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps#implementation) **Implementation** * No additional technical integration is required from customers. * Blink manages gas detection, fee validation, and gas transfer automatically. * Wallet providers can optionally add UX elements to highlight the gas sponsorship feature. Blink's gasless swap solution simplifies user transactions, enhances the swapping experience, and increases revenue opportunities for wallets—all with **zero integration effort required**. [PreviousAdditional Features](https://docs.blinklabs.xyz/blink/additional-features) [NextIntegration](https://docs.blinklabs.xyz/blink/searchers/integration) Last updated 4 months ago --- # eth_sendBundle | Blink Replacement UUID will be forwarded onto builders so the bundle can be cancelled. ### [](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_sendbundle#example-request) Example request Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_sendBundle", "params": [\ {\ "txs": [ \ "txHash", // originator transaction\ "rawTxHex" // searcher transaction\ ], \ "blockNumber": "0x102286B", // (Optional) String, a hex-encoded block number for which this bundle is valid. Default, current block number\ "replacementUuid": "blinklabsxyz", // (Optional) String, any arbitrary string that can be used to replace or cancel this bundle\ }\ ] } ### [](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_sendbundle#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": "0x164d7d41f24b7f333af3b4a70b690cf93f636227165ea2b699fbb7eed09c46c7" } [PreviousAPI Reference](https://docs.blinklabs.xyz/blink/searchers/api-reference) [Nexteth\_cancelBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_cancelbundle) Last updated 1 year ago --- # Bid on Transactions | Blink ### [](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions#submitting-a-bid) Submitting a Bid Bids are submitted to Blink via https://ethauction.blinklabs.xyz/v1/{$API\_KEY} as a bundle. Bundles are submitted using the [eth\_sendBundle](https://docs.flashbots.net/flashbots-auction/searchers/advanced/rpc-endpoint) RPC call along with an array of transaction rawTxHex's and a block number. Blink operates exactly the same way as Flashbots bundles with one exception. Given the searcher doesn't have the rawTxHex for the transaction exposed on the WebSocket they must instead include the txHash for the user's transaction. A sample "Post Body" is included below, "txHash" & "rawTxHex" are placeholders for the actual values. Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendBundle", "params": [\ {\ "txs": [ \ "txHash",\ "rawTxHex"\ ],\ "blockNumber": "0x779352"\ }\ ] } Blink will take the txHash and replace it with the rawTxHex for that transaction. The "refundPercent" & "refundRecipient" fields will also be added. Your bundle will be immediately sent to all builders that have implemented "refundPercent" & "refundRecipient". **Blink enforces the User transaction to be the first in the array**. This ensures no malicious MEV on the User's transaction. Bundles that do not put the users transaction first will be rejected. For more information on bundles, see [here](https://docs.flashbots.net/flashbots-auction/searchers/advanced/understanding-bundles) . ### [](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions#authentication) Authentication **Authentication is not required** but you can authenticate to establish a searcher "reputation" and be prioritised over searchers when there are matching bids. You can authenticate using the same methodology as Flashbots, Blink requires you to sign the payload and include the signed payload in the `X-Blink-Signature` header of your request. Any valid Ethereum key can be used to sign the payload. The Ethereum address associated with this key will be used by Blink to keep track of your requests over time and establish a searcher "reputation". You can change the key you use at any time. For more information on authentication, see [here](https://docs.flashbots.net/flashbots-auction/searchers/advanced/rpc-endpoint#authentication) . ### [](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions#the-winning-bid) The Winning Bid For a given transaction the refund percentage will be fixed for all bundles, consequently, the Searchers who bids the most to the builder should, in theory, land their bundle on-chain. [PreviousV1 (Deprecated)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/v1-deprecated) [NextQuerying a Bundle](https://docs.blinklabs.xyz/blink/searchers/integration/querying-a-bundle) Last updated 1 year ago --- # MEVBlocker Compatible (V3) | Blink The V3 WebSocket is an extension of the V2 Websocket so please refer to that for core functionality this page highlights the differences / additions. During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#abc8c4c5dfcac8dfebc9c7c2c5c0c7cac9d885d3d2d1) or @YNBlink / @ciaranmcveigh on telegram or discord for access. [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#connecting-to-blinks-websocket) Connecting to Blink's WebSocket ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ You can connect to Blink's WebSocket via `wss://ethauction.blinklabs.xyz/ws/v3/{$API_KEY}` [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#v3-differences) V3 Differences --------------------------------------------------------------------------------------------------------------------------------------------- Below are the differences between the V3 and V2 websockets. ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#id-1-.-websocket-subscriptions) 1 . Websocket Subscriptions The V2 websocket auto-subscribed you to the transaction flow. V3 will require eth\_subscribe to have been called to begin streaming data. The are 2 flows you can subscribe to, transactions and "originator bundles". "Originator Bundles" are **non-searcher** bundles, an example of one would be a telegram bot that is sending a bundle with an approve ERC-20 & swap ERC-20 so that can be executed sequentially in the same block \[ approveTx, swapTx\] . #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#transaction-subscription) Transaction Subscription Transactions can be subscribed to using either Copy {"method":"eth_subscribe","params": ["blink_partialPendingTransactions"]} or {"method":"eth_subscribe","params": ["mevblocker_partialPendingTransactions"]} #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#originator-bundle-subscription) Originator Bundle Subscription Originator bundles can be subscribed to using either Copy {"method":"eth_subscribe","params": ["blink_partialPendingBundles"]} or {"method":"eth_subscribe","params": ["mevblocker_partialPendingBundles"]} #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#multiple-subscriptions) Multiple Subscriptions You can also subscribe to multiple data streams at once Copy { "method":"eth_subscribe", "params": [\ "blink_partialPendingTransactions",\ "blink_partialPendingBundles"\ ] } ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#id-2.-access-to-originator-bundles) 2\. Access to Originator Bundles The V3 websocket gives you access to originator bundles data streams that can be searched on. The same principles apply as with individual txs, the searcher tx must go after the "originator bundle". The MEVBlocker Schema will again be used for exposing the data with one slight change. Result will change from a single tx JSON object to an array of tx JSON objects. Here's an example Copy { "jsonrpc": "2.0", "method": "eth_subscription", "params": { "subscription": "0xd58bbbc0f5190962eff01b6f0ec17724", "result": [\ {\ "chainId": "0x1", \ "to": "0x6215589d293fdf52886484f46f0d6a11c76b4a7e", \ "value": "0x4fefa17b724000", \ "data": "0x", \ "accessList": [], \ "nonce": "0x10", \ "maxPriorityFeePerGas": "0x0", \ "maxFeePerGas": "0x7e1c65b04", \ "gas": "0x5208", \ "type": "0x2", \ "hash": "0x5f08dd372fce1a44dda27bed60ca036acb4979fad6ca37b9c388e351a870fe4c", \ "from": "0xcb1588f3f7e92a1278c68a6aed4bdcbc68534b29"\ },\ {\ "chainId": "0x1", \ "to": "0x8765589d293fdf52886484f46f0d6a11c76b4a7e", \ "value": "0x0", \ "data": "0x", \ "accessList": [], \ "nonce": "0x11", \ "maxPriorityFeePerGas": "0x0", \ "maxFeePerGas": "0x7e1c65b04", \ "gas": "0x5208", \ "type": "0x2", \ "hash": "0x3456dd372fce1a44dda27bed60ca036acb4979fad6ca37b9c388e351a870fe4c", \ "from": "0xcb1588f3f7e92a1278c68a6aed4bdcbc68534b29"\ },\ ] } } #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3#originator-bundle-bids) Originator Bundle Bids The bidding process is the same as for a normal transaction, you can submit via Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendBundle", "params": [\ {\ "txs": [ \ "approveTxHash",\ "swapTxHash",\ "searcherRawTxHex"\ ],\ "blockNumber": "0x779352"\ }\ ] } The corresponding bundle will be found and the searcher txs will be appended before being sent to the builders. [PreviousMEVBlocker Compatible (V2)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2) [NextV1 (Deprecated)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/v1-deprecated) Last updated 1 year ago --- # V1 (Deprecated) | Blink During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#2e4d41405a4f4d5a6e4c42474045424f4c5d00565754) for access. ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/v1-deprecated#connecting-to-blinks-websocket) Connecting to Blink's WebSocket You can connect to Blink's WebSocket via wss://ethauction.blinklabs.xyz/ws/v1/{$API\_KEY}. Transactions received via Blink's RPC endpoint will be exposed on the websocket with the signatures removed. They will take the following form. Copy { "type": "transaction_message", "payload": { "tx_hash": "0x71f6000fa5010015370c8fea1d5cc9842ebe6ca211a7dbeabe89e8a20fa236ca", "tx_from": "0x1f9090aae28b8a3dceadf281b0f12828e676c326", "tx_to": "0xa47167b4ef1eb584069fa9dbd3e7bba651eb4f19", "tx_nonce": 72, "tx_data":"0x5ae401dc00000000000000000000000000000000000000000000000000000000635907d7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000c4f3995c67000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000008f0d1800000000000000000000000000000000000000000000000000000000063590c7b000000000000000000000000000000000000000000000000000000000000001c4f112977efe9df15f9cb1a871fcc2dc55e19af96b8054e9699b98fbc988db3795abe5cfc63293fc678b725973377e9e5bf20ece23e4e15ee6151a3aa86e7bd3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000002b591e99afe9f32eaa6214f7b7629768c40eeb390000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000a9a59afc80393c52cac7e4edb569936550e955f50000000000000000000000000000000000000000000000000000000008f0d1800000000000000000000000000000000000000000000000000000004c81028983000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "tx_gas_limit": 21000, "tx_gas_price": 64803106236, "tx_max_fee_per_gas": 64803106236, "tx_max_priority_fee_per_gas": 1500000000, "tx_value": 100000000000000, "chain_id": 1 } } When the transaction is exposed on the websocket the Searcher should determine if there is any value in the transaction and if there is submit a bid. You can continue to submit bids on the transaction until it is included on-chain. Note there is an option for originators to obfuscate the "tx\_from" value. The transaction will be sent as a private transaction to builders after being exposed on the WebSocket. #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/v1-deprecated#golang-structs) Golang Structs Copy type TransactionEvent struct { Type string `json:"type"` Payload TransactionMessage `json:"payload"` } type TransactionMessage struct { TxHash string `json:"tx_hash"` TxFrom string `json:"tx_from"` TxTo string `json:"tx_to"` TxNonce int `json:"tx_nonce"` TxData string `json:"tx_data"` TxGasLimit uint64 `json:"tx_gas_limit"` TxGasPrice *big.Int `json:"tx_gas_price"` TxMaxFeePerGas *big.Int `json:"tx_max_fee_per_gas"` TxMaxPriorityFeePerGas *big.Int `json:"tx_max_priority_fee_per_gas"` TxValue *big.Int `json:"tx_value"` ChainId *big.Int `json:"chain_id"` } [PreviousMEVBlocker Compatible (V3)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3) [NextBid on Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions) Last updated 1 year ago --- # Integration | Blink [](https://docs.blinklabs.xyz/blink/searchers/integration#get-started-integrating) Get Started Integrating --------------------------------------------------------------------------------------------------------------- Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#62010d0c1603011622000e0b0c090e0300114c1a1b18) or @YNBlink / @ciaranmcveigh on telegram or discord to get an API key to access the searcher websocket and to bid on transactions. ### [](https://docs.blinklabs.xyz/blink/searchers/integration#next-steps) Next Steps Searchers looking to connect to Blink's open marketplace on Ethereum will need to understand the following sections. * [Listen to Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions) * [V2 Websocket - MEVBlocker Compatible](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2) * [V3 Websocket - MEVBlocker Compatible](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3) * [Bid on Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/bid-on-transactions) * [Querying a Bundle](https://docs.blinklabs.xyz/blink/searchers/integration/querying-a-bundle) [PreviousGas Sponsored Swaps](https://docs.blinklabs.xyz/blink/additional-features/gas-sponsored-swaps) [NextListen To Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions) Last updated 1 year ago --- # Gas Recoveries | Blink ### [](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries#introduction-to-ethereum-gas-fees) Introduction to Ethereum Gas Fees Every Ethereum transaction requires a gas fee, which consists of two main components: * **Base Fee**: A mandatory fee set by the network, which adjusts dynamically based on demand to ensure transactions are included in a block. * **Priority Fee**: An optional incentive paid to validators or builders to prioritize faster transaction processing. ### [](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries#how-blink-recovers-priority-fees) How Blink Recovers Priority Fees Blink processes over 20% of daily Ethereum transactions and works closely with block builders, who are responsible for including transactions in Ethereum blocks. By leveraging our large-scale network and deep integration with the transaction lifecycle, Blink recovers a portion of the **Priority Fees** without impacting transaction speed or causing delays. With the separation of proposing and building roles in Ethereum’s **Proposer-Builder Separation (PBS)** model, the gas fee market can become more efficient and fair. However, many users still overpay to ensure their transactions are included in a block. Blink helps recover the difference between these overpayments and the actual fair market price for gas fees. #### [](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries#example-of-overpayment-recovery) Example of Overpayment Recovery: Consider a simple "send" transaction, which uses **21,000 gas units**. * A typical user might set their gas price at **1 Gwei** per unit. * The fair market price, approximately equal to the transaction with the lowest priority fee in a block, is typically around **0.05 Gwei** per unit. However it can vary dramatically. In the case that 0.05 Gwei is the "fair" price, the user in our example has overpaid by: 0.95Gwei×21,000\=19,950Gwei0.95Gwei×21,000=19,950Gwei0.95Gwei×21,000\=19,950Gwei This translates to roughly **$0.05** (as of September 2024). Blink’s expertise lies in optimising gas fee markets for our customers, aiming to recover as much of this overpayment as possible, with no impact on the speed of transaction inclusion. ![Drawing](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FEXB4bqw2dCMTzEyxJ6rR%252Ffile.excalidraw.svg%3Falt%3Dmedia%26token%3Db7670eaa-4c8d-4ca1-8bb4-5812368a5e3e&width=768&dpr=4&quality=100&sign=11e5693&sv=2) ### [](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries#is-gas-recovery-relevant-to-you) Is Gas Recovery Relevant to You? Gas fee recovery may be applicable depending on the nature of your transactions. To learn more and explore how this can benefit your operations, reach out to us at [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection) [PreviousState Update Auction](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction) [NextMEV](https://docs.blinklabs.xyz/blink/how-it-works/mev) Last updated 8 months ago --- # eth_cancelBundle | Blink On receiving this Blink will send the eth\_cancelBundle request onto all builders. It will handle any differences in how builders expect to receive an eth\_cancelBundle request. ### [](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_cancelbundle#example-request) Example request Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_cancelBundle", "params": [\ {\ "replacementUuid": "blinklabsxyz", // String, any arbitrary string that can be used to replace or cancel this bundle\ }\ ] } ### [](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_cancelbundle#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": 200 } [Previouseth\_sendBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_sendbundle) [NextPage](https://docs.blinklabs.xyz/blink/searchers/api-reference/page) Last updated 1 year ago --- # Page | Blink [Previouseth\_cancelBundle](https://docs.blinklabs.xyz/blink/searchers/api-reference/eth_cancelbundle) [NextAPI Reference](https://docs.blinklabs.xyz/blink/base/api-reference) --- # MEV | Blink MEV can be good and bad. Blink's aim is simple: maximise the good - eliminate the bad. ### [](https://docs.blinklabs.xyz/blink/how-it-works/mev#bad-mev) Bad MEV Bad MEV is when an actor is able to get their transaction included earlier in a block then the a user's transaction. This allows them to manipulate the state of the blockchain (e.g. liquidity pools) to give a user worse execution. Sandwich attacks are a classic example of this. Below is a screenshot of the notorious jaredfromsubway "sandwiching" a transaction on Etherem: ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252F4z2szH6oRrLBm0nCzVgZ%252Fimage.png%3Falt%3Dmedia%26token%3D87a4623b-7de7-4d9b-9a14-4ff0fdcb545d&width=768&dpr=4&quality=100&sign=abc62ccb&sv=2) In the above transactions, jaredfromsubway made the owner of the transaction pay a 9% higher price and made (stole) a whopping $31,633.58. Spoiler Alert: if the user had been using Blink, this wouldn't have happened! ### [](https://docs.blinklabs.xyz/blink/how-it-works/mev#good-mev) Good MEV For good reasons, MEV gets a bad name. However, it's not all bad. In fact, in the right circumstances it can provide several benefits: 1. Price Improvement * Arbitrage helps align prices across different trading venues * Reduces price discrepancies between DEXs * Creates more efficient markets 1. Token Holder Benefits * Generates protocol fees from increased trading volume * Can provide additional yield for liquidity providers * Often results in better token prices for users 1. Technical Benefits * Helps maintain price equilibrium between pools * Can prevent extreme price impacts from large trades * Provides additional market liquidity 1. User Value Return * When implemented properly (like with Blink), users can receive a portion of the MEV value * Transforms what could be lost value into user benefits * Makes trading more cost-effective for users In fact, there is no downside (except for Jared). User's execution is unchanged. Markets are more efficient. [](https://docs.blinklabs.xyz/blink/how-it-works/mev#how-it-works) How it works ------------------------------------------------------------------------------------ #### [](https://docs.blinklabs.xyz/blink/how-it-works/mev#whats-a-bundle) What's a "Bundle" A blink bundle are typically 2 transactions that are sent to block builders as a pair. There is a convention in the block building world that bundles cannot be frontrun or "un-bundled" (i.e. separated with transactions in between. Furthermore, bundles must be included together or not at all. This prevents searchers from sending their backrun transaction separately (and avoiding the recovery fee). ![Drawing](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FurcJXBVWrWB8bHt9dF5V%252Ffile.excalidraw.svg%3Falt%3Dmedia%26token%3D202908c6-1389-488e-b0b9-16f2abf8d0ad&width=768&dpr=4&quality=100&sign=bfaca61&sv=2) MEV is recovered with the following steps: 1. User sends raw transaction to Blink 2. Blink shares (without the signature) with its trusted searcher network 3. Searchers send back bundles. 4. Blink's MEV Engine pick best bundles to recover value for the User 5. Blink sends the bundles to block builders. 6. Block builders include the transaction onchain with a refund back to Blink / Originator / User... Depending on setup [PreviousGas Recoveries](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries) [NextAdditional Features](https://docs.blinklabs.xyz/blink/additional-features) Last updated 8 months ago --- # Privacy Policy | Blink Blink provides blockchain infrastructure services, including RPC access for write transactions on various blockchains. Protecting your information is our priority. This Privacy Policy explains how we handle data when you use our services. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-1.-information-we-collect) **1\. Information We Collect** We do not collect personal data such as names, email addresses, or payment details. We only process publicly available on-chain data necessary to deliver our Services. We do not track or store any personally identifiable information. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-2.-how-we-use-data) **2\. How We Use Data** We use publicly available blockchain data strictly for the purpose of providing and improving our Services. We do not use, sell, or share this data for any other purposes. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-3.-data-security) **3\. Data Security** We implement industry-standard security measures to protect the integrity of our Services. However, as blockchain data is public by nature, we encourage users to take appropriate security precautions when interacting with decentralized networks. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-4.-third-party-services) **4\. Third-Party Services** Our Services may integrate with third-party providers for functionality such as analytics or performance monitoring. These providers are subject to their own privacy policies, and we do not share personally identifiable information with them. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-5.-use-of-cookies) **5\. Use of Cookies** Blink does not use cookies to track or collect personal data. Any cookies used are strictly necessary for operational purposes and do not store personally identifiable information. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-6.-changes-to-this-privacy-policy) **6\. Changes to This Privacy Policy** We may update this Privacy Policy from time to time. If changes are made, we will notify users as required by law. Continued use of our Services after any updates constitutes acceptance of the revised Privacy Policy. #### [](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy#id-7.-contact-us) **7\. Contact Us** For any privacy-related inquiries, please contact us at [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection) . [PreviousMisc](https://docs.blinklabs.xyz/blink/get-started/misc) [NextState Update Auction](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction) Last updated 5 months ago --- # State Update Auction | Blink [](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction#what-is-a-state-update-auction) What is a State Update Auction? ------------------------------------------------------------------------------------------------------------------------------------------ Any transaction on the Ethereum network updates some piece of state. These updates could be the addresses own balance, the price of an asset on a DEX, the price of an asset on a oracle etc. There is value in these state updates, arbitrage opportunities, liquidations that can be captured by sophisticated actors in the transaction lifecycle. For most users their transactions are currently released to the Mempool (made public) exposing them to negative externalities such as front-running & sandwiching. In addition to this any non malicious value within the transaction via arbitrage is lost. The "State Update Auction" enables transactions to bypass the Mempool protecting them from front-running and run a "State Update Auction" in alloted block time. This enables us to recover this non-malicious value for users without delaying their transactions. [](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction#what-is-a-state-update-auction-1) What is a State Update Auction? -------------------------------------------------------------------------------------------------------------------------------------------- Every Ethereum transaction results in some form of state update. These updates could involve: * Changing an address’s balance, * Adjusting the price of an asset on a decentralized exchange (DEX), * Updating asset prices on an oracle, and more. These state updates often hold value, creating opportunities for arbitrage or liquidations that sophisticated actors in the transaction lifecycle can capture. However, most user transactions are released to the public mempool, exposing them to risks such as front-running and sandwich attacks. In addition, valuable opportunities like arbitrage within the transaction are lost to other actors. The **State Update Auction** solves these issues by allowing transactions to bypass the mempool and execute an auction for the state update during the block's allotted time. This protects users from front-running while recovering non-malicious value without delaying the transaction. ### [](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction#benefits-of-a-state-update-auction) Benefits of a State Update Auction * **Protection from Front-running**: Prevents transactions from being manipulated or exploited by external actors. * **Value Recovery**: Captures potential arbitrage or other value within the transaction flow, returning it to the user. [](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction#blink-transaction-flow) Blink Transaction Flow ------------------------------------------------------------------------------------------------------------------------- ![](https://docs.blinklabs.xyz/blink/~gitbook/image?url=https%3A%2F%2F3251730900-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fi8QIu6FzXcM9EserJPs2%252Fuploads%252FkgGxpWbZhGDaDBQlhusy%252Fimage.png%3Falt%3Dmedia%26token%3Df9eaac06-c312-4a8f-a101-396c584b29fe&width=768&dpr=4&quality=100&sign=bd1c538f&sv=2) ### [](https://docs.blinklabs.xyz/blink/how-it-works/state-update-auction#blink-transaction-flow-1) Blink Transaction Flow The Blink transaction flow works as follows: 1. A user sends a transaction through an originator, such as a Web3 wallet. 2. The originator forwards the transaction (either via `eth_sendRawTransaction` or `eth_sendPrivateTransaction`) to Blink. 3. Blink immediately passes the transaction to block builders, bypassing the public mempool to minimize latency. 4. Simultaneously, the **State Update Auction** is run in parallel, where searchers place bids on the transaction’s state update. 5. These bids (bundles) are forwarded to the builders. 6. The transaction is then included on-chain either via a winning bundle bid or as a private transaction. This process ensures the transaction is both protected and optimized for value recovery without compromising speed. [PreviousPrivacy Policy](https://docs.blinklabs.xyz/blink/get-started/misc/privacy-policy) [NextGas Recoveries](https://docs.blinklabs.xyz/blink/how-it-works/gas-recoveries) Last updated 10 months ago --- # API Reference | Blink List of API / RPC requests. * [sendBundle](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle) * [getSignature](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature) [PreviousRust Decoding A Transaction](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction) [NextsendBundle](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle) Last updated 1 year ago --- # sendBundle | Blink ### [](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle#example-request) Example Request Copy { "id": 1, "jsonrpc": "2.0", "method": "sendBundle", "params": [\ [\ "user_tx_base58_serialized",\ "searcher_tx_base58_serialized"\ ]\ ] } ### [](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle#example-response) Example Response Copy { "id": 1, "jsonrpc": "2.0", "result": "b82190b536340d69c2437e54fe298449d9e44b32d1cb61144454145e01999315" } [PreviousAPI Reference](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference) [NextgetSignature](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature) Last updated 1 year ago --- # MEVBlocker Compatible (V2) | Blink During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#33505c5d4752504773515f5a5d585f5251401d4b4a49) or @YNBlink / @ciaranmcveigh on telegram or discord for access. The V2 WebSocket is designed for ease of integration. It uses the MEVBlocker Schema meaning if you have integrated with MEVBlocker no code changes are required for you to search on Blink's order flow. [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#connecting-to-blinks-websocket) Connecting to Blink's WebSocket ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ You can connect to Blink's WebSocket via `wss://ethauction.blinklabs.xyz/ws/v2/{$API_KEY}`. As soon as you connect to the WebSocket transactions will sent over that connection. ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#eth_subscribe) eth\_subscribe Unlike MEVBlocker you **DO NOT** need to write `eth_subscribe` to the WebSocket to begin receiving transactions. However, if you do the system is set up to handle that request. Copy {"method":"eth_subscribe","params": ["mevblocker_partialPendingTransactions"]} OR Copy {"method":"eth_subscribe","params": ["blink_partialPendingTransactions"]} It will respond with the following dummy value. Copy {"jsonrpc": "2.0", "id": 1, "result": "0x00000000000000000000000000000000"} ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#eth_subscription) eth\_subscription Once connected transactions will be sent through in the `eth_subscription` format. Copy { "jsonrpc": "2.0", "method": "eth_subscription", "params": { "subscription": "0xd58bbbc0f5190962eff01b6f0ec17724", "result": { "chainId": "0x1", "to": "0x6215589d293fdf52886484f46f0d6a11c76b4a7e", "value": "0x4fefa17b724000", "data": "0x", "accessList": [], "nonce": "0x10", "maxPriorityFeePerGas": "0x0", "maxFeePerGas": "0x7e1c65b04", "gas": "0x5208", "type": "0x2", "hash": "0x5f08dd372fce1a44dda27bed60ca036acb4979fad6ca37b9c388e351a870fe4c", "from": "0xcb1588f3f7e92a1278c68a6aed4bdcbc68534b29" } } } Note there is an option for originators to obfuscate the "from" value. ### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#eth_sendbundle) eth\_sendBundle Bundles can be sent via the WebSocket or via HTTP. Both follow the same format where the target transaction is referenced by the 32-byte transaction hash. Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_sendBundle", "params": [ \ { \ "txs": [ \ "0xfec1700ef24c9ff6fd2e07584a16bbb2fec1700ef24c9ff6fd2e07584a16bbb2", // this is the 32-byte transaction hash of the target transaction \ "0xabc123.." // this is your signed encoded transaction\ ], \ "blockNumber": "0xb63dcd"\ } \ ] } All optional fields are also accepted. Copy { "jsonrpc": "2.0", "id": 1, "method": "eth_sendBundle", "params": [\ {\ txs, \ blockNumber, // String, a hex encoded block number for which this bundle is valid on\ minTimestamp, // (Optional) Number, the minimum timestamp for which this bundle is valid, in seconds since the unix epoch\ maxTimestamp, // (Optional) Number, the maximum timestamp for which this bundle is valid, in seconds since the unix epoch\ revertingTxHashes, // (Optional) Array[String], A list of tx hashes that are allowed to revert\ replacementUuid, // (Optional) String, UUID that can be used to cancel/replace this bundle\ }\ ] } #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#websocket-submission) WebSocket Submission WebSocket submission occurs on the `wss://ethauction.blinklabs.xyz/ws/v2/{$API_KEY}` endpoint. A JSON RPC response will be written back to the WebSocket with either the bundle hash or an error. _Bundle Hash_ Copy { "id": 1, "result": { "bundleHash": "0xdb70096987a1b5cf11358ef5b5c3de14faf596d102b1fad2e94b6f249c139bf3" }, "jsonrpc": "2.0" } _Error_ Copy { "id": 1, "error": { "code": 0, "message": "error getting transaction in auction" }, "jsonrpc": "2.0" } #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#http-submission) HTTP Submission HTTP submission occurs on the `https://ethauction.blinklabs.xyz/v1/${API_KEY}` endpoint. A bundle hash will be returned in the response. Copy { "id": 1, "result": { "bundleHash": "0xdb70096987a1b5cf11358ef5b5c3de14faf596d102b1fad2e94b6f249c139bf3" }, "jsonrpc": "2.0" } #### [](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v2#builders) Builders Blink currently sends bundles to builder who have bundle refund mechanisms in place, specifically the `refundPercent` & `refundRecipient` flags on their `eth_sendBundle` endpoint. These include, * Builder0x69 * BeaverBuild * Rsync * Titan * Flashbots (via mev\_sendBundle) [PreviousListen To Transactions](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions) [NextMEVBlocker Compatible (V3)](https://docs.blinklabs.xyz/blink/searchers/integration/listen-to-transactions/mevblocker-compatible-v3) Last updated 1 year ago --- # Rust Decoding A Transaction | Blink Below is a code example for decoding the transactions that are exposed on the websocket. #### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction#base64-serialized-transaction) Base64 Serialized Transaction _Ab+cAUlq2vEnbTnFZi670f8x5toICHnZjK3WyIgGanQGv5wBSWra8SdtOcVmLrvR/zHm2ggIedmMrdbIiAZqdAaAAQAHCztk/sV9Y2IfCczP0IUOcGfeaYIexr0Prv9nXZGWLGLsNeVXE8D7G87m7RKkh3bp9nE94KT4mBQ/f84Oo3ZC2tl/75g+sQ4ECjjMHLTxbAWgg/IEOdDJZaG4JTKl6MX/9FQFvCnwfXGlORA/Qr/dGwRBBFB870mhJMsOUMBd/LFyAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjy+YLCGdWB4j9BDzIO5ZpUPa3anXkl1plaiJguteY/OftD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5egXlD6fOwT5X44dRCOrmV0ykvlViyoizjkTFSMXPXWjaQcEAAkDwNQBAAAAAAAEAAUCwFwVAAUGAAEADgYHAQEGAgABDAIAAABAS0wAAAAAAAcBAQERCBsHAAECCAkDCggPBwsQCwwNCwsLCwsLCwsBAgAj5RfLl3rjrSoBAAAAB2QAAUBLTAAAAAAAcRkyAAAAAABkAFEHAwEAAAEJAcdYyZdfmfDp57MLefbtHsunsL12DtrY/SDx/1rC+8VMA65trANGBQc=_ #### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction#src-main.rs) src/main.rs Copy extern crate solana_sdk; use base64::{engine::general_purpose, Engine as _}; use solana_sdk::transaction::VersionedTransaction; use bincode; fn main() { // Example base64 encoded transaction string let text = "Ab+cAUlq2vEnbTnFZi670f8x5toICHnZjK3WyIgGanQGv5wBSWra8SdtOcVmLrvR/zHm2ggIedmMrdbIiAZqdAaAAQAHCztk/sV9Y2IfCczP0IUOcGfeaYIexr0Prv9nXZGWLGLsNeVXE8D7G87m7RKkh3bp9nE94KT4mBQ/f84Oo3ZC2tl/75g+sQ4ECjjMHLTxbAWgg/IEOdDJZaG4JTKl6MX/9FQFvCnwfXGlORA/Qr/dGwRBBFB870mhJMsOUMBd/LFyAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjy+YLCGdWB4j9BDzIO5ZpUPa3anXkl1plaiJguteY/OftD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5egXlD6fOwT5X44dRCOrmV0ykvlViyoizjkTFSMXPXWjaQcEAAkDwNQBAAAAAAAEAAUCwFwVAAUGAAEADgYHAQEGAgABDAIAAABAS0wAAAAAAAcBAQERCBsHAAECCAkDCggPBwsQCwwNCwsLCwsLCwsBAgAj5RfLl3rjrSoBAAAAB2QAAUBLTAAAAAAAcRkyAAAAAABkAFEHAwEAAAEJAcdYyZdfmfDp57MLefbtHsunsL12DtrY/SDx/1rC+8VMA65trANGBQc="; let base64_str = text.to_string(); // Attempt to decode the Base64 string let decoded = general_purpose::STANDARD.decode(&base64_str); match decoded { Ok(decoded_bytes) => { // Convert bytes to string -> This is the bulk of the processing time let bincode_bytes = bincode::deserialize::( &decoded_bytes, ); match bincode_bytes { Ok(deserialized) => { println!("Deserialized transaction: {:?}", deserialized); } Err(e) => { println!("Failed to deserialize binary data: {}", e) } } } Err(e) => println!("Failed to decode Base64: {}", e), } } #### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction#cargo.toml) Cargo.toml Copy [package] name = "solana_tx_deserializer" version = "0.1.0" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] solana-sdk = "2.0.3" # Ensure this matches the version you are using base64 = "0.22.1" bincode = "1.3.3" tokio = { version = "1.0", features = ["full"] } serde_json = "1.0" log = "0.4" [PreviousIntegration](https://docs.blinklabs.xyz/blink/solana/searchers/integration) [NextAPI Reference](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference) Last updated 1 year ago --- # Searchers | Blink [](https://docs.blinklabs.xyz/blink/solana/searchers#get-started-integrating) Get Started Integrating ---------------------------------------------------------------------------------------------------------- Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#bcdfd3d2c8dddfc8fcded0d5d2d7d0dddecf92c4c5c6) or @YNBlink / @ciaranmcveigh on telegram or discord to get an API key to access the searcher websocket and to bid on transactions. ### [](https://docs.blinklabs.xyz/blink/solana/searchers#next-steps) Next Steps Searchers looking to connect to Blink's open marketplace on Solana will need to understand the following sections. * [Listening to Transactions](https://docs.blinklabs.xyz/blink/solana/searchers/integration#listen-to-transactions) * [Submitting a Bid](https://docs.blinklabs.xyz/blink/solana/searchers/integration#bid-on-transactions) [PreviousSearchers](https://docs.blinklabs.xyz/blink/base/searchers) [NextIntegration](https://docs.blinklabs.xyz/blink/solana/searchers/integration) Last updated 1 year ago --- # How it works | Blink Base has a "block" that is created approximately every 2 seconds. We send this straight on to the Coinbase Sequencer to ensure inclusion times are not impacted. With the addition of Flashblocks, transactions are confirmed every 200ms. When a transaction is sent via Blink, we will share with our trusted searcher network. The searchers will be allowed to send backrun transactions to take advantage of arbitrage opportunities. To be part of this trusted network, the searcher will pass back some of that value to the transaction originator. ### [](https://docs.blinklabs.xyz/blink/base/how-it-works#flow-overview) Flow Overview 1. Transaction Submission * Users submit transactions through Blink interface * Transactions are immediately processed for searcher distribution 2. Searcher Integration * Vetted searchers receive transaction details * Searchers analyze for profitable backrun opportunities * Execution happens within the same block when possible 3. Profit Distribution * Searchers capture arbitrage value through backrun transactions * Automated profit-sharing mechanism returns value to original transaction senders * Transparent tracking ensures fair distribution ### [](https://docs.blinklabs.xyz/blink/base/how-it-works#differences-with-ethereum) Differences with Ethereum #### [](https://docs.blinklabs.xyz/blink/base/how-it-works#id-1.-cheaper-gas-higher-quantity-of-profitable-opportunities) 1\. Cheaper gas = higher quantity of profitable Opportunities Because it's cheaper to send transactions on Base, the point at which opportunities become profitable for searchers is lower. This means that much lower value transactions can provide value back. #### [](https://docs.blinklabs.xyz/blink/base/how-it-works#id-2.-no-builders) 2\. No Builders There are no builders on Base. The Coinbase run sequencer decides the ordering. As of December 2024, ordering is done by the Gas Price. #### [](https://docs.blinklabs.xyz/blink/base/how-it-works#id-3.-no-mempool) 3\. No Mempool As Coinbase runs the sequencer, a public mempool is not necessary. This means there is no way for user's to be explicitly "sandwiched" by MEV bots like the notorious jaredfromsubway. However, sandwich attacks still occur on Base. Please reach out to us if you're interested in more details. #### [](https://docs.blinklabs.xyz/blink/base/how-it-works#id-4.-no-bundles) 4\. No "Bundles" There is no concept of "bundles" on Base. This means it's harder to attribute value recovered from the searcher. Blink have a number of innovative approaches to ensuring that we can track the value we pass to searchers and pass as much as possible back to the originator of the transaction. [PreviousAPI Reference](https://docs.blinklabs.xyz/blink/base/api-reference) [NextSearchers](https://docs.blinklabs.xyz/blink/base/searchers) Last updated 9 days ago --- # API Reference | Blink Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint. This endpoint mirrors the APIs found by other Base Node providers: https://docs.base.org/docs/tools/node-providers/ Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#375458594356544377555b5e595c5b565544194f4e4d) to get set up with your own custom endpoint & dashboard. [](https://docs.blinklabs.xyz/blink/base/api-reference#integration-steps) Integration Steps ------------------------------------------------------------------------------------------------ * Acquire custom RPC endpoint via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#10737f7e6471736450727c797e7b7c7172633e68696a) * Switch out existing RPC endpoint for the custom Blink endpoint: `https://base.blinklabs.xyz/v1/{$API_KEY}` * Track recoveries via Blink's dashboard ### [](https://docs.blinklabs.xyz/blink/base/api-reference#example-request) Example request Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendRawTransaction", "params": [\ "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833",\ ], } ### [](https://docs.blinklabs.xyz/blink/base/api-reference#example-response) Example response Copy { "id": 1, "jsonrpc": "2.0", "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" } For full documentation of the available endpoints, we suggest referring to the Chainstack documentation: [https://docs.chainstack.com/reference/base-api-reference](https://docs.chainstack.com/reference/base-api-reference) [PreviousPage](https://docs.blinklabs.xyz/blink/searchers/api-reference/page) [NextHow it works](https://docs.blinklabs.xyz/blink/base/how-it-works) Last updated 8 months ago --- # Integration | Blink During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#274448495346445367454b4e494c4b464554095f5e5d) or @YNBlink / @ciaranmcveigh on telegram or discord for access. [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#listen-to-transactions) Listen to Transactions -------------------------------------------------------------------------------------------------------------------- The V1 WebSocket is designed for ease of integration. It auto subscribes and streams base64 serialized transactions. The signatures on the transactions have been altered (hashed) to prevent the use of the transaction outside of the auction. [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#connecting-to-blinks-websocket) Connecting to Blink's WebSocket ------------------------------------------------------------------------------------------------------------------------------------- You can connect to Blink's WebSocket via `wss://sol.blinklabs.xyz/api/v1/ws/{$API_KEY}`. As soon as you connect to the WebSocket transactions will sent over that connection. #### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#base64-serialized-transaction) Base64 Serialized Transaction _Ab+cAUlq2vEnbTnFZi670f8x5toICHnZjK3WyIgGanQGv5wBSWra8SdtOcVmLrvR/zHm2ggIedmMrdbIiAZqdAaAAQAHCztk/sV9Y2IfCczP0IUOcGfeaYIexr0Prv9nXZGWLGLsNeVXE8D7G87m7RKkh3bp9nE94KT4mBQ/f84Oo3ZC2tl/75g+sQ4ECjjMHLTxbAWgg/IEOdDJZaG4JTKl6MX/9FQFvCnwfXGlORA/Qr/dGwRBBFB870mhJMsOUMBd/LFyAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjy+YLCGdWB4j9BDzIO5ZpUPa3anXkl1plaiJguteY/OftD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5egXlD6fOwT5X44dRCOrmV0ykvlViyoizjkTFSMXPXWjaQcEAAkDwNQBAAAAAAAEAAUCwFwVAAUGAAEADgYHAQEGAgABDAIAAABAS0wAAAAAAAcBAQERCBsHAAECCAkDCggPBwsQCwwNCwsLCwsLCwsBAgAj5RfLl3rjrSoBAAAAB2QAAUBLTAAAAAAAcRkyAAAAAABkAFEHAwEAAAEJAcdYyZdfmfDp57MLefbtHsunsL12DtrY/SDx/1rC+8VMA65trANGBQc=_ This is the same format as what is sent in the params of the [sendTransaction RPC call](https://solana.com/docs/rpc/http/sendtransaction) . #### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#decoding-in-rust) Decoding in Rust For rust users please note you need to decode into a VersionedTransaction. See "[Rust Decoding](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction) " for a code example. [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#bidding-on-transactions) Bidding on Transactions ---------------------------------------------------------------------------------------------------------------------- ### [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#submitting-a-bid) Submitting a Bid Bids are submitted to Blink via https://sol.blinklabs.xyz/api/v1/bundles/{$API\_KEY} as a bundle. Bundles are submitted using the [sendBundle](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle) RPC call along with an array of Base58 Serialized transactions. For the user transaction just take the Base64 that has been exposed on the websocket and convert to Base58. The sendBundle endpoint operates the same way as Jito bundles. **Blink enforces the User transaction to be the first in the array**. This ensures no malicious MEV on the User's transaction. Bundles that do not put the users transaction first will be rejected. When the bundle is sent to Blink the signatures will be reinserted on the user transaction. A sample "Post Body" below. Copy { "id": 1, "jsonrpc": "2.0", "method": "sendBundle", "params": [\ [\ "user_tx_base58_serialized",\ "searcher_tx_base58_serialized"\ ]\ ] } The endpoint will return a bundle hash, this is the SHA-256 hash of the bundle's transaction signatures. This will be the same as the expected Jito bundle hash. (Note: you can't compute these yourself as you don't have the real signatures) Copy { "id": 1, "jsonrpc": "2.0", "result": "b82190b536340d69c2437e54fe298449d9e44b32d1cb61144454145e01999315" } [](https://docs.blinklabs.xyz/blink/solana/searchers/integration#analysing-why-bids-fail) Analysing Why Bids Fail ---------------------------------------------------------------------------------------------------------------------- The [getSignature](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature) endpoint allows you to get the real signature after some delay, 30 seconds. This enables you to see the real transaction and work out why your bundle didn't land. [PreviousSearchers](https://docs.blinklabs.xyz/blink/solana/searchers) [NextRust Decoding A Transaction](https://docs.blinklabs.xyz/blink/solana/searchers/integration/rust-decoding-a-transaction) Last updated 1 year ago --- # getSignature | Blink Note this API can only be called 30 seconds after the transaction has appeared on the web socket, calling it before then will return an empty string. It currently uses a cache so it doesn't have historical data. This means after some period of time **hashed\_user\_signature** can no longer be queried. In the near future we'll be changing this to full historical data. ### [](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature#example-request) Example Request Copy { "id": 1, "jsonrpc": "2.0", "method": "getSignature", "params": ["hashed_user_signature"] } ### [](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature#example-response) Example Response Copy { "id": 1, "jsonrpc": "2.0", "result": "real_user_signature" } [PrevioussendBundle](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/sendbundle) [NextGas Sponsorship](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship) Last updated 1 year ago --- # Searchers | Blink [](https://docs.blinklabs.xyz/blink/base/searchers#websocket-subscriptions) WebSocket Subscriptions -------------------------------------------------------------------------------------------------------- Please reach out via [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection#c6a5a9a8b2a7a5b286a4aaafa8adaaa7a4b5e8bebfbc) to get set up with an API key. #### [](https://docs.blinklabs.xyz/blink/base/searchers#websocket-connection) WebSocket Connection Connect to Blink's WebSocket endpoint: Copy wss://baseauction.blinklabs.xyz/ws/v1/{$API_KEY} #### [](https://docs.blinklabs.xyz/blink/base/searchers#transaction-subscription) Transaction Subscription The V1 WebSocket requires an explicit subscription to begin receiving transaction data. Send the following message after connecting: Copy { "method": "eth_subscribe", "params": ["blink_partialPendingTransactions"] } ### [](https://docs.blinklabs.xyz/blink/base/searchers#submitting-bids) Submitting Bids Submit bids to: Copy https://baseauction.blinklabs.xyz/v1/{$API_KEY} Bundles are submitted using the `eth_sendBundle` RPC call: Copy { "id": 1, "jsonrpc": "2.0", "method": "eth_sendBundle", "params": [\ {\ "txs": [ \ "txHash", // Target transaction hash\ "rawTxHex" // Your transaction in raw hex format\ ],\ "bidWei": "2198498724181749" // Your bid amount in wei (string decimal)\ }\ ] } [](https://docs.blinklabs.xyz/blink/base/searchers#auction-mechanics) Auction Mechanics -------------------------------------------------------------------------------------------- **Bundle Submission** * Transactions are ordered by the sequencer based on priority fee / gas * Searchers should set prio fee to be equal to the target transaction prio fee. Transactions with a higher prio fee will be rejected. * While we ramp up on Base, we're asking Searchers to send 50% of profits for us to pass back to originators. Our refund address is `0xAa29178FC9527fA1410305E52cfee950a2efcB9f` . Send this as an ETH transfer within your backrun transaction. The value should match your `bidWei` parameter. See [here](https://basescan.org/tx/0x303e33bb2943da5313e934cb7195a39fd20a80d805ce6281e234f416b26115f0) for an example. * This "bid" can be sent in the bundle request as a "bidWei" parameter. If you don't, the bid will be assumed to be 0 and will only be sent if there are no other bids. * Searchers must not send directly to the sequencer (this is monitored) * Any sandwiching will result in immediate ban (strictly monitored) **Timing and Inclusion** * With the addition of flashblocks, timing has become extremely important on Base. Each auction is at most 200ms and late backruns will likely revert on-chain. * At the end of the flashblock, if nobody has won the backrun slot yet, the auction becomes FIFO. * We highly recommend colocating in AWS us-east-1 for optimal latency. ### [](https://docs.blinklabs.xyz/blink/base/searchers#blink-monitoring) Blink Monitoring Due to nature of Base, we can't enforce auctions rules are followed in real time. For this reason, we've invested a lot in our monitoring. We monitor: * Sandwiches of our transactions * Searchers sending directly to sequencer * Searchers sending to both us and directly * Profit passed back as percentage (should be > 50%) * Difference between bid and amount passed back * Revert rates (especially after big competitive bids) Breaches (depending on severity) could include: * Reduced Flow * Delay on websocket * Complete Ban [PreviousHow it works](https://docs.blinklabs.xyz/blink/base/how-it-works) [NextSearchers](https://docs.blinklabs.xyz/blink/solana/searchers) Last updated 9 days ago --- # Senior Software Engineer | Blink [](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer#senior-software-engineer-london-uk) Senior Software Engineer - London, UK --------------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer#about-blink-labs) About Blink Labs Blink Labs is building critical infrastructure powering the future of finance on the blockchain. We work with many of the leading wallets and exchanges in crypto, with over 20% of Ethereum traffic flowing through our systems. We are a lean, ambitious team at the cutting edge of DEFI, MEV and web3, already generating revenue and poised for massive growth. As one of the first employees, you'll have the opportunity to shape the product and company from the ground up. ### [](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer#about-the-role) About the Role We are seeking a seasoned Senior Software Engineer to join our London-based team. In this role, you will: * Dive deep into the DEFI ecosystem across Ethereum, Base, Solana and beyond * Architect and implement core backend systems and APIs in Golang * Build slick web frontends using modern frameworks like Next.js * Work cross-functionally to scope, design, and ship new products and features * Scale our infrastructure to handle increasing volume and complexity * Proactively identify and tackle engineering challenges as we grow ### [](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer#about-you) About You * 5+ years professional experience in software engineering * Deep expertise in Golang or TypeScript/JavaScript * Comfortable working across the stack * Experience in crypto/DEFI strongly preferred * Exposure to MEV searching or market making is a plus * Thrives in a fast-paced, ambiguous startup environment * Strong communication and collaboration skills * Passion for blockchain, web3, and the future of finance ### [](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer#benefits) Benefits * Highly competitive salary and equity package * Ground floor opportunity as one of the first employees * Solve cutting-edge challenges at the intersection of tech and finance * Smart, driven colleagues in a focused, high-performance culture * Flexible work arrangements and generous holiday allowance If you're excited about crypto and want to build the decentralized financial systems of the future, we'd love to hear from you. This role is based in our London office. To apply, please send your CV and a cover letter to [\[email protected\]](https://docs.blinklabs.xyz/cdn-cgi/l/email-protection) [PreviousGas Sponsorship](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship) Last updated 8 months ago --- # Gas Sponsorship | Blink ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#overview) Overview Gas sponsored swaps on Solana enable users to execute token swaps without needing to hold sufficient SOL for transaction fees and rent exemption requirements. Blink's Solana gas sponsorship solution addresses the unique challenges of the Solana blockchain, including rent exemption minimums and transaction bundling complexities. ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#solana-specific-use-cases) Solana-Specific Use Cases #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#primary-use-cases) Primary Use Cases * **No SOL Holdings**: Users hold tokens like USDC, BONK, or other SPL tokens but have zero SOL balance * **Insufficient SOL for Rent**: Users have some SOL but not enough to cover both transaction fees and maintain rent exemption after the swap * **CEX-to-Wallet Onboarding**: Users transferring assets from centralized exchanges who receive tokens but no SOL for transaction fees * **Cross-Chain Bridge Recipients**: Users receiving tokens from other chains who lack SOL for subsequent transactions #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#common-scenarios) Common Scenarios * User holds 1,000 USDC but 0 SOL and wants to swap to another token * User has 0.001 SOL (enough for fees) but swapping would drop them below rent exemption threshold * New user receives airdropped tokens but has never held SOL ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#how-solana-gas-sponsorship-works) How Solana Gas Sponsorship Works #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#sponsorship-activation) Sponsorship Activation Gas sponsorship can be enabled through: * **Request Flag**: Including a `sponsorable: true` parameter in the swap request * **Wallet Configuration**: Pre-configured sponsorship settings agreed with the Blink Team #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#jito-bundle-integration) Jito Bundle Integration Blink leverages **Jito bundles** to ensure transaction reliability and cost efficiency: 1. **Pre-execution Validation**: Transactions are simulated within the bundle environment before execution 2. **Atomic Execution**: SOL transfer and user swap execute atomically in the same bundle 3. **Revert Protection**: Failed transactions don't consume sponsored SOL, protecting against unnecessary costs #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#sponsored-transaction-process) Sponsored Transaction Process 1. **Transaction Analysis**: Blink detects insufficient SOL for transaction execution 2. **Rent Exemption Calculation**: System calculates minimum SOL needed for rent exemption post-swap 3. **Bundle Simulation**: Complete transaction bundle is simulated to ensure success 4. **SOL Transfer**: Required SOL amount is transferred to user's wallet within the bundle 5. **Swap Execution**: User's swap transaction executes immediately after SOL transfer ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#solana-rent-exemption-considerations) Solana Rent Exemption Considerations #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#rent-exemption-requirements) Rent Exemption Requirements Solana accounts must maintain a minimum SOL balance to remain "rent exempt." This creates additional complexity for gas sponsorship: * **Minimum Balance**: Typically ~0.00203928 SOL per account * **Post-Swap Balance**: Users must retain sufficient SOL after transaction fees * **Token Account Creation**: New token accounts require additional rent exemption SOL #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#blinks-rent-exemption-handling) Blink's Rent Exemption Handling * **Comprehensive Calculation**: Blink calculates total SOL needed including transaction fees AND rent exemption * **Account Analysis**: System checks if new token accounts will be created during the swap * **Buffer Provision**: Ensures users maintain rent exemption status after transaction completion #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#cost-structure-example) Cost Structure Example Copy Required SOL = Transaction Fee + Rent Exemption Buffer + New Account Rent (if applicable) - Transaction Fee: ~0.000005 SOL - Rent Exemption: ~0.00203928 SOL - New Token Account: ~0.00203928 SOL (if creating new account) Total: ~0.004084 SOL minimum ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#fee-and-revenue-model) Fee and Revenue Model #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#threshold-configuration) Threshold Configuration Wallets can configure gas sponsorship thresholds to ensure profitability: Copy Sponsorship Condition: Swap Fee Revenue ≥ (SOL Transfer Cost + Rent Exemption Cost) #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#revenue-optimization) Revenue Optimization * **Dynamic Thresholds**: Adjust sponsorship thresholds based on SOL price volatility * **Fee Markup**: Wallets can add premium swap fees for sponsored transactions * **Volume Incentives**: Higher swap volumes can justify lower thresholds #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#example-scenario) Example Scenario Copy User Swap: $10,000 USDC → BONK Wallet Fee: 0.5% = $50 Required SOL: 0.004084 SOL (~$0.80 at $200/SOL) Net Revenue: $50 - $0.80 = $49.20 Sponsorship Decision: ✅ Profitable ### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#implementation-details) Implementation Details #### [](https://docs.blinklabs.xyz/blink/solana/gas-sponsorship#api-integration) API Integration No additional technical integration required. Existing Blink swap endpoints automatically handle: * SOL balance detection * Rent exemption calculation * Bundle creation and execution * Revenue tracking and reporting [PreviousgetSignature](https://docs.blinklabs.xyz/blink/solana/searchers/api-reference/getsignature) [NextSenior Software Engineer](https://docs.blinklabs.xyz/blink/careers/senior-software-engineer) Last updated 16 days ago --- # Email Protection | Cloudflare Please enable cookies. Email Protection ================ You are unable to access this email address docs.blinklabs.xyz -------------------------------------------------------------- The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**. If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection) . * [How does Cloudflare protect email addresses on website from spammers?](https://developers.cloudflare.com/waf/tools/scrape-shield/email-address-obfuscation/) * [Can I sign up for Cloudflare?](https://developers.cloudflare.com/fundamentals/setup/account/create-account/) Cloudflare Ray ID: **970e73cc0827e63d** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing) ---