Harness: Dedupe accounts and coalesce privileges #28
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Currently, if you provide the same account twice to Mollusk's
process_instruction
API, the permissions are taken directly from the instructionAccountMeta
entries, so even if two metas have the same public key, their perms asAccountInfo
will reflect those of the instruction metas.In other words, if I provide the same account twice, as so...
... then my program will see the first account as writable, and the second as a signer, but they will have the same address. These must be coalesced, as is done in the VM's serialization step. Unfortunately, this deduping depends on the
TransactionContext
, so this fix has to go into Mollusk!Summary of Changes
Employ a simple map and an extra iteration to coalesce account privileges across accounts with the same address.