cowprotocol / cowprotocol/solana-programs

Collection of performance improvements

Open
#22 0 comments 0 reactions 0 assignees View on GitHub

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 bytemuk for byte encoding/decoding (discussion).
  • Save one byte in the CreateOrder transaction (#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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.