reenable lite-rpc multiple connections

This commit is contained in:
Lou-Kamades 2023-12-28 21:43:47 -06:00
parent 61dc94011a
commit 2c989573ab
No known key found for this signature in database
GPG Key ID: 87A166E4D7C01F30
3 changed files with 25 additions and 40 deletions

View File

@ -23,7 +23,7 @@
"dependencies": {
"@blockworks-foundation/mango-feeds": "0.1.7",
"@blockworks-foundation/mango-mints-redemption": "^0.0.10",
"@blockworks-foundation/mango-v4": "0.21.5",
"@blockworks-foundation/mango-v4": "0.21.7",
"@blockworks-foundation/mango-v4-settings": "0.4.3",
"@blockworks-foundation/mangolana": "0.0.1-beta.15",
"@headlessui/react": "1.6.6",

View File

@ -121,17 +121,18 @@ const initMangoClient = (
opts: {
prioritizationFee: number
prependedGlobalAdditionalInstructions: TransactionInstruction[]
multipleProviders: AnchorProvider[] | Connection[]
multipleConnections: Connection[]
} = {
prioritizationFee: DEFAULT_PRIORITY_FEE,
prependedGlobalAdditionalInstructions: [],
multipleProviders: [],
multipleConnections: [],
},
//for analytics use
telemetry: ReturnType<typeof usePlausible> | null,
): MangoClient => {
return MangoClient.connect(provider, CLUSTER, MANGO_V4_ID[CLUSTER], {
prioritizationFee: opts.prioritizationFee,
multipleConnections: opts.multipleConnections,
prependedGlobalAdditionalInstructions:
opts.prependedGlobalAdditionalInstructions,
postSendTxCallback: ({ txid }: { txid: string }) => {
@ -151,31 +152,16 @@ const initMangoClient = (
})
}
const createProviders = (
const createBackupConnections = (
primaryConnection: Connection,
wallet: Wallet,
options: web3.ConfirmOptions,
): [AnchorProvider, AnchorProvider[]] => {
const backupConnection1 = new Connection(LITE_RPC_URL)
const primaryProvider = new AnchorProvider(primaryConnection, wallet, options)
const backupProvider1 = new AnchorProvider(backupConnection1, wallet, options)
primaryProvider.opts.skipPreflight = true
backupProvider1.opts.skipPreflight = true
const backupProviders = [backupProvider1]
): Connection[] => {
const liteRpcConnection = new Connection(LITE_RPC_URL)
const backupConnections = [liteRpcConnection]
if (primaryConnection.rpcEndpoint !== TRITON_DEDICATED_URL) {
const backupConnection2 = new Connection(TRITON_DEDICATED_URL)
const backupProvider2 = new AnchorProvider(
backupConnection2,
wallet,
options,
)
backupProvider2.opts.skipPreflight = true
backupProviders.push(backupProvider2)
const conn = new Connection(TRITON_DEDICATED_URL)
backupConnections.push(conn)
}
return [primaryProvider, backupProviders]
return backupConnections
}
export const DEFAULT_TRADE_FORM: TradeForm = {
@ -370,17 +356,15 @@ const mangoStore = create<MangoStore>()(
} catch {
connection = new web3.Connection(ENDPOINT.url, CONNECTION_COMMITMENT)
}
const [provider, backupProviders] = createProviders(
connection,
emptyWallet,
options,
)
const provider = new AnchorProvider(connection, emptyWallet, options)
provider.opts.skipPreflight = true
const backupConnections = createBackupConnections(connection)
const client = initMangoClient(
provider,
{
prioritizationFee: DEFAULT_PRIORITY_FEE,
prependedGlobalAdditionalInstructions: [],
multipleProviders: backupProviders,
multipleConnections: backupConnections,
},
null,
)
@ -1017,11 +1001,12 @@ const mangoStore = create<MangoStore>()(
connectMangoClientWithWallet: async (wallet: WalletAdapter) => {
const set = get().set
try {
const [provider, backupProviders] = createProviders(
const provider = new AnchorProvider(
connection,
wallet.adapter as unknown as Wallet,
options,
)
const backupConnections = createBackupConnections(connection)
const priorityFee = get().priorityFee ?? DEFAULT_PRIORITY_FEE
const client = initMangoClient(
@ -1030,7 +1015,7 @@ const mangoStore = create<MangoStore>()(
prioritizationFee: priorityFee,
prependedGlobalAdditionalInstructions:
get().prependedGlobalAdditionalInstructions,
multipleProviders: backupProviders,
multipleConnections: backupConnections,
},
null,
)
@ -1062,7 +1047,7 @@ const mangoStore = create<MangoStore>()(
{
prioritizationFee: get().priorityFee,
prependedGlobalAdditionalInstructions: instructions,
multipleProviders: [],
multipleConnections: client.multipleConnections,
},
null,
)
@ -1152,7 +1137,7 @@ const mangoStore = create<MangoStore>()(
prependedGlobalAdditionalInstructions:
get().prependedGlobalAdditionalInstructions,
prioritizationFee: DEFAULT_PRIORITY_FEE,
multipleProviders: [],
multipleConnections: client.multipleConnections,
},
null,
)
@ -1216,7 +1201,7 @@ const mangoStore = create<MangoStore>()(
prioritizationFee: feeEstimate,
prependedGlobalAdditionalInstructions:
get().prependedGlobalAdditionalInstructions,
multipleProviders: [],
multipleConnections: client.multipleConnections,
},
telemetry,
)

View File

@ -58,10 +58,10 @@
bn.js "^5.2.1"
eslint-config-prettier "^9.0.0"
"@blockworks-foundation/mango-v4@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-v4/-/mango-v4-0.21.5.tgz#5e3b3257de0a0efc98c1f9057982e434c1665120"
integrity sha512-tCBFb+eBltsJbFkcBPBgfk5Wzmwa+9MfNU7FTWX8vMycl+ck4svE8K05HEO25dWRSJmZbwx8osGxaqCsricAbQ==
"@blockworks-foundation/mango-v4@0.21.7":
version "0.21.7"
resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-v4/-/mango-v4-0.21.7.tgz#698292fe2f1f3646d0cc6a7ea0d2c7204ecd9b03"
integrity sha512-rjufKVva3mgyVYtr2Fg4Mo9RPqGNnTVht2o3o2HMsaTMamYkXEZtu36NkCX0SFKY/PV5+ZPeY0CmtxnBZ5Y8cA==
dependencies:
"@blockworks-foundation/mango-v4-settings" "^0.2.16"
"@coral-xyz/anchor" "^0.28.1-beta.2"