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

feat: add support for relay chain #553

Merged
merged 14 commits into from
Aug 23, 2023
Merged

Conversation

ntn-x2
Copy link
Member

@ntn-x2 ntn-x2 commented Aug 23, 2023

Builds on the new state proofs by adding support for a relay chain to be a consumer with the new ChildParachainDipStateProof and DipChildProviderStateProofVerifier types. Some traits and types have also been renamed.

The new feature has been tested with a local Rococo 0.9.43 deployment, and can be reproduced by download and compiling our Polkadot fork at the demo-sub0-23 tag.

This PR also adds the postit pallet that was written for the Decoded demo, and uses that instead of the lookup pallet as an example pallet integrating DIP.

@ntn-x2 ntn-x2 self-assigned this Aug 23, 2023
@ntn-x2
Copy link
Member Author

ntn-x2 commented Aug 23, 2023

Merging it in the state proof PR, and will be reviewed altogether as part of that PR.

@ntn-x2 ntn-x2 merged commit 9cbbd54 into aa/state-proofs Aug 23, 2023
3 checks passed
@ntn-x2 ntn-x2 deleted the aa/relaychain-support branch August 23, 2023 09:48
ntn-x2 added a commit to KILTprotocol/kilt-did-utilities that referenced this pull request Aug 23, 2023
Companion of KILTprotocol/kilt-node#553.

CLI changed from `yarn dip-sign` to `yarn dip-sign:sibling` and `yarn
dip-sign:parent`.
ntn-x2 added a commit that referenced this pull request Sep 20, 2023
Fixes KILTprotocol/ticket#2730.

This PR introduces a new way of doing cross-chain identity bridging for
the same consensus system: state proofs. Few points make this solution
better than the previous XCM-based approach:

1. No need to anchor the commitment to each destination via XCM. The
commitment happens once on the provider chain and can be used everywhere
else.
2. No need to establish HRMP channels between the provider and the
relying party chain.
3. No outdated information. State proofs guarantee that always the
latest value of the commitment is used by the relying party. Of course
the identity info can still change without the commitment be updated,
but this is easily solvable by batching the commitment update together
with the operations where the identity bits change.

Few TODOs are present, and they will be addressed in next PRs.

## Main changes

* The overarching `MerkleProofAndDidSignatureVerifier` has been renamed
to `DipSiblingProviderStateProofVerifier`, with a bunch of additional
generics to make it agnostic over who the provider is, and also who the
relaychain is (e.g., Polkadot, Kusama, Rococo).
* The `process_identity_action` has been completely removed from the
`pallet-dip-consumer` pallet, since XCM is not required anymore
* Identity commitments are now stored on the **provider** chain rather
than the relying party chain.
* The `commit_identity` extrinsic also only has the identifier now,
without the need to specify `destination`, `asset` and `weight` since an
identity commitment is now usable everywhere by design.
* A new pallet `pallet-relay-store` which is meant to be used in
conjunction with the `pallet-dip-consumer` and that stores the last N
relay chain state roots, against which state proofs can be verified.
Relay chain state roots are stored in the `on_finalize`, before they are
cleaned by the `on_finalize` of the `cumulus-pallet-parachain-system`.

### Additions from the relaychain PR
(#553)

* A new `ChildParachainDipStateProof` and
`DipChildProviderStateProofVerifier` to be deployed on the relaychain to
start accepting DIP operations
* `SiblingParachainHeadProofVerifier` renamed to
`ParachainHeadProofVerifier`
* `KiltDipCommitmentsForDipProviderPallet` does not exist anymore, and
it's been replaced by `ProviderParachainStateInfoViaProviderPallet`,
which depends on the provider `Runtime` enum
* A new `HistoricalBlockRegistry` trait to be implemented by the
relaychain to provide historic block hashes against which DIP proofs can
be verified
* The `postit` pallet has been ported over from the Decoded demo branch,
and used instead of the lookup pallet to showcase DIP capabilities

## How to switch

- Remove all the XCM-related pallets from both provider and consumer
runtime templates
- Add the `pallet-relay-store` pallet to the consumer runtime template,
and configure all traits as needed
ntn-x2 added a commit that referenced this pull request Dec 14, 2023
Feature branch for everything DIP. It will collect other PRs until we
are happy with the features, and will add the DIP to some of our
runtimes and merge this into `develop`.

## WIP Checklist for the open tasks for v1

- [x] Basic structure ->
#489
- [x] Merkleization of DID Documents ->
#492
- [x] `RuntimeCall` verification logic ->
#502
- [x] DID signature verification ->
#516
- [x] Add support for linked accounts and web3name ->
#525
- [x] Configurable origin for `commit_identity` ->
#526
- [x] Proper fee management ->
#528
- [x] Update to Polkadot 0.9.43 ->
c18a6ce
- [x] Replace XCM with state proofs ->
#543
- [x] Add support for relaychain consumer ->
#553 (part of
#543)
- [x] Proper error handling ->
#572
- [x] Add support for versioning ->
#573
- [x] Take deposits for identity commitments ->
#574
- [x] Expose common definitions usable by consumers ->
#577
- [x] Change ensure_signed! to configurable origin also for the
`dispatch_as` function ->
#577
- [x] Proper benchmarking and weights ->
#585
- [x] Comments and docs ->
#584
- [x] Revert Dockerfile changes in
#587
- [x] [OPTIONAL] Add support for Zombienet ->
#587
- [x] [OPTIONAL] Add chain spec loading from file for template runtimes
-> #587
- [x] Big, final review ->
#494 (review)
- [x] Improvements n.1 PR ->
#591
- [x] Improvements n.2 PR ->
#592
- [x] Add to Peregrine runtime ->
#594
- [ ] Deploy on Peregrine
- [ ] Unit tests
- [ ] Add to Spiritnet runtime
- [ ] Deploy on Spiritnet
- [ ] [OPTIONAL] Move DIP-related stuff into its own repo

---------

Co-authored-by: Adel Golghalyani <[email protected]>
Co-authored-by: Chris Chinchilla <[email protected]>
Co-authored-by: Albrecht <[email protected]>
webguru9178 pushed a commit to webguru9178/kilt-node that referenced this pull request Jan 8, 2024
Feature branch for everything DIP. It will collect other PRs until we
are happy with the features, and will add the DIP to some of our
runtimes and merge this into `develop`.

## WIP Checklist for the open tasks for v1

- [x] Basic structure ->
KILTprotocol/kilt-node#489
- [x] Merkleization of DID Documents ->
KILTprotocol/kilt-node#492
- [x] `RuntimeCall` verification logic ->
KILTprotocol/kilt-node#502
- [x] DID signature verification ->
KILTprotocol/kilt-node#516
- [x] Add support for linked accounts and web3name ->
KILTprotocol/kilt-node#525
- [x] Configurable origin for `commit_identity` ->
KILTprotocol/kilt-node#526
- [x] Proper fee management ->
KILTprotocol/kilt-node#528
- [x] Update to Polkadot 0.9.43 ->
KILTprotocol/kilt-node@c18a6ce
- [x] Replace XCM with state proofs ->
KILTprotocol/kilt-node#543
- [x] Add support for relaychain consumer ->
KILTprotocol/kilt-node#553 (part of
KILTprotocol/kilt-node#543)
- [x] Proper error handling ->
KILTprotocol/kilt-node#572
- [x] Add support for versioning ->
KILTprotocol/kilt-node#573
- [x] Take deposits for identity commitments ->
KILTprotocol/kilt-node#574
- [x] Expose common definitions usable by consumers ->
KILTprotocol/kilt-node#577
- [x] Change ensure_signed! to configurable origin also for the
`dispatch_as` function ->
KILTprotocol/kilt-node#577
- [x] Proper benchmarking and weights ->
KILTprotocol/kilt-node#585
- [x] Comments and docs ->
KILTprotocol/kilt-node#584
- [x] Revert Dockerfile changes in
KILTprotocol/kilt-node#587
- [x] [OPTIONAL] Add support for Zombienet ->
KILTprotocol/kilt-node#587
- [x] [OPTIONAL] Add chain spec loading from file for template runtimes
-> KILTprotocol/kilt-node#587
- [x] Big, final review ->
KILTprotocol/kilt-node#494 (review)
- [x] Improvements n.1 PR ->
KILTprotocol/kilt-node#591
- [x] Improvements n.2 PR ->
KILTprotocol/kilt-node#592
- [x] Add to Peregrine runtime ->
KILTprotocol/kilt-node#594
- [ ] Deploy on Peregrine
- [ ] Unit tests
- [ ] Add to Spiritnet runtime
- [ ] Deploy on Spiritnet
- [ ] [OPTIONAL] Move DIP-related stuff into its own repo

---------

Co-authored-by: Adel Golghalyani <[email protected]>
Co-authored-by: Chris Chinchilla <[email protected]>
Co-authored-by: Albrecht <[email protected]>
Ad96el added a commit that referenced this pull request Feb 7, 2024
Feature branch for everything DIP. It will collect other PRs until we
are happy with the features, and will add the DIP to some of our
runtimes and merge this into `develop`.

## WIP Checklist for the open tasks for v1

- [x] Basic structure ->
#489
- [x] Merkleization of DID Documents ->
#492
- [x] `RuntimeCall` verification logic ->
#502
- [x] DID signature verification ->
#516
- [x] Add support for linked accounts and web3name ->
#525
- [x] Configurable origin for `commit_identity` ->
#526
- [x] Proper fee management ->
#528
- [x] Update to Polkadot 0.9.43 ->
c18a6ce
- [x] Replace XCM with state proofs ->
#543
- [x] Add support for relaychain consumer ->
#553 (part of
#543)
- [x] Proper error handling ->
#572
- [x] Add support for versioning ->
#573
- [x] Take deposits for identity commitments ->
#574
- [x] Expose common definitions usable by consumers ->
#577
- [x] Change ensure_signed! to configurable origin also for the
`dispatch_as` function ->
#577
- [x] Proper benchmarking and weights ->
#585
- [x] Comments and docs ->
#584
- [x] Revert Dockerfile changes in
#587
- [x] [OPTIONAL] Add support for Zombienet ->
#587
- [x] [OPTIONAL] Add chain spec loading from file for template runtimes
-> #587
- [x] Big, final review ->
#494 (review)
- [x] Improvements n.1 PR ->
#591
- [x] Improvements n.2 PR ->
#592
- [x] Add to Peregrine runtime ->
#594
- [ ] Deploy on Peregrine
- [ ] Unit tests
- [ ] Add to Spiritnet runtime
- [ ] Deploy on Spiritnet
- [ ] [OPTIONAL] Move DIP-related stuff into its own repo

---------

Co-authored-by: Adel Golghalyani <[email protected]>
Co-authored-by: Chris Chinchilla <[email protected]>
Co-authored-by: Albrecht <[email protected]>
Ad96el added a commit that referenced this pull request Apr 2, 2024
Feature branch for everything DIP. It will collect other PRs until we
are happy with the features, and will add the DIP to some of our
runtimes and merge this into `develop`.

## WIP Checklist for the open tasks for v1

- [x] Basic structure ->
#489
- [x] Merkleization of DID Documents ->
#492
- [x] `RuntimeCall` verification logic ->
#502
- [x] DID signature verification ->
#516
- [x] Add support for linked accounts and web3name ->
#525
- [x] Configurable origin for `commit_identity` ->
#526
- [x] Proper fee management ->
#528
- [x] Update to Polkadot 0.9.43 ->
c18a6ce
- [x] Replace XCM with state proofs ->
#543
- [x] Add support for relaychain consumer ->
#553 (part of
#543)
- [x] Proper error handling ->
#572
- [x] Add support for versioning ->
#573
- [x] Take deposits for identity commitments ->
#574
- [x] Expose common definitions usable by consumers ->
#577
- [x] Change ensure_signed! to configurable origin also for the
`dispatch_as` function ->
#577
- [x] Proper benchmarking and weights ->
#585
- [x] Comments and docs ->
#584
- [x] Revert Dockerfile changes in
#587
- [x] [OPTIONAL] Add support for Zombienet ->
#587
- [x] [OPTIONAL] Add chain spec loading from file for template runtimes
-> #587
- [x] Big, final review ->
#494 (review)
- [x] Improvements n.1 PR ->
#591
- [x] Improvements n.2 PR ->
#592
- [x] Add to Peregrine runtime ->
#594
- [ ] Deploy on Peregrine
- [ ] Unit tests
- [ ] Add to Spiritnet runtime
- [ ] Deploy on Spiritnet
- [ ] [OPTIONAL] Move DIP-related stuff into its own repo

---------

Co-authored-by: Adel Golghalyani <[email protected]>
Co-authored-by: Chris Chinchilla <[email protected]>
Co-authored-by: Albrecht <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant