
Company News
Socket Has Acquired Secure Annex
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.
@bloxroute/solana-trader-client-ts
Advanced tools
Provides a Typescript SDK for bloXroute's Solana Trader API.
This library is exposes HTTP, websockets, and GRPC interfaces, and is compatible with both modern browser and node.js environments. Note that some methods and the GRPC interface is only available in node.js run-times, since some aspects of these functions are incompatible with browsers (e.g. http/2 requirement for GRPC, loading from environment, etc.)
npm i @bloxroute/solana-trader-client-ts
First, you will need an AUTH_HEADER from bloXroute (see the BDN user portal) . If you wish to create transactions
you will also need your Solana PRIVATE_KEY available.
In node.js environments, you can specify both of these values in a .env file, or export them manually yourself. In
the browser, you'll want to define them during run-time from user input, and probably use some wallet provider to handle
the transaction signing.
import {
MAINNET_API_GRPC_PORT,
MAINNET_API_NY_GRPC,
GrpcProvider,
GetRecentBlockHashRequest,
loadFromEnv
} from "@bloxroute/solana-trader-client-ts";
// Calls to provider must be made inside async function
async function main(): Promise<void> {
try {
// Load configuration from environment variables
const config = loadFromEnv();
// Initialize the GrpcProvider with necessary credentials and endpoint
const provider = new GrpcProvider(
config.authHeader,
config.privateKey,
`${MAINNET_API_NY_GRPC}:${MAINNET_API_GRPC_PORT}`,
true
);
// Prepare the request for fetching the recent block hash
const request: GetRecentBlockHashRequest = {};
// Fetch the recent block hash from the provider
const response = await provider.getRecentBlockHash(request);
// Log the response
console.info("Recent Block Hash Response: ");
console.info(JSON.stringify(response, null, 2));
} catch (error) {
console.error("Error fetching recent block hash:", error);
}
}
// Execute the main function
main();
import {
MAINNET_API_NY_HTTP,
HttpProvider,
GetRecentBlockHashRequest,
loadFromEnv
} from "@bloxroute/solana-trader-client-ts";
import { AxiosRequestConfig } from "axios"
// Calls to provider must be made inside async function
async function main(): Promise<void> {
try {
// Load configuration from environment variables
const config = loadFromEnv();
const requestConfig: AxiosRequestConfig = {
timeout: 30_000,
}
// Initialize the HttpProvider with necessary credentials and endpoint
let provider = new HttpProvider(
config.authHeader,
config.privateKey,
MAINNET_API_NY_HTTP,
requestConfig
)
// Prepare the request for fetching the recent block hash
const request: GetRecentBlockHashRequest = {};
// Fetch the recent block hash from the provider
const response = await provider.getRecentBlockHash(request);
// Log the response
console.info("Recent Block Hash Response: ");
console.info(JSON.stringify(response, null, 2));
} catch (error) {
console.error("Error fetching recent block hash:", error);
}
}
// Execute the main function
main();
import {
MAINNET_API_NY_WS,
WsProvider,
GetRecentBlockHashRequest,
loadFromEnv
} from "@bloxroute/solana-trader-client-ts";
// Calls to provider must be made inside async function
async function main(): Promise<void> {
try {
// Load configuration from environment variables
const config = loadFromEnv();
// Initialize the WsProvider with necessary credentials and endpoint
const provider = new WsProvider(
config.authHeader,
config.privateKey,
MAINNET_API_NY_WS
)
// Prepare the request for fetching the recent block hash
const request: GetRecentBlockHashRequest = {};
// Connect to the WebSocket server
await provider.connect()
// Fetch the recent block hash from the provider
const response = await provider.getRecentBlockHash(request);
// Close the connection
provider.close()
// Log the response
console.info("Recent Block Hash Response: ");
console.info(JSON.stringify(response, null, 2));
} catch (error) {
console.error("Error fetching recent block hash:", error);
}
}
// Execute the main function
main();
Refer to the examples/ for more info. As mentioned above, you'll need an .env file for exported variables to execute
the full suite. A proper .env file looks like something like this.
AUTH_HEADER="ZDIxYzE0NmItZWYxNi00ZmFmLTg5YWUtMzYwMTk4YzUyZmM4OjEwOWE5MzEzZDc2Yjg3M......................"
PRIVATE_KEY="3EhZ4Epe6QrcDKQRucdftv6vWXMnpTKDV4mekSPWZEcZnJV4huzesLHwASdVUzo......................"
A general note on transaction submission: methods named post* (e.g. postOrder) typically do not sign/submit the
transaction, only return the raw unsigned transaction. This is mainly useful for generating transaction in browsers
or if you want to handle your signing manually. You may also want to use the similarly named submit* methods
(e.g. submitOrder), which generate, sign, and submit the transaction all at once.
We use pbkit/pbkit to generate Typescript files from .proto definitions. You'll need to install their kit:
$ brew install pbkit/tap/pbkit
Clone the repo and install dependencies:
$ git clone https://github.com/bloXroute-Labs/solana-trader-client-ts.git
$ cd solana-trader-client-ts
$ npm i
Lint:
$ npm run lint
Format:
$ npm run format
Install precommit hooks:
$ npx husky install
Regenerate protobuf definitions:
$ npm run proto
First, you will need to create an npm.js account, and request publishing access from Dima for the Bloxroute Organization.
Then, you will need to setup 2FA, it is required in order to publish.
Then, bump the package.json version:
"version": "2.2.1",
And finally run:
$ npm run release
FAQs
Solana Trader API SDK
The npm package @bloxroute/solana-trader-client-ts receives a total of 125 weekly downloads. As such, @bloxroute/solana-trader-client-ts popularity was classified as not popular.
We found that @bloxroute/solana-trader-client-ts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.

Research
/Security News
Socket is tracking cloned Open VSX extensions tied to GlassWorm, with several updated from benign-looking sleepers into malware delivery vehicles.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.