anchor icon indicating copy to clipboard operation
anchor copied to clipboard

Add Transactions V2 support

Open fabioberger opened this issue 3 years ago • 25 comments

This feature of Solana went live yesterday: https://docs.solana.com/proposals/transactions-v2

Can Anchor upgrade it's Solana dependencies so that provider.connect.sendTransaction accepts VersionedTransactions?

Thank you!

fabioberger avatar Oct 11 '22 14:10 fabioberger

On it

On Tue, Oct 11, 2022, 3:45 PM Armani Ferrante @.***> wrote:

Assigned #2220 https://github.com/coral-xyz/anchor/issues/2220 to @Henry-E https://github.com/Henry-E.

— Reply to this email directly, view it on GitHub https://github.com/coral-xyz/anchor/issues/2220#event-7563621389, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAHMGEIEUXXTM3MBLX6KPTWCV4QZANCNFSM6AAAAAARCLQDRI . You are receiving this because you were assigned.Message ID: @.***>

Henry-E avatar Oct 11 '22 16:10 Henry-E

As well as updating dependencies we will need to look into where the internals of anchor have to be updated in order to start passing VersionedTransaction objects instead of Transaction objects to sendTransaction.

Henry-E avatar Oct 12 '22 13:10 Henry-E

How is progress on support for versioned transactions in Anchor going? I see that the PR bumping the web3.js package version was merged. Will that update be in the next release of the @project-serum/anchor package?

broskicodes avatar Oct 26 '22 19:10 broskicodes

With the updated version of the package you should be able to pass in versioned transactions. I'll have to check with armani what the plan is for updating packages etc.

Henry-E avatar Oct 26 '22 21:10 Henry-E

Ok, great! I imagine we will also be able to create and query lookup tables as well? If possible, could you give me an ETA for when the package will be updated? Once you've talked with Armani ofc.

broskicodes avatar Oct 27 '22 14:10 broskicodes

I don't really know about creating and querying lookup tables. That's presumably all part of the web3 package. No estimate on when the anchor package will be released but it's been noted.

On Thu, Oct 27, 2022, 3:52 PM nibbus @.***> wrote:

Ok, great! I imagine we will also be able to create and query lookup tables as well? If possible, could you give me an ETA for when the package will be updated? Once you've talked with Armani ofc.

— Reply to this email directly, view it on GitHub https://github.com/coral-xyz/anchor/issues/2220#issuecomment-1293645522, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAHMGBVOLWHYQ34FG2JJBLWFKJMBANCNFSM6AAAAAARCLQDRI . You are receiving this because you were mentioned.Message ID: @.***>

Henry-E avatar Oct 27 '22 15:10 Henry-E

Thanks for the reply! Yes all LUT functionality is handled by the updated web3.js version, so once this is released all the functionality should work. And thanks for taking note. I'll keep an eye out for the next release.

broskicodes avatar Oct 27 '22 15:10 broskicodes

Hey there 👋,

Wonder if there are any updates? Our team is super pumped to be able to integrate transaction v2 with Anchor!

RustySol avatar Oct 29 '22 00:10 RustySol

Hi guys, just checking in, any word on this update @Henry-E?

pindaroso avatar Dec 06 '22 14:12 pindaroso

I still haven't gotten any response from anyone about what integration with transactions v2 would look like? What support does anchor need to add in. It's all in the web3 library?

Henry-E avatar Dec 06 '22 14:12 Henry-E

The local validator that runs during tests needs a version update. I didn't see any other issues or PRs for this unless I'm missing something. Should I create one?

pindaroso avatar Dec 06 '22 14:12 pindaroso

The Solana and web3 versions have all been updated for the next version.

Henry-E avatar Dec 06 '22 14:12 Henry-E

Ah, beautiful, ty. When is that coming out?

pindaroso avatar Dec 06 '22 15:12 pindaroso

ASAP, just waiting on an important PR to finish and then we'll release.

On Tue, Dec 6, 2022, 3:01 PM Pindaroso @.***> wrote:

Ah, beautiful, ty. When is that coming out?

— Reply to this email directly, view it on GitHub https://github.com/coral-xyz/anchor/issues/2220#issuecomment-1339514392, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAHMGHQCZEF4BG3KV6WWPDWL5IK5ANCNFSM6AAAAAARCLQDRI . You are receiving this because you modified the open/close state.Message ID: @.***>

Henry-E avatar Dec 06 '22 15:12 Henry-E

Any update on this?

adilcpm avatar Dec 15 '22 20:12 adilcpm

We released a new version

Henry-E avatar Dec 15 '22 22:12 Henry-E

how to handle it in anchor web3. I am not able to see any example or test leveraging lookup tables.

adilcpm avatar Dec 16 '22 04:12 adilcpm

It's a Solana web3.js package feature, unrelated to anchor. Though with the updated web3.js package in the new anchor you should be able to pass the new arguments in

Henry-E avatar Dec 16 '22 06:12 Henry-E

I'll happily reopen this issue and look into it if someone can give a clear proposal on what support for the new versioned transactions should look like.

From the docs https://docs.solana.com/developing/lookup-tables#how-to-use-an-address-lookup-table-in-a-transaction , it looks kind of like the usage is that you create instructions as normal for the transaction but at the very end pass in the lookuptable address

const messageV0 = new web3.TransactionMessage({
  payerKey: payer.publicKey,
  recentBlockhash: blockhash,
  instructions: arrayOfInstructions, // note this is an array of instructions
}).compileToV0Message([lookupTableAccount]);

So I suppose that anchor should start compiling messages for transactions this way (without exposing all of it to the user) with the option to pass in a lookupTableAccount somewhere in the existing transaction builder syntax?

It seems like all you have to do is add any lookupTableAccounts you need to the transaction and it will automatically obtain any public keys in it? But it's confusing because at some stage the lookupTableAccount needs to be fetched in order to minimize the size of the transaction and none of these look like async functions? So it must be that you pass a really large message/transaction to the first RPC which then converts your transaction into something that's less than 1230 bytes. Which seems like an odd way to do it but I can't see where else the conversion from a 32 byte regular pubkey to a 2 byte index in lookup table happens.

Henry-E avatar Dec 16 '22 11:12 Henry-E

Hi everyone, I am Kawasaki, core dev of EpicsDAO. I created an Epics Alpha quest with this issue to solve this issue faster. https://alpha.epics.dev/en/quest/UXVlc3Q6MTMy/

A developer who made a PR and it's merged by the repo owner properly will be able to redeem 30,000 $EPCT.

I hope this helps the Anchor community. Thank you very much 🙏

POPPIN-FUMI avatar Dec 16 '22 20:12 POPPIN-FUMI

I still haven't gotten any response from anyone about what integration with transactions v2 would look like? What support does anchor need to add in. It's all in the web3 library?

I believe it's something like what @jordansexton says in this discussion. They just need to know that Anchor has type support for versioned transactions before they go ahead with integrating versioned transaction support for useAnchorWallet

0xcrust avatar Feb 24 '23 13:02 0xcrust

This is helpful thanks. I'm just trying to figure out the best way to add support at the moment without breaking too much other stuff.

On Fri, Feb 24, 2023, 1:34 PM Ademola @.***> wrote:

I still haven't gotten any response from anyone about what integration with transactions v2 would look like? What support does anchor need to add in. It's all in the web3 library?

I believe it's something like what @jordansexton https://github.com/jordansexton says in this discussion https://github.com/solana-labs/wallet-adapter/pull/626#issuecomment-1292309846. They just need to know that Anchor has type support for versioned transactions before they go ahead with integrating versioned transaction support for useAnchorWallet

— Reply to this email directly, view it on GitHub https://github.com/coral-xyz/anchor/issues/2220#issuecomment-1443689570, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAHMGG3CK7PRBZJGLD77FDWZC2GNANCNFSM6AAAAAARCLQDRI . You are receiving this because you modified the open/close state.Message ID: @.***>

Henry-E avatar Feb 24 '23 16:02 Henry-E

Oh got it. I didn't see this reply on time and raised the same issue on the anchor discord which might be kind of a nuisance, sorry about that!

I'll also do some experimenting on my end and see what I come up with

0xcrust avatar Feb 26 '23 13:02 0xcrust

Hey guys 👋 any update on this issue? Is it currently possible to send a tx that utilizes LUT into an an anchor-based program?

ppoliani avatar Jan 07 '24 10:01 ppoliani

Anchor supports versioned transactions. https://github.com/coral-xyz/anchor/pull/2427 . So you'll be able to pass in look up tables but you'll to use the solana ts library to do it.

Henry-E avatar Jan 08 '24 17:01 Henry-E