From 2cfd2f4d20b877b67fa227d09b09d9e667e953cf Mon Sep 17 00:00:00 2001 From: Jaco Date: Tue, 7 Sep 2021 10:43:52 +0300 Subject: [PATCH] DisputeState types (#3937) --- CHANGELOG.md | 1 + packages/types-known/src/modules.ts | 6 ++ packages/types/src/augment/registry.ts | 5 +- .../src/interfaces/parachains/definitions.ts | 74 +++++++++++-------- .../types/src/interfaces/parachains/types.ts | 20 +++++ 5 files changed, 75 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9ed409539..3f62a26fa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Changes: +- Additional types for parachain Disputes - Add Polkadot 9090 upgrade block diff --git a/packages/types-known/src/modules.ts b/packages/types-known/src/modules.ts index 34499b77bc..efffe7de37 100644 --- a/packages/types-known/src/modules.ts +++ b/packages/types-known/src/modules.ts @@ -48,6 +48,9 @@ const typesModules: Record = { inclusion: { ValidatorIndex: 'ParaValidatorIndex' }, + paraDisputes: { + ValidatorIndex: 'ParaValidatorIndex' + }, paraInclusion: { ValidatorIndex: 'ParaValidatorIndex' }, @@ -60,6 +63,9 @@ const typesModules: Record = { parachains: { Id: 'ParaId' }, + parasDisputes: { + ValidatorIndex: 'ParaValidatorIndex' + }, parasInclusion: { ValidatorIndex: 'ParaValidatorIndex' }, diff --git a/packages/types/src/augment/registry.ts b/packages/types/src/augment/registry.ts index 94289ecf67..87708b080e 100644 --- a/packages/types/src/augment/registry.ts +++ b/packages/types/src/augment/registry.ts @@ -36,7 +36,7 @@ import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMeta import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences'; -import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; +import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains'; import type { FeeDetails, InclusionFee, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; import type { Approvals } from '@polkadot/types/interfaces/poll'; import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/types/interfaces/proxy'; @@ -274,6 +274,9 @@ declare module '@polkadot/types/types/registry' { DispatchResult: DispatchResult; DispatchResultOf: DispatchResultOf; DispatchResultTo198: DispatchResultTo198; + DisputeLocation: DisputeLocation; + DisputeResult: DisputeResult; + DisputeState: DisputeState; DisputeStatement: DisputeStatement; DisputeStatementSet: DisputeStatementSet; DoubleEncodedCall: DoubleEncodedCall; diff --git a/packages/types/src/interfaces/parachains/definitions.ts b/packages/types/src/interfaces/parachains/definitions.ts index 95684cc801..e6a9d12b26 100644 --- a/packages/types/src/interfaces/parachains/definitions.ts +++ b/packages/types/src/interfaces/parachains/definitions.ts @@ -30,10 +30,54 @@ const cumulusTypes = { } }; +const disputeTypes = { + DisputeLocation: { + _enum: ['Local', 'Remote'] + }, + DisputeResult: { + _enum: ['Valid', 'Invalid'] + }, + DisputeState: { + validatorsFor: 'BitVec', + validatorsAgainst: 'BitVec', + start: 'BlockNumber', + concludedAt: 'Option' + }, + DisputeStatement: { + _enum: { + Valid: 'ValidDisputeStatementKind', + Invalid: 'InvalidDisputeStatementKind' + } + }, + DisputeStatementSet: { + candidateHash: 'CandidateHash', + session: 'SessionIndex', + statements: 'Vec<(DisputeStatement, ParaValidatorIndex, ValidatorSignature)>' + }, + ExplicitDisputeStatement: { + valid: 'bool', + candidateHash: 'CandidateHash', + session: 'SessionIndex' + }, + InvalidDisputeStatementKind: { + _enum: ['Explicit'] + }, + MultiDisputeStatementSet: 'Vec', + ValidDisputeStatementKind: { + _enum: { + Explicit: 'Null', + BackingSeconded: 'Hash', + BackingValid: 'Hash', + ApprovalChecking: 'Null' + } + } +}; + export default { rpc: {}, types: { ...cumulusTypes, + ...disputeTypes, ...hrmpTypes, ...proposeTypes, ...slotTypes, @@ -156,36 +200,6 @@ export default { Parachain: 'Null' } }, - DisputeStatementSet: { - candidateHash: 'CandidateHash', - session: 'SessionIndex', - statements: 'Vec<(DisputeStatement, ParaValidatorIndex, ValidatorSignature)>' - }, - MultiDisputeStatementSet: 'Vec', - DisputeStatement: { - _enum: { - Valid: 'ValidDisputeStatementKind', - Invalid: 'InvalidDisputeStatementKind' - } - }, - ValidDisputeStatementKind: { - _enum: { - Explicit: 'Null', - BackingSeconded: 'Hash', - BackingValid: 'Hash', - ApprovalChecking: 'Null' - } - }, - InvalidDisputeStatementKind: { - _enum: [ - 'Explicit' - ] - }, - ExplicitDisputeStatement: { - valid: 'bool', - candidateHash: 'CandidateHash', - session: 'SessionIndex' - }, DoubleVoteReport: { identity: 'ValidatorId', first: '(Statement, ValidatorSignature)', diff --git a/packages/types/src/interfaces/parachains/types.ts b/packages/types/src/interfaces/parachains/types.ts index a108054a2b..708ee56bb8 100644 --- a/packages/types/src/interfaces/parachains/types.ts +++ b/packages/types/src/interfaces/parachains/types.ts @@ -176,6 +176,26 @@ export interface CoreOccupied extends Enum { readonly isParachain: boolean; } +/** @name DisputeLocation */ +export interface DisputeLocation extends Enum { + readonly isLocal: boolean; + readonly isRemote: boolean; +} + +/** @name DisputeResult */ +export interface DisputeResult extends Enum { + readonly isValid: boolean; + readonly isInvalid: boolean; +} + +/** @name DisputeState */ +export interface DisputeState extends Struct { + readonly validatorsFor: BitVec; + readonly validatorsAgainst: BitVec; + readonly start: BlockNumber; + readonly concludedAt: Option; +} + /** @name DisputeStatement */ export interface DisputeStatement extends Enum { readonly isValid: boolean;