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

Runtime: Enumeratable accounts #185

Closed
gavofyork opened this issue May 30, 2018 · 1 comment · Fixed by #195
Closed

Runtime: Enumeratable accounts #185

gavofyork opened this issue May 30, 2018 · 1 comment · Fixed by #195
Assignees
Labels
J0-enhancement An additional feature request. Z3-substantial Can be fixed by an experienced coder with a working knowledge of the codebase.

Comments

@gavofyork
Copy link
Member

gavofyork commented May 30, 2018

Necessary for making any account-upgrade runtime patch work cleanly (and other things like state-cleaners).

Two ways come to mind (there may be other) that need careful consideration before implementation:

  1. Doubly linked list - every extant account references one before and one after. An extra 2 * 32 bytes per account entry. Constant increase of 64 bytes for every account. Account creation and removal need 2 extra key lookups/changes, but traversal needs no extra and no new keys need be stored.
  2. Indexed lookup - every extant account is enumerated in a lookup. Needs an extra (index) key to be stored per account, which would be 8 bytes mapping to 32 bytes. On-chain account traversal would need an extra lookup per iteration. Creation would need two extra storage alterations; removal would need one extra removal only. This comes with the added bonus of having a means to reduce transaction size by encoding any AccountIds with just the index.

Option 2 could be optimised by chunking (e.g. indexing 1024 at a time), thereby reducing the amortised lookups to 1 per iteration in on-chain enumeration and the amortised changes to 1 per account creation.

A further optimisation available with either option would be to use e.g. a 16 bit prefix from the account to create multiple independent enumerations, thereby potentially allowing extrinsic parallelism even when extrinsics create new accounts.

@gavofyork gavofyork added J0-enhancement An additional feature request. M4-core Z3-substantial Can be fixed by an experienced coder with a working knowledge of the codebase. labels May 30, 2018
@gavofyork gavofyork added this to the PoC-2 (Co-finalisation) milestone May 30, 2018
@gavofyork gavofyork self-assigned this May 30, 2018
@gavofyork
Copy link
Member Author

gavofyork commented Jun 1, 2018

@arkpar @rphmeier any comments over which of these is preferable? I'd generally go for (2) since the bonus of having a means to drastically reduce AccountId size in extrinsics (and therefore IRL) is rather desirable.

@gavofyork gavofyork mentioned this issue Jun 1, 2018
16 tasks
@gavofyork gavofyork changed the title Enumeratable accounts Runtime: Enumeratable accounts Jun 12, 2018
lamafab pushed a commit to lamafab/substrate that referenced this issue Jun 16, 2020
* Rebuild runtime

* Remove invalid value from chainspec (paritytech#68)

* service: use grandpa block import for locally sealed aura blocks (paritytech#85)

* bump version to v0.3.1

* Update lock file.

* limit number of transactions when building blocks (paritytech#91)

* Update to latest Substrate

* Bump to 0.3.2

* Actually bump.

* v0.3.2 (paritytech#98)

* bump substrate version

* fix polkadot-collator

* point to alexander-backports of substrate

* bump version

* cli: fix node shutdown (paritytech#100)

* update to latest substrate, change to v0.3.4

* update to latest substrate, bump version to 0.3.5

* v0.3.6

* try to build on every v0.3 commit and update alexander-backports

* bump to v0.3.7

* bump to 0.3.8

* Bump to 0.3.9: network and pruning improvements

* Bump to 0.3.10: reduce network bandwidth usage

* Use libp2p-kad 0.3.2 (paritytech#122)

* Bump libp2p-identify to 0.3.1 (paritytech#123)

* Bump to 0.3.12 (paritytech#127)

* Update Substrate again (paritytech#128)

* update substrate and bump version to v0.3.13

* bump version to v0.3.14: fix --reserved-nodes

* add a manually curated grandpa module (paritytech#136)

* updating v0.3 to use substrate v0.10 (paritytech#146)

* updating to latest substrate v0.10

* better handling of outer poll

* nit

* fix tests

* remove comment

* reduce indentation

* use self.poll

* bring oneshot into scope

* spaces

* wrap

* remove match

* wrap

* Update primitives/Cargo.toml

Co-Authored-By: gterzian <[email protected]>

* Update runtime/wasm/Cargo.toml

Co-Authored-By: gterzian <[email protected]>

* Update runtime/wasm/Cargo.toml

Co-Authored-By: gterzian <[email protected]>

* Update test-parachains/adder/collator/src/main.rs

Co-Authored-By: gterzian <[email protected]>

* indent

* add paranthese

* config: fix wrong ip for alexander bootnode (paritytech#161)

* fix curated-grandpa and rebuild wasm (paritytech#162)

* [v0.3] Integrates new gossip system into Polkadot (paritytech#166)

* new gossip validation in network

* integrate new gossip into service

* network: guard validation network future under exit signal (paritytech#168)

* bump version to v0.3.15: substrate v0.10

* [v0.3] update to substrate master (paritytech#175)

* update to substrate master

* fix test

* service: fix telemetry endpoints on alexander chainspec (paritytech#169) (paritytech#178)

* Update v0.3 to latest Substrate master (paritytech#177)

* update substrate v0.3 to latest master

* bump spec version

* update to latest master: remove fees module

* update runtime blobs

* bump version to 0.3.16

* replace sr25519 accountid with anysigner

* bump version to v0.3.17

* Some PoC-3 GRANDPA tweaks (paritytech#181)

* call on_finalise after triggering curated_grandpa change

* make grandpa rounds shorter for faster finalization

* use authorities when calculating duty roster (paritytech#185)

* [v0.3] Update to substrate master (paritytech#183)

* update to latest substrate master

* bump version to 0.3.18

* update to latest substrate master

* bump spec version

* update runtime wasm blobs

* remove current_offline_slash from chain spec

* update to substrate master: bump version to v0.3.19 (paritytech#188)

* update to substrate master: bump version to v0.3.19

libp2p network improvements

* network: replace NodeIndex with PeerId

* network: fix tests

* polkadot v0.3.20 (paritytech#190)

* update to substrate master: bump version to 0.3.20

* runtime: add offchain worker trait

* runtime: rebuild wasm blobs

* bump spec version (paritytech#191)

* Fix compilation

* Update version to 0.4.0

* Switch to use `polkadot-master` branch from substrate

* Remove unused struct

* Remove `grandpa::SyncedAuthorities` from `OnSessionChange`
JoshOrndorff pushed a commit to moonbeam-foundation/substrate that referenced this issue Apr 21, 2021
* Better support for GasWeightMapping u32

* Fix typo
liuchengxu added a commit to chainx-org/substrate that referenced this issue Aug 23, 2021
* Initial commit

* Pass tests

* Apply check_fee

* Accelerable?

* Pass tests

* Clean up

* Update wasm

* Nits

* Fix issue that acc only exists in signed extrinsic

* Update wasm

* Don't use expect in runtime

* 2019

* Wasm

* fix trait params
liuchengxu added a commit to chainx-org/substrate that referenced this issue Aug 23, 2021
* Refactor cli logger

* Update docs

* .

* Renaming

* Naming

* Nits
liuchengxu pushed a commit to autonomys/substrate that referenced this issue Jun 3, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
J0-enhancement An additional feature request. Z3-substantial Can be fixed by an experienced coder with a working knowledge of the codebase.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant