From 03581355bea88ea9330bd42c7830d36ee59ac480 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Tue, 30 Jul 2019 13:16:20 +0200 Subject: [PATCH] Add author_removeExtrinsic RPC (#1233) --- packages/type-jsonrpc/src/author.ts | 13 ++++++++++--- packages/types/src/interfaceRegistry.ts | 5 ++++- packages/types/src/interfaces/rpc/definitions.ts | 6 ++++++ packages/types/src/interfaces/rpc/types.ts | 14 +++++++++++++- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/packages/type-jsonrpc/src/author.ts b/packages/type-jsonrpc/src/author.ts index 5bf94d3585..f83386d04d 100644 --- a/packages/type-jsonrpc/src/author.ts +++ b/packages/type-jsonrpc/src/author.ts @@ -7,10 +7,17 @@ import { RpcMethodOpt } from './types'; import createMethod from './create/method'; import createParam from './create/param'; +const removeExtrinsic: RpcMethodOpt = { + description: 'Remove given extrinsic from the pool and temporarily ban it to prevent reimporting', + params: [ + createParam('bytesOrHash', 'Vec') + ], + type: 'Vec' +}; + const pendingExtrinsics: RpcMethodOpt = { description: 'Returns all pending extrinsics, potentially grouped by sender', params: [], - // @ts-ignore Yeap, the Vec here is fine type: 'Vec' }; @@ -20,12 +27,11 @@ const submitExtrinsic: RpcMethodOpt = { params: [ createParam('extrinsic', 'Extrinsic') ], - // @ts-ignore srml types type: 'Hash' }; const submitAndWatchExtrinsic: RpcMethodOpt = { - description: 'Subscribe and watch an extrinsic until unsubscribed', + description: 'Submit and subscribe to watch an extrinsic until unsubscribed', isSigned: true, params: [ createParam('extrinsic', 'Extrinsic') @@ -49,6 +55,7 @@ export default { description: 'Authoring of network items', section, methods: { + removeExtrinsic: createMethod(section, 'removeExtrinsic', removeExtrinsic), pendingExtrinsics: createMethod(section, 'pendingExtrinsics', pendingExtrinsics), submitExtrinsic: createMethod(section, 'submitExtrinsic', submitExtrinsic), submitAndWatchExtrinsic: createMethod(section, 'submitAndWatchExtrinsic', submitAndWatchExtrinsic) diff --git a/packages/types/src/interfaceRegistry.ts b/packages/types/src/interfaceRegistry.ts index c322608054..0e9da65653 100644 --- a/packages/types/src/interfaceRegistry.ts +++ b/packages/types/src/interfaceRegistry.ts @@ -20,7 +20,7 @@ import { AttestedCandidate, AuctionIndex, BalanceUpload, Bidder, CandidateReceip import { EraIndex, EraRewards, Exposure, IndividualExposure, MomentOf, RewardDestination, StakingLedger, UnlockChunk, ValidatorPrefs } from './interfaces/staking'; import { DigestOf, Event, EventId, EventIndex, EventRecord, EventRecord0to76, Key, Phase } from './interfaces/system'; import { TreasuryProposal } from './interfaces/treasury'; -import { ApiId, ChainProperties, ExtrinsicStatus, Health, KeyValueOption, NetworkState, PeerInfo, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from './interfaces/rpc'; +import { ApiId, ChainProperties, ExtrinsicOrHash, ExtrinsicStatus, Health, KeyValueOption, NetworkState, PeerInfo, RuntimeVersion, RuntimeVersionApi, StorageChangeSet } from './interfaces/rpc'; export interface InterfaceRegistry { bool: bool; @@ -576,6 +576,9 @@ export interface InterfaceRegistry { ChainProperties: ChainProperties; 'Option': Option; 'Vec': Vec; + ExtrinsicOrHash: ExtrinsicOrHash; + 'Option': Option; + 'Vec': Vec; ExtrinsicStatus: ExtrinsicStatus; 'Option': Option; 'Vec': Vec; diff --git a/packages/types/src/interfaces/rpc/definitions.ts b/packages/types/src/interfaces/rpc/definitions.ts index b6a7c49a1a..f942f25ed2 100644 --- a/packages/types/src/interfaces/rpc/definitions.ts +++ b/packages/types/src/interfaces/rpc/definitions.ts @@ -9,6 +9,12 @@ export default { tokenDecimals: 'u32', tokenSymbol: 'Text' }, + ExtrinsicOrHash: { + _enum: { + Hash: 'Hash', + Extrinsic: 'Bytes' + } + }, ExtrinsicStatus: { _enum: { Future: 'Null', diff --git a/packages/types/src/interfaces/rpc/types.ts b/packages/types/src/interfaces/rpc/types.ts index 701d4d9970..cf2b2ebbf6 100644 --- a/packages/types/src/interfaces/rpc/types.ts +++ b/packages/types/src/interfaces/rpc/types.ts @@ -2,7 +2,7 @@ import { Codec } from '../../types'; import { Enum, Option, Struct, Vec } from '../../codec'; -import { StorageKey, Text, bool, u32, u64, u8 } from '../../primitive'; +import { Bytes, StorageKey, Text, bool, u32, u64, u8 } from '../../primitive'; import { BlockNumber, Hash, StorageData } from '../runtime'; /** Vec */ @@ -16,6 +16,18 @@ export interface ChainProperties extends Struct { readonly tokenSymbol: Text; } +/** Enum */ +export interface ExtrinsicOrHash extends Enum { + /** 0:: Hash(Hash) */ + readonly isHash: boolean; + /** Hash */ + readonly asHash: Hash; + /** 1:: Extrinsic(Bytes) */ + readonly isExtrinsic: boolean; + /** Bytes */ + readonly asExtrinsic: Bytes; +} + /** Enum */ export interface ExtrinsicStatus extends Enum { /** 0:: Future */