From a25031f06ed74ac434e1c5053a6dc66232b26716 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 14 Nov 2019 16:57:17 +0100 Subject: [PATCH 1/2] Add Polkadot AuthorityDiscovery session keys --- packages/types/src/interfaces/session/definitions.ts | 4 ++-- packages/types/src/interfaces/session/types.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/types/src/interfaces/session/definitions.ts b/packages/types/src/interfaces/session/definitions.ts index 6878c1a82b7a..31b592193a33 100644 --- a/packages/types/src/interfaces/session/definitions.ts +++ b/packages/types/src/interfaces/session/definitions.ts @@ -19,8 +19,8 @@ const keyTypes = { // For substrate: Grandpa, Babe, ImOnline, AuthorityDiscovery SessionKeysSubstrate: 'SessionKeys4', - // For polkadot: Grandpa, Babe, ImOnline, Parachains - SessionKeysPolkadot: 'SessionKeys4' + // For polkadot: Grandpa, Babe, ImOnline, Parachains, AuthorityDiscovery + SessionKeysPolkadot: 'SessionKeys5' }; export default { diff --git a/packages/types/src/interfaces/session/types.ts b/packages/types/src/interfaces/session/types.ts index d037093e3fdc..2759beb5a978 100644 --- a/packages/types/src/interfaces/session/types.ts +++ b/packages/types/src/interfaces/session/types.ts @@ -27,8 +27,8 @@ export interface SessionKeys4 extends ITuple<[AccountId, AccountId, AccountId, A /** ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> */ export interface SessionKeys5 extends ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> {} -/** SessionKeys4 */ -export interface SessionKeysPolkadot extends SessionKeys4 {} +/** SessionKeys5 */ +export interface SessionKeysPolkadot extends SessionKeys5 {} /** SessionKeys4 */ export interface SessionKeysSubstrate extends SessionKeys4 {} From 046e087795419ae861f169db77f416770095de72 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 27 Nov 2019 21:38:58 +0100 Subject: [PATCH 2/2] SessionKey5 based on CC3 specVersion --- packages/api/src/base/typeInjector.ts | 10 ++++++++-- packages/types/src/interfaceRegistry.ts | 17 ++++++++++------- .../src/interfaces/session/definitions.ts | 18 +++++++++--------- packages/types/src/interfaces/session/types.ts | 17 ++++++++++------- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/packages/api/src/base/typeInjector.ts b/packages/api/src/base/typeInjector.ts index 49a4a528568e..4344e7062316 100644 --- a/packages/api/src/base/typeInjector.ts +++ b/packages/api/src/base/typeInjector.ts @@ -19,9 +19,15 @@ interface VersionedType { // definition as applicable. (4 keys in substrate vs 5 in Polkadot/CC3). const TYPES_POLKADOT_VERSIONED: VersionedType[] = [ { - minmax: [0, undefined], + minmax: [0, 1018], // CC2 types: { - Keys: 'SessionKeysPolkadot' + Keys: 'SessionKeys4' + } + }, + { + minmax: [1019, undefined], // CC3 + types: { + Keys: 'SessionKeys5' } } ]; diff --git a/packages/types/src/interfaceRegistry.ts b/packages/types/src/interfaceRegistry.ts index 966e8b473c49..e5c8671234e4 100644 --- a/packages/types/src/interfaceRegistry.ts +++ b/packages/types/src/interfaceRegistry.ts @@ -18,7 +18,7 @@ import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV import { AuthorityIndex, AuthorityList, AuthorityWeight, NextAuthority, PendingPause, PendingResume, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa'; import { AuthIndex, AuthoritySignature, Heartbeat, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import { Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; -import { FullIdentification, IdentificationTuple, Keys, SessionIndex, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeysPolkadot, SessionKeysSubstrate } from '@polkadot/types/interfaces/session'; +import { FullIdentification, IdentificationTuple, Keys, SessionIndex, SessionKeys1, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6 } from '@polkadot/types/interfaces/session'; import { EraIndex, EraPoints, EraRewards, Exposure, Forcing, IndividualExposure, MomentOf, Nominations, Points, RewardDestination, SlashJournalEntry, SlashingSpans, SpanIndex, SpanRecord, StakingLedger, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorPrefs, ValidatorPrefs0to145 } from '@polkadot/types/interfaces/staking'; import { DigestOf, DispatchError, Event, EventId, EventIndex, EventRecord, EventRecord0to76, Key, Phase } from '@polkadot/types/interfaces/system'; import { TreasuryProposal } from '@polkadot/types/interfaces/treasury'; @@ -574,6 +574,12 @@ export interface InterfaceRegistry { Keys: Keys; 'Option': Option; 'Vec': Vec; + SessionKeys1: SessionKeys1; + 'Option': Option; + 'Vec': Vec; + SessionKeys2: SessionKeys2; + 'Option': Option; + 'Vec': Vec; SessionKeys3: SessionKeys3; 'Option': Option; 'Vec': Vec; @@ -583,12 +589,9 @@ export interface InterfaceRegistry { SessionKeys5: SessionKeys5; 'Option': Option; 'Vec': Vec; - SessionKeysSubstrate: SessionKeysSubstrate; - 'Option': Option; - 'Vec': Vec; - SessionKeysPolkadot: SessionKeysPolkadot; - 'Option': Option; - 'Vec': Vec; + SessionKeys6: SessionKeys6; + 'Option': Option; + 'Vec': Vec; FullIdentification: FullIdentification; 'Option': Option; 'Vec': Vec; diff --git a/packages/types/src/interfaces/session/definitions.ts b/packages/types/src/interfaces/session/definitions.ts index 31b592193a33..05c1dcfb3f2e 100644 --- a/packages/types/src/interfaces/session/definitions.ts +++ b/packages/types/src/interfaces/session/definitions.ts @@ -8,19 +8,19 @@ // pub struct SessionKeys { // Here we revert to tuples to keep the interfaces "opaque", as per the use const keyTypes = { - // default to Substrate - Keys: 'SessionKeysSubstrate', + // default to Substrate master defaults, 4 keys (polkadot master, 5 keys) + Keys: 'SessionKeys4', - // shortcuts for 3, 4 & 5 key tuples + // shortcuts for 1, 2, 3, 4, 5 & 6 key tuples + SessionKeys1: '(AccountId)', + SessionKeys2: '(AccountId, AccountId)', + // older substrate master SessionKeys3: '(AccountId, AccountId, AccountId)', + // CC2, Substrate master SessionKeys4: '(AccountId, AccountId, AccountId, AccountId)', + // CC3 SessionKeys5: '(AccountId, AccountId, AccountId, AccountId, AccountId)', - - // For substrate: Grandpa, Babe, ImOnline, AuthorityDiscovery - SessionKeysSubstrate: 'SessionKeys4', - - // For polkadot: Grandpa, Babe, ImOnline, Parachains, AuthorityDiscovery - SessionKeysPolkadot: 'SessionKeys5' + SessionKeys6: '(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)' }; export default { diff --git a/packages/types/src/interfaces/session/types.ts b/packages/types/src/interfaces/session/types.ts index 2759beb5a978..3cd6add6bb22 100644 --- a/packages/types/src/interfaces/session/types.ts +++ b/packages/types/src/interfaces/session/types.ts @@ -12,12 +12,18 @@ export interface FullIdentification extends Exposure {} /** ITuple<[ValidatorId, FullIdentification]> */ export interface IdentificationTuple extends ITuple<[ValidatorId, FullIdentification]> {} -/** SessionKeysSubstrate */ -export interface Keys extends SessionKeysSubstrate {} +/** SessionKeys4 */ +export interface Keys extends SessionKeys4 {} /** u32 */ export interface SessionIndex extends u32 {} +/** AccountId */ +export interface SessionKeys1 extends AccountId {} + +/** ITuple<[AccountId, AccountId]> */ +export interface SessionKeys2 extends ITuple<[AccountId, AccountId]> {} + /** ITuple<[AccountId, AccountId, AccountId]> */ export interface SessionKeys3 extends ITuple<[AccountId, AccountId, AccountId]> {} @@ -27,8 +33,5 @@ export interface SessionKeys4 extends ITuple<[AccountId, AccountId, AccountId, A /** ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> */ export interface SessionKeys5 extends ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> {} -/** SessionKeys5 */ -export interface SessionKeysPolkadot extends SessionKeys5 {} - -/** SessionKeys4 */ -export interface SessionKeysSubstrate extends SessionKeys4 {} +/** ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId, AccountId]> */ +export interface SessionKeys6 extends ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId, AccountId]> {}