From 96104fc1cdd0b041e1d11440c0f352f8785230c2 Mon Sep 17 00:00:00 2001 From: tjs Date: Tue, 15 Nov 2022 23:10:03 -0500 Subject: [PATCH] support versioned txs --- package.json | 4 +-- ts/client/src/utils.ts | 5 +++- ts/client/src/utils/rpc.ts | 50 +++++++++++++++++++------------------- yarn.lock | 8 +++--- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 61bf574fc..45b984cb8 100644 --- a/package.json +++ b/package.json @@ -65,13 +65,13 @@ "@project-serum/serum": "^0.13.65", "@pythnetwork/client": "^2.7.0", "@solana/spl-token": "^0.1.8", - "@solana/web3.js": "^1.63.1", + "@solana/web3.js": "^1.66.2", "@switchboard-xyz/switchboard-v2": "^0.0.129", "big.js": "^6.1.1", "bs58": "^5.0.0" }, "resolutions": { - "@project-serum/anchor/@solana/web3.js": "1.63.1" + "@project-serum/anchor/@solana/web3.js": "1.66.2" }, "peerDependencies": { "@solana/spl-token-swap": "^0.2.0" diff --git a/ts/client/src/utils.ts b/ts/client/src/utils.ts index bbc5700a4..f5c887c9f 100644 --- a/ts/client/src/utils.ts +++ b/ts/client/src/utils.ts @@ -127,7 +127,10 @@ export async function buildVersionedTx( }); const vTx = new VersionedTransaction(message); // TODO: remove use of any when possible in future - + vTx.sign([ + ((provider as AnchorProvider).wallet as any).payer as Signer, + ...additionalSigners, + ]); return vTx; } diff --git a/ts/client/src/utils/rpc.ts b/ts/client/src/utils/rpc.ts index 3fd57004d..d4398aa4f 100644 --- a/ts/client/src/utils/rpc.ts +++ b/ts/client/src/utils/rpc.ts @@ -1,11 +1,10 @@ -import { AnchorProvider, Wallet } from '@project-serum/anchor'; +import { AnchorProvider } from '@project-serum/anchor'; import { AddressLookupTableAccount, - Signer, - Transaction, + MessageV0, TransactionInstruction, + VersionedTransaction, } from '@solana/web3.js'; -import { buildVersionedTx } from '../utils'; export async function sendTransaction( provider: AnchorProvider, @@ -19,29 +18,30 @@ export async function sendTransaction( ); const payer = (provider as AnchorProvider).wallet; - const tx = await buildVersionedTx( - provider, - ixs, - opts.additionalSigners, - alts, - ); - // const tx = new Transaction(); - // tx.recentBlockhash = latestBlockhash.blockhash; - // tx.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight; - // tx.feePayer = payer.publicKey; - // tx.add(...ixs); - // if (opts.additionalSigners?.length > 0) { - // tx.partialSign(...opts.additionalSigners); - // } - if (payer instanceof Wallet) { - await payer.signTransaction(tx as any); - } else { - tx.sign([((provider as AnchorProvider).wallet as any).payer as Signer]); + + const message = MessageV0.compile({ + payerKey: (provider as AnchorProvider).wallet.publicKey, + instructions: ixs, + recentBlockhash: latestBlockhash.blockhash, + addressLookupTableAccounts: alts, + }); + const vtx = new VersionedTransaction(message); + if (opts?.additionalSigners?.length) { + vtx.sign([...opts?.additionalSigners]); } - const signature = await connection.sendRawTransaction(tx.serialize(), { - skipPreflight: true, - }); + // if (payer instanceof Wallet) { + const tx = await payer.signTransaction(vtx as any); + // } else { + // tx.sign([((provider as AnchorProvider).wallet as any).payer as Signer]); + // } + + const signature = await connection.sendTransaction( + tx as any as VersionedTransaction, + { + skipPreflight: true, + }, + ); if (opts.postSendTxCallback) { try { diff --git a/yarn.lock b/yarn.lock index c93db96f6..8055ac5b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -605,10 +605,10 @@ superstruct "^0.14.2" tweetnacl "^1.0.0" -"@solana/web3.js@1.63.1", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.63.1": - version "1.63.1" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.63.1.tgz#88a19a17f5f4aada73ad70a94044c1067cab2b4d" - integrity sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ== +"@solana/web3.js@1.66.2", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.66.2": + version "1.66.2" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.66.2.tgz#80b43c5868b846124fe3ebac7d3943930c3fa60c" + integrity sha512-RyaHMR2jGmaesnYP045VLeBGfR/gAW3cvZHzMFGg7bkO+WOYOYp1nEllf0/la4U4qsYGKCsO9eEevR5fhHiVHg== dependencies: "@babel/runtime" "^7.12.5" "@noble/ed25519" "^1.7.0"