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-
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:
After installing wscat, the user needs to create a shell script and paste the following sample code:
Client Side Sample Socket Code :
Copy #!/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:
Copy 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:
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 :
Copy {"action": "events", "event":"WETH"}
Sample Query :
Copy {"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:
After installing ws, the user needs to run the following sample code on their device to start streaming:
Client Side Sample Socket Code :
Copy 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:
Copy "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 :
Copy {"action": "events", "event":"ERC20", "contract":[{"id":"contractId","eventType":["Transfer","Approval"]}]}
Sample Query :
Copy {"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:
After installing ws, the user needs to run the following sample code on their device to start streaming:
Client Side Sample Socket Code :
Copy 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:
Copy "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 :
Copy {"action": "events", "event":"ERC721", "contract" : [{"id":"contractId", "eventType":["Transfer","Approval","ApprovalForAll"]}}]}}
Sample Query :
Copy {"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:
After installing ws, the user needs to run the following sample code on their device to start streaming:
Client Side Sample Socket Code :
Copy 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:
Copy "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 :
Copy {"action": "events", "event":"ERC1155", "contract" : [{"id":"contractId", "eventType":["TransferSingle","TransferBatch","ApprovalForAll","URI"]}]}
Sample Query :
Copy {"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:
After installing ws, the user needs to run the following sample code on their device to start streaming:
Client Side Sample Socket Code :
Copy 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:
Copy "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.