Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Conversation

@svyatonik
Copy link
Contributor

Brief overview:

  1. previously there has been ChangesTrieRootsStorage::root(block: u64) -> ChangesTrieRoot. Obviously, this won't work with non-instant finality => changed ChangesTrieRootsStorage::root(anchor, block: u64) where 'anchor' is the descendant of the block we're processing in current request (either in building trie or requesting changes)
  2. ChangesTrieRootsStorage::root is now implemented as: if block <= last_finalized_block => read trie root of finalized block, else traverse from anchor back to the block with given number. This won't work if someone will query key changes from abandoned fork (i.e. fork that has been forked before best finalized block), but not sure if anyone will ever want this query + this increases fn root performance significantly.
  3. since we now need parent block hash when building changes trie for the block, ext_storage_changes_root is changed to accept two parameters (parent_hash + parent_num) instead of single one (block)

Out-of-scope question: are we going to support Hasher that has Hasher::Out not compatible with Header::Hash (i.e. Hasher::Out is H512 and Header::Hash is H256)? There are some conversions of Hasher::Out <-> Header::Hash across the code (I've also introduced couple in this PR, isolated in convert_hash functions) and they looks different every time - sometimes they're checking other' hash length before copying, sometimes - not (=> panic if lengths are different). Probably there's a way to bind these types at compilation time? Or probably better to introduce some global convert_hash utility function?

@svyatonik svyatonik added the A0-please_review Pull request needs code review. label Oct 23, 2018
@rphmeier
Copy link
Contributor

rphmeier commented Nov 5, 2018

are we going to support Hasher that has Hasher::Out not compatible with Header::Hash (i.e. Hasher::Out is H512 and Header::Hash is H256...)

I would say for now, this is not going to happen. It's meant to be the hash function that the header hash is computed with. We should add a type-level constraint there if possible.

Copy link
Contributor

@rphmeier rphmeier left a comment

Choose a reason for hiding this comment

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

Needs merge, generally looks good. Ideally would see a deduplication of convert_hash function and perhaps an optimized lookup path for ancestry traversal when anchor is in the canonical chain.

@gavofyork gavofyork added A7-looksgoodcantmerge and removed A0-please_review Pull request needs code review. labels Nov 10, 2018
@gavofyork
Copy link
Member

My merge didn't work - will need a little more work I think @svyatonik

@gavofyork gavofyork merged commit e543902 into master Nov 13, 2018
@gavofyork gavofyork deleted the support_forks_in_changes_trie_storage branch November 13, 2018 11:17
lamafab pushed a commit to lamafab/substrate that referenced this pull request Jun 16, 2020
helin6 pushed a commit to boolnetwork/substrate that referenced this pull request Jul 25, 2023
* add cli command to explore metadata

* fmt and clippy

* Bump serde from 1.0.160 to 1.0.162 (paritytech#948)

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.160 to 1.0.162.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](serde-rs/serde@v1.0.160...1.0.162)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* extrinsics: Decode extrinsics from blocks (paritytech#929)

* Update polkadot.scale

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics: Add extrinsics client

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics: Decode extrinsics

Signed-off-by: Alexandru Vasile <[email protected]>

* subxt: Add extrinsic error

Signed-off-by: Alexandru Vasile <[email protected]>

* blocks: Expose extrinsics

Signed-off-by: Alexandru Vasile <[email protected]>

* examples: Fetch and decode block extrinsics

Signed-off-by: Alexandru Vasile <[email protected]>

* Fix clippy

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics: Fetch pallet and variant index

Signed-off-by: Alexandru Vasile <[email protected]>

* subxt: Move extrinsics on the subxt::blocks

Signed-off-by: Alexandru Vasile <[email protected]>

* example: Adjust example

Signed-off-by: Alexandru Vasile <[email protected]>

* metadata: Collect ExtrinsicMetadata

Signed-off-by: Alexandru Vasile <[email protected]>

* subxt: Implement StaticExtrinsic for the calls

Signed-off-by: Alexandru Vasile <[email protected]>

* Adjust examples

Signed-off-by: Alexandru Vasile <[email protected]>

* codegen: Add root level Call enum

Signed-off-by: Alexandru Vasile <[email protected]>

* Adjust testing

Signed-off-by: Alexandru Vasile <[email protected]>

* subxt: Add new decode interface

Signed-off-by: Alexandru Vasile <[email protected]>

* subxt: Merge ExtrinsicError with BlockError

Signed-off-by: Alexandru Vasile <[email protected]>

* examples: Find first extrinsic

Signed-off-by: Alexandru Vasile <[email protected]>

* Move code to extrinsic_types

Signed-off-by: Alexandru Vasile <[email protected]>

* Add Extrinsic struct

Signed-off-by: Alexandru Vasile <[email protected]>

* Adjust examples

Signed-off-by: Alexandru Vasile <[email protected]>

* test: Decode extinsics

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/test: Add fake metadata for static decoding

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/test: Decode from insufficient bytes

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/test: Check unsupported versions

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/test: Statically decode to root and pallet enums

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/tests: Remove clones

Signed-off-by: Alexandru Vasile <[email protected]>

* blocks: Fetch block body inline

Signed-off-by: Alexandru Vasile <[email protected]>

* blocks: Rename ExtrinsicIds to ExtrinsicPartTypeIds

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics/test: Check decode as_extrinsic

Signed-off-by: Alexandru Vasile <[email protected]>

* blocks: Remove InsufficientData error

Signed-off-by: Alexandru Vasile <[email protected]>

* blocks: Return error from extrinsic_metadata

Signed-off-by: Alexandru Vasile <[email protected]>

* extrinsics: Postpone decoding of call bytes

Signed-off-by: Alexandru Vasile <[email protected]>

* metadata_type: Rename variables

Signed-off-by: Alexandru Vasile <[email protected]>

* Adjust calls path for example and tests

Signed-off-by: Alexandru Vasile <[email protected]>

* examples: Remove traces

Signed-off-by: Alexandru Vasile <[email protected]>

* book: Add extrinsics documentation

Signed-off-by: Alexandru Vasile <[email protected]>

* book: Improve extrinsics docs

Signed-off-by: Alexandru Vasile <[email protected]>

---------

Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: James Wilson <[email protected]>

* change doc comments

* add constants exploration

* add storage access interface but not done yet

* add storage exploration

* formatting

* remove dbg

* some small tweaks

* fix formatting and scale value for storage

* split up files, sort entries, change formatting

* fmt and clippy fix

* fix minor formatting issue

* implement suggestions

* implement other suggestion, fix bug

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: James Wilson <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants