Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The max transaction size of 1232 is too limiting for Meta-Transaction #16906

Closed
scottphc opened this issue Apr 28, 2021 · 7 comments
Closed

The max transaction size of 1232 is too limiting for Meta-Transaction #16906

scottphc opened this issue Apr 28, 2021 · 7 comments

Comments

@scottphc
Copy link

scottphc commented Apr 28, 2021

Problem

The current maximum transaction size is 1280 - 40 - 8 = 1232, but it's too limiting for Meta-Transaction. It's going to wrap original instructions into invoke instructions and also add more public keys (device key, cosigner key and fee payer key). You can check more details if you're interested in it.

For example, Raydium Swap transaction has 5-7 instructions which are around 900 bytes. And after wrapping program wallet invoke instruction, it becomes around 2600 bytes.

Transaction fee is troublesome and confusing for blockchain beginners and Meta-Transaction is a good solution for it. I'd like to seek the possibility of increasing the max transaction size.

Proposed Solution

Increase the max transaction size to at least 3000 bytes.

@scottphc
Copy link
Author

@jstarry @mvines @sakridge Could you give some feedback on this? 🙏

@aeyakovenko
Copy link
Member

aeyakovenko commented May 1, 2021

TX size is limited by MTU packet size on the internet. We can do either

  1. Compress the public keys. Every epoch index all the pubkeys and allow txs to reference them by a u32 ID
  2. Upload the tx into an account that can then be executed as a transaction later.

We need a better cost model to account for bigger txs so leaders can build blocks that can execute in time.

@jstarry
Copy link
Member

jstarry commented May 8, 2021

@scottphc we are in the process of drafting a proposal to solve this. I think in your case you could store the instructions you want to call on-chain in a temporary account and then call those stored instructions later. You shouldn't need to wait for transaction size improvements from us unless you're trying to create transactions that are using ~30 accounts.

Tracking the issue of how to allow transactions with more accounts here: #17102

@jstarry jstarry closed this as completed May 8, 2021
@XX
Copy link

XX commented Aug 2, 2021

@jstarry How do I create a temporary account to store instructions? Can you provide a link to an example or documentation?

@XX
Copy link

XX commented Aug 2, 2021

@aeyakovenko

Compress the public keys. Every epoch index all the pubkeys and allow txs to reference them by a u32 ID

How can I use the compressed public keys and allow txs to reference them by an ID? Can you provide a link to an example or documentation?

@t-nelson
Copy link
Contributor

t-nelson commented Aug 2, 2021

@XX these features are not yet available. The proposal for v2 transaction format is available at https://docs.solana.com/proposals/transactions-v2

@github-actions
Copy link
Contributor

github-actions bot commented Apr 2, 2022

This issue has been automatically locked since there has not been any activity in past 7 days after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 2, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants