ed25519_verify: Support using dalek for historical blocks (#12661)
* ed25519_verify: Support using dalek for historical blocks The switch from `ed25519-dalek` to `ed25519-zebra` was actually a breaking change. `ed25519-zebra` is more permissive. To support historical blocks when syncing a chain this pull request introduces an externalities extension `UseDalekExt`. This extension is just used as a signaling mechanism to `ed25519_verify` to use `ed25519-dalek` when it is present. Together with `ExtensionBeforeBlock` it can be used to setup a node in way to sync historical blocks that require `ed25519-dalek`, because they included a transaction that verified differently as when using `ed25519-zebra`. This feature can be enabled in the following way. In the chain service file, directly after the client is created, the following code should be added: ``` use sc_client_api::ExecutorProvider; client.execution_extensions().set_extensions_factory( sc_client_api::execution_extensions::ExtensionBeforeBlock::<Block, sp_io::UseDalekExt>::new(BLOCK_NUMBER_UNTIL_DALEK_SHOULD_BE_USED) ); ``` * Fix doc * More fixes * Update client/api/src/execution_extensions.rs Co-authored-by:André Silva <123550+andresilva@users.noreply.github.com> * Fix merge and warning * Fix docs Co-authored-by:
André Silva <123550+andresilva@users.noreply.github.com>
Showing
- substrate/Cargo.lock 2 additions, 0 deletionssubstrate/Cargo.lock
- substrate/client/api/src/call_executor.rs 8 additions, 15 deletionssubstrate/client/api/src/call_executor.rs
- substrate/client/api/src/execution_extensions.rs 103 additions, 25 deletionssubstrate/client/api/src/execution_extensions.rs
- substrate/client/finality-grandpa/src/lib.rs 0 additions, 1 deletionsubstrate/client/finality-grandpa/src/lib.rs
- substrate/client/rpc/src/state/state_full.rs 0 additions, 1 deletionsubstrate/client/rpc/src/state/state_full.rs
- substrate/client/service/src/builder.rs 1 addition, 1 deletionsubstrate/client/service/src/builder.rs
- substrate/client/service/src/client/call_executor.rs 42 additions, 21 deletionssubstrate/client/service/src/client/call_executor.rs
- substrate/client/service/src/client/client.rs 17 additions, 18 deletionssubstrate/client/service/src/client/client.rs
- substrate/client/service/test/Cargo.toml 1 addition, 0 deletionssubstrate/client/service/test/Cargo.toml
- substrate/client/service/test/src/client/mod.rs 39 additions, 1 deletionsubstrate/client/service/test/src/client/mod.rs
- substrate/client/tracing/src/lib.rs 1 addition, 5 deletionssubstrate/client/tracing/src/lib.rs
- substrate/primitives/application-crypto/src/traits.rs 2 additions, 2 deletionssubstrate/primitives/application-crypto/src/traits.rs
- substrate/primitives/externalities/src/extensions.rs 21 additions, 1 deletionsubstrate/primitives/externalities/src/extensions.rs
- substrate/primitives/io/Cargo.toml 2 additions, 0 deletionssubstrate/primitives/io/Cargo.toml
- substrate/primitives/io/src/lib.rs 66 additions, 3 deletionssubstrate/primitives/io/src/lib.rs
- substrate/primitives/state-machine/src/lib.rs 3 additions, 1 deletionsubstrate/primitives/state-machine/src/lib.rs
- substrate/test-utils/client/src/lib.rs 5 additions, 5 deletionssubstrate/test-utils/client/src/lib.rs
- substrate/test-utils/runtime/src/lib.rs 12 additions, 0 deletionssubstrate/test-utils/runtime/src/lib.rs
Please register or sign in to comment