diff --git a/packages/ckb-sdk-rpc/__tests__/formatters/result.json b/packages/ckb-sdk-rpc/__tests__/formatters/result.json index 31119b84..79e61b76 100644 --- a/packages/ckb-sdk-rpc/__tests__/formatters/result.json +++ b/packages/ckb-sdk-rpc/__tests__/formatters/result.json @@ -779,40 +779,42 @@ "toHeader": [ { "source": { - "difficulty": "0x100", - "hash": "0xe5f2d07b747f38718293987a9175764d4c03229a8a69d0bd48f7bea6c18930b1", - "number": "2", + "dao": "0x01000000000000000000c16ff286230000203d88792d0000000961f400000000", + "difficulty": "0x3e8", "epoch": "0", - "parent_hash": "0xa1dba96cdebaa25f2be69316c943269e23c23fcc6e90eedd94ecd88b43f77170", + "hash": "0xba0d878d2c3711d38b5ddc2bc917312ca3898cad98457cc7960e28ec31f26e7f", + "number": "1024", + "parent_hash": "0x3533d5f0882a60d3b25b7dd57002a5d9eb591e89a98231e8abc5bf48f7ee0592", "proposals_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "seal": { - "nonce": "9828930232171500901", - "proof": "0x7408000066230000942c00004735000028420000f046000059550000d56200005f640000f96a000043730000d3750000" + "nonce": "0", + "proof": "0x" }, - "timestamp": "1556199760706", - "transactions_root": "0x8027376875e45318ed469bed6314408e8f1986de246cbd03a786b69073c948b8", + "timestamp": "1557311767", + "transactions_root": "0x81389ffabda2d1658c75a81e390a82b335d4cb849b2269d134b042fea9cb9513", "uncles_count": "0", "uncles_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "version": "0", - "witnesses_root": "0x0000000000000000000000000000000000000000000000000000000000000000" + "witnesses_root": "0xb36423f72fd5cdbf6297c189b9d74e970bf0b971a537f41b8334088afe27900a" }, "target": { - "difficulty": "0x100", - "hash": "0xe5f2d07b747f38718293987a9175764d4c03229a8a69d0bd48f7bea6c18930b1", - "number": "2", + "dao": "0x01000000000000000000c16ff286230000203d88792d0000000961f400000000", + "difficulty": "0x3e8", "epoch": "0", - "parentHash": "0xa1dba96cdebaa25f2be69316c943269e23c23fcc6e90eedd94ecd88b43f77170", + "hash": "0xba0d878d2c3711d38b5ddc2bc917312ca3898cad98457cc7960e28ec31f26e7f", + "number": "1024", + "parentHash": "0x3533d5f0882a60d3b25b7dd57002a5d9eb591e89a98231e8abc5bf48f7ee0592", "proposalsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "seal": { - "nonce": "9828930232171500901", - "proof": "0x7408000066230000942c00004735000028420000f046000059550000d56200005f640000f96a000043730000d3750000" + "nonce": "0", + "proof": "0x" }, - "timestamp": "1556199760706", - "transactionsRoot": "0x8027376875e45318ed469bed6314408e8f1986de246cbd03a786b69073c948b8", + "timestamp": "1557311767", + "transactionsRoot": "0x81389ffabda2d1658c75a81e390a82b335d4cb849b2269d134b042fea9cb9513", "unclesCount": "0", "unclesHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "version": "0", - "witnessesRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + "witnessesRoot": "0xb36423f72fd5cdbf6297c189b9d74e970bf0b971a537f41b8334088afe27900a" } } ], @@ -1067,6 +1069,42 @@ } ] } + ], + "toBannedAddress": [ + { + "source": { + "address": "192.168.0.2/32", + "ban_reason": "", + "ban_until": "1840546800000", + "created_at": "1562803123000" + }, + "target": { + "address": "192.168.0.2/32", + "banReason": "", + "banUntil": "1840546800000", + "createdAt": "1562803123000" + } + } + ], + "toBannedAddresses": [ + { + "source": [ + { + "address": "192.168.0.2/32", + "ban_reason": "", + "ban_until": "1840546800000", + "created_at": "1562803123000" + } + ], + "target": [ + { + "address": "192.168.0.2/32", + "banReason": "", + "banUntil": "1840546800000", + "createdAt": "1562803123000" + } + ] + } ] }, "failure": {} diff --git a/packages/ckb-sdk-rpc/src/defaultRPC.ts b/packages/ckb-sdk-rpc/src/defaultRPC.ts index e3d31d7a..5ca8f87b 100644 --- a/packages/ckb-sdk-rpc/src/defaultRPC.ts +++ b/packages/ckb-sdk-rpc/src/defaultRPC.ts @@ -131,6 +131,12 @@ const defaultRPC: CKBComponents.Method[] = [ paramsFormatters: [paramsFmts.toHash], resultFormatters: resultFmts.toLockHashIndexState, }, + { + name: 'getBannedAddresses', + method: 'get_banned_addresses', + paramsFormatters: [], + resultFormatters: resultFmts.toBannedAddresses, + }, ] export class DefaultRPC { @@ -364,6 +370,8 @@ export class DefaultRPC { lockHash: CKBComponents.Hash, indexFrom?: CKBComponents.BlockNumber ) => Promise + + public getBannedAddresses!: () => Promise } export default DefaultRPC diff --git a/packages/ckb-sdk-rpc/src/resultFormatter.ts b/packages/ckb-sdk-rpc/src/resultFormatter.ts index 240f4f69..6214f851 100644 --- a/packages/ckb-sdk-rpc/src/resultFormatter.ts +++ b/packages/ckb-sdk-rpc/src/resultFormatter.ts @@ -237,6 +237,20 @@ const formatter = { if (!states) return states return states.map(formatter.toLockHashIndexState) }, + toBannedAddress: (bannedAddress: CKB_RPC.BannedAddress): CKBComponents.BannedAddress => { + if (!bannedAddress) return bannedAddress + const { ban_reason: banReason, ban_until: banUntil, created_at: createdAt, ...rest } = bannedAddress + return { + banReason, + banUntil, + createdAt, + ...rest, + } + }, + toBannedAddresses: (bannedAddresses: CKB_RPC.BannedAddresses): CKBComponents.BannedAddresses => { + if (!bannedAddresses) return bannedAddresses + return bannedAddresses.map(banAddr => formatter.toBannedAddress(banAddr)) + }, } export default formatter diff --git a/packages/ckb-sdk-rpc/types/CKB_RPC/index.d.ts b/packages/ckb-sdk-rpc/types/CKB_RPC/index.d.ts index 92f65081..123002a5 100644 --- a/packages/ckb-sdk-rpc/types/CKB_RPC/index.d.ts +++ b/packages/ckb-sdk-rpc/types/CKB_RPC/index.d.ts @@ -185,5 +185,13 @@ declare module CKB_RPC { } export type LockHashIndexStates = LockHashIndexState[] + + export interface BannedAddress { + address: string + ban_reason: string + ban_until: Timestamp + created_at: Timestamp + } + export type BannedAddresses = BannedAddress[] } /* eslint-enable camelcase */ diff --git a/packages/ckb-types/index.d.ts b/packages/ckb-types/index.d.ts index 75228411..ac22dbd1 100644 --- a/packages/ckb-types/index.d.ts +++ b/packages/ckb-types/index.d.ts @@ -328,4 +328,13 @@ declare namespace CKBComponents { } export type LockHashIndexStates = LockHashIndexState[] + + export interface BannedAddress { + address: string + banReason: string + banUntil: Timestamp + createdAt: Timestamp + } + + export type BannedAddresses = BannedAddress[] }