From de5cc1c8279fff3d305d9dd0da5c69d679799faa Mon Sep 17 00:00:00 2001 From: Godmode Galactus Date: Thu, 11 May 2023 20:12:31 +0200 Subject: [PATCH] configuring users to trade on openbook --- .gitmodules | 1 + configure/anchor_utils.ts | 44 +++-- configure/configure_all.ts | 82 +++++++--- configure/general/create_payers.ts | 16 -- configure/general/create_users.ts | 44 +++++ configure/openbook-v2/configure_openbook.ts | 67 +++++++- configure/openbook-v2/create_markets.ts | 27 +-- configure/openbook-v2/openbook_v2.ts | 172 ++++++++++++++++++++ configure/output_file.ts | 5 +- configure/programs/openbook_v2.json | 86 ++++++++++ configure/programs/openbook_v2.so | Bin 904352 -> 905184 bytes thirdparty/openbook-v2 | 2 +- 12 files changed, 470 insertions(+), 76 deletions(-) delete mode 100644 configure/general/create_payers.ts create mode 100644 configure/general/create_users.ts diff --git a/.gitmodules b/.gitmodules index be576ce..7d1379e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "thirdparty/openbook-v2"] path = thirdparty/openbook-v2 url = https://github.com/openbook-dex/openbook-v2.git + branch = master diff --git a/configure/anchor_utils.ts b/configure/anchor_utils.ts index bdb3733..16655f5 100644 --- a/configure/anchor_utils.ts +++ b/configure/anchor_utils.ts @@ -2,23 +2,31 @@ import { AnchorProvider, Provider } from "@project-serum/anchor"; import { SuccessfulTxSimulationResponse } from "@project-serum/anchor/dist/cjs/utils/rpc"; import { Connection, PublicKey, Transaction, Signer, SendOptions, ConfirmOptions, Commitment, Keypair } from "@solana/web3.js"; -export function getProviderFromKeypair(connection: Connection, authority: Keypair) : AnchorProvider { +export class TestProvider extends AnchorProvider { + keypair: Keypair; + constructor(connection: Connection, keypair: Keypair) { let txSigner = async (tx: Transaction) => { - tx.partialSign(authority); - return tx - }; - - let allSigner = async (txs : Transaction[]) => { - txs.forEach(x=> x.partialSign(authority)); - return txs; - }; - - return new AnchorProvider(connection, - { - signTransaction: txSigner, - signAllTransactions: allSigner, - publicKey : authority.publicKey, - }, - {commitment: 'confirmed'} - ) + tx.partialSign(this.keypair); + return tx + }; + + let allSigner = async (txs : Transaction[]) => { + txs.forEach(x=> x.partialSign(this.keypair)); + return txs; + }; + + super( + connection, + { + signTransaction: txSigner, + signAllTransactions: allSigner, + publicKey : keypair.publicKey, + }, + {commitment: 'confirmed'} + ) + this.keypair = keypair; + } + getKeypair() : Keypair { + return this.keypair + } } \ No newline at end of file diff --git a/configure/configure_all.ts b/configure/configure_all.ts index fcf7233..5a0530c 100644 --- a/configure/configure_all.ts +++ b/configure/configure_all.ts @@ -1,4 +1,4 @@ -import { command, number, option, string, run } from 'cmd-ts'; +import { command, number, option, string, run, boolean, flag } from 'cmd-ts'; import * as fs from 'fs'; @@ -6,16 +6,15 @@ import programs from './programs.json'; import { Commitment, Connection, Keypair, LAMPORTS_PER_SOL, Transaction } from '@solana/web3.js'; import { getKeypairFromFile } from './common_utils'; import { deploy_programs } from './deploy_programs'; -import { createPayer } from './general/create_payers'; +import { User, createUser, mintUser } from './general/create_users'; import { configure_accounts } from './general/accounts'; import { OutputFile } from './output_file'; -import { getProviderFromKeypair } from './anchor_utils'; import { MintUtils } from './general/mint_utils'; -import { configureOpenbookV2 } from './openbook-v2/configure_openbook'; +import { OpenbookConfigurator } from './openbook-v2/configure_openbook'; const numberOfAccountsToBeCreated = option({ type: number, - defaultValue: () => 1024, + defaultValue: () => 256, long: 'number-of-accounts', }); @@ -58,6 +57,14 @@ const nbMints = option({ description: "Number of mints" }); +const skipProgramDeployment = flag({ + type: boolean, + defaultValue: () => false, + long: 'skip-program-deployment', + short: 's', + description: "Skip deploying programs" + }); + const outFile = option({ type: string, defaultValue: () => "config.json", @@ -75,6 +82,7 @@ const app = command( nbPayers, balancePerPayer, nbMints, + skipProgramDeployment, outFile, }, handler: ({ @@ -84,6 +92,7 @@ const app = command( nbPayers, balancePerPayer, nbMints, + skipProgramDeployment, outFile, }) => { console.log("configuring a new test instance"); @@ -94,6 +103,7 @@ const app = command( nbPayers, balancePerPayer, nbMints, + skipProgramDeployment, outFile, ).then(_ => { console.log("configuration finished"); @@ -112,6 +122,7 @@ async function configure( nbPayers: number, balancePerPayer: number, nbMints: number, + skipProgramDeployment: boolean, outFile: String, ) { // create connections @@ -140,18 +151,11 @@ async function configure( let programIds = programOutputData.map(x => { return x.program_id }); - - console.log("starting program deployment"); - await deploy_programs(endpoint, authorityFile.toString(), programs); - console.log("programs deployed"); - - console.log("Creating payers"); - let payers = await Promise.all(Array.from(Array(nbPayers).keys()).map(_ => createPayer(connection, authority, balancePerPayer))); - console.log("Payers created"); - - console.log("Creating accounts") - let accounts = await configure_accounts(connection, authority, numberOfAccountsToBeCreated, programIds); - console.log("Accounts created") + if (!skipProgramDeployment) { + console.log("starting program deployment"); + await deploy_programs(endpoint, authorityFile.toString(), programs); + console.log("programs deployed"); + } console.log("Creating Mints"); let mintUtils = new MintUtils(connection, authority); @@ -161,14 +165,52 @@ async function configure( console.log("Configuring openbook-v2") let index = programs.findIndex(x => x.name === "openbook_v2"); let openbookProgramId = programOutputData[index].program_id; - await configureOpenbookV2(connection, authority, mintUtils, mints, openbookProgramId); + let openbookConfigurator = new OpenbookConfigurator(connection, authority, mintUtils, openbookProgramId); + let markets = await openbookConfigurator.configureOpenbookV2(mints); console.log("Finished configuring openbook") + console.log("Creating users"); + let users = await Promise.all(Array.from(Array(nbPayers).keys()).map(_ => createUser(connection, authority, balancePerPayer))); + let tokenAccounts = await Promise.all(users.map( + /// user is richer than bill gates, but not as rich as certain world leaders + user => mintUser(connection, authority, mints, mintUtils, user.publicKey, 100_000_000_000) + )) + + let userOpenOrders = await Promise.all(users.map( + /// user is crazy betting all his money in crypto market + user => openbookConfigurator.configureMarketForUser(user, markets, 100_000_000_000) + )) + + let userData: User [] = users.map((user, i) => { + return { + keypair: user, + openOrders: userOpenOrders[i], + token: tokenAccounts[i], + } + }) + + console.log("Users created"); + + console.log("Creating accounts") + let accounts = await configure_accounts(connection, authority, numberOfAccountsToBeCreated, programIds); + + // adding known accounts + const marketAccountsList = markets.map(market => [market.asks, market.bids, market.marketPk, market.oracle, market.quoteVault, market.baseVault, market.baseMint, market.quoteMint] ).flat(); + const userAccountsList = userData.map(user => { + const allOpenOrdersAccounts = user.openOrders.map(x=>x.openOrders).flat(); + const allTokenAccounts = user.token.map(x => x.tokenAccount); + return allOpenOrdersAccounts.concat(allTokenAccounts) + }).flat() + accounts = accounts.concat(marketAccountsList).concat(userAccountsList); + + console.log("Accounts created") + let outputFile: OutputFile = { programs: programOutputData, known_accounts: accounts, - payers: payers.map(x => Array.from(x.secretKey)), - mints: mints, + users: userData, + mints, + markets, } console.log("creating output file") diff --git a/configure/general/create_payers.ts b/configure/general/create_payers.ts deleted file mode 100644 index f16a49e..0000000 --- a/configure/general/create_payers.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Connection, Keypair, LAMPORTS_PER_SOL, SystemProgram, Transaction, sendAndConfirmTransaction } from "@solana/web3.js"; - -export async function createPayer(connection: Connection, authority: Keypair, balancePerPayer: number): Promise { - let payer = Keypair.generate(); - let transfer_ix = SystemProgram.transfer({ - fromPubkey: authority.publicKey, - toPubkey: payer.publicKey, - lamports: balancePerPayer * LAMPORTS_PER_SOL, - }); - let tx = new Transaction().add(transfer_ix); - tx.feePayer = authority.publicKey; - const bh = await connection.getLatestBlockhash(); - tx.recentBlockhash = bh.blockhash; - sendAndConfirmTransaction(connection, tx, [authority]); - return payer -} diff --git a/configure/general/create_users.ts b/configure/general/create_users.ts new file mode 100644 index 0000000..54bf00e --- /dev/null +++ b/configure/general/create_users.ts @@ -0,0 +1,44 @@ +import { Connection, Keypair, LAMPORTS_PER_SOL, PublicKey, SystemProgram, Transaction, sendAndConfirmTransaction } from "@solana/web3.js"; +import { Market } from "../openbook-v2/create_markets"; +import { MintUtils } from "./mint_utils"; +import * as splToken from '@solana/spl-token' +import { OpenOrders } from "../openbook-v2/configure_openbook"; + +export interface User { + keypair: Keypair, + token : TokenAccountData[], + openOrders: OpenOrders[], +} + +export async function createUser(connection: Connection, authority: Keypair, balancePerPayer: number): Promise { + let payer = Keypair.generate(); + let transfer_ix = SystemProgram.transfer({ + fromPubkey: authority.publicKey, + toPubkey: payer.publicKey, + lamports: balancePerPayer * LAMPORTS_PER_SOL, + }); + let tx = new Transaction().add(transfer_ix); + tx.feePayer = authority.publicKey; + const bh = await connection.getLatestBlockhash(); + tx.recentBlockhash = bh.blockhash; + sendAndConfirmTransaction(connection, tx, [authority]); + return payer +} + +interface TokenAccountData { + mint: PublicKey, + tokenAccount: PublicKey +} + +export async function mintUser(connection: Connection, authority: Keypair, mints: PublicKey[], mintUtils: MintUtils, user: PublicKey, amount: number) : Promise { + return await Promise.all( + mints.map(async(mint)=> { + const tokenAccount = await mintUtils.createTokenAccount(mint, authority, user); + await splToken.mintTo(connection, authority, mint, tokenAccount, authority, amount); + return { + mint: mint, + tokenAccount: tokenAccount + } + }) + ) +} diff --git a/configure/openbook-v2/configure_openbook.ts b/configure/openbook-v2/configure_openbook.ts index 5e0f3d3..5b2bd79 100644 --- a/configure/openbook-v2/configure_openbook.ts +++ b/configure/openbook-v2/configure_openbook.ts @@ -1,12 +1,65 @@ import { Connection, Keypair, PublicKey } from "@solana/web3.js"; -import { getProviderFromKeypair } from "../anchor_utils"; +import { TestProvider } from "../anchor_utils"; import { Market, createMarket } from "./create_markets"; import { MintUtils } from "../general/mint_utils"; +import { OpenbookV2 } from "./openbook_v2"; +import IDL from '../programs/openbook_v2.json' +import { BN, Program, web3 } from "@project-serum/anchor"; -export async function configureOpenbookV2(connection: Connection, authority: Keypair, mintUtils: MintUtils, mints: PublicKey[], openbookProgramId: PublicKey): Promise { - - let anchorProvider = getProviderFromKeypair(connection, authority); - let quoteMint = mints[0]; - let admin = Keypair.generate(); - return await Promise.all(mints.slice(1).map((mint, index) => createMarket(anchorProvider, mintUtils, admin, openbookProgramId, mint, quoteMint, authority, index))) +export interface OpenOrders { + market: PublicKey, + openOrders: PublicKey +} + +export class OpenbookConfigurator { + + anchorProvider: TestProvider; + mintUtils: MintUtils; + openbookProgramId: PublicKey; + + constructor(connection: Connection, authority: Keypair, mintUtils: MintUtils, openbookProgramId: PublicKey) { + this.anchorProvider = new TestProvider(connection, authority); + this.mintUtils = mintUtils; + this.openbookProgramId = openbookProgramId; + } + + public async configureOpenbookV2(mints: PublicKey[]): Promise { + let quoteMint = mints[0]; + let admin = Keypair.generate(); + return await Promise.all(mints.slice(1).map((mint, index) => createMarket(this.anchorProvider, this.mintUtils, admin, this.openbookProgramId, mint, quoteMint, index))) + } + + public async configureMarketForUser(user: Keypair, markets: Market[], depositAmount: number) : Promise { + let program = new Program( + IDL as OpenbookV2, + this.openbookProgramId, + this.anchorProvider, + ); + + const openOrders = await Promise.all( + markets.map(async(market) => { + let accountIndex = new BN(0); + let [openOrders, _tmp] = PublicKey.findProgramAddressSync([Buffer.from("OpenOrders"), user.publicKey.toBuffer(), market.marketPk.toBuffer(), accountIndex.toBuffer("le", 4)], this.openbookProgramId) + + await program.methods.initOpenOrders( + 0, + 64 + ).accounts({ + openOrdersAccount: openOrders, + market: market.marketPk, + owner: user.publicKey, + payer: this.anchorProvider.publicKey, + systemProgram: web3.SystemProgram.programId, + }).signers([user]).rpc(); + return [market.marketPk, openOrders] + }) + ) + + return openOrders.map(x=> { + return { + market : x[0], + openOrders : x[1], + } + }) + } } \ No newline at end of file diff --git a/configure/openbook-v2/create_markets.ts b/configure/openbook-v2/create_markets.ts index 5c824cf..3143de5 100644 --- a/configure/openbook-v2/create_markets.ts +++ b/configure/openbook-v2/create_markets.ts @@ -1,10 +1,11 @@ import { Connection, Keypair, PublicKey } from '@solana/web3.js'; import IDL from '../programs/openbook_v2.json' -import { AnchorProvider, Idl, Program, web3, BN } from '@project-serum/anchor'; +import { Program, web3, BN } from '@project-serum/anchor'; import { createAccount } from '../general/solana_utils'; import { MintUtils } from '../general/mint_utils'; import { I80F48, I80F48Dto } from '@blockworks-foundation/mango-v4'; import { OpenbookV2 } from './openbook_v2'; +import { TestProvider } from '../anchor_utils'; export interface Market { name: string, @@ -21,7 +22,7 @@ export interface Market { marketIndex: number, } -export async function createMarket(anchorProvider: AnchorProvider, mintUtils: MintUtils, adminKp: Keypair, openbookProgramId: PublicKey, baseMint: PublicKey, quoteMint: PublicKey, payer: Keypair, index: number): Promise { +export async function createMarket(anchorProvider: TestProvider, mintUtils: MintUtils, adminKp: Keypair, openbookProgramId: PublicKey, baseMint: PublicKey, quoteMint: PublicKey, index: number): Promise { let program = new Program( IDL as OpenbookV2, openbookProgramId, @@ -35,23 +36,23 @@ export async function createMarket(anchorProvider: AnchorProvider, mintUtils: Mi oracle: oracleId, admin, mint: baseMint, - payer: payer.publicKey, + payer: anchorProvider.wallet.publicKey, systemProgram: web3.SystemProgram.programId, }) - .signers([adminKp, payer]) + .signers([adminKp]) .rpc(); // bookside size = 123720 - let asks = await createAccount(anchorProvider.connection, payer, 123720, openbookProgramId); - let bids = await createAccount(anchorProvider.connection, payer, 123720, openbookProgramId); - let eventQueue = await createAccount(anchorProvider.connection, payer, 97688, openbookProgramId); + let asks = await createAccount(anchorProvider.connection, anchorProvider.keypair, 123720, openbookProgramId); + let bids = await createAccount(anchorProvider.connection, anchorProvider.keypair, 123720, openbookProgramId); + let eventQueue = await createAccount(anchorProvider.connection, anchorProvider.keypair, 97688, openbookProgramId); let marketIndex : BN = new BN(index); - let [marketPk, _tmp2] = PublicKey.findProgramAddressSync([Buffer.from("Market"), marketIndex.toBuffer("le", 4)], openbookProgramId) + let [marketPk, _tmp2] = PublicKey.findProgramAddressSync([Buffer.from("Market"), admin.toBuffer(), marketIndex.toBuffer("le", 4)], openbookProgramId) - let baseVault = await mintUtils.createTokenAccount(baseMint, payer, marketPk); - let quoteVault = await mintUtils.createTokenAccount(quoteMint, payer, marketPk); - let name = 'token at index ' + index.toString() + ' wrt at index 0'; + let baseVault = await mintUtils.createTokenAccount(baseMint, anchorProvider.keypair, marketPk); + let quoteVault = await mintUtils.createTokenAccount(quoteMint, anchorProvider.keypair, marketPk); + let name = 'index ' + index.toString() + ' wrt 0'; await program.methods.createMarket( marketIndex, @@ -68,7 +69,7 @@ export async function createMarket(anchorProvider: AnchorProvider, mintUtils: Mi bids, asks, eventQueue, - payer: payer.publicKey, + payer: anchorProvider.publicKey, baseVault, quoteVault, baseMint, @@ -76,7 +77,7 @@ export async function createMarket(anchorProvider: AnchorProvider, mintUtils: Mi systemProgram: web3.SystemProgram.programId, oracle: oracleId, } - ).signers([adminKp, payer]) + ).signers([adminKp]) .rpc(); return { diff --git a/configure/openbook-v2/openbook_v2.ts b/configure/openbook-v2/openbook_v2.ts index c2f84e9..55f1b9a 100644 --- a/configure/openbook-v2/openbook_v2.ts +++ b/configure/openbook-v2/openbook_v2.ts @@ -4,6 +4,9 @@ export type OpenbookV2 = { "instructions": [ { "name": "createMarket", + "docs": [ + "Create a [`Market`](crate::state::Market) for a given token pair." + ], "accounts": [ { "name": "admin", @@ -149,6 +152,24 @@ export type OpenbookV2 = { }, { "name": "placeOrder", + "docs": [ + "Place an order.", + "", + "Different types of orders have different effects on the order book,", + "as described in [`PlaceOrderType`](crate::state::PlaceOrderType).", + "", + "`price_lots` refers to the price in lots: the number of quote lots", + "per base lot. It is ignored for `PlaceOrderType::Market` orders.", + "", + "`expiry_timestamp` is a unix timestamp for when this order should", + "expire. If 0 is passed in, the order will never expire. If the time", + "is in the past, the instruction is skipped. Timestamps in the future", + "are reduced to now + 65,535s.", + "", + "`limit` determines the maximum number of orders from the book to fill,", + "and can be used to limit CU spent. When the limit is reached, processing", + "stops and the instruction succeeds." + ], "accounts": [ { "name": "openOrdersAccount", @@ -377,6 +398,12 @@ export type OpenbookV2 = { }, { "name": "placeTakeOrder", + "docs": [ + "Place an order that shall take existing liquidity off of the book, not", + "add a new order off the book.", + "", + "This type of order allows for instant token settlement for the taker." + ], "accounts": [ { "name": "owner", @@ -483,6 +510,31 @@ export type OpenbookV2 = { }, { "name": "consumeEvents", + "docs": [ + "Process up to `limit` [events](crate::state::AnyEvent).", + "", + "When a user places a 'take' order, they do not know beforehand which", + "market maker will have placed the 'make' order that they get executed", + "against. This prevents them from passing in a market maker's", + "[`OpenOrdersAccount`](crate::state::OpenOrdersAccount), which is needed", + "to credit/debit the relevant tokens to/from the maker. As such, Openbook", + "uses a 'crank' system, where `place_order` only emits events, and", + "`consume_events` handles token settlement.", + "", + "Currently, there are two types of events: [`FillEvent`](crate::state::FillEvent)s", + "and [`OutEvent`](crate::state::OutEvent)s.", + "", + "A `FillEvent` is emitted when an order is filled, and it is handled by", + "debiting whatever the taker is selling from the taker and crediting", + "it to the maker, and debiting whatever the taker is buying from the", + "maker and crediting it to the taker. Note that *no tokens are moved*,", + "these are just debits and credits to each party's [`Position`](crate::state::Position).", + "", + "An `OutEvent` is emitted when a limit order needs to be removed from", + "the book during a `place_order` invocation, and it is handled by", + "crediting whatever the maker would have sold (quote token in a bid,", + "base token in an ask) back to the maker." + ], "accounts": [ { "name": "market", @@ -504,6 +556,12 @@ export type OpenbookV2 = { }, { "name": "cancelOrder", + "docs": [ + "Cancel an order by its `order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -540,6 +598,12 @@ export type OpenbookV2 = { }, { "name": "cancelOrderByClientOrderId", + "docs": [ + "Cancel an order by its `client_order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -576,6 +640,9 @@ export type OpenbookV2 = { }, { "name": "cancelAllOrders", + "docs": [ + "Cancel up to `limit` orders." + ], "accounts": [ { "name": "openOrdersAccount", @@ -612,6 +679,9 @@ export type OpenbookV2 = { }, { "name": "cancelAllOrdersBySide", + "docs": [ + "Cancel up to `limit` orders on a single side of the book." + ], "accounts": [ { "name": "openOrdersAccount", @@ -656,6 +726,13 @@ export type OpenbookV2 = { }, { "name": "deposit", + "docs": [ + "Desposit a certain amount of `base_amount_lots` and `quote_amount_lots`", + "into one's [`Position`](crate::state::Position).", + "", + "Makers might wish to `deposit`, rather than have actual tokens moved for", + "each trade, in order to reduce CUs." + ], "accounts": [ { "name": "owner", @@ -716,6 +793,9 @@ export type OpenbookV2 = { }, { "name": "settleFunds", + "docs": [ + "Withdraw any available tokens." + ], "accounts": [ { "name": "openOrdersAccount", @@ -762,6 +842,9 @@ export type OpenbookV2 = { }, { "name": "sweepFees", + "docs": [ + "Sweep fees, as a [`Market`](crate::state::Market)'s admin." + ], "accounts": [ { "name": "market", @@ -793,6 +876,9 @@ export type OpenbookV2 = { }, { "name": "closeMarket", + "docs": [ + "Close a [`Market`](crate::state::Market)." + ], "accounts": [ { "name": "admin", @@ -2877,6 +2963,9 @@ export const IDL: OpenbookV2 = { "instructions": [ { "name": "createMarket", + "docs": [ + "Create a [`Market`](crate::state::Market) for a given token pair." + ], "accounts": [ { "name": "admin", @@ -3022,6 +3111,24 @@ export const IDL: OpenbookV2 = { }, { "name": "placeOrder", + "docs": [ + "Place an order.", + "", + "Different types of orders have different effects on the order book,", + "as described in [`PlaceOrderType`](crate::state::PlaceOrderType).", + "", + "`price_lots` refers to the price in lots: the number of quote lots", + "per base lot. It is ignored for `PlaceOrderType::Market` orders.", + "", + "`expiry_timestamp` is a unix timestamp for when this order should", + "expire. If 0 is passed in, the order will never expire. If the time", + "is in the past, the instruction is skipped. Timestamps in the future", + "are reduced to now + 65,535s.", + "", + "`limit` determines the maximum number of orders from the book to fill,", + "and can be used to limit CU spent. When the limit is reached, processing", + "stops and the instruction succeeds." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3250,6 +3357,12 @@ export const IDL: OpenbookV2 = { }, { "name": "placeTakeOrder", + "docs": [ + "Place an order that shall take existing liquidity off of the book, not", + "add a new order off the book.", + "", + "This type of order allows for instant token settlement for the taker." + ], "accounts": [ { "name": "owner", @@ -3356,6 +3469,31 @@ export const IDL: OpenbookV2 = { }, { "name": "consumeEvents", + "docs": [ + "Process up to `limit` [events](crate::state::AnyEvent).", + "", + "When a user places a 'take' order, they do not know beforehand which", + "market maker will have placed the 'make' order that they get executed", + "against. This prevents them from passing in a market maker's", + "[`OpenOrdersAccount`](crate::state::OpenOrdersAccount), which is needed", + "to credit/debit the relevant tokens to/from the maker. As such, Openbook", + "uses a 'crank' system, where `place_order` only emits events, and", + "`consume_events` handles token settlement.", + "", + "Currently, there are two types of events: [`FillEvent`](crate::state::FillEvent)s", + "and [`OutEvent`](crate::state::OutEvent)s.", + "", + "A `FillEvent` is emitted when an order is filled, and it is handled by", + "debiting whatever the taker is selling from the taker and crediting", + "it to the maker, and debiting whatever the taker is buying from the", + "maker and crediting it to the taker. Note that *no tokens are moved*,", + "these are just debits and credits to each party's [`Position`](crate::state::Position).", + "", + "An `OutEvent` is emitted when a limit order needs to be removed from", + "the book during a `place_order` invocation, and it is handled by", + "crediting whatever the maker would have sold (quote token in a bid,", + "base token in an ask) back to the maker." + ], "accounts": [ { "name": "market", @@ -3377,6 +3515,12 @@ export const IDL: OpenbookV2 = { }, { "name": "cancelOrder", + "docs": [ + "Cancel an order by its `order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3413,6 +3557,12 @@ export const IDL: OpenbookV2 = { }, { "name": "cancelOrderByClientOrderId", + "docs": [ + "Cancel an order by its `client_order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3449,6 +3599,9 @@ export const IDL: OpenbookV2 = { }, { "name": "cancelAllOrders", + "docs": [ + "Cancel up to `limit` orders." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3485,6 +3638,9 @@ export const IDL: OpenbookV2 = { }, { "name": "cancelAllOrdersBySide", + "docs": [ + "Cancel up to `limit` orders on a single side of the book." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3529,6 +3685,13 @@ export const IDL: OpenbookV2 = { }, { "name": "deposit", + "docs": [ + "Desposit a certain amount of `base_amount_lots` and `quote_amount_lots`", + "into one's [`Position`](crate::state::Position).", + "", + "Makers might wish to `deposit`, rather than have actual tokens moved for", + "each trade, in order to reduce CUs." + ], "accounts": [ { "name": "owner", @@ -3589,6 +3752,9 @@ export const IDL: OpenbookV2 = { }, { "name": "settleFunds", + "docs": [ + "Withdraw any available tokens." + ], "accounts": [ { "name": "openOrdersAccount", @@ -3635,6 +3801,9 @@ export const IDL: OpenbookV2 = { }, { "name": "sweepFees", + "docs": [ + "Sweep fees, as a [`Market`](crate::state::Market)'s admin." + ], "accounts": [ { "name": "market", @@ -3666,6 +3835,9 @@ export const IDL: OpenbookV2 = { }, { "name": "closeMarket", + "docs": [ + "Close a [`Market`](crate::state::Market)." + ], "accounts": [ { "name": "admin", diff --git a/configure/output_file.ts b/configure/output_file.ts index c4c0635..1df6deb 100644 --- a/configure/output_file.ts +++ b/configure/output_file.ts @@ -1,4 +1,6 @@ import { PublicKey } from "@solana/web3.js"; +import { Market } from "./openbook-v2/create_markets"; +import { User } from "./general/create_users"; export interface ProgramOutputData { name: String, @@ -6,8 +8,9 @@ export interface ProgramOutputData { } export interface OutputFile { - payers: number[][], + users: User[], programs: ProgramOutputData[], known_accounts: PublicKey[], mints: PublicKey[], + markets: Market[], } diff --git a/configure/programs/openbook_v2.json b/configure/programs/openbook_v2.json index a6ba698..176fc80 100644 --- a/configure/programs/openbook_v2.json +++ b/configure/programs/openbook_v2.json @@ -4,6 +4,9 @@ "instructions": [ { "name": "createMarket", + "docs": [ + "Create a [`Market`](crate::state::Market) for a given token pair." + ], "accounts": [ { "name": "admin", @@ -149,6 +152,24 @@ }, { "name": "placeOrder", + "docs": [ + "Place an order.", + "", + "Different types of orders have different effects on the order book,", + "as described in [`PlaceOrderType`](crate::state::PlaceOrderType).", + "", + "`price_lots` refers to the price in lots: the number of quote lots", + "per base lot. It is ignored for `PlaceOrderType::Market` orders.", + "", + "`expiry_timestamp` is a unix timestamp for when this order should", + "expire. If 0 is passed in, the order will never expire. If the time", + "is in the past, the instruction is skipped. Timestamps in the future", + "are reduced to now + 65,535s.", + "", + "`limit` determines the maximum number of orders from the book to fill,", + "and can be used to limit CU spent. When the limit is reached, processing", + "stops and the instruction succeeds." + ], "accounts": [ { "name": "openOrdersAccount", @@ -377,6 +398,12 @@ }, { "name": "placeTakeOrder", + "docs": [ + "Place an order that shall take existing liquidity off of the book, not", + "add a new order off the book.", + "", + "This type of order allows for instant token settlement for the taker." + ], "accounts": [ { "name": "owner", @@ -483,6 +510,31 @@ }, { "name": "consumeEvents", + "docs": [ + "Process up to `limit` [events](crate::state::AnyEvent).", + "", + "When a user places a 'take' order, they do not know beforehand which", + "market maker will have placed the 'make' order that they get executed", + "against. This prevents them from passing in a market maker's", + "[`OpenOrdersAccount`](crate::state::OpenOrdersAccount), which is needed", + "to credit/debit the relevant tokens to/from the maker. As such, Openbook", + "uses a 'crank' system, where `place_order` only emits events, and", + "`consume_events` handles token settlement.", + "", + "Currently, there are two types of events: [`FillEvent`](crate::state::FillEvent)s", + "and [`OutEvent`](crate::state::OutEvent)s.", + "", + "A `FillEvent` is emitted when an order is filled, and it is handled by", + "debiting whatever the taker is selling from the taker and crediting", + "it to the maker, and debiting whatever the taker is buying from the", + "maker and crediting it to the taker. Note that *no tokens are moved*,", + "these are just debits and credits to each party's [`Position`](crate::state::Position).", + "", + "An `OutEvent` is emitted when a limit order needs to be removed from", + "the book during a `place_order` invocation, and it is handled by", + "crediting whatever the maker would have sold (quote token in a bid,", + "base token in an ask) back to the maker." + ], "accounts": [ { "name": "market", @@ -504,6 +556,12 @@ }, { "name": "cancelOrder", + "docs": [ + "Cancel an order by its `order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -540,6 +598,12 @@ }, { "name": "cancelOrderByClientOrderId", + "docs": [ + "Cancel an order by its `client_order_id`.", + "", + "Note that this doesn't emit an [`OutEvent`](crate::state::OutEvent) because a", + "maker knows that they will be passing in their own [`OpenOrdersAccount`](crate::state::OpenOrdersAccount)." + ], "accounts": [ { "name": "openOrdersAccount", @@ -576,6 +640,9 @@ }, { "name": "cancelAllOrders", + "docs": [ + "Cancel up to `limit` orders." + ], "accounts": [ { "name": "openOrdersAccount", @@ -612,6 +679,9 @@ }, { "name": "cancelAllOrdersBySide", + "docs": [ + "Cancel up to `limit` orders on a single side of the book." + ], "accounts": [ { "name": "openOrdersAccount", @@ -656,6 +726,13 @@ }, { "name": "deposit", + "docs": [ + "Desposit a certain amount of `base_amount_lots` and `quote_amount_lots`", + "into one's [`Position`](crate::state::Position).", + "", + "Makers might wish to `deposit`, rather than have actual tokens moved for", + "each trade, in order to reduce CUs." + ], "accounts": [ { "name": "owner", @@ -716,6 +793,9 @@ }, { "name": "settleFunds", + "docs": [ + "Withdraw any available tokens." + ], "accounts": [ { "name": "openOrdersAccount", @@ -762,6 +842,9 @@ }, { "name": "sweepFees", + "docs": [ + "Sweep fees, as a [`Market`](crate::state::Market)'s admin." + ], "accounts": [ { "name": "market", @@ -793,6 +876,9 @@ }, { "name": "closeMarket", + "docs": [ + "Close a [`Market`](crate::state::Market)." + ], "accounts": [ { "name": "admin", diff --git a/configure/programs/openbook_v2.so b/configure/programs/openbook_v2.so index 6dda01087dd0f651c16b9ecfeab3e10f2c16c708..7be36d0cfbd2abee1661cb21f45f667a56d4c6ed 100755 GIT binary patch delta 124097 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 delta 124485 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 diff --git a/thirdparty/openbook-v2 b/thirdparty/openbook-v2 index 3d227cc..b775417 160000 --- a/thirdparty/openbook-v2 +++ b/thirdparty/openbook-v2 @@ -1 +1 @@ -Subproject commit 3d227cce696891b2e5f6cc7ae71d94a718952c1f +Subproject commit b7754174bf8c8cbcbda25372fbd0f8dc8b429317