diff --git a/CHANGELOG.md b/CHANGELOG.md index 17b477990a..425aca8778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,8 @@ Changes: - Cleanup `RpcCore` augmentation (removing TS warnings on typegen chains) - Add upgrade block for Kusama 2029 - Ensure that type alias overrides also apply to map keys -- check type generation against fallbacks (build-time only sanity check) +- Check type generation against fallbacks (build-time only sanity check) +- Add `mmr_generateProof` RPC - Align types with latest substrate master - Apply latest Polkadot auctions/crowdloan/parachains/slots types diff --git a/packages/api/src/augment/rpc.ts b/packages/api/src/augment/rpc.ts index db90e51714..2512617304 100644 --- a/packages/api/src/augment/rpc.ts +++ b/packages/api/src/augment/rpc.ts @@ -14,6 +14,7 @@ import type { CreatedBlock } from '@polkadot/types/interfaces/engine'; import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { EncodedFinalityProofs, JustificationNotification, ReportedRoundStates } from '@polkadot/types/interfaces/grandpa'; +import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; import type { RpcMethods } from '@polkadot/types/interfaces/rpc'; @@ -315,6 +316,12 @@ declare module '@polkadot/rpc-core/types.jsonrpc' { **/ subscribeJustifications: AugmentedRpc<() => Observable>; }; + mmr: { + /** + * Generate MMR proof for given leaf index. + **/ + generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; + }; net: { /** * Returns true if client is actively listening for network connections. Otherwise false. diff --git a/packages/types/src/augment/registry.ts b/packages/types/src/augment/registry.ts index 813ebabc55..148b418a09 100644 --- a/packages/types/src/augment/registry.ts +++ b/packages/types/src/augment/registry.ts @@ -30,6 +30,7 @@ import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudg import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery'; import type { DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV12, DoubleMapTypeV9, ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV9, MapTypeLatest, MapTypeV10, MapTypeV11, MapTypeV12, MapTypeV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV9, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV9, StorageMetadataLatest, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; +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, AbstractFungible, AbstractNonFungible, AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Balances, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, ConcreteFungible, ConcreteNonFungible, CoreAssignment, CoreIndex, CoreOccupied, DepositAsset, DepositReserveAsset, DoubleVoteReport, DownwardMessage, ExchangeAsset, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InitiateReserveWithdraw, InitiateTeleport, Junction, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiAsset, MultiLocation, NetworkId, NewBidder, Order, OriginKind, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueryHolding, QueuedParathread, RegisteredParachainInfo, RelayChainBlockNumber, RelayChainHash, RelayTo, RelayedFrom, Remark, ReserveAssetDeposit, Retriable, Scheduling, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, Statement, SubId, SystemInherentData, TeleportAsset, Transact, TransientValidationData, UpwardMessage, ValidationCode, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, WinnersData, WinnersDataTuple, WinningData, WinningDataEntry, WithdrawAsset, Xcm, XcmError, XcmResult } from '@polkadot/types/interfaces/parachains'; @@ -536,6 +537,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -1285,6 +1287,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -2034,6 +2037,7 @@ declare module '@polkadot/types/types/registry' { MetadataV11: MetadataV11; MetadataV12: MetadataV12; MetadataV9: MetadataV9; + MmrLeafProof: MmrLeafProof; ModuleConstantMetadataLatest: ModuleConstantMetadataLatest; ModuleConstantMetadataV10: ModuleConstantMetadataV10; ModuleConstantMetadataV11: ModuleConstantMetadataV11; diff --git a/packages/types/src/interfaces/definitions.ts b/packages/types/src/interfaces/definitions.ts index 83e24bb4a2..8fd3c0320f 100644 --- a/packages/types/src/interfaces/definitions.ts +++ b/packages/types/src/interfaces/definitions.ts @@ -24,6 +24,7 @@ export { default as grandpa } from './grandpa/definitions'; export { default as identity } from './identity/definitions'; export { default as imOnline } from './imOnline/definitions'; export { default as lottery } from './lottery/definitions'; +export { default as mmr } from './mmr/definitions'; export { default as offences } from './offences/definitions'; export { default as proxy } from './proxy/definitions'; export { default as recovery } from './recovery/definitions'; diff --git a/packages/types/src/interfaces/mmr/definitions.ts b/packages/types/src/interfaces/mmr/definitions.ts new file mode 100644 index 0000000000..2e20671dd5 --- /dev/null +++ b/packages/types/src/interfaces/mmr/definitions.ts @@ -0,0 +1,35 @@ +// Copyright 2017-2021 @polkadot/types authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// order important in structs... :) +/* eslint-disable sort-keys */ + +import type { Definitions } from '../../types'; + +export default { + rpc: { + generateProof: { + description: 'Generate MMR proof for given leaf index.', + params: [ + { + name: 'leafIndex', + type: 'u64' + }, + { + name: 'at', + type: 'BlockHash', + isHistoric: true, + isOptional: true + } + ], + type: 'MmrLeafProof' + } + }, + types: { + MmrLeafProof: { + blockHash: 'BlockHash', + leaf: 'Bytes', + proof: 'Bytes' + } + } +} as Definitions; diff --git a/packages/types/src/interfaces/mmr/index.ts b/packages/types/src/interfaces/mmr/index.ts new file mode 100644 index 0000000000..2d307291c3 --- /dev/null +++ b/packages/types/src/interfaces/mmr/index.ts @@ -0,0 +1,4 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +export * from './types'; diff --git a/packages/types/src/interfaces/mmr/types.ts b/packages/types/src/interfaces/mmr/types.ts new file mode 100644 index 0000000000..0082fa27da --- /dev/null +++ b/packages/types/src/interfaces/mmr/types.ts @@ -0,0 +1,14 @@ +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit +/* eslint-disable */ + +import type { Bytes, Struct } from '@polkadot/types'; +import type { BlockHash } from '@polkadot/types/interfaces/chain'; + +/** @name MmrLeafProof */ +export interface MmrLeafProof extends Struct { + readonly lockHash: BlockHash; + readonly leaf: Bytes; + readonly proof: Bytes; +} + +export type PHANTOM_MMR = 'mmr'; diff --git a/packages/types/src/interfaces/types.ts b/packages/types/src/interfaces/types.ts index de73ec22c2..081adfffa7 100644 --- a/packages/types/src/interfaces/types.ts +++ b/packages/types/src/interfaces/types.ts @@ -21,6 +21,7 @@ export * from './grandpa/types'; export * from './identity/types'; export * from './imOnline/types'; export * from './lottery/types'; +export * from './mmr/types'; export * from './offences/types'; export * from './proxy/types'; export * from './recovery/types';