-
Notifications
You must be signed in to change notification settings - Fork 968
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
Transaction meta is missing one time signer changes in older versions of the protocol #2217
Comments
Tagging as "discussion" for now. @jonjove FYI |
I think the best approach is to update the XDR with struct TransactionMetaV2
{
LedgerEntryChanges txChangesBefore;
OperationMeta operations<>;
LedgerEntryChanges txChangesAfter;
};
union TransactionMeta switch (int v)
{
case 0:
OperationMeta operations<>;
case 1:
TransactionMetaV1 v1;
case 2:
TransactionMetaV2 v2;
}; The contents of In order to avoid breaking downstream systems, we would also add a configuration flag |
@ire-and-curses FYI |
When
removeUsedOneTimeSignerKeys
was added in840787d#diff-94d5ac6726dabe26918718d13fd44b9cR540
the meta format was not updated to reflect those changes (this would have required a "post transaction" meta of sorts).
This was later fixed in protocol 10 (presigned transactions changes are tracked in
txChanges
as they are done before applying operations):#1464 (comment)
Proposed fix:
in order to generate meta that contains all changes, a simple update to pre-protocol 10 ledgers would be to modify the meta of the last operation to include the one time signer change (NB: this is a merge of 2 meta).
It's a bit ugly as technically speaking the change doesn't belong to the last operation, but it seems to be the simplest we can do without adding "post tx" meta.
The text was updated successfully, but these errors were encountered: