Skip to content

Add RPC for latest checkpoint #712

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

Merged
merged 12 commits into from
Aug 9, 2022
Merged

Conversation

bhgomes
Copy link
Contributor

@bhgomes bhgomes commented Jul 25, 2022

Signed-off-by: Brandon H. Gomes [email protected]

Description

Adds an RPC method for querying the latest checkpoint. This is useful for getting a loading bar for synchronization.


Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

  • Linked to Github issue with discussion and accepted design OR have an explanation in the PR that describes this work.
  • Added one line describing your change in <branch>/CHANGELOG.md
  • Re-reviewed Files changed in the Github PR explorer.

Situational Notes:

  • If adding functonality, write unit tests!
  • If importing a new pallet, choose a proper module index for it, and allow it in BaseFilter. Ensure every extrinsic works from front-end. If there's corresponding tool, ensure both work for each other.
  • If needed, update our Javascript/Typescript APIs. These APIs are officially used by exchanges or community developers.
  • If modifying existing runtime storage items, make sure to implement storage migrations for the runtime and test them with try-runtime. This includes migrations inherited from upstream changes, and you can search the diffs for modifications of #[pallet::storage] items to check for any.
  • If runtime changes, need to update the version numbers properly:
    • authoring_version: The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.
    • spec_version: The version of the runtime specification. A full node will not attempt to use its native runtime in substitute for the on-chain Wasm runtime unless all of spec_name, spec_version, and authoring_version are the same between Wasm and native.
    • impl_version: The version of the implementation of the specification. Nodes are free to ignore this; it serves only as an indication that the code is different; as long as the other two versions are the same then while the actual code may be different, it is nonetheless required to do the same thing. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the impl_version changing.
    • transaction_version: The version of the extrinsics interface. This number must be updated in the following circumstances: extrinsic parameters (number, order, or types) have been changed; extrinsics or pallets have been removed; or the pallet order in the construct_runtime! macro or extrinsic order in a pallet has been changed. You can run the metadata_diff.yml workflow for help. If this number is updated, then the spec_version must also be updated
  • Verify benchmarks & weights have been updated for any modified runtime logics

@bhgomes bhgomes changed the title wip: add RPC for latest checkpoint Add RPC for latest checkpoint Jul 25, 2022
@bhgomes bhgomes added the L-added Log: Issues and PRs related to addition label Jul 25, 2022
@bhgomes bhgomes marked this pull request as ready for review July 25, 2022 17:47
@bhgomes bhgomes added this to the v3.3.0 milestone Jul 25, 2022
Kevingislason
Kevingislason previously approved these changes Jul 25, 2022
@stechu
Copy link
Collaborator

stechu commented Jul 27, 2022

why a new RPC end-point? Should we just add the total number to the pull_ledger_diff (to reduce number of RPCs).

Signed-off-by: Shumo Chu <[email protected]>
@stechu
Copy link
Collaborator

stechu commented Jul 29, 2022

This PR requires merging #723 first.

stechu
stechu previously approved these changes Jul 29, 2022
Kevingislason
Kevingislason previously approved these changes Jul 29, 2022
@stechu stechu dismissed stale reviews from Kevingislason and themself via bc180fb July 29, 2022 19:43
Signed-off-by: Shumo Chu <[email protected]>
@Garandor Garandor added C-enhancement Category: An issue proposing an enhancement or a PR with one A-client Client - i.e. not upgradeable with the runtime - changes labels Aug 8, 2022
Copy link
Contributor

@Garandor Garandor left a comment

Choose a reason for hiding this comment

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

got the same thought as @ghzlatarev in https://github.com/Manta-Network/Manta/pull/712/files#r935325448 that it would be cheaper to bump the total number in storage on each TX and read a StorageValue instead of collecting the 256 shards on every single rpc call.

Intuitively, it sounds far more computationally expensive to have 257 storage reads per RPC instead of 2, especially in light of the recently merged #469

I think this'll need proper benchmarking - or some caching in the #686 where it only pulls a new value from the RT once per block and serves the rest from cache.

If we do the latter thing this LGTM. @bhgomes could you pls open a followup issue? Nvm, just realized that the #686 indexer IS the followup issue

@Dengjianping Dengjianping merged commit 143bb0e into manta Aug 9, 2022
@Dengjianping Dengjianping deleted the feat/rpc-latest-checkpoint branch August 9, 2022 08:12
@0xduracell
Copy link

got the same thought as @ghzlatarev in https://github.com/Manta-Network/Manta/pull/712/files#r935325448 that it would be cheaper to bump the total number in storage on each TX and read a StorageValue instead of collecting the 256 shards on every single rpc call.

Intuitively, it sounds far more computationally expensive to have 257 storage reads per RPC instead of 2, especially in light of the recently merged #469

I think this'll need proper benchmarking - or some caching in the #686 where it only pulls a new value from the RT once per block and serves the rest from cache.

If we do the latter thing this LGTM. @bhgomes could you pls open a followup issue? Nvm, just realized that the #686 indexer IS the followup issue

Yeah, we have discussed this. Will do it in the MantaPay 1.0.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-client Client - i.e. not upgradeable with the runtime - changes C-enhancement Category: An issue proposing an enhancement or a PR with one L-added Log: Issues and PRs related to addition
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants