8000 Allow compiled messages with no lifetime by lorisleiva · Pull Request #587 · anza-xyz/kit · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Allow compiled messages with no lifetime #587

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintaine 8000 rs 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

Conversation

lorisleiva
Copy link
Member
@lorisleiva lorisleiva commented Jun 27, 2025

This PR allows CompiledTransactionMessages to have no lifetime constraint.

It does it by filling the lifetime token with zeroes when encoding the message — that is, at the very last possible moment.

In order to have reciprocity when decoding CompiledTransactionMessages, the decoder also recognises a lifetime token filled with zeroes and translate this as an undefined lifetime token.

Copy link
changeset-bot bot commented Jun 27, 2025

🦋 Changeset detected

Latest commit: ab5f81e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 40 packages
Name Type
@solana/transaction-messages Minor
@solana/kit Minor
@solana/programs Minor
@solana/rpc-api Minor
@solana/rpc-subscriptions-api Minor
@solana/signers Minor
@solana/transaction-confirmation Minor
@solana/transactions Minor
@solana/rpc Minor
@solana/sysvars Minor
@solana/rpc-subscriptions Minor
@solana/react Minor
@solana/compat Minor
@solana/rpc-graphql Minor
@solana/accounts Minor
@solana/addresses Minor
@solana/assertions Minor
@solana/codecs-core Minor
@solana/codecs-data-structures Minor
@solana/codecs-numbers Minor
@solana/codecs-strings Minor
@solana/codecs Minor
@solana/errors Minor
@solana/fast-stable-stringify Minor
@solana/functional Minor
@solana/instructions Minor
@solana/keys Minor
@solana/nominal-types Minor
@solana/options Minor
@solana/promises Minor
@solana/rpc-parsed-types Minor
@solana/rpc-spec-types Minor
@solana/rpc-spec Minor
@solana/rpc-subscriptions-channel-websocket Minor
@solana/rpc-subscriptions-spec Minor
@solana/rpc-transformers Minor
@solana/rpc-transport-http Minor
@solana/rpc-types Minor
@solana/subscribable Minor
@solana/webcrypto-ed25519-polyfill Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Member Author
lorisleiva commented Jun 27, 2025

Copy link
bundlemon bot commented Jun 27, 2025

BundleMon

Files updated (7)
Status Path Size Limits
transaction-messages/dist/index.browser.mjs
7.32KB (+83B +1.12%) -
transaction-messages/dist/index.native.mjs
7.32KB (+83B +1.12%) -
transaction-messages/dist/index.node.mjs
7.32KB (+83B +1.12%) -
@solana/kit production bundle
kit/dist/index.production.min.js
34.44KB (+48B +0.14%) -
transactions/dist/index.browser.mjs
2.3KB (+32B +1.38%) -
transactions/dist/index.native.mjs
2.3KB (+32B +1.38%) -
transactions/dist/index.node.mjs
2.29KB (+31B +1.34%) -
Unchanged files (120)
Status Path Size Limits
rpc-graphql/dist/index.browser.mjs
18.82KB -
rpc-graphql/dist/index.native.mjs
18.82KB -
rpc-graphql/dist/index.node.mjs
18.82KB -
errors/dist/index.node.mjs
14.54KB -
errors/dist/index.browser.mjs
14.52KB -
errors/dist/index.native.mjs
14.52KB -
codecs-data-structures/dist/index.native.mjs
4.77KB -
codecs-data-structures/dist/index.browser.mjs
4.77KB -
codecs-data-structures/dist/index.node.mjs
4.77KB -
webcrypto-ed25519-polyfill/dist/index.node.mj
s
3.57KB -
webcrypto-ed25519-polyfill/dist/index.browser
.mjs
3.56KB -
webcrypto-ed25519-polyfill/dist/index.native.
mjs
3.54KB -
rpc-subscriptions/dist/index.browser.mjs
3.38KB -
rpc-subscriptions/dist/index.node.mjs
3.34KB -
rpc-subscriptions/dist/index.native.mjs
3.31KB -
codecs-core/dist/index.browser.mjs
3.3KB -
codecs-core/dist/index.native.mjs
3.3KB -
codecs-core/dist/index.node.mjs
3.3KB -
rpc-transformers/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.native.mjs
2.93KB -
rpc-transformers/dist/index.node.mjs
2.93KB -
addresses/dist/index.browser.mjs
2.86KB -
addresses/dist/index.native.mjs
2.86KB -
addresses/dist/index.node.mjs
2.86KB -
kit/dist/index.browser.mjs
2.71KB -
kit/dist/index.native.mjs
2.71KB -
kit/dist/index.node.mjs
2.71KB -
signers/dist/index.browser.mjs
2.63KB -
signers/dist/index.native.mjs
2.63KB -
signers/dist/index.node.mjs
2.62KB -
codecs-strings/dist/index.browser.mjs
2.53KB -
codecs-strings/dist/index.node.mjs
2.48KB -
codecs-strings/dist/index.native.mjs
2.45KB -
transaction-confirmation/dist/index.node.mjs
2.39KB -
sysvars/dist/index.browser.mjs
2.35KB -
sysvars/dist/index.native.mjs
2.34KB -
transaction-confirmation/dist/index.native.mj
s
2.34KB -
sysvars/dist/index.node.mjs
2.34KB -
transaction-confirmation/dist/index.browser.m
js
2.34KB -
rpc-subscriptions-spec/dist/index.node.mjs
2.14KB -
rpc-subscriptions-spec/dist/index.native.mjs
2.09KB -
rpc-subscriptions-spec/dist/index.browser.mjs
2.09KB -
keys/dist/index.browser.mjs
2.02KB -
keys/dist/index.native.mjs
2.02KB -
keys/dist/index.node.mjs
2.02KB -
codecs-numbers/dist/index.native.mjs
2.01KB -
codecs-numbers/dist/index.browser.mjs
2.01KB -
codecs-numbers/dist/index.node.mjs
2.01KB -
react/dist/index.native.mjs
1.99KB -
react/dist/index.browser.mjs
1.99KB -
react/dist/index.node.mjs
1.99KB -
rpc/dist/index.node.mjs
1.95KB -
rpc-transport-http/dist/index.browser.mjs
1.91KB -
rpc-transport-http/dist/index.native.mjs
1.91KB -
rpc/dist/index.native.mjs
1.8KB -
rpc/dist/index.browser.mjs
1.8KB -
subscribable/dist/index.node.mjs
1.8KB -
subscribable/dist/index.native.mjs
1.75KB -
subscribable/dist/index.browser.mjs
1.74KB -
rpc-transport-http/dist/index.node.mjs
1.73KB -
rpc-types/dist/index.browser.mjs
1.53KB -
rpc-types/dist/index.native.mjs
1.53KB -
rpc-types/dist/index.node.mjs
1.53KB -
rpc-subscriptions-channel-websocket/dist/inde
x.node.mjs
1.33KB -
rpc-subscriptions-channel-websocket/dist/inde
x.native.mjs
1.27KB -
rpc-subscriptions-channel-websocket/dist/inde
x.browser.mjs
1.26KB -
options/dist/index.browser.mjs
1.18KB -
options/dist/index.native.mjs
1.18KB -
options/dist/index.node.mjs
1.17KB -
accounts/dist/index.browser.mjs
1.13KB -
accounts/dist/index.native.mjs
1.12KB -
accounts/dist/index.node.mjs
1.12KB -
compat/dist/index.browser.mjs
971B -
compat/dist/index.native.mjs
970B -
compat/dist/index.node.mjs
968B -
rpc-spec-types/dist/index.browser.mjs
964B -
rpc-api/dist/index.browser.mjs
963B -
rpc-api/dist/index.native.mjs
962B -
rpc-spec-types/dist/index.native.mjs
962B -
rpc-api/dist/index.node.mjs
961B -
rpc-spec-types/dist/index.node.mjs
961B -
rpc-subscriptions-api/dist/index.native.mjs
870B -
rpc-subscriptions-api/dist/index.node.mjs
869B -
rpc-subscriptions-api/dist/index.browser.mjs
868B -
rpc-spec/dist/index.browser.mjs
852B -
rpc-spec/dist/index.native.mjs
851B -
rpc-spec/dist/index.node.mjs
850B -
promises/dist/index.browser.mjs
799B -
promises/dist/index.native.mjs
798B -
promises/dist/index.node.mjs
797B -
assertions/dist/index.browser.mjs
783B -
instructions/dist/index.browser.mjs
769B -
instructions/dist/index.native.mjs
768B -
instructions/dist/index.node.mjs
767B -
fast-stable-stringify/dist/index.browser.mjs
726B -
fast-stable-stringify/dist/index.native.mjs
725B -
assertions/dist/index.native.mjs
724B -
fast-stable-stringify/dist/index.node.mjs
724B -
assertions/dist/index.node.mjs
723B -
programs/dist/index.browser.mjs
329B -
programs/dist/index.native.mjs
327B -
programs/dist/index.node.mjs
325B -
event-target-impl/dist/index.node.mjs
230B -
functional/dist/index.browser.mjs
154B -
functional/dist/index.native.mjs
152B -
text-encoding-impl/dist/index.native.mjs
152B -
functional/dist/index.node.mjs
151B -
codecs/dist/index.browser.mjs
137B -
codecs/dist/index.native.mjs
136B -
codecs/dist/index.node.mjs
134B -
event-target-impl/dist/index.browser.mjs
133B -
ws-impl/dist/index.node.mjs
131B -
text-encoding-impl/dist/index.browser.mjs
122B -
text-encoding-impl/dist/index.node.mjs
119B -
ws-impl/dist/index.browser.mjs
113B -
crypto-impl/dist/index.node.mjs
111B -
crypto-impl/dist/index.browser.mjs
109B -
rpc-parsed-types/dist/index.browser.mjs
66B -
rpc-parsed-types/dist/index.native.mjs
65B -
rpc-parsed-types/dist/index.node.mjs
63B -

Total files change +392B +0.11%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@lorisleiva lorisleiva force-pushed the 06-27-allow_compiled_messages_with_no_lifetime branch from f2899ee to a3524dd Compare June 27, 2025 11:05
@lorisleiva
Copy link
Member Author

@steveluscher @mcintyre94 If we're happy with this approach, I can insert it in the main PR stack.

Copy link
Contributor
github-actions bot commented Jun 27, 2025

Documentation Preview: https://kit-docs-dkvblhm86-anza-tech.vercel.app

@lorisleiva lorisleiva force-pushed the 06-27-allow_compiled_messages_with_no_lifetime branch from a3524dd to ab5f81e Compare June 27, 2025 13:48
@lorisleiva lorisleiva requested review from mcintyre94 and steveluscher and removed request for mcintyre94 June 27, 2025 13:59
@lorisleiva lorisleiva marked this pull request as ready for review June 27, 2025 13:59
Comment on lines +318 to +320
if (!('lifetimeConstraint' in decompiledTransactionMessage)) {
throw new Error('We expect a lifetime');
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This showcases how this PR affects the developer experience. Here we know there will always be a lifetime constraint since we're fetching a transaction that landed so we need to assert the correct type.

@lorisleiva
Copy link
Member Author

Closing in favour of #594

@lorisleiva lorisleiva closed this Jul 1, 2025
@lorisleiva lorisleiva deleted the 06-27-allow_compiled_messages_with_no_lifetime branch July 1, 2025 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0