Source real time data from a portal
SQD Network portals are currently in beta. Please report any bugs or suggestions to the SQD Portal chat or to Squid Devs.
The newest version of SQD Network portal serves real time data. It can replace both gateways of the open private version of SQD Network and RPC endpoints. Currently it only supports Solana (more on Solana indexing in SQD).
Here are the steps to migrate:
Step 0: Procur a portal endpoint URL
TBA.
https://portal.tethys.sqd.dev/datasets/solana-beta
can be used in internal tests.
Step 1: Install @portal-api packages
A. Enter your squid's folder.
B. Remove both your lock file and the node_modules
folder:
- NPM
- Yarn
- PNPM
rm -r node_modules package-lock.json
rm -r node_modules yarn.lock
rm -r node_modules pnpm-lock.yaml
C. Upgrade all SQD packages that have a @portal-api
version to it:
npx --yes npm-check-updates --filter "@subsquid/*" --target "@portal-api" --upgrade
D. Freeze the versions of @portal-api
packages by removing any version range specifiers (^
, ~
, <
, >
, >=
, <=
) preceding the package versions. Here's a script:
sed -i -e 's/[\^~=<>]*\([0-9\.]*-portal-api\.[0-9a-f]\{6\}\)/\1/g' package.json
You can also do it manually
Here's an example edit:
"dependencies": {
- "@subsquid/batch-processor": "^1.0.0-portal-api.18ef40",
+ "@subsquid/batch-processor": "1.0.0-portal-api.18ef40",
"@subsquid/borsh": "^0.2.0",
- "@subsquid/solana-objects": ">=0.0.3-portal-api.18ef40",
- "@subsquid/solana-stream": "<1.0.0-portal-api.18ef40",
+ "@subsquid/solana-objects": "0.0.3-portal-api.18ef40",
+ "@subsquid/solana-stream": "1.0.0-portal-api.18ef40",
"@subsquid/typeorm-migration": "^1.3.0",
- "@subsquid/typeorm-store": "~1.6.0-portal-api.18ef40",
+ "@subsquid/typeorm-store": "1.6.0-portal-api.18ef40",
"dotenv": "^16.4.7",
"pg": "^8.13.1",
"typeorm": "^0.3.20"
},
"devDependencies": {
- "@subsquid/solana-typegen": "^0.4.1-portal-api.18ef40",
+ "@subsquid/solana-typegen": "0.4.1-portal-api.18ef40",
"@types/node": "^22.13.1",
"typescript": "~5.7.3"
}
E. Install the dependencies:
- NPM
- Yarn
- PNPM
npm install
yarn install
pnpm install
Step 2: Update your code
The changes will depend on your chain's ecosystem:
- Solana
- EVM
A. Replace all exising data sources with the portal:
+ .setPortal('https://portal.tethys.sqd.dev/datasets/solana-beta')
- .setGateway('https://v2.archive.subsquid.io/network/solana-mainnet')
- .setRpc({
- client: new SolanaRpcClient({
- url: process.env.SOLANA_NODE
- })
- })
Also, please remove any mentions of SolanaRpcClient
, for example:
-import {DataSourceBuilder, SolanaRpcClient} from '@subsquid/solana-stream'
+import {DataSourceBuilder} from '@subsquid/solana-stream'
B. Replace any block height literals with slot number literals.
+ .setBlockRange({from: 325000000})
- .setBlockRange({from: 303262650})
TBA add a convenient converter
C. If you used the slot
field of block headers anywhere in your code, replace it with .number
:
- slot: block.header.slot,
+ slot: block.header.number,
D. If you need the block height (for example to stay compatible with your old code) request it in the .setFields
call:
.setFields({
block: { // block header fields
timestamp: true,
+ height: true
},
TBA
Your squid is ready to use.
What's next?
You can run your squid locally or deploy it to the Cloud (TBA).