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

Do not allow submitting transactions older than current node era #350

Merged
merged 1 commit into from
Oct 12, 2023

Conversation

newhoggy
Copy link
Contributor

@newhoggy newhoggy commented Oct 9, 2023

Changelog

- description: |
    Do not allow submitting transactions older than current node era
# uncomment types applicable to the change:
  type:
  # - feature        # introduces a new feature
  - breaking       # the API has changed in a breaking way
  # - compatible     # the API has changed but is non-breaking
  # - optimisation   # measurable performance improvements
  # - improvement    # QoL changes e.g. refactoring
  # - bugfix         # fixes a defect
  # - test           # fixes/modifies tests
  # - maintenance    # not directly related to the code
  # - release        # related to a new release preparation
  # - documentation  # change in code docs, haddocks...

Context

Submitting transactions older that the current node era is unsafe.

This PR also removes all uses of EraCast from cardano-api.

Checklist

  • Commit sequence broadly makes sense and commits have useful messages
  • The change log section in the PR description has been filled in
  • New tests are added if needed and existing tests are updated. These may include:
    • golden tests
    • property tests
    • round trip tests
    • integration tests
      See Running tests for more details
  • The version bounds in .cabal files are updated
  • CI passes. See note on CI. The following CI checks are required:
    • Code is linted with hlint. See .github/workflows/check-hlint.yml to get the hlint version
    • Code is formatted with stylish-haskell. See .github/workflows/stylish-haskell.yml to get the stylish-haskell version
    • Code builds on Linux, MacOS and Windows for ghc-8.10.7 and ghc-9.2.7
  • The changelog section in the PR is updated to describe the change
  • Self-reviewed the diff

@newhoggy newhoggy marked this pull request as ready for review October 9, 2023 13:30
@newhoggy newhoggy force-pushed the newhoggy/avoid-EraCast branch from 316191c to 94f722c Compare October 9, 2023 14:16
data NodeEraMismatchError = forall era nodeEra value.
Show value =>
NodeEraMismatchError
{ originalValue :: !value
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the purpose of this value?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we don't need the originalValue field. It's probably enough to say the node is in an unexpected era and what era that is.

Copy link
Contributor Author

@newhoggy newhoggy Oct 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The field is so that if we have some value that is in the wrong era for example TxOut era then we can print out a useful error message to say what it was that was in the wrong era. @Jimbo4350 is right that we don't need it because we now outright reject circumstances where eras don't match rather than before when we were more lenient and additional context was helpful.

The field has been removed.

Copy link
Contributor

@Jimbo4350 Jimbo4350 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One minor comment. Happy to approve after.

data NodeEraMismatchError = forall era nodeEra value.
Show value =>
NodeEraMismatchError
{ originalValue :: !value
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we don't need the originalValue field. It's probably enough to say the node is in an unexpected era and what era that is.

@newhoggy newhoggy force-pushed the newhoggy/avoid-EraCast branch 2 times, most recently from 667b925 to 71cc451 Compare October 11, 2023 14:09
@Jimbo4350 Jimbo4350 force-pushed the newhoggy/avoid-EraCast branch from 71cc451 to 2d12621 Compare October 12, 2023 16:25
@Jimbo4350 Jimbo4350 enabled auto-merge October 12, 2023 16:25
@Jimbo4350 Jimbo4350 added this pull request to the merge queue Oct 12, 2023
Merged via the queue into main with commit 8624c31 Oct 12, 2023
19 checks passed
@Jimbo4350 Jimbo4350 deleted the newhoggy/avoid-EraCast branch October 12, 2023 16:58
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.

3 participants