Go to file
Riordan Panayides 8805559df1 Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
.github/workflows Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
src Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
.gitignore init 2023-02-01 02:00:34 +02:00
Dockerfile Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
LICENSE init 2023-02-01 02:00:34 +02:00
README.md update readme to reflect new default value for CONSUME_EVENTS_LIMIT (#20) 2023-04-02 15:49:11 +01:00
fly.toml Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
package.json Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
start-cranker.sh init 2023-02-01 02:00:34 +02:00
tsconfig.json Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00
yarn.lock Add fly deploy scripts, load markets from group at interval 2023-07-14 16:20:07 +01:00

README.md

OpenBook crank script

OpenBook needs to be cranked to process orderbook events. The initial code was taken from the same crank script for openbook in mango-v3-client, so most credit goes to Mango team.

Install deps first:

yarn install

Run:

make sure to create a JSON file containing the keypair formatted as a byte array e.g. [1,3,4...]

ENDPOINT_URL=... WALLET_PATH=./path/to/wallet.json ./start-cranker.sh

Or run with KEYPAIR directly:

ENDPOINT_URL=... KEYPAIR=[1,3,4...] ./start-cranker.sh

to run in the background, pass "-d" or "--daemon"

Optional Environment Variables:

  CLUSTER              // Cluster to use. 'mainnet' or 'devnet'. Default is 
                       // mainnet.
  CONSUME_EVENTS_LIMIT // Max number of events to consume in each TX. Default is
                       // 19 events.
  CU_PRICE             // Minimum additional micro lamports for all 
                       // transactions. Default is 0. Raise this above 0 if
                       // you want all transactions to pay a priority fee for 
                       // every market.
  INTERVAL             // Sleep interval, in ms, between each loop. Default is 
                       // 1000 ms
  MARKETS_FILE         // Specify the full path to an alternate markets.json 
                       // file. Default is '../markets.json'. This option will
                       // let you run multiple instances with different 
                       // settings for the markets. e.g. bump with "high fees"
                       // or "medium fees" or other markets not included in the
                       // default markets.json file.
  MAX_TX_INSTRUCTIONS  // Max number of instructions for each transaction. 
                       // Default is 1.
  MAX_UNIQUE_ACCOUNTS  // Max number of unique accounts to process in each
                       // transaction. Default is 10.
  POLL_MARKETS         // If true, ignore the local markets.json file and crank
                       // the top markets, by volume, on openserum.com above a
                       // minimum threshold of 1000 (hard-coded). Default is 
                       // undefined (false).
  PRIORITY_CU_LIMIT    // Compute unit limit per instruction. Default is 50000.
  PRIORITY_CU_PRICE    // Additional micro lamports for PRIORITY_MARKETS & 
                       // PRIORITY_QUEUE_LIMIT. Default is 100000.
  PRIORITY_MARKETS     // Input to a comma separated list of market IDs that 
                       // receive fee bump. Transactions for the markets on this 
                       // list will include higher priority fees.
                       // e.g. PRIORITY_MARKETS=ID-1,ID-2,ID-3.
  PRIORITY_QUEUE_LIMIT // Force PRIORITY_CU_PRICE for transactions when the size 
                       // of the event queue exceeds this value. Default is 100. 
  PROGRAM_ID           // OpenBook program to use. Default for mainnet is
                       // srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX.

TODO:

  • Dynamic priority fee using getRecentPrioritizationFees
  • Dynamic frequency based on queue length