Skip to content

Instantly share code, notes, and snippets.

static async fetchUpdateManyIx(
program: Program,
params_: {
gateway?: string;
feeds: PublicKey[];
numSignatures: number;
crossbarClient?: CrossbarClient;
payer?: PublicKey;
},
recentSlothashes?: Array<[anchor.BN, string]>,
use anchor_lang::prelude::*;
use arrayref::array_ref;
use bytemuck;
use crate::SwitchboardError;
#[repr(C)]
#[derive(bytemuck::Pod, bytemuck::Zeroable, Debug, Clone, Copy)]
pub struct SlotHash {
pub slot: u64,
pub hash: [u8; 32],
{
"version": "0.1.0",
"name": "sb_on_demand",
"instructions": [
{
"name": "stateInit",
"accounts": [
{
"name": "state",
"isMut": true,
export async function fetchAllLutKeys(
queue: Queue,
feeds: PullFeed[]
): Promise<PublicKey[]> {
const oracles = await queue.fetchOracleKeys();
const lutOwners: any[] = [];
lutOwners.push(queue);
for (const feed of feeds) {
lutOwners.push(feed);
}
use solana_client::nonblocking::rpc_client::RpcClient;
use std::cmp::Ordering;
use std::str::FromStr;
use tokio;
use base64::{engine::general_purpose::STANDARD as base64, Engine as _};
use libsecp256k1;
use hex;
use sha2::{Sha256, Digest};
use solana_sdk::pubkey::Pubkey;
use solana_sdk::transaction::VersionedTransaction;
use crate::protos::oracle_job::*;
use crate::TaskOutput;
use crate::TaskResult;
use crate::TaskRunnerContext;
use anyhow_ext::anyhow;
use anyhow_ext::Result;
use async_recursion::async_recursion;
use jupiter_amm_interface::Amm;
use jupiter_amm_interface::SwapMode;
use lazy_static::lazy_static;
async fn get_accounts(client: &RpcClient, keys: Vec<Pubkey>) -> Result<HashMap<Pubkey, Account>> {
let account_datas: Vec<Option<Account>> = client
.get_multiple_accounts(&keys.clone())
.await
.map_err(|_| anyhow!("Failed to get inf SPool accounts"))?;
let mut data_map = HashMap::new();
for i in 0..keys.len() {
let key = &keys[i];
let account = &account_datas[i];
if let Some(account) = account {
import * as anchor from "@coral-xyz/anchor";
import type { Commitment } from "@solana/web3.js";
import { Connection, Keypair } from "@solana/web3.js";
import * as fs from "fs";
import yaml from 'js-yaml';
import path from 'path';
import os from 'os';
type SolanaConfig = {
rpcUrl: string;
#!/bin/bash
which base58 > /dev/null || (brew install pipx && pipx install base58)
# Function to detect if the input is hex
is_hex() {
[[ $1 =~ ^[0-9a-fA-F]+$ ]] && return 0 || return 1
}
# Function to detect if the input is base64
const coder = new BorshAccountsCoder(program.idl);
const oracles = await queue.fetchOracleKeys();
const oracleAccounts = await utils.rpc.getMultipleAccounts(
program.provider.connection,
oracles
);
const oracleDatas = oracleAccounts
.map((x: any) => coder.decode("OracleAccountData", x.account.data));
// TODO: now filter out all oracles that keys are not currently verified and keys expire in more than an hour