diff --git a/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts b/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts
index 2d5850457786ce1f91b40284d31191807d491266..b7689eb87a2ff125b39026b171305b8496a764ac 100644
--- a/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts
+++ b/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts
@@ -23,6 +23,13 @@ export interface ForksDAO {
 
   getNextForkBlocks(number:number, hash:string): Promise<DBBlock[]>
 
+  /**
+   * Find any fork block whose number is between `numberStart` and `maxNumber`, both included, and whose medianTime is
+   * >= `medianTimeStart`.
+   * @param numberStart
+   * @param medianTimeStart
+   * @param maxNumber
+   */
   getPotentialForkBlocks(numberStart:number, medianTimeStart:number, maxNumber:number): Promise<DBBlock[]>
 
   removeForkBlock(number:number): Promise<void>
diff --git a/app/modules/dump.ts b/app/modules/dump.ts
index 721a65433d6e391cbd535aa1e6bd7f249bdf7f88..d959de94f7f2251ffb93014056429059e035e96b 100644
--- a/app/modules/dump.ts
+++ b/app/modules/dump.ts
@@ -21,6 +21,7 @@ import {Underscore} from "../lib/common-libs/underscore"
 import {dumpWotWizard} from "./dump/wotwizard/wotwizard.dump"
 import {OtherConstants} from "../lib/other_constants"
 import {Querable, querablep} from "../lib/common-libs/querable"
+import {dumpBlocks, dumpForks} from "./dump/blocks/dump.blocks"
 
 const Table = require('cli-table')
 
@@ -71,6 +72,14 @@ module.exports = {
               await dumpCurrent(server)
               break
 
+            case 'blocks':
+              await dumpBlocks(server, name)
+              break
+
+            case 'forks':
+              await dumpForks(server, name)
+              break
+
             case 'volumes':
               await dumpVolumes(server)
               break
diff --git a/app/modules/dump/blocks/dump.blocks.ts b/app/modules/dump/blocks/dump.blocks.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6c9412bd146653fc730c74387b2b44a1d0523c67
--- /dev/null
+++ b/app/modules/dump/blocks/dump.blocks.ts
@@ -0,0 +1,26 @@
+import {Server} from "../../../../server"
+import {BlockDTO} from "../../../lib/dto/BlockDTO"
+import {DBBlock} from "../../../lib/db/DBBlock"
+
+export async function dumpForks(server: Server, blocks: string) {
+  return dumpBlocks(server, blocks, false)
+}
+
+export async function dumpBlocks(server: Server, blocks: string, showMainBcOnly = true) {
+  const patterns = blocks.split(',')
+  for (const p of patterns) {
+    // Single block to dump
+    if (p.match(/^\d+$/)) {
+      const bNumber = parseInt(p)
+      if (showMainBcOnly) {
+        dumpBlockIfDefined(await server.dal.getBlock(bNumber))
+      } else {
+        (await server.dal.getPotentialForkBlocks(bNumber, 0, bNumber)).forEach(dumpBlockIfDefined)
+      }
+    }
+  }
+}
+
+export function dumpBlockIfDefined(b: DBBlock|undefined|null) {
+  console.log(BlockDTO.fromJSONObject(b).getRawSigned())
+}