Skip to content
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

services/horizon: Cap the minSeqAge precondition at MaxInt64 #4342

Closed
wants to merge 2 commits into from

Conversation

Shaptic
Copy link
Contributor

@Shaptic Shaptic commented Apr 14, 2022

PR Checklist

PR Structure

  • This PR has reasonably narrow scope (if not, break it down into smaller PRs).
  • This PR avoids mixing refactoring changes with feature changes (split into two PRs
    otherwise).
  • This PR's title starts with name of package that is most changed in the PR, ex.
    services/friendbot, or all or doc if the changes are broad or impact many
    packages.

Thoroughness

  • This PR adds tests for the most critical parts of the new functionality or fixes.
  • I've updated any docs (developer docs, .md
    files, etc... affected by this change). Take a look in the docs folder for a given service,
    like this one.

Release planning

  • I've updated the relevant CHANGELOG (here for Horizon) if
    needed with deprecations, added features, breaking changes, and DB schema changes.
  • I've decided if this PR requires a new major/minor version according to
    semver, or if it's mainly a patch change. The PR is targeted at the next
    release branch if it's not a patch change.

What

This caps the minSeqAge precondition field (of type xdr.Duration = Uint64) value to be an int64.

This is an alternative to #4339.

Why

This ensures negative values don't make it into the database. We do the same thing with timebounds currently.

Known limitations

You can't use the values in the interval (MaxInt64, MaxUint64], but those are absurd anyway.

@Shaptic Shaptic requested a review from a team April 14, 2022 22:18
@Shaptic Shaptic changed the base branch from master to horizon-protocol-19 April 14, 2022 22:18
@sreuland
Copy link
Contributor

I thought the approach taken on #4339 to preserve this data bit for bit as char blob was more compelling design, in principle, horizon stays neutral, clients get to interpret. Maybe avoid some edge cases, If clients chose to stuff a huge constant into minAge on a tx which has logical meaning in their application, and then they get something different from horizon, maybe that is worse?

@Shaptic
Copy link
Contributor Author

Shaptic commented Apr 15, 2022

Closing in lieu of #4339.

@Shaptic Shaptic closed this Apr 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants