expand.network
  • Overview
  • Getting Started
  • 🔑How do I get my API Key?
  • 📑List of All Endpoints
  • ⚙️SDK
    • Overview
    • Getting Started
  • ⛓️INTEGRATIONS
    • ⚡Blockchains
      • EVM based blockchains
        • Ethereum
        • Binance Smart Chain
        • Avalanche - C
        • Avalanche - P
        • Avalanche - X
        • Polygon
        • Cronos
        • Arbitrum
        • Fantom
        • Optimism
        • Base
        • zkSync Era
        • Mantle
      • Non-EVM based chains
        • Tron
        • Solana
        • Near
        • Algorand
        • Aptos
        • Sui
        • Starknet
        • TON
        • Cosmos Hub
        • Osmosis
        • Stacks
        • Bitcoin
        • Stellar
          • Stellar RWA
        • XRP Ledger
          • XRP Ledger RWA
    • ⚡Bridges
      • Stargate
      • Stargate V2
      • Squid Router
      • Squid Router V2
      • Allbridge Classic
      • Allbridge Core
    • ⚡DEX & DEX Aggregators
      • Uniswap V2
      • Uniswap V3
      • Uniswap X
      • Sushiswap V2
      • PancakeSwap V2
      • PancakeSwap V3
      • Aerodrome
      • Camelot V3
      • Curve V2
      • Balancer V2
      • STON.fi
      • Trader Joe
      • Orca
      • Raydium
      • SDEX
      • Cetus
      • REF Finance
      • Liquidswap
      • Sologenic
      • Alex
      • 0x (Aggregator)
      • 1inch (Aggregator)
      • Kyberswap (Aggregator)
        • Kyberswap ( Limit Order Endpoints )
      • Jupiter (Aggregator)
    • ⚡Derivatives
      • dYdX V4
    • ⚡Fungible Tokens
      • ERC20
      • WETH
    • ⚡Lending Protocols
      • Aave V2
      • Aave V3
      • Compound V2
      • Compound V3
      • Morpho
    • ⚡Yield Aggregators
      • Yearn Finance V2
      • Harvest Finance
      • Pendle
    • ⚡Liquid Staking
      • Chorus One
      • Lido V2
      • Stader
      • Benqi
      • Jito
      • EigenLayer
    • ⚡Non Fungible Tokens
      • ERC721
      • ERC1155
      • Metaplex
    • ⚡Oracles
      • ChainLink
      • WinkLink
      • Pyth Network
      • RedStone
    • ⚡Stablecoins
      • EVM
    • ⚡Synthetics
      • Synthetix
    • ⚡Supported Wallets
      • MPC Wallets
        • DFNS
        • FORDEFI
        • FIREBLOCKS
        • CIRCLE
      • HD Wallets
        • PHANTOM
        • COINBASE
        • TON Wallet
      • Wallet Connect v2
  • How To
    • Execute a Local Swap
    • Execute a Cross Chain Swap
    • Use Limit Orders
    • Lend and Borrow
    • Provision Liquidity
      • Adding Liquidity
      • Removing liquidity
    • Yield Farm
    • Use Our Transaction Decoder
    • Submit an RFQ
    • Subscribe to Events
    • Stream Data (WebSocket)
      • Stream Transaction
      • Stream Trade
      • Stream Gas
      • Stream Ticker Price
    • Source Pricing
    • Track Memecoins
    • Manage Token Approvals
  • Use Cases
    • Trade Reconciliation
    • Portfolio Management
    • Trading Features
    • On-Chain Data: DEX Liquidity Pool Forensics
    • Transaction and Pool Analysis
  • Account Abstraction
    • Overview
      • User Endpoints
      • Paymaster Endpoint
      • Bundler Endpoint
    • ⚙️SDK - Overview
  • Additional Info
    • Error Messages
    • Client-Side Security Essentials
    • Compute Unit Costs
    • API Metadata
    • Audit Certificate
    • Brand Assets
    • FAQs
    • Quicknode Marketplace
      • DEX
      • Lending Protocols
  • ID's
    • Chain IDs
    • Bridge IDs
      • Internal Chain IDs for Bridges
    • DEX IDs
    • Lending Protocol IDs
    • Yield Aggregator ID
    • Liquid Staking IDs
    • Oracle IDs
    • Stablecoin IDs
    • Derivatives IDs
    • Synthetics IDs
  • Mapping
    • Blockchains
    • DEXs
      • Uniswap V2
      • Uniswap V3
      • Sushiswap
      • PancakeSwap
      • Curve
      • Balancer
    • Lending Protocols
      • Aave
      • Compound
  • Protocol Spender
    • Spender list
Powered by GitBook
On this page
  • Following are the event subscriptions that a user can subscribe to-
  • Streaming Events:
  • WETH
  • Expected Output:
  • ERC-20
  • Expected Output:
  • ERC-721
  • Expected Output:
  • ERC-1155
  • Expected Output:
  • How to disconnect:
  1. How To

Subscribe to Events

Event Subscription is used to subscribe to specific events or transactions occurring within a blockchain network. It enables participants to get updates or notifications in real time whenever a specific event happens.

Following are the event subscriptions that a user can subscribe to-

  1. WETH

  2. ERC-20

  3. ERC-721

  4. ERC-1155

Streaming Events:

Users can stream events in two ways:

Example 1: via wscat script (For Linux based distro)

First, the user needs to run the following command in their terminal to install wscat in their system:

npm install -g wscat 

After installing wscat, the user needs to create a shell script and paste the following sample code:

Client Side Sample Socket Code :

#!/bin/bash

echo "Price Discovery\n"
read -p "x-api-key: " YOUR_API_KEY
wscat -c wss://pricediscovery.expand.network -H authorization:secret-token -H x-api-key:$YOUR_API_KEY

Once the file has been saved, the user will need to grant permission for it to be executed. This can be accomplished by executing the following command:

chmod +x YOUR_FILE_NAME.sh

After following the above steps, the user needs to run the file. This can be done by entering the filename in the console.

Executing a query:

After executing the aforementioned file(shell script), the user will be prompted to input the appropriate API key.

After entering the API key, the user can subscribe to the following actions:

{"action": "events"}

Make sure you are connected to the WebSocket before you perform the following queries.

Applying a filter in the query:

Users can apply the following filters in their query:-

WETH

The above filters can be applied in any combination, using the following syntax:

{"action": "events", "event":"WETH"}

Sample Query:

{"action": "events", "event":"WETH"}

Example 2. via javascript code

First, the user needs to run the following command in their terminal to install wscat in their system:

npm i ws

After installing ws, the user needs to run the following sample code on their device to start streaming:

Client Side Sample Socket Code :

const WebSocket = require('ws');
const url = 'wss://pricediscovery.expand.network';
const options = {
  headers: {
    Authorization: 'secret-token',
    'x-api-key': 'YOUR_API_KEY', // Replace this with your API Key
  }
};

const ws = new WebSocket(url, options);

ws.on('open', () => {
  console.log('WebSocket connection established.');
  const payload = {
    action: "events",
    event: "WETH"
  };
  ws.send(JSON.stringify(payload));
});


ws.on('message', (data) => {
  console.log(`Received data: ${data}`);
});

ws.on('close', () => {
  console.log('WebSocket connection closed.');
});

The payload can be modified, depending on the action.

Expected Output:

"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
  "topics": [
    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "0x000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff",
    "0x000000000000000000000000dce93ed9ae7c53143e19cf799d156b72d1cc2777"
  ],
  "params": {
    "src": "0xDef1C0ded9bec7F1a1670819833240f027b25EfF",
    "dst": "0xdCe93ed9ae7C53143e19cf799d156B72D1cC2777",
    "wad": "111121914630589080"
  },
  "data": "0x000000000000000000000000000000000000000000000000018ac8cae8514a98",
  "blockNumber": 17336261,
  "blockHash": "0xc8a8f98d12e0eaf23c1cb3a0014a899b7b3781056332bfb67b0f5cf736eaca41",
  "logIndex": 35,
  "transactionHash": "0x922084d84f63a025e6f5ede2dc74c6c349655746ae26481a9160b7547b6737a5",
  "transactionIndex": 28

ERC-20

The above filters can be applied in any combination, using the following syntax:

{"action": "events", "event":"ERC20", "contract":[{"id":"contractId","eventType":["Transfer","Approval"]}]}

Sample Query:

{"action":"events", "event":"ERC20", "contract":[{"id":"0x6b175474e89094c44da98b954eedeac495271d0f","eventType":["Transfer","Approval"]}]}

Example 2. via javascript code

First, the user needs to run the following command in their terminal to install wscat in their system:

npm i ws

After installing ws, the user needs to run the following sample code on their device to start streaming:

Client Side Sample Socket Code :

const WebSocket = require('ws');
const url = 'wss://pricediscovery.expand.network';
const options = {
  headers: {
    Authorization: 'secret-token',
    'x-api-key': 'YOUR_API_KEY', // Replace this with your API Key
  }
};

const ws = new WebSocket(url, options);

ws.on('open', () => {
  console.log('WebSocket connection established.');
  const payload = {
    action: "events",
    event: "WETH"
  };
  ws.send(JSON.stringify(payload));
});


ws.on('message', (data) => {
  console.log(`Received data: ${data}`);
});

ws.on('close', () => {
  console.log('WebSocket connection closed.');
});

The payload can be modified, depending on the action.

Expected Output:

"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
  "topics": [
    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "0x0000000000000000000000008cd509c290bbb7a3eadce5fb1fd4017610b26d47",
    "0x00000000000000000000000041d7534ddf2b5d3e5308f960a6cda7449c3dbf21"
  ],
  "params": {
    "src": "0x8Cd509C290Bbb7a3EaDCe5Fb1Fd4017610b26D47",
    "dst": "0x41D7534DdF2B5d3E5308f960a6cDA7449C3DbF21",
    "wad": "1000000000000000000000"
  },
  "data": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000",
  "blockNumber": 17336103,
  "blockHash": "0xa1b370a58ba54a788fb5f7639596ba40dacc0aedecc10271c55b2bf22950ef97",
  "logIndex": 341,
  "transactionHash": "0xfe84151eae6b29f984af059e07ccd47d918b6f3bbccd04b6b64d55a4526b770a",
  "transactionIndex": 144

ERC-721

The above filters can be applied in any combination, using the following syntax:

{"action": "events", "event":"ERC721", "contract" : [{"id":"contractId", "eventType":["Transfer","Approval","ApprovalForAll"]}}]}}

Sample Query:

{"action":"events", "event":"ERC721", "contract":[{"id":"0x5af0d9827e0c53e4799bb226655a1de152a425a5","eventType":["Transfer","Approval","ApprovalForAll"]}]}

Example 2. via javascript code

First, the user needs to run the following command in their terminal to install wscat in their system:

npm i ws

After installing ws, the user needs to run the following sample code on their device to start streaming:

Client Side Sample Socket Code :

const WebSocket = require('ws');
const url = 'wss://pricediscovery.expand.network';
const options = {
  headers: {
    Authorization: 'secret-token',
    'x-api-key': 'YOUR_API_KEY', // Replace this with your API Key
  }
};

const ws = new WebSocket(url, options);

ws.on('open', () => {
  console.log('WebSocket connection established.');
  const payload = {
   "action":"events","event":"ERC721","contract":[{"id":"0x5af0d9827e0c53e4799bb226655a1de152a425a5","eventType":["Transfer","Approval","ApprovalForAll"]}]
  };
  ws.send(JSON.stringify(payload));
});


ws.on('message', (data) => {
  console.log(`Received data: ${data}`);
});

ws.on('close', () => {
  console.log('WebSocket connection closed.');
});

The payload can be modified, depending on the action.

Expected Output:

"address": "0x5Af0D9827E0c53E4799BB226655A1de152A425a5",
  "topics": [
    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "0x00000000000000000000000029469395eaf6f95920e59f858042f0e28d98a20b",
    "0x0000000000000000000000003f0fb61b79ceea17dcf7a7f38446485c2fc10ed1",
    "0x00000000000000000000000000000000000000000000000000000000000015a8"
  ],
  "params": {
    "from": "0x29469395eAf6f95920E59F858042f0e28D98a20B",
    "to": "0x3f0FB61B79cEea17dcF7a7f38446485C2fC10ED1",
    "tokenId": "5544"
  },
  "data": "0x",
  "blockNumber": 17336136,
  "blockHash": "0xdc31e10f6dacb22456527e5812d8f866096111156094664226dfa0b6416c2d56",
  "logIndex": 341,
  "transactionHash": "0xbc2711cafb9ffe3f92aa05102490af821572cb4d16c33d5c9c132bbb704eb21c",
  "transactionIndex": 194

ERC-1155

The above filters can be applied in any combination, using the following syntax:

{"action": "events", "event":"ERC1155", "contract" : [{"id":"contractId", "eventType":["TransferSingle","TransferBatch","ApprovalForAll","URI"]}]}

Sample Query:

{"action":"events", "event":"ERC1155", "contract":[{"id":"0x7DaEC605E9e2a1717326eeDFd660601e2753A057","eventType":["TransferSingle","TransferBatch","ApprovalForAll","URI"]}]}

Example 2. via javascript code

First, the user needs to run the following command in their terminal to install wscat in their system:

npm i ws

After installing ws, the user needs to run the following sample code on their device to start streaming:

Client Side Sample Socket Code :

const WebSocket = require('ws');
const url = 'wss://pricediscovery.expand.network';
const options = {
  headers: {
    Authorization: 'secret-token',
    'x-api-key': 'YOUR_API_KEY', // Replace this with your API Key
  }
};

const ws = new WebSocket(url, options);

ws.on('open', () => {
  console.log('WebSocket connection established.');
  const payload = {
  action:"events",
  event:"ERC1155",
  contract:[
  {
  "id":"0x7DaEC605E9e2a1717326eeDFd660601e2753A057",
  eventType:["TransferSingle","TransferBatch","ApprovalForAll","URI"]
  }
  ]
  };
  ws.send(JSON.stringify(payload));
});


ws.on('message', (data) => {
  console.log(`Received data: ${data}`);
});

ws.on('close', () => {
  console.log('WebSocket connection closed.');
});

The payload can be modified, depending on the action.

Expected Output:

"address": "0x7DaEC605E9e2a1717326eeDFd660601e2753A057",
  "topics": [
    "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62",
    "0x000000000000000000000000740c569f20076f1d96be1222240d55a5eed29df5",
    "0x000000000000000000000000740c569f20076f1d96be1222240d55a5eed29df5",
    "0x000000000000000000000000c7cddcc2b7c5868401744e75ede94dd56ed03970"
  ],
  "params": {
    "operator": "0x740C569F20076F1D96be1222240d55A5eED29Df5",
    "from": "0x740C569F20076F1D96be1222240d55A5eED29Df5",
    "to": "0xC7CDDcc2b7C5868401744E75EDE94dd56ED03970",
    "id": "65538",
    "value": "1"
  },
  "data": "0x00000000000000000000000000000000000000000000000000000000000100020000000000000000000000000000000000000000000000000000000000000001",
  "blockNumber": 17336254,
  "blockHash": "0xdaf226b629e93b547cf393021ce3c0c9d30f0e6b8de667a018aa5608a0a94687",
  "logIndex": 230,
  "transactionHash": "0x8c2912036f0bcb2cc65635d0e3fe53d329ccbcf11d1f205d0a40274fecbf8327",
  "transactionIndex": 124

How to disconnect:

To disconnect from our API, enter ctrl-c in the connected console.

PreviousSubmit an RFQNextStream Data (WebSocket)

Last updated 10 months ago