cowprotocol / cowprotocol/solana-programs
Collection of performance improvements
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 32
Description
A list of improvements that may be worth investigating once we've got a proper benchmarking framework.
This list is to make sure we don't forget, nothing here has been investigated thoroughly.
Feel free to directly edit this message if you see something worthy.
- Use
bytemukfor byte encoding/decoding (discussion). - Save one byte in the
CreateOrdertransaction (#20). - Drop the namespacing seed (discussion).
- Can we do better than reading all instructions in
Begin/FinalizeSettle? Discussion. - Should we revisit how the index is carried in
Begin/FinalizeSettle? Since we scan anyway, should we only have a single index? The difference is expected to be small anyway. See discussion and that PR's description. - Sanity check: is it true that allocating a constant for a hardcoded constant array doesn't decrease the CU cost? See discussion.
- Store bumps in the PDAs rather than passing them along in the transaction data (discussion).
- Large state PDA data has the side effect of unnecessary extra CU. This is true for both extra solvers and extra authorities. See the related discussion for some initial investigation.
- Better writing of accounts (vibed example: 21f11b948e9930a07f28e0f1c19e6f09473dccae)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the linked discussions and related pull requests for one unchecked item, especially the notes about CreateOrder, Begin, and FinalizeSettle. A proper benchmarking framework is not identified here, so first establish how the chosen change will be measured. Done means one narrowly scoped improvement is investigated, benchmarked, and documented with evidence.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- blockchain, performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100