Skip to content

Commit 8ed2bda

Browse files
authored
Add Polkadot AuthorityDiscovery session keys (#1573)
* Add Polkadot AuthorityDiscovery session keys * SessionKey5 based on CC3 specVersion
1 parent 2aabbe3 commit 8ed2bda

File tree

4 files changed

+37
-25
lines changed

4 files changed

+37
-25
lines changed

packages/api/src/base/typeInjector.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@ interface VersionedType {
1919
// definition as applicable. (4 keys in substrate vs 5 in Polkadot/CC3).
2020
const TYPES_POLKADOT_VERSIONED: VersionedType[] = [
2121
{
22-
minmax: [0, undefined],
22+
minmax: [0, 1018], // CC2
2323
types: {
24-
Keys: 'SessionKeysPolkadot'
24+
Keys: 'SessionKeys4'
25+
}
26+
},
27+
{
28+
minmax: [1019, undefined], // CC3
29+
types: {
30+
Keys: 'SessionKeys5'
2531
}
2632
}
2733
];

packages/types/src/interfaceRegistry.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV
1818
import { AuthorityIndex, AuthorityList, AuthorityWeight, NextAuthority, PendingPause, PendingResume, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';
1919
import { AuthIndex, AuthoritySignature, Heartbeat, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';
2020
import { Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
21-
import { FullIdentification, IdentificationTuple, Keys, SessionIndex, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeysPolkadot, SessionKeysSubstrate } from '@polkadot/types/interfaces/session';
21+
import { FullIdentification, IdentificationTuple, Keys, SessionIndex, SessionKeys1, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6 } from '@polkadot/types/interfaces/session';
2222
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';
2323
import { DigestOf, DispatchError, Event, EventId, EventIndex, EventRecord, EventRecord0to76, Key, Phase } from '@polkadot/types/interfaces/system';
2424
import { TreasuryProposal } from '@polkadot/types/interfaces/treasury';
@@ -574,6 +574,12 @@ export interface InterfaceRegistry {
574574
Keys: Keys;
575575
'Option<Keys>': Option<Keys>;
576576
'Vec<Keys>': Vec<Keys>;
577+
SessionKeys1: SessionKeys1;
578+
'Option<SessionKeys1>': Option<SessionKeys1>;
579+
'Vec<SessionKeys1>': Vec<SessionKeys1>;
580+
SessionKeys2: SessionKeys2;
581+
'Option<SessionKeys2>': Option<SessionKeys2>;
582+
'Vec<SessionKeys2>': Vec<SessionKeys2>;
577583
SessionKeys3: SessionKeys3;
578584
'Option<SessionKeys3>': Option<SessionKeys3>;
579585
'Vec<SessionKeys3>': Vec<SessionKeys3>;
@@ -583,12 +589,9 @@ export interface InterfaceRegistry {
583589
SessionKeys5: SessionKeys5;
584590
'Option<SessionKeys5>': Option<SessionKeys5>;
585591
'Vec<SessionKeys5>': Vec<SessionKeys5>;
586-
SessionKeysSubstrate: SessionKeysSubstrate;
587-
'Option<SessionKeysSubstrate>': Option<SessionKeysSubstrate>;
588-
'Vec<SessionKeysSubstrate>': Vec<SessionKeysSubstrate>;
589-
SessionKeysPolkadot: SessionKeysPolkadot;
590-
'Option<SessionKeysPolkadot>': Option<SessionKeysPolkadot>;
591-
'Vec<SessionKeysPolkadot>': Vec<SessionKeysPolkadot>;
592+
SessionKeys6: SessionKeys6;
593+
'Option<SessionKeys6>': Option<SessionKeys6>;
594+
'Vec<SessionKeys6>': Vec<SessionKeys6>;
592595
FullIdentification: FullIdentification;
593596
'Option<FullIdentification>': Option<FullIdentification>;
594597
'Vec<FullIdentification>': Vec<FullIdentification>;

packages/types/src/interfaces/session/definitions.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88
// pub struct SessionKeys {
99
// Here we revert to tuples to keep the interfaces "opaque", as per the use
1010
const keyTypes = {
11-
// default to Substrate
12-
Keys: 'SessionKeysSubstrate',
11+
// default to Substrate master defaults, 4 keys (polkadot master, 5 keys)
12+
Keys: 'SessionKeys4',
1313

14-
// shortcuts for 3, 4 & 5 key tuples
14+
// shortcuts for 1, 2, 3, 4, 5 & 6 key tuples
15+
SessionKeys1: '(AccountId)',
16+
SessionKeys2: '(AccountId, AccountId)',
17+
// older substrate master
1518
SessionKeys3: '(AccountId, AccountId, AccountId)',
19+
// CC2, Substrate master
1620
SessionKeys4: '(AccountId, AccountId, AccountId, AccountId)',
21+
// CC3
1722
SessionKeys5: '(AccountId, AccountId, AccountId, AccountId, AccountId)',
18-
19-
// For substrate: Grandpa, Babe, ImOnline, AuthorityDiscovery
20-
SessionKeysSubstrate: 'SessionKeys4',
21-
22-
// For polkadot: Grandpa, Babe, ImOnline, Parachains
23-
SessionKeysPolkadot: 'SessionKeys4'
23+
SessionKeys6: '(AccountId, AccountId, AccountId, AccountId, AccountId, AccountId)'
2424
};
2525

2626
export default {

packages/types/src/interfaces/session/types.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,18 @@ export interface FullIdentification extends Exposure {}
1212
/** ITuple<[ValidatorId, FullIdentification]> */
1313
export interface IdentificationTuple extends ITuple<[ValidatorId, FullIdentification]> {}
1414

15-
/** SessionKeysSubstrate */
16-
export interface Keys extends SessionKeysSubstrate {}
15+
/** SessionKeys4 */
16+
export interface Keys extends SessionKeys4 {}
1717

1818
/** u32 */
1919
export interface SessionIndex extends u32 {}
2020

21+
/** AccountId */
22+
export interface SessionKeys1 extends AccountId {}
23+
24+
/** ITuple<[AccountId, AccountId]> */
25+
export interface SessionKeys2 extends ITuple<[AccountId, AccountId]> {}
26+
2127
/** ITuple<[AccountId, AccountId, AccountId]> */
2228
export interface SessionKeys3 extends ITuple<[AccountId, AccountId, AccountId]> {}
2329

@@ -27,8 +33,5 @@ export interface SessionKeys4 extends ITuple<[AccountId, AccountId, AccountId, A
2733
/** ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> */
2834
export interface SessionKeys5 extends ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId]> {}
2935

30-
/** SessionKeys4 */
31-
export interface SessionKeysPolkadot extends SessionKeys4 {}
32-
33-
/** SessionKeys4 */
34-
export interface SessionKeysSubstrate extends SessionKeys4 {}
36+
/** ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId, AccountId]> */
37+
export interface SessionKeys6 extends ITuple<[AccountId, AccountId, AccountId, AccountId, AccountId, AccountId]> {}

0 commit comments

Comments
 (0)