-
Notifications
You must be signed in to change notification settings - Fork 27
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
feat: modify API to allow certain use cases; add ed25519/secp256k1 precompiles #78
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Specifying the loader ID every time can be a bit tedious, perhaps adding a new function may be preferable for specific reasons
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good to me
A bit hard to review as all code is on the same PR |
yeah can we split this up please? |
Don't currently have the bandwidth to do this but if you wanna cherry pick the commits you want that's cool with me. Else I'll circle back to this when I'm looking to finalize my project that depends on it. For now im just building a fork |
ok i'll ask some questions here then. Firstly why does the precompiles commit need to add logic to check program IDs in |
When I was running TXs with precompiles I was getting a missing account error. To fix this I created dummy accounts, perhaps it would be more correct to avoid trying to load the account if it is a precompile? I saw |
Hey coming back to this:
What are these missing accounts supposed to be?
I think for users who want more control over what loader gets used we should just direct them to build the loader instructions and send the required transactions
This is useful, I will include it in a separate PR
Which commit is this? |
Usage: let tx = SanitizedTransaction::try_create(
tx,
MessageHash::Compute,
Some(false),
&svm.accounts,
)
.unwrap(); |
Coming back to this: what's the use case for passing all of |
Haha, this was pre 2.0 where that field did not exist. So it was my trying to communicate "pass the accounts db as an accounts loader". I have used this to make integration tests convenient to write (i just lazy load via RPC if network is enabled or from file if its not the first run/no network). I think we can close this PR and I'll re-open individual PRs once 2.0 stabilizes. Then it will be easier to evaluate each proposed change's merit. |
Cool, the other thing I want to figure out is what's going on with precompiles. It sounds like there's some startup step we're missing? |
I'm no expert on this (I try to avoid reading the upstream solana source code if I can). My intuition is:
I'll actually test this out when I open the new PRs, so for now the above is just my personal speculation |
Hi, feel free to let me know if you want certain commits dropped/reworked. I made these changes to my fork to enable:
AccountsDb
toSanitizeTransaction::try_crate
to get the account_keys iterable.