You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- RevokeSession instruction (disc=9): Owner/Admin can close session accounts early, refunding rent to specified destination
29
+
- Error code 3019 (InvalidSessionAccount) for invalid session PDA during revocation
28
30
- Devnet smoke test (`tests-sdk/tests/devnet-smoke.ts`): exercises all 9 instructions across Ed25519/Secp256r1/Session auth types and Owner/Admin/Spender roles, reporting CU/TX size/rent
29
31
- Deferred execution benchmarks (CU + tx size measurements for TX1/TX2)
@@ -69,6 +71,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
69
71
70
72
### Fixed
71
73
74
+
- Authorize signed payload now includes `expiry_offset` (66 bytes total), preventing relayers from modifying the expiry window
75
+
-`sol_assert_bytes_eq` now uses the `len` parameter instead of `left.len()` (latent OOB read on-chain)
76
+
-`reclaim_deferred` uses `checked_add` for lamports (consistent with `execute_deferred` and `manage_authority`)
72
77
-`PublicKey.default` collision with `SystemProgram.programId` in SDK execute methods: both are 32 zero bytes, causing `buildCompactLayout` to map SystemProgram to the sysvar slot (index 4) instead of adding it as a remaining account. Replaced with `SYSVAR_INSTRUCTIONS_PUBKEY`.
Copy file name to clipboardExpand all lines: docs/Architecture.md
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -168,7 +168,7 @@ Since each authority is a separate PDA, Solana's scheduler sees no writable over
168
168
169
169
This enables high-throughput wallets where multiple authorized parties (e.g., an admin managing permissions while a spender sends payments, or multiple session keys operating concurrently) never block each other. The per-authority odometer counter provides replay protection without creating a shared bottleneck.
170
170
171
-
## 5. Instructions (9 total)
171
+
## 5. Instructions (10 total)
172
172
173
173
### CreateWallet (discriminator: 0)
174
174
@@ -212,7 +212,7 @@ This enables high-throughput wallets where multiple authorized parties (e.g., an
212
212
213
213
- Creates a DeferredExec PDA storing pre-authorized instruction/account hashes.
214
214
- Only Secp256r1 Owner/Admin can authorize (not Ed25519, not Spender).
215
-
- Signed payload: `instructions_hash || accounts_hash` (64 bytes).
215
+
- Signed payload: `instructions_hash || accounts_hash || expiry_offset` (66 bytes).
216
216
- Expiry offset bounded to 10-9,000 slots (~4 seconds to ~1 hour).
217
217
- Uses the authority's odometer counter (post-increment) as PDA seed nonce.
0 commit comments