npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mashtrade/jit-proxy

v0.3.2

Published

## Jit Proxy Client

Downloads

168

Readme

Jit Proxy SDK

Jit Proxy Client

JitProxyClient will create and send transactions to the jit proxy program. Instantiate a jit proxy client with a drift client and a program Id. The current public key for the jit proxy program is

J1TnP8zvVxbtF5KFp5xRmWuvG9McnhzmBd9XGfCyuxFP. Example instantiation:

const jitProxyClient = new JitProxyClient({
			driftClient,
			programId: new PublicKey('J1TnP8zvVxbtF5KFp5xRmWuvG9McnhzmBd9XGfCyuxFP'),
		});

Jitter

A jitter takes JitParams and uses them to determine when and how to use the JitProxyClient to send a transaction. For bots to make use of the jitter, they should create a jitter instance, and then set the JitParams according to their strategy for each market they are market making. JitParams are set on the Jitter object using updatePerpParams() and updateSpotParams(). There are two kinds of Jitters that can be insantiated: JitterShotgun and JitterSniper. The difference between the two is how orders are sent.

For JitterShotgun, orders are sent immediately when detecting a new eligible auction. The JitterShotgun will try up to 10 times to fill the order, retrying every time the it receives back an error due to the order not crossing the bid/ask in the JitParams or the oracle price being invalid.

For JitterSniper, orders are sent only when it detects that an order might cross the bid/ask of the JitParams, waiting until the right slot, before sending up to 3 orders (retrying on errors). It will not send orders if the price of the order does not cross the bid/ask during the auction, unlike the JitterShotgun, which will immediately attempt.

Jit Params

Type definition for the JitParmas is below:

export type JitParams = {
	bid: BN;
	ask: BN;
	minPosition: BN;
	maxPosition: BN;
	priceType: PriceType;
	subAccountId?: number;
};

PriceType options are ORACLE and LIMIT. Limit price type is the BN representaiton of an absolute price; i.e., price type of LIMIT and a market of bid: 10, ask: 11 means your market is 10@11. Oracle price types are offsets relative to the oralce price for a given slot. They are always added to the oracle price, so if the oracle price is 10.5, to get a market of 10@11 when price type is oracle, bid and ask are -0.5 and 0.5 respectively (Remember that bid and ask are of BN type, this example is for illustration purposes only. Remember to use BN math operations).

Example set up

Example set up for the JitterSniper (assuming parameters are already initialized/subscribed to). JitterShotgun is instantiated and initialized in a similar manner.

const jitProxyClient = new JitProxyClient({
			driftClient,
			programId: new PublicKey('J1TnP8zvVxbtF5KFp5xRmWuvG9McnhzmBd9XGfCyuxFP'),
		});

		const jitter = new JitterSniper({
			auctionSubscriber,
			driftClient,
			slotSubscriber,
			jitProxyClient,
		});
		await jitter.subscribe();