Integration

During the initial development of Blink, searchers will need to be onboarded for access. Searchers should reach out to contact@blinklabs.xyz or @YNBlink / @ciaranmcveigh on telegram or discord for access.

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.

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.

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.

Decoding in Rust

For rust users please note you need to decode into a VersionedTransaction. See "Rust Decoding" for a code example.

Bidding on Transactions

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 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.

{
    "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)

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "b82190b536340d69c2437e54fe298449d9e44b32d1cb61144454145e01999315"
}

Analysing Why Bids Fail

The 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.

Last updated