gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-grid5k] branch master updated (87b3f10 -> 653b702)


From: gnunet
Subject: [taler-grid5k] branch master updated (87b3f10 -> 653b702)
Date: Sat, 28 May 2022 12:11:20 +0200

This is an automated email from the git hooks/post-receive script.

marco-boss pushed a change to branch master
in repository grid5k.

    from 87b3f10  fail if times.env not found
     new 14ac82c  add shard user and domain in taler config
     new 95c98c1  nodejs must be installed manually
     new 6506006  nodejs must be installed manually
     new 3ad7d6c  fix permissions
     new e820bed  bank log on different port
     new 2cac183  fix promtail
     new 4e424eb  drop loglines from fakebank when done
     new 4aee291  recognize bench3 in promtail
     new b5a1da0  update dashboards
     new 80a4273  fix merchant
     new 93dcf2f  add auditor config files
     new 9a5b551  first auditor script steps
     new 9f3e04c  fix typo
     new e54be67  various fixes for auditor
     new 2843457  further changes
     new 97e2035  auditor added to exchange
     new 248392e  update
     new cd2b71b  towards working replication
     new 16e0c5a  logical replication implemented
     new 8e8e8da  add auditor in db monitoring
     new 61f18f2  update
     new 5112524  verified auditor
     new 4774aaf  update auditor pg conf
     new 72ac8f0  recover run.sh discard wget ouptup
     new 38acd35  auditor db in /tmp of G5k
     new dfc8781  fix setup.sh
     new a56db87  different updates
     new bcbd2e3  log query parameters in nginx
     new 476ce80  nginx query params break loki
     new cfaa7fc  add some comments to auditor.sh
     new be57fcf  fix update of g5k repo
     new a92a926  update bank
     new 2ae575d  update bank
     new 83f9cd5  increase bank size
     new d31cd2d  wallet build broken
     new 2ebad47  optimistically increase file limit
     new 780cb4e  custom metrics of postgres exporter only work when selecting 
a db in the url
     new dc2c10d  add relabel to prometheus
     new 4e7f513  add relabel to prometheus
     new 5d73658  not working
     new 9c916dd  add wait events
     new 35a61ca  fix metric
     new 1e9d072  fix metric
     new 2c3d3c1  added new panels for db statistics
     new f6649ae  update dashboards
     new df3da27  fix db dashboard
     new b84926b  changes to rspec and dashboards
     new 653b702  integrate final changes from setup

The 48 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 additional/grafana/database.json                   | 1596 +++++++++++++++++---
 additional/grafana/exchange.json                   |   34 +-
 additional/grafana/load-statistics.json            |   44 +-
 additional/grafana/proxy.json                      |   16 +-
 additional/grafana/request-statistics.json         |  186 ++-
 additional/grafana/transactions.json               |  640 ++++++--
 additional/persist.sh                              |   21 +-
 additional/recover/run.sh                          |   32 +-
 .../rspecs/taler.many.with-auditor.rspec           |  137 +-
 additional/rspecs/taler.minial.rspec               |   26 +-
 .../rspecs/taler.neowise.rspec                     |  250 +--
 configs/etc/default/prometheus-postgres-exporter   |    2 +-
 configs/etc/monitor/node-exporters.yaml.tpl        |    4 +
 configs/etc/monitor/postgres-exporter.yaml         |   14 +
 configs/etc/monitor/promtail.yaml                  |   31 +-
 .../nginx/sites-available/{merchant => auditor}    |   11 +-
 configs/etc/nginx/sites-available/exchange         |    2 +
 configs/etc/nginx/sites-available/fakebank         |    2 +
 configs/etc/nginx/sites-available/merchant         |    3 +
 configs/etc/taler/conf.d/auditor.conf              |   16 +
 configs/etc/taler/conf.d/exchange-business.conf    |    2 +
 configs/etc/taler/conf.d/fake-bank.conf            |    1 +
 configs/etc/taler/secrets/exchange-db.secret.conf  |    3 +
 .../lib/systemd/system/taler-auditor-httpd.service |   13 +
 .../systemd/system/taler-exchange-httpd@.service   |    1 +
 .../system/taler-exchange-secmod-cs.service        |    1 +
 .../system/taler-exchange-secmod-eddsa.service     |    2 +-
 .../system/taler-exchange-secmod-rsa.service       |    1 +
 .../usr/lib/systemd/system/taler-fakebank.service  |    4 +-
 .../usr/lib/systemd/system/taler-netdelay.timer    |    2 +-
 experiment/env                                     |   26 +-
 experiment/scripts/auditor.sh                      |  290 ++++
 experiment/scripts/bank.sh                         |   18 +
 experiment/scripts/bench2.sh                       |   15 +
 experiment/scripts/benchmark.sh                    |   45 +-
 experiment/scripts/createusers.sh                  |   39 +
 experiment/scripts/database.sh                     |   83 +-
 experiment/scripts/exchange-proxy.sh               |    2 +-
 experiment/scripts/exchange.sh                     |   11 +-
 experiment/scripts/helpers.sh                      |   27 +-
 experiment/scripts/monitor.sh                      |   34 +-
 experiment/scripts/run.sh                          |    5 +
 experiment/scripts/setup.sh                        |   20 +-
 experiment/scripts/shard.sh                        |    5 +-
 experiment/scripts/taler-perf.sh                   |    6 +-
 experiment/taler.many.rspec                        |  126 +-
 image/debian11/taler-debian11.yaml                 |    7 +-
 47 files changed, 2968 insertions(+), 888 deletions(-)
 copy experiment/taler.many.rspec => 
additional/rspecs/taler.many.with-auditor.rspec (91%)
 copy experiment/taler.many.rspec => additional/rspecs/taler.neowise.rspec (64%)
 copy configs/etc/nginx/sites-available/{merchant => auditor} (60%)
 create mode 100644 configs/etc/taler/conf.d/auditor.conf
 create mode 100644 configs/usr/lib/systemd/system/taler-auditor-httpd.service
 create mode 100755 experiment/scripts/auditor.sh
 create mode 100644 experiment/scripts/bench2.sh

diff --git a/additional/grafana/database.json b/additional/grafana/database.json
index 1d3140a..985ab20 100644
--- a/additional/grafana/database.json
+++ b/additional/grafana/database.json
@@ -15,7 +15,7 @@
       "type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "8.4.3"
+      "version": "8.4.6"
     },
     {
       "type": "panel",
@@ -35,6 +35,12 @@
       "name": "Stat",
       "version": ""
     },
+    {
+      "type": "panel",
+      "id": "table",
+      "name": "Table",
+      "version": ""
+    },
     {
       "type": "panel",
       "id": "timeseries",
@@ -67,7 +73,7 @@
   "gnetId": 6742,
   "graphTooltip": 1,
   "id": null,
-  "iteration": 1649441739195,
+  "iteration": 1653494175678,
   "links": [],
   "liveNow": false,
   "panels": [
@@ -143,7 +149,7 @@
         "text": {},
         "textMode": "name"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -221,7 +227,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -271,7 +277,7 @@
               }
             ]
           },
-          "unit": "bytes"
+          "unit": "none"
         },
         "overrides": []
       },
@@ -281,7 +287,7 @@
         "x": 6,
         "y": 1
       },
-      "id": 56,
+      "id": 64,
       "links": [],
       "maxDataPoints": 100,
       "options": {
@@ -291,7 +297,7 @@
         "orientation": "horizontal",
         "reduceOptions": {
           "calcs": [
-            "lastNotNull"
+            "mean"
           ],
           "fields": "",
           "values": false
@@ -299,11 +305,11 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": "pg_settings_shared_buffers_bytes{instance=\"$instance\", 
server=\"$server\"}",
+          "expr": "pg_settings_max_worker_processes{instance=\"$instance\", 
server=\"$server\"}",
           "format": "time_series",
           "instant": true,
           "interval": "",
@@ -312,7 +318,7 @@
           "refId": "A"
         }
       ],
-      "title": "Shared Buffers",
+      "title": "Max Worker Processes",
       "type": "stat"
     },
     {
@@ -349,7 +355,7 @@
               }
             ]
           },
-          "unit": "bytes"
+          "unit": "none"
         },
         "overrides": []
       },
@@ -359,7 +365,7 @@
         "x": 9,
         "y": 1
       },
-      "id": 58,
+      "id": 68,
       "links": [],
       "maxDataPoints": 100,
       "options": {
@@ -377,11 +383,11 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": 
"pg_settings_effective_cache_size_bytes{instance=\"$instance\", 
server=\"$server\"}",
+          "expr": "pg_settings_max_parallel_workers{instance=\"$instance\", 
server=\"$server\"}",
           "format": "time_series",
           "instant": true,
           "interval": "",
@@ -390,7 +396,7 @@
           "refId": "A"
         }
       ],
-      "title": "Effective Cache",
+      "title": "Max Parallel Workers",
       "type": "stat"
     },
     {
@@ -455,7 +461,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -533,7 +539,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -612,7 +618,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -691,7 +697,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -769,7 +775,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -847,7 +853,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -897,7 +903,7 @@
               }
             ]
           },
-          "unit": "none"
+          "unit": "bytes"
         },
         "overrides": []
       },
@@ -907,7 +913,7 @@
         "x": 6,
         "y": 4
       },
-      "id": 64,
+      "id": 56,
       "links": [],
       "maxDataPoints": 100,
       "options": {
@@ -917,7 +923,7 @@
         "orientation": "horizontal",
         "reduceOptions": {
           "calcs": [
-            "mean"
+            "lastNotNull"
           ],
           "fields": "",
           "values": false
@@ -925,11 +931,11 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": "pg_settings_max_worker_processes{instance=\"$instance\", 
server=\"$server\"}",
+          "expr": "pg_settings_shared_buffers_bytes{instance=\"$instance\", 
server=\"$server\"}",
           "format": "time_series",
           "instant": true,
           "interval": "",
@@ -938,7 +944,7 @@
           "refId": "A"
         }
       ],
-      "title": "Max Worker Processes",
+      "title": "Shared Buffers",
       "type": "stat"
     },
     {
@@ -975,7 +981,7 @@
               }
             ]
           },
-          "unit": "none"
+          "unit": "bytes"
         },
         "overrides": []
       },
@@ -985,7 +991,7 @@
         "x": 9,
         "y": 4
       },
-      "id": 68,
+      "id": 58,
       "links": [],
       "maxDataPoints": 100,
       "options": {
@@ -1003,11 +1009,11 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": "pg_settings_max_parallel_workers{instance=\"$instance\", 
server=\"$server\"}",
+          "expr": 
"pg_settings_effective_cache_size_bytes{instance=\"$instance\", 
server=\"$server\"}",
           "format": "time_series",
           "instant": true,
           "interval": "",
@@ -1016,7 +1022,7 @@
           "refId": "A"
         }
       ],
-      "title": "Max Parallel Workers",
+      "title": "Effective Cache",
       "type": "stat"
     },
     {
@@ -1064,7 +1070,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -1122,7 +1128,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -1180,7 +1186,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -1254,7 +1260,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -1411,7 +1417,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -1512,7 +1518,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -1612,7 +1618,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -1727,7 +1733,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -1812,7 +1818,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -1870,199 +1876,1344 @@
       }
     },
     {
-      "collapsed": false,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 34
-      },
-      "id": 50,
-      "panels": [],
-      "title": "Misc",
-      "type": "row"
-    },
-    {
-      "aliasColors": {},
-      "bars": false,
-      "dashLength": 10,
-      "dashes": false,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "${DS_PROMETHEUS}"
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "thresholds"
+          },
+          "custom": {
+            "align": "auto",
+            "displayMode": "auto"
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": []
       },
-      "fill": 1,
-      "fillGradient": 0,
       "gridPos": {
-        "h": 6,
-        "w": 17,
+        "h": 10,
+        "w": 12,
         "x": 0,
-        "y": 35
-      },
-      "hiddenSeries": false,
-      "id": 46,
-      "legend": {
-        "alignAsTable": true,
-        "avg": true,
-        "current": true,
-        "max": true,
-        "min": true,
-        "rightSide": true,
-        "show": true,
-        "total": false,
-        "values": true
+        "y": 34
       },
-      "lines": true,
-      "linewidth": 1,
-      "links": [],
-      "nullPointMode": "null",
+      "id": 103,
       "options": {
-        "alertThreshold": true
+        "footer": {
+          "fields": "",
+          "reducer": [
+            "sum"
+          ],
+          "show": false
+        },
+        "frameIndex": 6,
+        "showHeader": true
       },
-      "percentage": false,
-      "pluginVersion": "8.4.3",
-      "pointradius": 5,
-      "points": false,
-      "renderer": "flot",
-      "seriesOverrides": [],
-      "spaceLength": 10,
-      "stack": false,
-      "steppedLine": false,
+      "pluginVersion": "8.4.6",
       "targets": [
         {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
           "exemplar": true,
-          "expr": 
"irate(pg_stat_bgwriter_buffers_backend{instance=\"$instance\", 
server=\"$server\"}[5m])",
-          "format": "time_series",
+          "expr": "rate(pg_wait_events_count{instance=\"$instance\", 
server=\"$server\"} [5m])",
           "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "buffers_backend",
+          "legendFormat": "",
           "refId": "A"
-        },
+        }
+      ],
+      "title": "Wait Events",
+      "transformations": [
         {
-          "exemplar": true,
-          "expr": 
"irate(pg_stat_bgwriter_buffers_alloc{instance=\"$instance\", 
server=\"$server\"}[5m])",
-          "format": "time_series",
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "buffers_alloc",
-          "refId": "B"
+          "id": "labelsToFields",
+          "options": {
+            "keepLabels": [
+              "wait_event",
+              "wait_event_type"
+            ]
+          }
         },
         {
-          "exemplar": true,
-          "expr": 
"irate(pg_stat_bgwriter_buffers_backend_fsync{instance=\"$instance\", 
server=\"$server\"}[5m])",
-          "format": "time_series",
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "backend_fsync",
-          "refId": "C"
+          "id": "groupBy",
+          "options": {
+            "fields": {
+              "Value": {
+                "aggregations": [
+                  "lastNotNull"
+                ],
+                "operation": "aggregate"
+              },
+              "wait_event": {
+                "aggregations": [],
+                "operation": "groupby"
+              },
+              "wait_event_type": {
+                "aggregations": [],
+                "operation": "groupby"
+              }
+            }
+          }
         },
         {
-          "exemplar": true,
-          "expr": 
"irate(pg_stat_bgwriter_buffers_checkpoint{instance=\"$instance\", 
server=\"$server\"}[5m])",
-          "format": "time_series",
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "buffers_checkpoint",
-          "refId": "D"
+          "id": "merge",
+          "options": {}
         },
         {
-          "exemplar": true,
-          "expr": 
"irate(pg_stat_bgwriter_buffers_clean{instance=\"$instance\", 
server=\"$server\"}[5m])",
-          "format": "time_series",
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "buffers_clean",
-          "refId": "E"
-        }
-      ],
-      "thresholds": [],
-      "timeRegions": [],
-      "title": "Buffers (bgwriter)",
-      "tooltip": {
-        "shared": true,
-        "sort": 0,
-        "value_type": "individual"
-      },
-      "type": "graph",
-      "xaxis": {
-        "mode": "time",
-        "show": true,
-        "values": []
-      },
-      "yaxes": [
-        {
-          "$$hashKey": "object:97",
-          "format": "short",
-          "logBase": 1,
-          "show": true
+          "id": "organize",
+          "options": {
+            "excludeByName": {},
+            "indexByName": {
+              "Value (sum)": 2,
+              "wait_event": 1,
+              "wait_event_type": 0
+            },
+            "renameByName": {
+              "Value (lastNotNull)": "Count per Second",
+              "Value (sum)": "Count per Second",
+              "wait_event": "Event",
+              "wait_event_type": "Type"
+            }
+          }
         },
         {
-          "$$hashKey": "object:98",
-          "format": "short",
-          "logBase": 1,
-          "show": true
+          "id": "sortBy",
+          "options": {
+            "fields": {},
+            "sort": [
+              {
+                "desc": true,
+                "field": "Count per Second"
+              }
+            ]
+          }
         }
       ],
-      "yaxis": {
-        "align": false
-      }
+      "type": "table"
     },
     {
-      "aliasColors": {},
-      "bars": false,
-      "dashLength": 10,
-      "dashes": false,
-      "fill": 1,
-      "fillGradient": 0,
-      "gridPos": {
-        "h": 6,
-        "w": 7,
-        "x": 17,
-        "y": 35
-      },
-      "hiddenSeries": false,
-      "id": 28,
-      "legend": {
-        "avg": false,
-        "current": false,
-        "max": false,
-        "min": false,
-        "show": true,
-        "total": false,
-        "values": false
-      },
-      "lines": true,
-      "linewidth": 1,
-      "links": [],
-      "nullPointMode": "null",
-      "options": {
-        "alertThreshold": true
-      },
-      "percentage": false,
-      "pluginVersion": "8.4.3",
-      "pointradius": 5,
-      "points": false,
-      "renderer": "flot",
-      "seriesOverrides": [],
-      "spaceLength": 10,
-      "stack": false,
-      "steppedLine": false,
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
           },
-          "exemplar": true,
-          "expr": "irate(pg_stat_database_conflicts{instance=\"$instance\", 
datname=~\"taler(.*)\", server=\"$server\"}[5m])",
-          "format": "time_series",
-          "interval": "",
-          "intervalFactor": 1,
-          "legendFormat": "conflicts",
-          "refId": "B"
-        },
-        {
-          "datasource": {
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 10,
+        "w": 12,
+        "x": 12,
+        "y": 34
+      },
+      "id": 104,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "list",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (wait_event_type, wait_event) 
(rate(pg_wait_events_count{instance=\"$instance\", server=\"$server\"} [5m]))",
+          "interval": "",
+          "legendFormat": "{{wait_event}} ({{ wait_event_type }})",
+          "refId": "A"
+        }
+      ],
+      "title": "Wait Events per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "collapsed": false,
+      "gridPos": {
+        "h": 1,
+        "w": 24,
+        "x": 0,
+        "y": 44
+      },
+      "id": 92,
+      "panels": [],
+      "title": "Table Statistics",
+      "type": "row"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 0,
+        "y": 45
+      },
+      "id": 94,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_seq_scan{server=\"$server\", 
instance=\"$instance\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Sequential Scans per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 12,
+        "y": 45
+      },
+      "id": 95,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_idx_scan{instance=\"$instance\", 
server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Index Scans per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 0,
+        "y": 53
+      },
+      "id": 98,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_n_live_tup{instance=\"$instance\", 
server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Live Tuples (Rate)",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 12,
+        "y": 53
+      },
+      "id": 96,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_n_dead_tup{instance=\"$instance\", 
server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        },
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "",
+          "refId": "A"
+        }
+      ],
+      "title": "Dead Tuples (Rate)",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 0,
+        "y": 61
+      },
+      "id": 100,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_n_tup_upd{instance=\"$instance\", 
server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Updates per Second (HOT Included)",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 12,
+        "y": 61
+      },
+      "id": 99,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_n_tup_hot_upd{instance=\"$instance\", 
server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Hot Updates per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 0,
+        "y": 69
+      },
+      "id": 97,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_autovacuum_count{instance=\"$instance\",
 server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Autovaccums per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "red",
+                "value": 80
+              }
+            ]
+          }
+        },
+        "overrides": [
+          {
+            "__systemRef": "hideSeriesFrom",
+            "matcher": {
+              "id": "byNames",
+              "options": {
+                "mode": "exclude",
+                "names": [
+                  "Value"
+                ],
+                "prefix": "All except:",
+                "readOnly": true
+              }
+            },
+            "properties": [
+              {
+                "id": "custom.hideFrom",
+                "value": {
+                  "legend": false,
+                  "tooltip": false,
+                  "viz": true
+                }
+              }
+            ]
+          }
+        ]
+      },
+      "gridPos": {
+        "h": 8,
+        "w": 12,
+        "x": 12,
+        "y": 69
+      },
+      "id": 101,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "table",
+          "placement": "bottom"
+        },
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "sum by (relnamenew) 
(label_replace(rate(pg_stat_user_tables_autoanalyze_count{instance=\"$instance\",
 server=\"$server\"} [5m]), \"relnamenew\", \"$1\", \"relname\", 
\"(.*[^_0-9])(_[0-9]+)*\"))",
+          "hide": false,
+          "interval": "",
+          "legendFormat": "{{ relnamenew }}",
+          "refId": "B"
+        }
+      ],
+      "title": "Autoanalyzes per Second",
+      "transformations": [],
+      "type": "timeseries"
+    },
+    {
+      "collapsed": false,
+      "gridPos": {
+        "h": 1,
+        "w": 24,
+        "x": 0,
+        "y": 77
+      },
+      "id": 50,
+      "panels": [],
+      "title": "Misc",
+      "type": "row"
+    },
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "datasource": {
+        "type": "prometheus",
+        "uid": "${DS_PROMETHEUS}"
+      },
+      "fill": 1,
+      "fillGradient": 0,
+      "gridPos": {
+        "h": 6,
+        "w": 17,
+        "x": 0,
+        "y": 78
+      },
+      "hiddenSeries": false,
+      "id": 46,
+      "legend": {
+        "alignAsTable": true,
+        "avg": true,
+        "current": true,
+        "max": true,
+        "min": true,
+        "rightSide": true,
+        "show": true,
+        "total": false,
+        "values": true
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "options": {
+        "alertThreshold": true
+      },
+      "percentage": false,
+      "pluginVersion": "8.4.6",
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": false,
+      "steppedLine": false,
+      "targets": [
+        {
+          "exemplar": true,
+          "expr": 
"irate(pg_stat_bgwriter_buffers_backend{instance=\"$instance\", 
server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "buffers_backend",
+          "refId": "A"
+        },
+        {
+          "exemplar": true,
+          "expr": 
"irate(pg_stat_bgwriter_buffers_alloc{instance=\"$instance\", 
server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "buffers_alloc",
+          "refId": "B"
+        },
+        {
+          "exemplar": true,
+          "expr": 
"irate(pg_stat_bgwriter_buffers_backend_fsync{instance=\"$instance\", 
server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "backend_fsync",
+          "refId": "C"
+        },
+        {
+          "exemplar": true,
+          "expr": 
"irate(pg_stat_bgwriter_buffers_checkpoint{instance=\"$instance\", 
server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "buffers_checkpoint",
+          "refId": "D"
+        },
+        {
+          "exemplar": true,
+          "expr": 
"irate(pg_stat_bgwriter_buffers_clean{instance=\"$instance\", 
server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "buffers_clean",
+          "refId": "E"
+        }
+      ],
+      "thresholds": [],
+      "timeRegions": [],
+      "title": "Buffers (bgwriter)",
+      "tooltip": {
+        "shared": true,
+        "sort": 0,
+        "value_type": "individual"
+      },
+      "type": "graph",
+      "xaxis": {
+        "mode": "time",
+        "show": true,
+        "values": []
+      },
+      "yaxes": [
+        {
+          "$$hashKey": "object:97",
+          "format": "short",
+          "logBase": 1,
+          "show": true
+        },
+        {
+          "$$hashKey": "object:98",
+          "format": "short",
+          "logBase": 1,
+          "show": true
+        }
+      ],
+      "yaxis": {
+        "align": false
+      }
+    },
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "fill": 1,
+      "fillGradient": 0,
+      "gridPos": {
+        "h": 6,
+        "w": 7,
+        "x": 17,
+        "y": 78
+      },
+      "hiddenSeries": false,
+      "id": 28,
+      "legend": {
+        "avg": false,
+        "current": false,
+        "max": false,
+        "min": false,
+        "show": true,
+        "total": false,
+        "values": false
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "options": {
+        "alertThreshold": true
+      },
+      "percentage": false,
+      "pluginVersion": "8.4.6",
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": false,
+      "steppedLine": false,
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": true,
+          "expr": "irate(pg_stat_database_conflicts{instance=\"$instance\", 
datname=~\"taler(.*)\", server=\"$server\"}[5m])",
+          "format": "time_series",
+          "interval": "",
+          "intervalFactor": 1,
+          "legendFormat": "conflicts",
+          "refId": "B"
+        },
+        {
+          "datasource": {
             "type": "prometheus",
             "uid": "${DS_PROMETHEUS}"
           },
@@ -2119,7 +3270,7 @@
         "h": 7,
         "w": 17,
         "x": 0,
-        "y": 41
+        "y": 84
       },
       "hiddenSeries": false,
       "id": 30,
@@ -2142,7 +3293,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -2210,7 +3361,7 @@
         "h": 7,
         "w": 7,
         "x": 17,
-        "y": 41
+        "y": 84
       },
       "hiddenSeries": false,
       "id": 40,
@@ -2231,7 +3382,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -2299,7 +3450,7 @@
         "h": 9,
         "w": 24,
         "x": 0,
-        "y": 48
+        "y": 91
       },
       "hiddenSeries": false,
       "id": 38,
@@ -2321,7 +3472,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -2395,7 +3546,7 @@
         "h": 7,
         "w": 20,
         "x": 0,
-        "y": 57
+        "y": 100
       },
       "hiddenSeries": false,
       "id": 80,
@@ -2419,7 +3570,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 5,
       "points": false,
       "renderer": "flot",
@@ -2802,7 +3953,7 @@
         "h": 7,
         "w": 4,
         "x": 20,
-        "y": 57
+        "y": 100
       },
       "id": 78,
       "links": [],
@@ -2822,7 +3973,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -2830,7 +3981,7 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "dsType": "prometheus",
-          "exemplar": true,
+          "exemplar": false,
           "expr": 
"sum(irate(pg_stat_database_xact_commit{datname=~\"taler(.*)\",instance=~\"$instance\",
 server=\"$server\"}[5m])) + 
sum(irate(pg_stat_database_xact_rollback{datname=~\"taler(.*)\",instance=~\"$instance\",
 server=\"$server\"}[5m]))",
           "format": "time_series",
           "groupBy": [
@@ -2847,6 +3998,7 @@
               "type": "fill"
             }
           ],
+          "instant": true,
           "interval": "",
           "intervalFactor": 2,
           "legendFormat": "",
@@ -2888,7 +4040,7 @@
       "type": "stat"
     }
   ],
-  "refresh": "1m",
+  "refresh": "30s",
   "schemaVersion": 35,
   "style": "dark",
   "tags": [
@@ -2980,6 +4132,6 @@
   "timezone": "",
   "title": "Database",
   "uid": "2FTtdeOnk",
-  "version": 99,
+  "version": 118,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/grafana/exchange.json b/additional/grafana/exchange.json
index e60c581..e75dfab 100644
--- a/additional/grafana/exchange.json
+++ b/additional/grafana/exchange.json
@@ -29,7 +29,7 @@
       "type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "8.4.3"
+      "version": "8.4.6"
     },
     {
       "type": "datasource",
@@ -586,7 +586,7 @@
         "showUnfilled": true,
         "text": {}
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -657,7 +657,7 @@
         "showUnfilled": true,
         "text": {}
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -715,7 +715,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
@@ -784,7 +784,7 @@
         },
         "showUnfilled": true
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -868,7 +868,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -936,7 +936,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1011,7 +1011,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1074,7 +1074,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1143,7 +1143,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1218,7 +1218,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1286,7 +1286,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1357,7 +1357,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1436,20 +1436,20 @@
         "showHeader": true,
         "sortBy": []
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "sum by (query) (count_over_time({app=\"taler-database\", 
type=\"slow-query\"} | regexp \"(?P<query>.*)\" [$__range]))",
+          "expr": "sum by (query) (count_over_time({app=\"taler-database\", 
type=\"slow-query\"} | regexp \"(?P<query>.*)\" [5m]))",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "Slow Query Occurences",
+      "title": "Slow Query Occurences [5m]",
       "transformations": [
         {
           "id": "groupBy",
@@ -1533,6 +1533,6 @@
   "timezone": "",
   "title": "Exchange",
   "uid": "NYO0EIE7k",
-  "version": 38,
+  "version": 40,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/grafana/load-statistics.json 
b/additional/grafana/load-statistics.json
index 6fef09f..58dd08f 100644
--- a/additional/grafana/load-statistics.json
+++ b/additional/grafana/load-statistics.json
@@ -589,7 +589,7 @@
             "mode": "palette-classic"
           },
           "custom": {
-            "axisLabel": "",
+            "axisLabel": "Requests / Second",
             "axisPlacement": "auto",
             "barAlignment": 0,
             "drawStyle": "line",
@@ -630,8 +630,8 @@
         "overrides": [
           {
             "matcher": {
-              "id": "byName",
-              "options": "Database Size"
+              "id": "byRegexp",
+              "options": "Database(.*)"
             },
             "properties": [
               {
@@ -641,18 +641,10 @@
               {
                 "id": "unit",
                 "value": "bytes"
-              }
-            ]
-          },
-          {
-            "matcher": {
-              "id": "byName",
-              "options": "Total Requests"
-            },
-            "properties": [
+              },
               {
-                "id": "unit",
-                "value": "short"
+                "id": "custom.axisLabel",
+                "value": "Database Size"
               }
             ]
           }
@@ -696,14 +688,30 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": true,
-          "expr": "sum(pg_database_size_bytes{instance=\"127.0.0.1:9187\"})",
+          "expr": "sum by (datname) 
(pg_database_size_bytes{instance=\"127.0.0.1:9187\", 
datname=~\"taler-exchange|taler-ingress\"})",
           "hide": false,
           "interval": "",
-          "legendFormat": "Database Size",
+          "legendFormat": "Database Size {{ datname }}",
           "refId": "C"
         }
       ],
       "title": "[Database] Total Requests vs Disk Space used",
+      "transformations": [
+        {
+          "id": "renameByRegex",
+          "options": {
+            "regex": "taler-exchange",
+            "renamePattern": "Exchange"
+          }
+        },
+        {
+          "id": "renameByRegex",
+          "options": {
+            "regex": "taler-ingress",
+            "renamePattern": "Auditor"
+          }
+        }
+      ],
       "type": "timeseries"
     },
     {
@@ -1599,7 +1607,7 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": true,
-          "expr": "avg 
((rate(taler_requests_response_time_hist_sum{endpoint!~\"keys|terms\", 
status=\"200\"} [2m]) ) / 
(rate(taler_requests_response_time_hist_count{endpoint!~\"keys|terms\", 
status=\"200\"} [2m])))",
+          "expr": "avg 
((rate(taler_requests_response_time_hist_sum{endpoint!~\"keys|terms|wire\", 
status=\"200\"} [2m]) ) / 
(rate(taler_requests_response_time_hist_count{endpoint!~\"keys|terms|wire\", 
status=\"200\"} [2m])))",
           "hide": false,
           "interval": "",
           "legendFormat": "Average Response Time",
@@ -1628,6 +1636,6 @@
   "timezone": "",
   "title": "Load Statistics",
   "uid": "rkyhDAt7z",
-  "version": 72,
+  "version": 77,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/grafana/proxy.json b/additional/grafana/proxy.json
index ee2949a..58f94bb 100644
--- a/additional/grafana/proxy.json
+++ b/additional/grafana/proxy.json
@@ -15,7 +15,7 @@
       "type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "8.4.3"
+      "version": "8.4.6"
     },
     {
       "type": "panel",
@@ -61,7 +61,7 @@
   "gnetId": 12708,
   "graphTooltip": 0,
   "id": null,
-  "iteration": 1649441826256,
+  "iteration": 1652602026981,
   "links": [],
   "liveNow": false,
   "panels": [
@@ -122,7 +122,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 2,
       "points": false,
       "renderer": "flot",
@@ -220,7 +220,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 2,
       "points": false,
       "renderer": "flot",
@@ -326,7 +326,7 @@
         "alertThreshold": true
       },
       "percentage": false,
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "pointradius": 2,
       "points": false,
       "renderer": "flot",
@@ -451,7 +451,7 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": true,
-          "expr": "avg 
((rate(taler_requests_response_time_hist_sum{endpoint!~\"keys|terms\", 
status=\"200\"} [2m]) ) / 
(rate(taler_requests_response_time_hist_count{endpoint!~\"keys|terms\", 
status=\"200\"} [2m])))",
+          "expr": "avg 
((rate(taler_requests_response_time_hist_sum{endpoint!~\"keys|terms|wire\", 
status=\"200\"} [2m]) ) / 
(rate(taler_requests_response_time_hist_count{endpoint!~\"keys|terms|wire\", 
status=\"200\"} [2m])))",
           "interval": "",
           "legendFormat": "Response Time",
           "refId": "A"
@@ -538,7 +538,7 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": true,
-          "expr": "avg 
((rate(taler_requests_upstream_response_time_hist_sum{endpoint!~\"keys|terms\", 
status=\"200\"} [2m]) ) / 
(rate(taler_requests_upstream_response_time_hist_count{endpoint!~\"keys|terms\",
 status=\"200\"} [2m])))",
+          "expr": "avg 
((rate(taler_requests_upstream_response_time_hist_sum{endpoint!~\"keys|terms|wire\",
 status=\"200\"} [2m]) ) / 
(rate(taler_requests_upstream_response_time_hist_count{endpoint!~\"keys|terms|wire\",
 status=\"200\"} [2m])))",
           "interval": "",
           "legendFormat": "Upstream Response Time",
           "refId": "A"
@@ -635,6 +635,6 @@
   "timezone": "",
   "title": "Proxy",
   "uid": "MsjffzSZz",
-  "version": 16,
+  "version": 18,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/grafana/request-statistics.json 
b/additional/grafana/request-statistics.json
index 41cbe40..7336130 100644
--- a/additional/grafana/request-statistics.json
+++ b/additional/grafana/request-statistics.json
@@ -23,7 +23,7 @@
       "type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "8.4.3"
+      "version": "8.4.6"
     },
     {
       "type": "datasource",
@@ -74,7 +74,7 @@
   "fiscalYearStartMonth": 0,
   "graphTooltip": 1,
   "id": null,
-  "iteration": 1649441773439,
+  "iteration": 1653636762901,
   "links": [],
   "liveNow": false,
   "panels": [
@@ -142,20 +142,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=~\"wallet(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=~\"wallet(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Wallet-Proxy",
+      "title": "RTT Wallet-Proxy [$interval]",
       "type": "stat"
     },
     {
@@ -209,20 +209,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=~\"eproxy(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=~\"eproxy(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Proxy-Exchange",
+      "title": "RTT Proxy-Exchange [$interval]",
       "type": "stat"
     },
     {
@@ -276,20 +276,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\", job=\"taler\"} | 
logfmt | src=~\"exchange(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\", job=\"taler\"} | 
logfmt | src=~\"exchange(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Exchange-Database",
+      "title": "RTT Exchange-Database [$interval]",
       "type": "stat"
     },
     {
@@ -343,20 +343,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"aggregator\" | unwrap duration(time) [$__range]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"aggregator\" | unwrap duration(time) [$interval]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Aggregator-Database",
+      "title": "RTT Aggregator-Database [$interval]",
       "type": "stat"
     },
     {
@@ -410,20 +410,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"closer\" | unwrap duration(time) [$__range]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"closer\" | unwrap duration(time) [$interval]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Closer-Database",
+      "title": "RTT Closer-Database [$interval]",
       "type": "stat"
     },
     {
@@ -477,20 +477,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"transfer\" | unwrap duration(time) [$__range]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"transfer\" | unwrap duration(time) [$interval]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Transfer-Database",
+      "title": "RTT Transfer-Database [$interval]",
       "type": "stat"
     },
     {
@@ -544,20 +544,20 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"wirewatch\" | unwrap duration(time) [$__range]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$__range])",
+          "expr": "avg_over_time({app=\"taler-network\"} | logfmt | 
src=\"wirewatch\" | unwrap duration(time) [$interval]) or 
avg_over_time({app=\"taler-network\", job=\"taler\"} | logfmt | 
src=~\"exchange(.*)\" | unwrap duration(time) [$interval])",
           "instant": true,
           "range": false,
           "refId": "A"
         }
       ],
-      "title": "RTT Wirewatch-Database",
+      "title": "RTT Wirewatch-Database [$interval]",
       "type": "stat"
     },
     {
@@ -643,15 +643,19 @@
       "pluginVersion": "8.2.5",
       "targets": [
         {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
           "exemplar": true,
-          "expr": "sum by (type) 
(rate(taler_exchange_serialization_failures{}[1m]))",
+          "expr": "sum by (type) 
(rate(taler_exchange_serialization_failures{}[$interval]))",
           "instant": false,
           "interval": "",
           "legendFormat": "{{type}}",
           "refId": "A"
         }
       ],
-      "title": "Serialization Errors",
+      "title": "Serialization Errors [$interval]",
       "transformations": [],
       "type": "timeseries"
     },
@@ -740,12 +744,12 @@
             "type": "loki",
             "uid": "${DS_LOKI}"
           },
-          "expr": "rate({app=\"taler-database\", type=\"slow-query\"} [1m])",
+          "expr": "rate({app=\"taler-database\", type=\"slow-query\"} 
[$interval])",
           "hide": false,
           "refId": "A"
         }
       ],
-      "title": "Slow Queries",
+      "title": "Slow Queries [$interval]",
       "type": "timeseries"
     },
     {
@@ -774,6 +778,7 @@
             "mode": "thresholds"
           },
           "mappings": [],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
@@ -813,7 +818,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -834,25 +839,28 @@
       "fieldConfig": {
         "defaults": {
           "color": {
-            "mode": "continuous-GrYlRd"
+            "fixedColor": "green",
+            "mode": "fixed"
           },
-          "mappings": [],
-          "max": 5,
-          "min": 0,
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "0"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "0",
           "thresholds": {
             "mode": "percentage",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "#EAB839",
-                "value": 60
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -882,7 +890,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -912,16 +920,13 @@
             "mode": "thresholds"
           },
           "mappings": [],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -951,7 +956,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1012,7 +1017,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1168,7 +1173,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1199,16 +1204,13 @@
             "mode": "thresholds"
           },
           "mappings": [],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -1238,7 +1240,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1266,16 +1268,13 @@
             "mode": "thresholds"
           },
           "mappings": [],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -1305,7 +1304,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1333,16 +1332,13 @@
             "mode": "thresholds"
           },
           "mappings": [],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -1372,7 +1368,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1396,7 +1392,19 @@
             "fixedColor": "text",
             "mode": "fixed"
           },
-          "mappings": [],
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "0"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
@@ -1431,7 +1439,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1548,17 +1556,25 @@
           "color": {
             "mode": "thresholds"
           },
-          "mappings": [],
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "0"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
               {
                 "color": "green",
                 "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
               }
             ]
           },
@@ -1588,7 +1604,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1612,7 +1628,19 @@
             "fixedColor": "text",
             "mode": "fixed"
           },
-          "mappings": [],
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "0"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
@@ -1647,7 +1675,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1667,7 +1695,7 @@
       "type": "stat"
     }
   ],
-  "refresh": "1m",
+  "refresh": "30s",
   "schemaVersion": 35,
   "style": "dark",
   "tags": [
@@ -1682,15 +1710,15 @@
         "auto_min": "10s",
         "current": {
           "selected": false,
-          "text": "3m",
-          "value": "3m"
+          "text": "30s",
+          "value": "30s"
         },
         "hide": 0,
         "label": "interval",
         "name": "interval",
         "options": [
           {
-            "selected": false,
+            "selected": true,
             "text": "30s",
             "value": "30s"
           },
@@ -1705,7 +1733,7 @@
             "value": "2m"
           },
           {
-            "selected": true,
+            "selected": false,
             "text": "3m",
             "value": "3m"
           },
@@ -1805,6 +1833,6 @@
   "timezone": "browser",
   "title": "Request Statistics",
   "uid": "WcfSXqDnk",
-  "version": 194,
+  "version": 205,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/grafana/transactions.json 
b/additional/grafana/transactions.json
index eaea241..d3bbdbc 100644
--- a/additional/grafana/transactions.json
+++ b/additional/grafana/transactions.json
@@ -19,6 +19,12 @@
   ],
   "__elements": [],
   "__requires": [
+    {
+      "type": "panel",
+      "id": "bargauge",
+      "name": "Bar gauge",
+      "version": ""
+    },
     {
       "type": "panel",
       "id": "gauge",
@@ -29,7 +35,7 @@
       "type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "8.4.3"
+      "version": "8.4.6"
     },
     {
       "type": "datasource",
@@ -143,7 +149,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -208,7 +214,7 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -269,7 +275,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -331,7 +337,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -391,7 +397,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -410,6 +416,7 @@
       "type": "stat"
     },
     {
+      "description": "Number of wirewatch processes running",
       "fieldConfig": {
         "defaults": {
           "color": {
@@ -445,7 +452,7 @@
         "x": 14,
         "y": 1
       },
-      "id": 46,
+      "id": 41,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -461,7 +468,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -469,14 +476,14 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": false,
-          "expr": 
"sum(node_systemd_unit_state{name=~\"taler-exchange-aggregator(.*).service\", 
state=\"active\"})",
+          "expr": 
"sum(node_systemd_unit_state{name=~\"taler-exchange-wirewatch(.*).service\", 
state=\"active\"})",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "# Aggregator",
+      "title": "# Wirewatch",
       "type": "stat"
     },
     {
@@ -533,7 +540,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -592,7 +599,7 @@
         "x": 18,
         "y": 1
       },
-      "id": 51,
+      "id": 52,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -608,22 +615,18 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
-          },
-          "exemplar": false,
-          "expr": 
"node_systemd_unit_state{name=\"taler-exchange-secmod-eddsa.service\", 
state=\"active\"}",
+          "exemplar": true,
+          "expr": 
"node_systemd_unit_state{name=\"taler-exchange-secmod-rsa.service\", 
state=\"active\"}",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "EdDSA",
+      "title": "RSA",
       "type": "stat"
     },
     {
@@ -684,7 +687,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -744,7 +747,7 @@
         "x": 22,
         "y": 1
       },
-      "id": 47,
+      "id": 48,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -760,18 +763,18 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": "node_systemd_unit_state{name=\"loki.service\", 
state=\"active\"}",
+          "expr": "node_systemd_unit_state{name=\"promtail.service\", 
state=\"active\"}",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "Loki",
+      "title": "Promtail",
       "type": "stat"
     },
     {
@@ -819,7 +822,7 @@
         },
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -838,7 +841,6 @@
       "type": "stat"
     },
     {
-      "description": "Number of wirewatch processes running",
       "fieldConfig": {
         "defaults": {
           "color": {
@@ -874,7 +876,7 @@
         "x": 14,
         "y": 3
       },
-      "id": 41,
+      "id": 46,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -890,7 +892,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -898,14 +900,14 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": false,
-          "expr": 
"sum(node_systemd_unit_state{name=~\"taler-exchange-wirewatch(.*).service\", 
state=\"active\"})",
+          "expr": 
"sum(node_systemd_unit_state{name=~\"taler-exchange-aggregator(.*).service\", 
state=\"active\"})",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "# Wirewatch",
+      "title": "# Aggregator",
       "type": "stat"
     },
     {
@@ -960,7 +962,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1019,7 +1021,7 @@
         "x": 18,
         "y": 3
       },
-      "id": 52,
+      "id": 51,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1035,18 +1037,98 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
-          "exemplar": true,
-          "expr": 
"node_systemd_unit_state{name=\"taler-exchange-secmod-rsa.service\", 
state=\"active\"}",
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": 
"node_systemd_unit_state{name=\"taler-exchange-secmod-eddsa.service\", 
state=\"active\"}",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "RSA",
+      "title": "EdDSA",
+      "type": "stat"
+    },
+    {
+      "description": "",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "thresholds"
+          },
+          "mappings": [
+            {
+              "options": {
+                "0": {
+                  "color": "red",
+                  "index": 1,
+                  "text": "DOWN"
+                },
+                "1": {
+                  "color": "green",
+                  "index": 0,
+                  "text": "OK"
+                }
+              },
+              "type": "value"
+            }
+          ],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 2,
+        "w": 2,
+        "x": 20,
+        "y": 3
+      },
+      "id": 79,
+      "options": {
+        "colorMode": "value",
+        "graphMode": "area",
+        "justifyMode": "auto",
+        "orientation": "auto",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "text": {},
+        "textMode": "auto"
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": "node_systemd_unit_state{name=\"taler-fakebank.service\", 
state=\"active\"}",
+          "instant": true,
+          "interval": "",
+          "legendFormat": "",
+          "refId": "A"
+        }
+      ],
+      "title": "Fakebank",
       "type": "stat"
     },
     {
@@ -1091,7 +1173,7 @@
         "x": 22,
         "y": 3
       },
-      "id": 48,
+      "id": 47,
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1107,18 +1189,18 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "exemplar": true,
-          "expr": "node_systemd_unit_state{name=\"promtail.service\", 
state=\"active\"}",
+          "expr": "node_systemd_unit_state{name=\"loki.service\", 
state=\"active\"}",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "Promtail",
+      "title": "Loki",
       "type": "stat"
     },
     {
@@ -1131,11 +1213,11 @@
       },
       "id": 22,
       "panels": [],
-      "title": "Total TPS (Sucessful Requests)",
+      "title": "Total TPS",
       "type": "row"
     },
     {
-      "description": "Total successful (200) requests to /deposit and 
/withdraw per second, measured at the nginx proxy in a 2 minute interval.",
+      "description": "Total successful (200) requests to /deposit and 
/withdraw per second, measured at the nginx proxy in a 2 minute interval. Or if 
with batch withdraw then the number of successful requests to /deposit plus the 
number of coins returned in a batch request (measured by the exchange).",
       "fieldConfig": {
         "defaults": {
           "color": {
@@ -1158,8 +1240,8 @@
         "overrides": []
       },
       "gridPos": {
-        "h": 9,
-        "w": 5,
+        "h": 10,
+        "w": 10,
         "x": 0,
         "y": 6
       },
@@ -1177,33 +1259,63 @@
         "showThresholdMarkers": true,
         "text": {}
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
             "type": "prometheus",
             "uid": "${DS_PROMETHEUS}"
           },
-          "exemplar": true,
-          "expr": "sum 
(rate(taler_requests_total_requests{endpoint=~\"reserves-withdraw|coins-deposit\",
 status=\"200\"} [2m]))",
+          "exemplar": false,
+          "expr": "sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"coins-deposit\", 
status=\"200\"}[2m]) or vector(0)) + on(__name__) sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [2m]) or vector(0)) + on (__name__) sum by (__name__) 
(rate(taler_exchange_batch_withdraw_num_coins{} [2m]) or vector(0))",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "Current TPS ",
+      "title": "Current TPS [2m]",
       "transformations": [],
       "type": "gauge"
     },
     {
-      "description": "Total successful (200) requests per second to /withdraw 
per second, measured at the nginx proxy in a 5 minute interval.",
+      "description": "Total number of successful requests to /deposit and 
/withdraw per second, measured at the nginx proxy and over a 2 minute interval. 
Or if with batch withdraw then the number of successful requests to /deposit 
plus the number of coins returned in a batch request (measured by the 
exchange).",
       "fieldConfig": {
         "defaults": {
           "color": {
-            "mode": "continuous-RdYlGr"
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisLabel": "TPS",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 47,
+            "gradientMode": "opacity",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "smooth",
+            "lineStyle": {
+              "fill": "solid"
+            },
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "never",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
           },
           "mappings": [],
-          "max": 100000,
           "min": 0,
           "thresholds": {
             "mode": "absolute",
@@ -1213,33 +1325,29 @@
                 "value": null
               }
             ]
-          }
+          },
+          "unit": "none"
         },
         "overrides": []
       },
       "gridPos": {
-        "h": 3,
-        "w": 5,
-        "x": 5,
+        "h": 9,
+        "w": 14,
+        "x": 10,
         "y": 6
       },
-      "id": 4,
+      "id": 34,
       "options": {
-        "colorMode": "none",
-        "graphMode": "none",
-        "justifyMode": "center",
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
+        "legend": {
+          "calcs": [],
+          "displayMode": "hidden",
+          "placement": "bottom"
         },
-        "text": {},
-        "textMode": "auto"
+        "tooltip": {
+          "mode": "single",
+          "sort": "none"
+        }
       },
-      "pluginVersion": "8.4.3",
       "targets": [
         {
           "datasource": {
@@ -1247,19 +1355,18 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": false,
-          "expr": "sum 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [5m] ))",
-          "instant": true,
+          "expr": "sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"coins-deposit\", 
status=\"200\"}[2m]) or vector(0)) + on(__name__) sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [2m]) or vector(0)) + on (__name__) sum by (__name__) 
(rate(taler_exchange_batch_withdraw_num_coins{} [2m]) or vector(0))",
           "interval": "",
-          "legendFormat": "",
+          "intervalFactor": 2,
+          "legendFormat": "TPS",
           "refId": "A"
         }
       ],
-      "title": "Withdrawals per Second ",
-      "transformations": [],
-      "type": "stat"
+      "title": "TPS History",
+      "type": "timeseries"
     },
     {
-      "description": "Total number of successful requests to /deposit and 
/withdraw per second, measured at the nginx proxy and over a 2 minute 
interval.",
+      "description": "The TPS over Time per operation. For deposit its the 
number of successful requests to /deposit. For withdraw it may be the number of 
successful requests to /withdraw or the number of coins returned in a batch 
request.",
       "fieldConfig": {
         "defaults": {
           "color": {
@@ -1270,17 +1377,14 @@
             "axisPlacement": "auto",
             "barAlignment": 0,
             "drawStyle": "line",
-            "fillOpacity": 47,
-            "gradientMode": "opacity",
+            "fillOpacity": 22,
+            "gradientMode": "none",
             "hideFrom": {
               "legend": false,
               "tooltip": false,
               "viz": false
             },
             "lineInterpolation": "smooth",
-            "lineStyle": {
-              "fill": "solid"
-            },
             "lineWidth": 1,
             "pointSize": 5,
             "scaleDistribution": {
@@ -1290,7 +1394,7 @@
             "spanNulls": false,
             "stacking": {
               "group": "A",
-              "mode": "none"
+              "mode": "normal"
             },
             "thresholdsStyle": {
               "mode": "off"
@@ -1311,16 +1415,16 @@
         "overrides": []
       },
       "gridPos": {
-        "h": 9,
+        "h": 10,
         "w": 14,
         "x": 10,
-        "y": 6
+        "y": 15
       },
-      "id": 34,
+      "id": 76,
       "options": {
         "legend": {
           "calcs": [],
-          "displayMode": "hidden",
+          "displayMode": "list",
           "placement": "bottom"
         },
         "tooltip": {
@@ -1334,17 +1438,173 @@
             "type": "prometheus",
             "uid": "${DS_PROMETHEUS}"
           },
-          "exemplar": true,
-          "expr": 
"sum(rate(taler_requests_total_requests{endpoint=~\"reserves-withdraw|coins-deposit\",
 status=\"200\"}[2m]))",
+          "exemplar": false,
+          "expr": "sum by(__name__) 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [2m]) or vector(0)) + on () sum by (__name__) 
(rate(taler_exchange_batch_withdraw_num_coins{} [2m]) or vector(0))",
           "interval": "",
           "intervalFactor": 2,
-          "legendFormat": "TPS",
+          "legendFormat": "Withdraw",
           "refId": "A"
+        },
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": 
"sum(rate(taler_requests_total_requests{endpoint=\"coins-deposit\", 
status=\"200\"}[2m]))",
+          "hide": false,
+          "interval": "",
+          "intervalFactor": 2,
+          "legendFormat": "Deposit",
+          "refId": "B"
         }
       ],
-      "title": "TPS History",
+      "title": "TPS History by Transaction",
       "type": "timeseries"
     },
+    {
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "thresholds"
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "text",
+                "value": 0
+              },
+              {
+                "color": "green",
+                "value": 1
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 4,
+        "w": 5,
+        "x": 0,
+        "y": 16
+      },
+      "id": 78,
+      "options": {
+        "colorMode": "value",
+        "graphMode": "none",
+        "justifyMode": "center",
+        "orientation": "auto",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "textMode": "auto"
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": 
"(sum(rate(taler_requests_total_requests{endpoint=\"reserves-batch-withdraw\"}[5s]))
 or vector(0)) > bool 0",
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Batch",
+          "refId": "A"
+        },
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": 
"(sum(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\"}[5s])) 
or vector(0)) > bool 0",
+          "hide": false,
+          "instant": true,
+          "interval": "",
+          "legendFormat": "Normal",
+          "refId": "B"
+        }
+      ],
+      "title": "Withdraw Operation",
+      "transformations": [],
+      "type": "stat"
+    },
+    {
+      "description": "Total successful (200) requests per second to /withdraw 
per second, measured at the nginx proxy in a 5 minute interval. Or if with 
batch withdraw then the  the number of coins returned in a batch request 
(measured by the exchange).",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "continuous-RdYlGr"
+          },
+          "mappings": [],
+          "max": 100000,
+          "min": 0,
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 3,
+        "w": 5,
+        "x": 5,
+        "y": 16
+      },
+      "id": 4,
+      "options": {
+        "colorMode": "none",
+        "graphMode": "none",
+        "justifyMode": "center",
+        "orientation": "auto",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "text": {},
+        "textMode": "auto"
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": "sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [5m]) or vector(0)) + on (__name__) sum by (__name__) 
(rate(taler_exchange_batch_withdraw_num_coins{} [5m]) or vector(0))",
+          "instant": true,
+          "interval": "",
+          "legendFormat": "",
+          "refId": "A"
+        }
+      ],
+      "title": "Withdrawals per Second [5m]",
+      "transformations": [],
+      "type": "stat"
+    },
     {
       "description": "Total successful (200) requests to /deposit per second, 
measured at the nginx proxy in a 5 minute interval.",
       "fieldConfig": {
@@ -1355,6 +1615,7 @@
           "mappings": [],
           "max": 100000,
           "min": 0,
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
@@ -1371,7 +1632,7 @@
         "h": 3,
         "w": 5,
         "x": 5,
-        "y": 9
+        "y": 19
       },
       "id": 30,
       "options": {
@@ -1389,7 +1650,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1404,7 +1665,82 @@
           "refId": "A"
         }
       ],
-      "title": "Payments per Second",
+      "title": "Payments per Second [5m]",
+      "transformations": [],
+      "type": "stat"
+    },
+    {
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "thresholds"
+          },
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "None"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "None",
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              },
+              {
+                "color": "text",
+                "value": 0
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 4,
+        "w": 5,
+        "x": 0,
+        "y": 20
+      },
+      "id": 80,
+      "options": {
+        "colorMode": "none",
+        "graphMode": "none",
+        "justifyMode": "center",
+        "orientation": "auto",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "textMode": "auto"
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": "count 
(label_replace(rate(pg_stat_user_tables_vacuum_count{relname=~\"reserves_[0-9]+\"}
 [5m]), \"relnamenew\", \"$1\", \"relname\", \"(.*[^_0-9])(_[0-9]+)*\"))",
+          "instant": true,
+          "interval": "",
+          "legendFormat": "",
+          "refId": "A"
+        }
+      ],
+      "title": "Partitions",
       "transformations": [],
       "type": "stat"
     },
@@ -1415,7 +1751,19 @@
           "color": {
             "mode": "thresholds"
           },
-          "mappings": [],
+          "mappings": [
+            {
+              "options": {
+                "match": "null+nan",
+                "result": {
+                  "index": 0,
+                  "text": "0"
+                }
+              },
+              "type": "special"
+            }
+          ],
+          "noValue": "0",
           "thresholds": {
             "mode": "absolute",
             "steps": [
@@ -1436,7 +1784,7 @@
         "h": 3,
         "w": 5,
         "x": 5,
-        "y": 12
+        "y": 22
       },
       "id": 54,
       "options": {
@@ -1454,7 +1802,7 @@
         "text": {},
         "textMode": "auto"
       },
-      "pluginVersion": "8.4.3",
+      "pluginVersion": "8.4.6",
       "targets": [
         {
           "datasource": {
@@ -1462,14 +1810,14 @@
             "uid": "${DS_PROMETHEUS}"
           },
           "exemplar": false,
-          "expr": 
"(sum(rate(taler_requests_total_requests{endpoint=\"coins-deposit\", 
status=\"200\"} [5m]))) / (sum 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [5m])))",
+          "expr": "(sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"coins-deposit\", status=\"200\"} 
[5m]) or vector(0))) / on (__name__) (sum by (__name__) 
(rate(taler_requests_total_requests{endpoint=\"reserves-withdraw\", 
status=\"200\"} [5m]) or vector(0)) + on (__name__) sum by (__name__) 
(rate(taler_exchange_batch_withdraw_num_coins{} [5m]) or vector(0)))",
           "instant": true,
           "interval": "",
           "legendFormat": "",
           "refId": "A"
         }
       ],
-      "title": "Payments / Withdraw",
+      "title": "Payments / Withdraw [5m]",
       "type": "stat"
     },
     {
@@ -1478,7 +1826,7 @@
         "h": 1,
         "w": 24,
         "x": 0,
-        "y": 15
+        "y": 25
       },
       "id": 20,
       "panels": [
@@ -1512,7 +1860,7 @@
             "h": 9,
             "w": 5,
             "x": 0,
-            "y": 16
+            "y": 26
           },
           "id": 14,
           "options": {
@@ -1528,7 +1876,7 @@
             "showThresholdMarkers": true,
             "text": {}
           },
-          "pluginVersion": "8.4.3",
+          "pluginVersion": "8.4.6",
           "targets": [
             {
               "datasource": {
@@ -1573,7 +1921,7 @@
             "h": 3,
             "w": 5,
             "x": 5,
-            "y": 16
+            "y": 26
           },
           "id": 16,
           "options": {
@@ -1591,7 +1939,7 @@
             "text": {},
             "textMode": "auto"
           },
-          "pluginVersion": "8.4.3",
+          "pluginVersion": "8.4.6",
           "targets": [
             {
               "datasource": {
@@ -1667,7 +2015,7 @@
             "h": 9,
             "w": 14,
             "x": 10,
-            "y": 16
+            "y": 26
           },
           "id": 26,
           "options": {
@@ -1721,7 +2069,7 @@
             "h": 3,
             "w": 5,
             "x": 5,
-            "y": 19
+            "y": 29
           },
           "id": 6,
           "options": {
@@ -1739,7 +2087,7 @@
             "text": {},
             "textMode": "auto"
           },
-          "pluginVersion": "8.4.3",
+          "pluginVersion": "8.4.6",
           "targets": [
             {
               "datasource": {
@@ -1788,7 +2136,7 @@
             "h": 3,
             "w": 5,
             "x": 5,
-            "y": 22
+            "y": 32
           },
           "id": 12,
           "options": {
@@ -1806,7 +2154,7 @@
             "text": {},
             "textMode": "auto"
           },
-          "pluginVersion": "8.4.3",
+          "pluginVersion": "8.4.6",
           "targets": [
             {
               "datasource": {
@@ -1832,7 +2180,7 @@
         "h": 1,
         "w": 24,
         "x": 0,
-        "y": 16
+        "y": 26
       },
       "id": 40,
       "panels": [],
@@ -1900,7 +2248,7 @@
         "h": 10,
         "w": 10,
         "x": 0,
-        "y": 17
+        "y": 27
       },
       "id": 44,
       "maxDataPoints": 500,
@@ -1988,7 +2336,7 @@
         "h": 10,
         "w": 14,
         "x": 10,
-        "y": 17
+        "y": 27
       },
       "id": 38,
       "options": {
@@ -2075,7 +2423,7 @@
         "h": 10,
         "w": 10,
         "x": 0,
-        "y": 27
+        "y": 37
       },
       "id": 43,
       "maxDataPoints": 500,
@@ -2162,7 +2510,7 @@
         "h": 10,
         "w": 14,
         "x": 10,
-        "y": 27
+        "y": 37
       },
       "id": 55,
       "options": {
@@ -2187,6 +2535,68 @@
       ],
       "title": "Exchanges over Time",
       "type": "timeseries"
+    },
+    {
+      "description": "Number of deposits done to each account, this is only 
updated once the aggregator was run and the bank logged the transfers.",
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "fixedColor": "green",
+            "mode": "fixed"
+          },
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              }
+            ]
+          },
+          "unit": "short"
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 10,
+        "w": 24,
+        "x": 0,
+        "y": 47
+      },
+      "id": 74,
+      "options": {
+        "displayMode": "basic",
+        "orientation": "horizontal",
+        "reduceOptions": {
+          "calcs": [
+            "lastNotNull"
+          ],
+          "fields": "",
+          "values": false
+        },
+        "showUnfilled": true,
+        "text": {}
+      },
+      "pluginVersion": "8.4.6",
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "exemplar": false,
+          "expr": "sort_desc(sum by (account) 
(taler_fakebank_account_payments{account!=\"Exchange\"}))",
+          "format": "time_series",
+          "instant": true,
+          "interval": "",
+          "legendFormat": "{{ account }}",
+          "refId": "A"
+        }
+      ],
+      "title": "Deposits by Account",
+      "transformations": [],
+      "type": "bargauge"
     }
   ],
   "refresh": "10s",
@@ -2207,6 +2617,6 @@
   "timezone": "",
   "title": "Transactions",
   "uid": "83vvgKKnk",
-  "version": 134,
+  "version": 169,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/additional/persist.sh b/additional/persist.sh
index 83448b9..12bddc5 100755
--- a/additional/persist.sh
+++ b/additional/persist.sh
@@ -50,16 +50,19 @@ function backup() {
   
   G5K_BACKUP="g5k-$(date +%s).tar.gz"
   
-  echo "Creating archive, this can take some time"
-  ssh g5k 'rm -rf grenoble/g5k.tar* && find . -type l -maxdepth 1 -exec tar 
--ignore-failed-read -rf grenoble/g5k.tar -C {} exp-logs exp-data espec-times 
2>&1 \; | grep -vi "no such file"' &
-  
+  ssh g5k 'rm -rf grenoble/g5k.tar* || true'
+
+  echo "Copying files, this can take some time"
+  # We are not using tar -r because this scans the whole archive and takes 
forever for big ones
+  ssh g5k 'find . -maxdepth 1 -type l ! -name grenoble -exec cp -r {}/exp-data 
{}/exp-logs {}/espec-times grenoble \; 2>&1 | grep -v "cannot stat"' &
+
   PID=$!
   while kill -0 $PID > /dev/null 2>&1; do
     work_in_progress
   done
-  
-  echo "Compressing archive, this may take some time"
-  ssh g5k 'gzip grenoble/g5k.tar' &
+
+  echo "Creating archive, this can take some time"
+  ssh grenoble.g5k 'tar -czf g5k.tar.gz exp-logs exp-data espec-times' &
   
   PID=$!
   while kill -0 $PID > /dev/null 2>&1; do
@@ -67,7 +70,7 @@ function backup() {
   done
   
   echo "Copying archive to local machine"
-  scp g5k:~/grenoble/g5k.tar.gz ${G5K_BACKUP}
+  scp grenoble.g5k:g5k.tar.gz ${G5K_BACKUP}
   
   test -d ${BACKUP_DIR} || mkdir ${BACKUP_DIR}
   
@@ -105,6 +108,10 @@ if [[ $(ssh-add -L) =~ "The agent has no" ]]; then
   exit 1
 fi
   
+if ! ssh -q -o BatchMode=yes g5k 'exit'; then
+  echo "SSH connection does not work, please check your configuration"
+  exit 1
+fi
   
 case $1 in
   -b|--backup)
diff --git a/additional/recover/run.sh b/additional/recover/run.sh
index 1565ef0..c88bdac 100755
--- a/additional/recover/run.sh
+++ b/additional/recover/run.sh
@@ -3,8 +3,19 @@ set -e
 # Script to run a local instance of grafana, loki and prometheus
 # with a data (prometheus and loki) snapshot of an experiment
 
+function cleanup() {
+  docker-compose down -v
+  rm -rf ${TMP_BASEDIR}
+}
+
+function ctrl_c() {
+  echo "Shutting down"
+  cleanup
+}
+
 function fail() {
   echo -e "$1"
+  cleanup
   exit 1
 }
 
@@ -35,17 +46,16 @@ if file ${EXP_DATA} | grep -q 'tar archive'; then
   tar -xvf /tmp/${G5K_ARCHIVE} -C /tmp exp-data 
   rm -rf /tmp/${G5K_ARCHIVE}
   EXP_DATA=/tmp/exp-data
-  mv ${EXP_DATA} ${TMP_BASEDIR}
+  mv ${EXP_DATA}/* ${TMP_BASEDIR}
+  rm -rf ${EXP_DATA}
 else
   cp -r ${EXP_DATA} ${TMP_BASEDIR}
 fi
 
-
 # load the times to adjust the grafana dashboards
 source "${TMP_BASEDIR}/times.env" || fail \
 "Archive does not contain times.env,
 make sure to pass an uncomressed tar archive created with persist.sh or the 
unpacked exp-data folder"
- 
 
 START=$(date --date=@${EXPERIMENT_START} +"%F %T")
 END=$(date --date=@${SNAPSHOT_TIME} +"%F %T")
@@ -65,27 +75,19 @@ function startup() {
     OUTPUT="${DASHBOARDS_DIR}/$(basename $FILE)"
     sed -e 's/${DS_PROMETHEUS}/default-prometheus/g' \
        -e 's/${DS_LOKI}/default-loki/g' $FILE | \
-    jq --arg f "${START}" --arg t "${END}" '.time.from=$f | .time.to=$t' > 
$OUTPUT
+    jq --arg f "${START}" \
+       --arg t "${END}" \
+       '.time.from=$f | .time.to=$t' > $OUTPUT
   done
 
   docker-compose down
   docker-compose up &
 }
 
-function cleanup() {
-  docker-compose down -v
-  rm -rf ${TMP_BASEDIR}
-}
-
-function ctrl_c() {
-  echo "Shutting down"
-  cleanup
-}
-
 trap ctrl_c INT
 
 startup
-while ! wget -q http://localhost:8080; do
+while ! wget -q -O /dev/null http://localhost:8080; do
   sleep 2 || exit 1
 done
 echo "Instances running, please head to http://localhost:8080";
diff --git a/experiment/taler.many.rspec 
b/additional/rspecs/taler.many.with-auditor.rspec
similarity index 91%
copy from experiment/taler.many.rspec
copy to additional/rspecs/taler.many.with-auditor.rspec
index 4abfe99..d5274a0 100644
--- a/experiment/taler.many.rspec
+++ b/additional/rspecs/taler.many.with-auditor.rspec
@@ -1,87 +1,87 @@
 <?xml version='1.0'?>
-<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-04-06T21:42:37.131+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
+<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-05-15T13:51:37.636+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
   <node client_id="DB" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="97.68354430379748" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="94.0" 
y="32.5"/>
   </node>
   <node client_id="Exchange-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="221.0" 
y="72.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="155.0" 
y="76.5"/>
   </node>
   <node client_id="Bank" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="474.7974683544304" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="393.0" 
y="33.5"/>
   </node>
   <node client_id="EProxy-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="226.5" 
y="126.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="165.5" 
y="125.5"/>
   </node>
   <node client_id="Monitor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="915.0" 
y="92.81119637333838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="688.5" 
y="75.5"/>
   </node>
   <node client_id="Merchant-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="662.6455696202531" y="92.81119637333838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="861.5" 
y="34.5"/>
   </node>
   <node client_id="DNS" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="781.0253164556962" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="679.0" 
y="35.5"/>
   </node>
   <node client_id="Aggregator" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="500.5" 
y="138.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="541.5" 
y="35.5"/>
   </node>
   <node client_id="Wirewatch" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="649.5" 
y="139.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="539.5" 
y="74.5"/>
   </node>
   <node client_id="Transfer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="790.5" 
y="138.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="531.5" 
y="116.5"/>
   </node>
   <node client_id="Closer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="913.5" 
y="137.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="523.5" 
y="154.5"/>
   </node>
   <node client_id="Exchange-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="364.0" 
y="70.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="314.0" 
y="76.5"/>
   </node>
   <node client_id="Wallet-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -93,7 +93,7 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="269.5" 
y="206.5"/>
   </node>
   <node client_id="Wallet-3" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -111,7 +111,7 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="862.5" 
y="202.5"/>
   </node>
   <node client_id="Wallet-6" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -123,7 +123,7 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="271.5" 
y="236.5"/>
   </node>
   <node client_id="Wallet-8" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -135,19 +135,19 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="660.5" 
y="234.5"/>
   </node>
   <node client_id="Wallet-10" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="866.0" 
y="235.5"/>
   </node>
   <node client_id="Wallet-11" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="79.0" 
y="268.5"/>
   </node>
   <node client_id="Wallet-12" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -159,25 +159,25 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="268.5"/>
   </node>
   <node client_id="Wallet-14" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="265.5"/>
   </node>
   <node client_id="Wallet-15" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="266.5"/>
   </node>
   <node client_id="Wallet-16" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="79.0" 
y="299.5"/>
   </node>
   <node client_id="Wallet-17" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -189,31 +189,31 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="300.5"/>
   </node>
   <node client_id="Wallet-19" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="666.0" 
y="298.5"/>
   </node>
   <node client_id="Wallet-20" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="298.5"/>
   </node>
   <node client_id="Wallet-21" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="330.5"/>
   </node>
   <node client_id="Wallet-22" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="279.15189873417717" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="274.0" 
y="332.5"/>
   </node>
   <node client_id="Wallet-23" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -225,25 +225,25 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="677.5316455696203" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="666.0" 
y="331.5"/>
   </node>
   <node client_id="Wallet-25" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="876.012658227848" y="331.91425873019625"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="328.5"/>
   </node>
   <node client_id="Wallet-26" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="86.34177215189874" y="364.0559818666919"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="361.5"/>
   </node>
   <node client_id="Wallet-27" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="364.8399263334357"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="275.0" 
y="360.5"/>
   </node>
   <node client_id="Wallet-28" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -255,199 +255,206 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="681.7848101265823" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="364.5"/>
   </node>
   <node client_id="Wallet-30" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="881.6835443037975" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="360.5"/>
   </node>
   <node client_id="Wallet-31" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="393.84587160295615"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="79.0" 
y="391.5"/>
   </node>
   <node client_id="Wallet-32" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="276.0" 
y="392.5"/>
   </node>
   <node client_id="Wallet-33" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="484.72151898734177" y="399.33348287016264"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="402.5"/>
   </node>
   <node client_id="Wallet-34" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="678.9493670886076" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="398.5"/>
   </node>
   <node client_id="Wallet-35" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="884.5189873417721" y="395.41376053644376"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="398.5"/>
   </node>
   <node client_id="Wallet-36" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="423.5"/>
   </node>
   <node client_id="Wallet-37" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="289.0759493670886" y="428.33942813968315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="276.0" 
y="424.5"/>
   </node>
   <node client_id="Wallet-38" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="488.97468354430373" y="429.90731707317076"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="480.0" 
y="434.5"/>
   </node>
   <node client_id="Wallet-39" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="688.873417721519" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="432.5"/>
   </node>
   <node client_id="Wallet-40" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="891.6075949367088" y="427.55548367293943"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="431.5"/>
   </node>
   <node client_id="Wallet-41" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="463.3365853658537"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="454.5"/>
   </node>
   <node client_id="Wallet-42" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="295.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="277.0" 
y="455.5"/>
   </node>
   <node client_id="Wallet-43" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="485.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-44" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="685.0" 
y="455.8243902439025"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-45" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="892.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-46" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="87.0" 
y="497.89268292682925"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="81.0" 
y="487.5"/>
   </node>
   <node client_id="Wallet-47" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="297.0" 
y="492.63414634146346"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="277.0" 
y="487.5"/>
   </node>
   <node client_id="Wallet-48" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="491.0" 
y="496.390243902439"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="494.5"/>
   </node>
   <node client_id="Wallet-49" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.0" 
y="487.37560975609756"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="664.0" 
y="497.5"/>
   </node>
   <node client_id="Wallet-50" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="897.0" 
y="492.63414634146346"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="495.5"/>
   </node>
   <node client_id="Wallet-51" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="86.0" 
y="530.1951219512196"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="82.0" 
y="520.5"/>
   </node>
   <node client_id="Wallet-52" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="301.0" 
y="525.6878048780488"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="276.0" 
y="519.5"/>
   </node>
   <node client_id="Wallet-53" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="492.99999999999994" y="529.4439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="526.5"/>
   </node>
   <node client_id="Wallet-54" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="692.0" 
y="526.439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="664.0" 
y="526.5"/>
   </node>
   <node client_id="Wallet-55" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="901.9999999999999" y="529.4439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="527.5"/>
   </node>
   <node client_id="Wallet-56" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="90.0" 
y="558.7414634146342"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="83.0" 
y="550.5"/>
   </node>
   <node client_id="Wallet-57" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.0" 
y="558.7414634146342"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="277.0" 
y="550.5"/>
   </node>
   <node client_id="Wallet-58" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="494.0" 
y="560.2439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="556.5"/>
   </node>
   <node client_id="Wallet-59" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="696.0" 
y="557.2390243902439"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="558.5"/>
   </node>
   <node client_id="Wallet-60" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="904.9999999999999" y="564.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="560.5"/>
   </node>
   <node client_id="EProxy-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="338.0" 
y="126.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.5" 
y="125.5"/>
+  </node>
+  <node client_id="Auditor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.0" 
y="116.5"/>
   </node>
 </rspec>
\ No newline at end of file
diff --git a/additional/rspecs/taler.minial.rspec 
b/additional/rspecs/taler.minial.rspec
index f18357b..7c9d904 100644
--- a/additional/rspecs/taler.minial.rspec
+++ b/additional/rspecs/taler.minial.rspec
@@ -1,45 +1,51 @@
 <?xml version='1.0'?>
-<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-04-02T11:14:04.525+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
+<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-05-14T11:23:31.990+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
   <node client_id="DB" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
     <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="166.0" 
y="102.5"/>
   </node>
   <node client_id="Exchange-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
     <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="220.0" 
y="159.5"/>
   </node>
   <node client_id="Bank" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
     <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="280.0" 
y="102.5"/>
   </node>
   <node client_id="EProxy-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
     <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="218.5" 
y="217.5"/>
   </node>
   <node client_id="Monitor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="467.5" 
y="155.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="476.5" 
y="147.5"/>
   </node>
   <node client_id="DNS" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="458.0" 
y="109.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="468.0" 
y="107.5"/>
   </node>
-</rspec>
+  <node client_id="Auditor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="471.0" 
y="188.5"/>
+  </node>
+  <node client_id="Merchant-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="488.5" 
y="228.5"/>
+  </node>
+</rspec>
\ No newline at end of file
diff --git a/experiment/taler.many.rspec b/additional/rspecs/taler.neowise.rspec
similarity index 64%
copy from experiment/taler.many.rspec
copy to additional/rspecs/taler.neowise.rspec
index 4abfe99..09fa32f 100644
--- a/experiment/taler.many.rspec
+++ b/additional/rspecs/taler.neowise.rspec
@@ -1,453 +1,333 @@
 <?xml version='1.0'?>
-<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-04-06T21:42:37.131+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
+<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-05-26T08:21:12.491+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
   <node client_id="DB" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="97.68354430379748" y="25.0"/>
+    <hardware_type name="neowise-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="95.17699115044248" y="45.631578947368425"/>
   </node>
   <node client_id="Exchange-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="221.0" 
y="72.5"/>
+    <hardware_type name="neowise-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="159.95575221238937" y="102.36842105263158"/>
   </node>
   <node client_id="Bank" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="474.7974683544304" y="25.0"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="377.0" 
y="49.5"/>
   </node>
   <node client_id="EProxy-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="226.5" 
y="126.5"/>
+    <hardware_type name="neowise-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="171.1061946902655" y="165.55263157894737"/>
   </node>
   <node client_id="Monitor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="915.0" 
y="92.81119637333838"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="728.6283185840708" y="117.84210526315789"/>
   </node>
   <node client_id="Merchant-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="662.6455696202531" y="92.81119637333838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="910.2212389380531" y="48.21052631578947"/>
   </node>
   <node client_id="DNS" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="781.0253164556962" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="716.4159292035399" y="49.5"/>
   </node>
   <node client_id="Aggregator" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="500.5" 
y="138.5"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="570.3982300884957" y="49.5"/>
   </node>
   <node client_id="Wirewatch" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="649.5" 
y="139.5"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="568.2743362831859" y="99.78947368421052"/>
   </node>
   <node client_id="Transfer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="790.5" 
y="138.5"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="559.778761061947" y="153.94736842105263"/>
   </node>
   <node client_id="Closer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="913.5" 
y="137.5"/>
+    <hardware_type name="any-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="558.5" 
y="201.5"/>
   </node>
   <node client_id="Exchange-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="364.0" 
y="70.5"/>
+    <hardware_type name="neowise-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="328.8053097345133" y="102.36842105263158"/>
   </node>
   <node client_id="Wallet-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="268.4619510579628"/>
   </node>
   <node client_id="Wallet-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="285.77629662820664" y="268.4619510579628"/>
   </node>
   <node client_id="Wallet-3" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="496.55259325641316" y="268.4619510579628"/>
   </node>
   <node client_id="Wallet-4" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="660.5" 
y="202.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="696.7699115044248" y="264.8421052631579"/>
   </node>
   <node client_id="Wallet-5" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="911.283185840708" y="264.8421052631579"/>
   </node>
   <node client_id="Wallet-6" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="308.8969814479059"/>
   </node>
   <node client_id="Wallet-7" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="285.77629662820664" y="308.8969814479059"/>
   </node>
   <node client_id="Wallet-8" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="496.55259325641316" y="308.8969814479059"/>
   </node>
   <node client_id="Wallet-9" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="696.7699115044248" y="306.10526315789474"/>
   </node>
   <node client_id="Wallet-10" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="915.0000000000001" y="307.39473684210526"/>
   </node>
   <node client_id="Wallet-11" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="79.24778761061947" y="349.94736842105266"/>
   </node>
   <node client_id="Wallet-12" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="285.77629662820664" y="349.33201183784905"/>
   </node>
   <node client_id="Wallet-13" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="502.96460176991155" y="349.94736842105266"/>
   </node>
   <node client_id="Wallet-14" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="701.5486725663717" y="346.07894736842104"/>
   </node>
   <node client_id="Wallet-15" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="347.36842105263156"/>
   </node>
   <node client_id="Wallet-16" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="82.43362831858407" y="388.63157894736844"/>
   </node>
   <node client_id="Wallet-17" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="285.77629662820664" y="389.76704222779233"/>
   </node>
   <node client_id="Wallet-18" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="504.02654867256643" y="391.2105263157895"/>
   </node>
   <node client_id="Wallet-19" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="702.6106194690266" y="388.63157894736844"/>
   </node>
   <node client_id="Wallet-20" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="388.63157894736844"/>
   </node>
   <node client_id="Wallet-21" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="83.49557522123894" y="427.3157894736842"/>
   </node>
   <node client_id="Wallet-22" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="279.15189873417717" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="286.3274336283186" y="432.4736842105263"/>
   </node>
   <node client_id="Wallet-23" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="477.63291139240505" y="334.26609213042764"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="502.5747731600762" y="434.75101353660403"/>
   </node>
   <node client_id="Wallet-24" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="677.5316455696203" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="702.6106194690266" y="431.1842105263158"/>
   </node>
   <node client_id="Wallet-25" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="876.012658227848" y="331.91425873019625"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="427.3157894736842"/>
   </node>
   <node client_id="Wallet-26" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="86.34177215189874" y="364.0559818666919"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="84.5575221238938" y="466.0"/>
   </node>
   <node client_id="Wallet-27" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="364.8399263334357"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="287.3893805309735" y="468.57894736842104"/>
   </node>
   <node client_id="Wallet-28" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="477.99999999999994" y="370.93658536585366"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="502.9646017699115" y="482.03664955070604"/>
   </node>
   <node client_id="Wallet-29" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="681.7848101265823" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="701.5486725663717" y="473.7368421052632"/>
   </node>
   <node client_id="Wallet-30" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="881.6835443037975" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="468.57894736842104"/>
   </node>
   <node client_id="Wallet-31" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="393.84587160295615"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="79.24778761061947" y="508.5526315789474"/>
   </node>
   <node client_id="Wallet-32" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="288.4513274336283" y="509.8421052631579"/>
   </node>
   <node client_id="Wallet-33" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="484.72151898734177" y="399.33348287016264"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="502.96460176991155" y="522.7368421052631"/>
   </node>
   <node client_id="Wallet-34" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="678.9493670886076" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="701.5486725663717" y="517.578947368421"/>
   </node>
   <node client_id="Wallet-35" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="884.5189873417721" y="395.41376053644376"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="517.578947368421"/>
   </node>
   <node client_id="Wallet-36" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.30973451327434" y="549.8157894736842"/>
   </node>
   <node client_id="Wallet-37" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="289.0759493670886" y="428.33942813968315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="289.5132743362832" y="557.5526315789474"/>
   </node>
   <node client_id="Wallet-38" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="488.97468354430373" y="429.90731707317076"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="505.08849557522126" y="564.0"/>
   </node>
   <node client_id="Wallet-39" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="688.873417721519" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="701.5486725663717" y="561.421052631579"/>
   </node>
   <node client_id="Wallet-40" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="891.6075949367088" y="427.55548367293943"/>
-  </node>
-  <node client_id="Wallet-41" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="463.3365853658537"/>
-  </node>
-  <node client_id="Wallet-42" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="295.0" 
y="460.3317073170732"/>
-  </node>
-  <node client_id="Wallet-43" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="485.0" 
y="460.3317073170732"/>
-  </node>
-  <node client_id="Wallet-44" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="685.0" 
y="455.8243902439025"/>
-  </node>
-  <node client_id="Wallet-45" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="892.0" 
y="460.3317073170732"/>
-  </node>
-  <node client_id="Wallet-46" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="87.0" 
y="497.89268292682925"/>
-  </node>
-  <node client_id="Wallet-47" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="297.0" 
y="492.63414634146346"/>
-  </node>
-  <node client_id="Wallet-48" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="491.0" 
y="496.390243902439"/>
-  </node>
-  <node client_id="Wallet-49" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.0" 
y="487.37560975609756"/>
-  </node>
-  <node client_id="Wallet-50" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="897.0" 
y="492.63414634146346"/>
-  </node>
-  <node client_id="Wallet-51" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="86.0" 
y="530.1951219512196"/>
-  </node>
-  <node client_id="Wallet-52" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="301.0" 
y="525.6878048780488"/>
-  </node>
-  <node client_id="Wallet-53" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="492.99999999999994" y="529.4439024390244"/>
-  </node>
-  <node client_id="Wallet-54" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="692.0" 
y="526.439024390244"/>
-  </node>
-  <node client_id="Wallet-55" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="901.9999999999999" y="529.4439024390244"/>
-  </node>
-  <node client_id="Wallet-56" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="90.0" 
y="558.7414634146342"/>
-  </node>
-  <node client_id="Wallet-57" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.0" 
y="558.7414634146342"/>
-  </node>
-  <node client_id="Wallet-58" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="494.0" 
y="560.2439024390244"/>
-  </node>
-  <node client_id="Wallet-59" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="696.0" 
y="557.2390243902439"/>
-  </node>
-  <node client_id="Wallet-60" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
-    <sliver_type name="raw-pc">
-      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
-    </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="904.9999999999999" y="564.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="913.9380530973452" y="560.1315789473684"/>
   </node>
   <node client_id="EProxy-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="338.0" 
y="126.5"/>
+    <hardware_type name="neowise-lyon"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="324.0265486725664" y="164.26315789473685"/>
   </node>
 </rspec>
\ No newline at end of file
diff --git a/configs/etc/default/prometheus-postgres-exporter 
b/configs/etc/default/prometheus-postgres-exporter
index 39d2d18..91b5f51 100644
--- a/configs/etc/default/prometheus-postgres-exporter
+++ b/configs/etc/default/prometheus-postgres-exporter
@@ -5,7 +5,7 @@
 # DATA_SOURCE_NAME='postgresql://login:password@hostname:port/'
 # DATA_SOURCE_NAME='user=prometheus host=/run/postgresql dbname=postgres'
 # IMPORTANT - place no comma between placeholders, it will be handled by the 
scripts
-DATA_SOURCE_NAME='<EXCHANGE_DB_URL_HERE><MERCHANT_DB_URL_HERE><SHARD_DB_URLS_HERE>'
+DATA_SOURCE_NAME='<EXCHANGE_DB_URL_HERE><MERCHANT_DB_URL_HERE><SHARD_DB_URLS_HERE><AUDITOR_DB_URL_HERE>'
 
 # Set the command-line arguments to pass to the server.
 ARGS='--extend.query-path=/etc/monitor/postgres-exporter.yaml'
diff --git a/configs/etc/monitor/node-exporters.yaml.tpl 
b/configs/etc/monitor/node-exporters.yaml.tpl
index 4a0815d..1d8634e 100644
--- a/configs/etc/monitor/node-exporters.yaml.tpl
+++ b/configs/etc/monitor/node-exporters.yaml.tpl
@@ -52,3 +52,7 @@
         component: 'shard'
       targets:
       # <SHARD_NODES_HERE>
+    - labels:
+        component: 'auditor'
+      targets:
+      - 'auditor.perf.taler:9100'
diff --git a/configs/etc/monitor/postgres-exporter.yaml 
b/configs/etc/monitor/postgres-exporter.yaml
index 1f4eb37..e215f07 100644
--- a/configs/etc/monitor/postgres-exporter.yaml
+++ b/configs/etc/monitor/postgres-exporter.yaml
@@ -158,6 +158,20 @@ pg_database:
         usage: "GAUGE"
         description: "Disk space used by the database"
 
+pg_wait_events:
+  query: "SELECT wait_event_type, wait_event, COUNT(wait_event) FROM 
pg_stat_activity WHERE wait_event IS NOT NULL GROUP BY (wait_event_type, 
wait_event)"
+  master: true
+  metrics:
+    - wait_event_type:
+        usage: "LABEL"
+        description: "Type of the wait event"
+    - wait_event:
+        usage: "LABEL"
+        description: "Wait events"
+    - total:
+        usage: "COUNTER"
+        description: "Number of wait events"
+
 #pg_stat_statements:
 #  query: "SELECT t2.rolname, t3.datname, queryid, calls, total_exec_time / 
1000 as total_time_seconds, min_exec_time / 1000 as min_time_seconds, 
max_exec_time / 1000 as max_time_seconds, mean_exec_time / 1000 as 
mean_time_seconds, stddev_exec_time / 1000 as stddev_time_seconds, rows, 
shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, 
local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, 
temp_blks_read, temp_blks_written, blk_read_time / 1000  [...]
 #  master: true
diff --git a/configs/etc/monitor/promtail.yaml 
b/configs/etc/monitor/promtail.yaml
index a5f9260..d4d0e7b 100644
--- a/configs/etc/monitor/promtail.yaml
+++ b/configs/etc/monitor/promtail.yaml
@@ -77,7 +77,7 @@ scrape_configs:
         selector: '{job="proxy"}'
         stages:
         - regex:
-            expression: 
'uri=/(?P<ep>[a-zA-Z]+)(?:/\w+)?(?:/(?P<act>[a-zA-Z]+))? 
s=(?P<status>\d{3}).*urt=(?P<upstream_response_time>\d+\.\d+) 
rt=(?P<response_time>\d+\.\d+) rl=(?P<request_length>\d+) 
bs=(?P<bytes_sent>\d+)'
+            expression: 
'uri=/(?P<ep>[a-zA-Z]+)(?:/\w+)?(?:/(?P<act>[a-zA-Z-]+))? 
s=(?P<status>\d{3}).*urt=(?P<upstream_response_time>\d+\.\d+) 
rt=(?P<response_time>\d+\.\d+) rl=(?P<request_length>\d+) 
bs=(?P<bytes_sent>\d+)'
         - template:
             source: endpoint
             template: '{{ printf "%s-%s" .ep .act | trimSuffix "-" }}'
@@ -145,10 +145,37 @@ scrape_configs:
       target_label: app
   pipeline_stages:
     - match:
-        selector: '{job="wallet"} |~ "Bench1"'
+        selector: '{job="wallet"} |~ "Bench1|Bench3"'
         stages:
         - template:
             source: script
             template: 'benchmark'
         - labels:
             script:
+
+- job_name: fakebank
+  syslog:
+    listen_address: 0.0.0.0:1518
+    labels:
+      job: fakebank
+  relabel_configs:
+    - source_labels: [__syslog_message_app_name]
+      target_label: app
+  pipeline_stages:
+    - match:
+        selector: '{job="fakebank"} |~ "Making(.*)"'
+        stages:
+        - regex:
+            expression: 'Making transfer \d+.*to (?P<account>[A-Za-z0-9-_]+)'
+        - labels:
+            account:
+        - metrics:
+            account_payments:
+              prefix: 'taler_fakebank_'
+              type: Gauge
+              description: "Total payments done"
+              source: account
+              config:
+                action: inc
+    - drop:
+        expression: '.*Making.*'
diff --git a/configs/etc/nginx/sites-available/merchant 
b/configs/etc/nginx/sites-available/auditor
similarity index 60%
copy from configs/etc/nginx/sites-available/merchant
copy to configs/etc/nginx/sites-available/auditor
index 655cbb7..f673bea 100644
--- a/configs/etc/nginx/sites-available/merchant
+++ b/configs/etc/nginx/sites-available/auditor
@@ -1,4 +1,6 @@
 log_format taler 'm=$request_method uri=$uri s=$status '
+                 # Only enable if required, breaks loki logfmt
+                # 'q=$args '
                  'uct=$upstream_connect_time '
                  'urt=$upstream_response_time '
                  'rt=$request_time '
@@ -9,18 +11,19 @@ server {
   listen 80;
   listen 443 ssl;
 
-  ssl_certificate /etc/ssl/merchant.cert.pem;
-  ssl_certificate_key /etc/ssl/merchant.key.pem;
+  ssl_certificate /etc/ssl/auditor.cert.pem;
+  ssl_certificate_key /etc/ssl/auditor.key.pem;
 
   server_name 0.0.0.0;
 
   allow 172.16.0.0/12;
+  allow 127.0.0.1/32;
   deny all;
 
-  access_log 
syslog:server=localhost,facility=user,tag=taler_merchant_proxy,severity=info 
taler;
+  access_log 
syslog:server=localhost,facility=user,tag=taler_auditor_proxy,severity=info 
taler;
 
   location / {
-     proxy_pass http://unix:/var/run/taler/merchant-httpd/merchant.sock;
+     proxy_pass http://unix:/var/run/taler/auditor-httpd/auditor.sock;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Host $remote_addr;
diff --git a/configs/etc/nginx/sites-available/exchange 
b/configs/etc/nginx/sites-available/exchange
index c532895..82731dd 100644
--- a/configs/etc/nginx/sites-available/exchange
+++ b/configs/etc/nginx/sites-available/exchange
@@ -9,6 +9,8 @@ upstream exchange {
 
 # This format is expected by promtail (configs/etc/monitor/promtail.yaml)
 log_format taler 'm=$request_method uri=$uri s=$status '
+                 # Only enable if required, breaks loki logfmt
+                # 'q=$args '
                  'uct=$upstream_connect_time '
                  'urt=$upstream_response_time '
                  'rt=$request_time '
diff --git a/configs/etc/nginx/sites-available/fakebank 
b/configs/etc/nginx/sites-available/fakebank
index 6545770..3971c89 100644
--- a/configs/etc/nginx/sites-available/fakebank
+++ b/configs/etc/nginx/sites-available/fakebank
@@ -1,4 +1,6 @@
 log_format taler 'm=$request_method uri=$uri s=$status '
+                 # Only enable if required, breaks loki logfmt
+                # 'q=$args '
                  'uct=$upstream_connect_time '
                  'urt=$upstream_response_time '
                  'rt=$request_time '
diff --git a/configs/etc/nginx/sites-available/merchant 
b/configs/etc/nginx/sites-available/merchant
index 655cbb7..9e4f74e 100644
--- a/configs/etc/nginx/sites-available/merchant
+++ b/configs/etc/nginx/sites-available/merchant
@@ -1,4 +1,6 @@
 log_format taler 'm=$request_method uri=$uri s=$status '
+                 # Only enable if required, breaks loki logfmt
+                # 'q=$args '
                  'uct=$upstream_connect_time '
                  'urt=$upstream_response_time '
                  'rt=$request_time '
@@ -15,6 +17,7 @@ server {
   server_name 0.0.0.0;
 
   allow 172.16.0.0/12;
+  allow 127.0.0.1/32;
   deny all;
 
   access_log 
syslog:server=localhost,facility=user,tag=taler_merchant_proxy,severity=info 
taler;
diff --git a/configs/etc/taler/conf.d/auditor.conf 
b/configs/etc/taler/conf.d/auditor.conf
new file mode 100644
index 0000000..52a4ac8
--- /dev/null
+++ b/configs/etc/taler/conf.d/auditor.conf
@@ -0,0 +1,16 @@
+[auditor]
+
+BASE_URL = <AUDITOR_URL_HERE>
+
+PUBLIC_KEY = <AUDITOR_PUB_KEY_HERE>
+
+DB = postgres
+
+SERVE = unix
+UNIXPATH = /var/run/taler/auditor-httpd/auditor.sock
+
+TINY_AMOUNT = KUDOS:0.01
+
+[auditordb-postgres]
+
+CONFIG = postgresql:///auditor
diff --git a/configs/etc/taler/conf.d/exchange-business.conf 
b/configs/etc/taler/conf.d/exchange-business.conf
index ee3458a..6697b67 100644
--- a/configs/etc/taler/conf.d/exchange-business.conf
+++ b/configs/etc/taler/conf.d/exchange-business.conf
@@ -2,6 +2,8 @@
 
 MASTER_PUBLIC_KEY = <MASTER_KEY_HERE>
 
+SHARD_DOMAIN = <SHARD_DOMAIN_HERE>
+
 BASE_URL = <BASE_URL_HERE>
 
 MAX_REQUESTS = <MAX_REQUESTS_HERE>
diff --git a/configs/etc/taler/conf.d/fake-bank.conf 
b/configs/etc/taler/conf.d/fake-bank.conf
index 223a389..121459d 100644
--- a/configs/etc/taler/conf.d/fake-bank.conf
+++ b/configs/etc/taler/conf.d/fake-bank.conf
@@ -3,3 +3,4 @@ SERVE = http
 PORT = 8082
 MAX_DEBT = KUDOS:100000000000.0
 MAX_DEBT_BANK = KUDOS:1000000000000000.0
+RAM_LIMIT = 10000000
diff --git a/configs/etc/taler/secrets/exchange-db.secret.conf 
b/configs/etc/taler/secrets/exchange-db.secret.conf
index cb52d0a..68915ff 100644
--- a/configs/etc/taler/secrets/exchange-db.secret.conf
+++ b/configs/etc/taler/secrets/exchange-db.secret.conf
@@ -8,3 +8,6 @@ CONFIG=<DB_URL_HERE>
 
 # The details of the URI depend on where the database lives and how
 # access control was configured.
+
+SHARD_REMOTE_USER=<SHARD_USER_HERE>
+SHARD_REMOTE_USER_PW=<SHARD_USER_PW_HERE>
diff --git a/configs/usr/lib/systemd/system/taler-auditor-httpd.service 
b/configs/usr/lib/systemd/system/taler-auditor-httpd.service
new file mode 100644
index 0000000..75ffdf2
--- /dev/null
+++ b/configs/usr/lib/systemd/system/taler-auditor-httpd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=GNU Taler payment system auditor REST API
+After=postgres.service network.target
+
+[Service]
+User=taler-auditor-httpd
+Group=www-data
+Type=simple
+Restart=on-failure
+ExecStart=/usr/bin/taler-auditor-httpd -c /etc/taler/taler.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/configs/usr/lib/systemd/system/taler-exchange-httpd@.service 
b/configs/usr/lib/systemd/system/taler-exchange-httpd@.service
index 65b2a93..0c39e41 100644
--- a/configs/usr/lib/systemd/system/taler-exchange-httpd@.service
+++ b/configs/usr/lib/systemd/system/taler-exchange-httpd@.service
@@ -20,6 +20,7 @@ StandardError=journal
 PrivateTmp=no
 PrivateDevices=yes
 ProtectSystem=full
+LimitNOFILE=500000
 
 [Install]
 WantedBy=multi-user.target
diff --git a/configs/usr/lib/systemd/system/taler-exchange-secmod-cs.service 
b/configs/usr/lib/systemd/system/taler-exchange-secmod-cs.service
index 4284420..206fd6a 100644
--- a/configs/usr/lib/systemd/system/taler-exchange-secmod-cs.service
+++ b/configs/usr/lib/systemd/system/taler-exchange-secmod-cs.service
@@ -15,4 +15,5 @@ StandardError=journal
 PrivateTmp=no
 PrivateDevices=yes
 ProtectSystem=full
+LimitNOFILE=500000
 
diff --git a/configs/usr/lib/systemd/system/taler-exchange-secmod-eddsa.service 
b/configs/usr/lib/systemd/system/taler-exchange-secmod-eddsa.service
index 6e98f5e..b7f564c 100644
--- a/configs/usr/lib/systemd/system/taler-exchange-secmod-eddsa.service
+++ b/configs/usr/lib/systemd/system/taler-exchange-secmod-eddsa.service
@@ -15,4 +15,4 @@ StandardError=journal
 PrivateTmp=no
 PrivateDevices=yes
 ProtectSystem=full
-
+LimitNOFILE=500000
diff --git a/configs/usr/lib/systemd/system/taler-exchange-secmod-rsa.service 
b/configs/usr/lib/systemd/system/taler-exchange-secmod-rsa.service
index 5f3a2c9..fade8f8 100644
--- a/configs/usr/lib/systemd/system/taler-exchange-secmod-rsa.service
+++ b/configs/usr/lib/systemd/system/taler-exchange-secmod-rsa.service
@@ -15,3 +15,4 @@ StandardError=journal
 PrivateTmp=no
 PrivateDevices=yes
 ProtectSystem=full
+LimitNOFILE=500000
diff --git a/configs/usr/lib/systemd/system/taler-fakebank.service 
b/configs/usr/lib/systemd/system/taler-fakebank.service
index 074e917..5ce142d 100644
--- a/configs/usr/lib/systemd/system/taler-fakebank.service
+++ b/configs/usr/lib/systemd/system/taler-fakebank.service
@@ -2,11 +2,13 @@
 Description=GNU Taler fake bank 
 
 [Service]
+User=root
 Type=simple
 EnvironmentFile=/etc/environment
-ExecStart=/usr/bin/taler-fakebank-run -c /etc/taler/taler.conf -n 100 
$TALER_ARGS $BANK_ARGS
+ExecStart=/usr/bin/taler-fakebank-run -c /etc/taler/taler.conf -n 16 
$TALER_ARGS $BANK_ARGS
 StandardOutput=journal
 StandardError=journal
+LimitNOFILE=500000
 
 [Install]
 WantedBy=multi-user.target
diff --git a/configs/usr/lib/systemd/system/taler-netdelay.timer 
b/configs/usr/lib/systemd/system/taler-netdelay.timer
index f445635..3c833ca 100644
--- a/configs/usr/lib/systemd/system/taler-netdelay.timer
+++ b/configs/usr/lib/systemd/system/taler-netdelay.timer
@@ -4,7 +4,7 @@ Requires=taler-netdelay.service
 
 [Timer]
 Unit=taler-netdelay.service
-OnCalendar=*:0/5
+OnCalendar=*:0/1
 
 [Install]
 WantedBy=timers.target
diff --git a/experiment/env b/experiment/env
index d72f84b..b05e9be 100644
--- a/experiment/env
+++ b/experiment/env
@@ -8,7 +8,7 @@
 # (used to determine which script to execute in run.sh)
 # Wallets are not needed explicitely since they can (and will be)
 # exported as a wildcard (*).
-NODES="Bank DB DNS Exchange Aggregator Closer Transfer Wirewatch Merchant 
Monitor EProxy Shard"
+NODES="Bank DB DNS Exchange Aggregator Closer Transfer Wirewatch Auditor 
Merchant Monitor EProxy Shard"
 
 # DNS Zone to setup inside the grid for the experiment
 DNS_ZONE=perf.taler
@@ -28,7 +28,7 @@ EXCHANGE_GW_DOMAIN=exchange.${DNS_ZONE}
 
 # Arguments to pass to all taler-exchange-* binaries at startup.
 # E.g. -L INFO
-     TALER_ARGS="-L INFO"
+     TALER_ARGS="-L ERROR"
 # Service specific arguments to pass at startup
 AGGREGATOR_ARGS="-y"
       BANK_ARGS=""
@@ -67,6 +67,7 @@ LOKI_DATASOURCE_NAME=Loki
 # These values most certain do not need to be adjusted, unless their
 # config in ../configs/etc/* is changed.
 # Doc: https://www.grid5000.fr/w/HTTP/HTTPs_access
+# Valid values: http/http8080, https/https8443
 PROMETHEUS_G5K_PROXY_PORT=http8080
 LOKI_G5K_PROXY_PORT=http
 
@@ -101,9 +102,22 @@ WALLET_BENCHMARK=bench1
 WALLET_USE_HTTPS=true
 # Run a withdraw only experiment
 WALLET_WITHDRAW_ONLY=false
+# How the wallets select merchants, possible values: 'zipf' and 'rand'
+# If the configured value is neither zipf or rand, a single merchant is taken
+WALLET_MERCHANT_SELECTION=normal
+# How many merchants should be used to select randomly from
+WALLET_NUM_MERCHANTS=1000
 # Needed for wallets to accept self signed certificates
 NODE_TLS_REJECT_UNAUTHORIZED=0
 
+# Other wallet options mostly for performance experiments
+# Note: comment if not wanted
+TALER_WALLET_SYNC_CRYPTO=1
+TALER_WALLET_PRIMITIVE_WORKER=1
+TALER_WALLET_INSECURE_TRUST_EXCHANGE=1
+# Do batch withdrawals of a reserve rather than single coins
+TALER_WALLET_BATCH_WITHDRAWAL=1
+
 # Initial number of exchange processes to run.
 # default = 10
 # Start another bunch with `taler-perf start exchange <N>`
@@ -112,14 +126,14 @@ NUM_EXCHANGE_PROCESSES=1
 # Number of other exchange-* processes to run
 # This setting is static, default = 1
 # For the aggregator the number will be actually 2^n (so 0 will be 1 process)
+# If you want no aggregator just set it to -1
 NUM_AGGREGATOR_PROCESSES=0
     NUM_CLOSER_PROCESSES=1
    NUM_TRANSER_PROCESSES=1
 NUM_WIREWATTCH_PROCESSES=1
 
-TALER_WALLET_SYNC_CRYPTO=1
-TALER_WALLET_PRIMITIVE_WORKER=1
-TALER_WALLET_INSECURE_TRUST_EXCHANGE=1
+# If the auditor should be setup or not when the node is added in the rspec
+TALER_SETUP_AUDITOR_REPLICATION=0
 
 # If prometheus node exporter should be enabled
 # Most certainly this is true, since otherwise no overview
@@ -137,7 +151,7 @@ GRAFANA_API_KEY=
 
 # If the data persisted from prometheus and loki from a
 # previous experiment should be removed before starting
-# a new one
+# a new one (NOTE: this is always the case for logs)
 REMOVE_PREVIOUS_EXPERIMENT_DATA=true
 
 # If *_COMMIT_SHA is not empty the corresponding
diff --git a/experiment/scripts/auditor.sh b/experiment/scripts/auditor.sh
new file mode 100755
index 0000000..ca5f71a
--- /dev/null
+++ b/experiment/scripts/auditor.sh
@@ -0,0 +1,290 @@
+#!/bin/bash
+set -eux
+source ~/scripts/helpers.sh
+
+INFO_MSG="
+Setup the auditor node
+(Start taler-auditor)
+"
+OPT_MSG="
+init:
+  Configure and start the auditor together with its database
+"
+
+# Prevent permission denied error messages when switching user
+cd /tmp
+
+# Create the necessary users
+function create_users() {
+  for USER in auditor auditor-ingress; do
+    adduser --quiet --home /tmp/${USER} ${USER} || true
+  done
+}
+
+# initialize the auditor database
+function init_db() {
+
+  # Grid5000 mounts the default disk on /tmp
+  # Move the DB there to get more storage
+  if [ -d /var/lib/postgresql ]; then
+    mv /var/lib/postgresql /tmp/
+  fi
+
+  # Get hardware info to tune in postgresql.conf
+  SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 4 ))
+  CACHE_SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) * 3/4))
+  NUM_CPU=$(lscpu | grep "CPU(s)" | head -n 1 | awk '{print $2}')
+
+  # Enable huge pages
+  # Size for huge_pages =~ shared_buffers * 1.25 so that there is enough
+  VM_PEAK=$((${SHARED_MEM} * 10/8))
+
+  HUGE_PAGES_SIZE=$(grep ^Hugepagesize /proc/meminfo | awk '{print $2}')
+  NUM_PAGES=$((${VM_PEAK} / ${HUGE_PAGES_SIZE}))
+
+  if ! grep -q "vm.nr_hugepages'" /etc/sysctl.conf; then
+    echo "vm.nr_hugepages=${NUM_PAGES}" >> /etc/sysctl.conf
+    sysctl -p
+  fi
+
+  # disable swap
+  swapoff -a
+
+  echo "
+  listen_addresses='*'
+
+  wal_level = logical
+
+  log_destination=syslog
+  syslog_ident='taler-auditor-db'
+
+  log_error_verbosity=terse
+  # log_min_messages=PANIC
+  # log_min_error_statement=PANIC
+  # client_min_messages=ERROR
+
+  # For pgbadger
+  # log_checkpoints=on
+  # log_connections=on
+  # log_disconnections=on
+  # log_lock_waits=on
+  # log_temp_files=0
+  # log_autovacuum_min_duration=0
+  # log_error_verbosity=default
+  # log_duration=on
+  # log_statement=all
+
+  # For explain.py
+  # syslog_split_messages=off
+  # log_statement=all
+  # log_error_verbosity=default
+
+  # Large tables perform bad with the default settings
+  # However, they could also be set on each table indiviudally
+  # (NOTE: on partitions!)
+  # ALTER TABLE known_coins_default
+  #  SET (autovacuum_vacuum_scale_factor = 0.0, autovacuum_vacuum_threshold = 
1000);
+  default_statistics_target=300
+  autovacuum_vacuum_cost_limit=400
+  autovacuum_vacuum_scale_factor=0.1
+  autovacuum_vacuum_threshold=1000
+  # Default 50, 0.1
+  autovacuum_analyze_threshold=50
+  autovacuum_analyze_scale_factor=0.1
+
+  # use 25% of the available memory 
+  # (https://www.postgresql.org/docs/13/runtime-config-resource.html)
+  shared_buffers=${SHARED_MEM}kB
+  effective_cache_size=${CACHE_SIZE}kB
+
+  huge_pages=on
+  
+  # 
(https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-MAX-WAL-SIZE)
+  min_wal_size=20GB
+  max_wal_size=200GB
+  wal_buffers=1GB
+
+  checkpoint_completion_target=0.9
+  checkpoint_timeout = 15min
+  checkpoint_flush_after = 2MB
+  random_page_cost=1.1
+  
+  # Default 2kB
+  bgwriter_flush_after = 2MB
+
+  # Default 0
+  # 
https://www.cybertec-postgresql.com/en/the-mysterious-backend_flush_after-configuration-setting/
+  backend_flush_after = 2MB
+
+  # Too much results in CPU load
+  # 
https://www.postgresql.org/docs/13/runtime-config-resource.html#GUC-EFFECTIVE-IO-CONCURRENCY
+  effective_io_concurrency = 200
+
+  # Bad when turned off - Recovering db may not be possible
+  # https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-FSYNC
+  fsync = on
+
+  # Not so bad as when turning off fsync, but single transactions might get 
lost on crash - but
+  # like they would have aborted cleanly
+  # 
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT
+  # When having replication, this one can be changed (in local only on and off 
are of use)
+  # 
https://www.postgresql.org/docs/13/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES
+  # on causes us to get 100% IO load
+  synchronous_commit = off
+
+  # Default off
+  wal_compression = off
+
+  wal_sync_method = fsync
+
+  # Bad to turn off, may lead to inconcistency
+  # 
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-FULL-PAGE-WRITES
+  # Write full pages to WAL while partial are written to disk, helpful in case 
of crash, then
+  # partially written pages can be recovered.
+  # Can be disabled if FS does not support partial written pages (such as ZFS)
+  full_page_writes = on
+
+  max_worker_processes=${NUM_CPU}
+  max_parallel_workers=${NUM_CPU}
+  max_parallel_workers_per_gather=10
+  max_connections=500
+
+  max_parallel_maintenance_workers=12
+  
+  # out of shared memory
+  max_locks_per_transaction=85
+  
+  # (max used =~ work_mem * max_connections)
+  # NOTE: This formula is not completely correct 
+  work_mem=2GB
+  maintenance_work_mem=4GB
+
+  data_directory='/tmp/postgresql/${POSTGRES_VERSION}/main'
+
+  max_logical_replication_workers=${NUM_CPU}
+  max_sync_workers_per_subscription=${NUM_CPU}
+  " > /etc/postgresql/${POSTGRES_VERSION}/main/auditor.conf
+
+  echo "
+  include = '/etc/postgresql/${POSTGRES_VERSION}/main/auditor.conf'
+  " >> /etc/postgresql/${POSTGRES_VERSION}/main/postgresql.conf
+
+  echo "
+  host all postgres 172.16.0.0/12 trust
+  " >> /etc/postgresql/${POSTGRES_VERSION}/main/pg_hba.conf
+
+  systemctl restart postgresql
+
+  su postgres << EOF
+psql postgres -tAc "DROP DATABASE IF EXISTS \"taler-ingress\";"
+psql postgres -tAc "DROP DATABASE IF EXISTS \"auditor\";"
+psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='auditor-ingress'" | \
+  grep -q 1 || \
+  createuser auditor-ingress
+psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='auditor'" | \
+  grep -q 1 || \
+  createuser auditor
+
+createdb -O auditor-ingress "taler-ingress"
+createdb -O auditor "auditor"
+EOF
+}
+
+# Initialize the replicated database and enable replication once the
+# taler-exchange db is ready
+function setup_exchange_replication() {
+
+  taler-config -s exchange -o DB -V "postgres"
+  taler-config -s exchangedb-postgres -o CONFIG -V "postgres:///taler-ingress"
+
+  sudo -u auditor-ingress taler-exchange-dbinit -r || true
+  sudo -u auditor-ingress taler-exchange-dbinit -s || true
+
+  if [ "${PARTITION_DB}" = "true" ]; then
+    sudo -u auditor-ingress taler-exchange-dbinit -P ${NUM_PARTITIONS}
+  else
+    sudo -u auditor-infress taler-exchange-dbinit
+  fi
+
+  su auditor-ingress << EOF
+psql -d taler-ingress -U auditor-ingress -tAc 'GRANT ALL ON ALL TABLES IN 
SCHEMA public TO auditor;'
+EOF
+
+  # Wait for exchange db to be ready to accept connections
+  DB_USER=egress wait_for_db   
+
+  # Complicated setup to be able to drop old and not working replication slots
+  # and create a new one
+  su postgres << EOF
+  psql -d taler-ingress -tAc "ALTER SUBSCRIPTION ${NODE_NAME} DISABLE;"
+  psql -d taler-ingress -tAc "ALTER SUBSCRIPTION ${NODE_NAME} SET 
(slot_name=NONE);"
+  psql -d taler-ingress -tAc "CREATE SUBSCRIPTION ${NODE_NAME} CONNECTION 
'postgresql://egress:${DB_PASSWORD}@${DB_HOSTS}/${DB_NAME}' PUBLICATION 
exchange;" || true
+EOF
+}
+
+# Start the auditor httpd and the nginx proxy
+function enable_webservice() {
+  create_cert "${NODE_NAME}.${DNS_ZONE}" "/etc/ssl/auditor"
+  ln -sf /etc/nginx/sites-available/auditor /etc/nginx/sites-enabled/auditor
+  systemctl restart taler-auditor-httpd \
+                    nginx
+}
+
+# Setup the auditor configuration and configure the exchange to add this 
auditor
+# Requires ssh access to the main exchange node
+function setup_config() {
+
+  rm -rf /var/lib/taler/auditor/*
+
+  setup_exchange_config_master_key_from_api
+
+  PUB_KEY=$(sudo -u taler-auditor-offline taler-auditor-offline setup)
+
+  wait_for_keys ${EXCHANGE_GW_DOMAIN}
+
+  sed -i -e "s/<AUDITOR_PUB_KEY_HERE>/${PUB_KEY}/g" \
+         -e "s|<AUDITOR_URL_HERE>|http://${NODE_NAME}.${DNS_ZONE}/|g" \
+      /etc/taler/conf.d/auditor.conf
+
+  enable_webservice
+
+  sudo -u auditor taler-auditor-dbinit
+  sudo -u auditor taler-auditor-exchange -m $(get_exchange_masterkey) -u 
"https://${EXCHANGE_GW_DOMAIN}/";
+
+  # Connect to the main exchange node and add the auditor
+  # This is done from here because we may not have an auditor in some 
experiments
+  ssh -o StrictHostKeyChecking=no ${PRIMARY_EXCHANGE} \
+    "/bin/bash ~/scripts/exchange.sh add-auditor '${PUB_KEY}' 
'http://${NODE_NAME}.${DNS_ZONE}/' '${NODE_NAME}'"
+
+  taler-auditor-offline download > input.json
+  taler-auditor-offline show < input.json
+  taler-auditor-offline sign < input.json > output.json
+  taler-auditor-offline upload < output.json
+}
+
+# Condifugre and start the auditor replication
+function init_auditor() {
+  create_users
+  init_db
+  setup_config
+  setup_exchange_replication
+}
+
+case $1 in 
+  init)
+    if [[ "${TALER_SETUP_AUDITOR_REPLICATION}" == "0" ]]; then
+      echo "Not setting up auditor"
+      exit 0
+    fi
+    if [[ "${PARTITION_DB}" == "true" ]]; then
+      init_auditor
+    else
+      echo "INFO: sharded DB not supported yet"
+    fi
+    ;;
+  *)
+    taler_perf_help $0 "$INFO_MSG" "$OPT_MSG"
+    ;;
+esac
+
+exit 0
diff --git a/experiment/scripts/bank.sh b/experiment/scripts/bank.sh
index 6184bd4..f93ac53 100755
--- a/experiment/scripts/bank.sh
+++ b/experiment/scripts/bank.sh
@@ -13,9 +13,27 @@ source ~/scripts/helpers.sh
 
 # Start the taler-fakebank
 function init_bank() {
+  echo "
+fs.file-max=500000
+  " >> /etc/sysctl.conf
+  
+  echo "
+* soft nofile unlimited
+* hard nofile unlimited
+  " >> /etc/security/limits.conf
+  
+  sysctl -p
+
+  # Force the "Make tranfer from X to Y" to be logged for statistics
+  # of payment distribution
+  echo "GNUNET_FORCE_LOG=\";;make_transfer;;INFO\"" \
+    | tee -a /etc/environment ~/.env
+
   create_cert "${NODE_NAME}.${DNS_ZONE}" "/etc/ssl/bank"
   setup_rsyslog_for_nginx
+
   restart_rsyslog
+
   ln -sf /etc/nginx/sites-available/fakebank /etc/nginx/sites-enabled/fakebank
   systemctl restart taler-fakebank.service \
                     nginx
diff --git a/experiment/scripts/bench2.sh b/experiment/scripts/bench2.sh
new file mode 100644
index 0000000..8763446
--- /dev/null
+++ b/experiment/scripts/bench2.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+cd ~/taler/wallet-core
+
+git checkout .
+
+#   -e "/reserve found/,+43 d" \
+sed -i \
+    -e "s/checkReserve(http, benchConf.exchange, 
reserveKeyPair.pub)/checkReserve(http, benchConf.exchange, reserveKeyPair.pub, 
30000)/g" \
+    -e "/const refreshDenoms/,+14 d" \
+    -e "s/\* 10/\* 8/g" \
+    packages/taler-wallet-cli/src/bench2.ts
+
+make -j $(nproc) install
+
diff --git a/experiment/scripts/benchmark.sh b/experiment/scripts/benchmark.sh
index 587e360..bd02773 100755
--- a/experiment/scripts/benchmark.sh
+++ b/experiment/scripts/benchmark.sh
@@ -27,24 +27,43 @@ function start_wallet_bench() {
     LOG_LEVEL=INFO
   fi
 
-  NUM_DEPOSITS=$((RANDOM %21))
+  NUM_DEPOSITS=$(($RANDOM % 21))
   if [[ ${WALLET_WITHDRAW_ONLY} == "true" ]]; then
     NUM_DEPOSITS=0
   fi
-  
-  taler-wallet-cli \
+
+  if [[ "${WALLET_BENCHMARK}" == bench3 ]] && \
+     [[ "${WALLET_MERCHANT_SELECTION}" =~ zipf|rand ]]; then
+    taler-wallet-cli \
       -L ${LOG_LEVEL} \
       advanced ${WALLET_BENCHMARK} \
-        --config-json "
-  {
-    \"exchange\": \"${PROTO}://${EXCHANGE_GW_DOMAIN}/\",
-    \"bank\": \"http://bank.${DNS_ZONE}/\";,
-    \"currency\": \"KUDOS\",
-    \"payto\": \"payto://x-taler-bank/bank.${DNS_ZONE}/foo\",
-    \"iterations\": 100000,
-    \"deposits\": ${NUM_DEPOSITS},
-    \"restartAfter\": 2
-  }"
+      --config-json "
+    {
+      \"exchange\": \"${PROTO}://${EXCHANGE_GW_DOMAIN}/\",
+      \"bank\": \"http://bank.${DNS_ZONE}/\";,
+      \"currency\": \"KUDOS\",
+      \"paytoTemplate\": 
\"payto://x-taler-bank/bank.${DNS_ZONE}/merchant-\${id}\",
+      \"randomAlg\": \"${WALLET_MERCHANT_SELECTION}\",
+      \"numMerchants\": ${WALLET_NUM_MERCHANTS},
+      \"iterations\": 100000,
+      \"deposits\": ${NUM_DEPOSITS},
+      \"restartAfter\": 2
+    }"
+  else
+    taler-wallet-cli \
+      -L ${LOG_LEVEL} \
+      advanced ${WALLET_BENCHMARK} \
+      --config-json "
+    {
+      \"exchange\": \"${PROTO}://${EXCHANGE_GW_DOMAIN}/\",
+      \"bank\": \"http://bank.${DNS_ZONE}/\";,
+      \"currency\": \"KUDOS\",
+      \"payto\": \"payto://x-taler-bank/bank.${DNS_ZONE}/merchant-1\",
+      \"iterations\": 100000,
+      \"deposits\": ${NUM_DEPOSITS},
+      \"restartAfter\": 2
+    }"
+  fi
 }
 
 case $1 in
diff --git a/experiment/scripts/createusers.sh 
b/experiment/scripts/createusers.sh
index 3f8d8eb..4ef9d9a 100755
--- a/experiment/scripts/createusers.sh
+++ b/experiment/scripts/createusers.sh
@@ -26,6 +26,13 @@ WIREUSERNAME=taler-exchange-wire
 MERCHUSERNAME=taler-merchant-httpd
 MERCHGROUPNAME=www-data
 
+AUDITCONFIG_FILE="/etc/default/taler-auditor"
+AUDITTALER_HOME="/var/lib/taler-auditor"
+AUDITUSERNAME=taler-auditor-httpd
+AUDITGROUPNAME=www-data
+AOUSERNAME=taler-auditor-offline
+AOGROUPNAME=taler-auditor-offline
+
 # Create taler groups as needed
 if ! getent group ${GROUPNAME} >/dev/null; then
   addgroup --quiet --system ${GROUPNAME}
@@ -122,3 +129,35 @@ if ! dpkg-statoverride --list 
/etc/taler/secrets/merchant-db.secret.conf >/dev/n
     ${MERCHUSERNAME} root 460 \
     /etc/taler/secrets/merchant-db.secret.conf
 fi
+
+# Auditor 
+if ! getent group ${AUDITGROUPNAME} >/dev/null; then
+  addgroup --quiet --system \
+           ${AUDITGROUPNAME}
+fi
+if ! getent group ${AOGROUPNAME} >/dev/null; then
+  addgroup --quiet --system ${AOGROUPNAME}
+fi
+
+if ! getent passwd ${AUDITUSERNAME} >/dev/null; then
+  adduser --quiet --system \
+          --ingroup ${AUDITGROUPNAME} \
+         --no-create-home \
+         --home ${AUDITTALER_HOME} \
+         ${AUDITUSERNAME}
+fi
+
+if ! dpkg-statoverride --list /etc/taler/secrets/auditor-db.secret.conf 
>/dev/null 2>&1; then
+  dpkg-statoverride --add --update \
+    ${AUDITUSERNAME} ${AUDITGROUPNAME} 660 \
+    /etc/taler/secrets/auditor-db.secret.conf
+fi
+if ! getent passwd ${AOUSERNAME} >/dev/null; then
+  adduser --quiet --system \
+    --ingroup ${AOGROUPNAME} \
+    --no-create-home \
+    --home ${TALER_HOME} ${AOUSERNAME}
+fi
+
+install -d /run/taler/auditor-httpd -m 0755 -o ${AUDITUSERNAME} -g 
${AUDITGROUPNAME}
+install -d /var/lib/taler/auditor -m 0700 -o ${AOUSERNAME} -g ${AOGROUPNAME}
diff --git a/experiment/scripts/database.sh b/experiment/scripts/database.sh
index 736efb9..535188f 100755
--- a/experiment/scripts/database.sh
+++ b/experiment/scripts/database.sh
@@ -13,6 +13,8 @@ source ~/scripts/helpers.sh
 # move to tmp to prevent change directory errors
 cd /tmp 
 
+PG_CONF=/etc/postgresql/${POSTGRES_VERSION}/main
+
 # Setup a disk if present to be used for WAL and move the WAL there
 # Don't use in combination with `setup_ram_storage`
 function setup_disks() {
@@ -23,7 +25,7 @@ function setup_disks() {
     # Yeti nvme
     DISK=/dev/disk4
   else
-    return
+    return 0
   fi
   echo 'start=2048, type=83' | sfdisk ${DISK} || true
   yes | mkfs.ext4 -m 0 ${DISK} || true
@@ -59,11 +61,16 @@ function setup_config() {
     mv /var/lib/postgresql /tmp/
   fi
 
-  sed -i "s\<DB_URL_HERE>\postgresql:///${DB_NAME}\g" \
+  sed -i -e "s\<DB_URL_HERE>\postgresql:///${DB_NAME}\g" \
+         -e "s/<SHARD_USER_HERE>/${DB_USER}/g" \
+        -e "s/<SHARD_USER_PW_HERE>/${DB_PASSWORD}/g" \
        /etc/taler/secrets/exchange-db.secret.conf
+
+  sed -i -e "s|<SHARD_DOMAIN_HERE>|${DNS_ZONE}|g" \
+         /etc/taler/conf.d/exchange-business.conf
   
   # Get hardware info to tune in postgresql.conf
-  SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 3 ))
+  SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 4 ))
   CACHE_SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) * 3/4))
   NUM_CPU=$(lscpu | grep "CPU(s)" | head -n 1 | awk '{print $2}')
 
@@ -79,6 +86,9 @@ function setup_config() {
     sysctl -p
   fi
 
+  # disable swap
+  swapoff -a
+
   # Allow longer lines to be logged by postgres
   sed -i '1 i\$MaxMessageSize 4k' /etc/rsyslog.conf
 
@@ -135,18 +145,14 @@ function setup_config() {
   autovacuum_vacuum_cost_limit=400
   autovacuum_vacuum_scale_factor=0.1
   autovacuum_vacuum_threshold=1000
-
   # Default 50, 0.1
   autovacuum_analyze_threshold=50
   autovacuum_analyze_scale_factor=0.1
 
   # use 25% of the available memory 
   # (https://www.postgresql.org/docs/13/runtime-config-resource.html)
- # shared_buffers=${SHARED_MEM}kB
- # effective_cache_size=${CACHE_SIZE}kB
-  shared_buffers=24551953kB
-  effective_cache_size=75491895kB
-
+  shared_buffers=${SHARED_MEM}kB
+  effective_cache_size=${CACHE_SIZE}kB
 
   huge_pages=on
   
@@ -203,7 +209,7 @@ function setup_config() {
   max_parallel_maintenance_workers=12
   
   # out of shared memory
-  max_locks_per_transaction=85
+  max_locks_per_transaction=120
   
   # (max used =~ work_mem * max_connections)
   # NOTE: This formula is not completely correct 
@@ -215,16 +221,26 @@ function setup_config() {
   # Disable sequential scans
   # enable_seqscan=off
 
+  enable_partitionwise_join=on
+  enable_partitionwise_aggregate=on
+
   # set our database location to /tmp
   data_directory='/tmp/postgresql/${POSTGRES_VERSION}/main'
-  " > /etc/postgresql/${POSTGRES_VERSION}/main/exchange.conf
+  " > ${PG_CONF}/exchange.conf
+
+  # Must be done here otherwise pg does not start a second time
+  if [[ ${NUM_AUDITORS} -ge 1 ]] && \
+     [[ ${TALER_SETUP_AUDITOR_REPLICATION} == 1 ]];
+  then
+    echo "wal_level=logical" >> ${PG_CONF}/exchange.conf
+  fi
 
-  cp /etc/postgresql/${POSTGRES_VERSION}/main/exchange.conf 
${LOG_DIR}/postgresql.conf
+  cp ${PG_CONF}/exchange.conf ${LOG_DIR}/postgresql.conf
 
   if ! grep -q "include = 'exchange.conf'" \
-         /etc/postgresql/${POSTGRES_VERSION}/main/postgresql.conf; then
+         ${PG_CONF}/postgresql.conf; then
     echo "include = 'exchange.conf'" >> \
-          /etc/postgresql/${POSTGRES_VERSION}/main/postgresql.conf
+          ${PG_CONF}/postgresql.conf
   fi
 }
 
@@ -243,17 +259,37 @@ function setup_pgbouncer() {
   fi
 }
 
+# Enable replication to the auditor - is only done when an auditor node is 
present
+function setup_replication() {
+  if [[ "${NUM_AUDITORS}" -ge 1 ]] && \
+     [[ ${TALER_SETUP_AUDITOR_REPLICATION} == 1 ]];
+  then
+    su postgres << EOF
+      createuser --replication egress
+      psql -tAc "ALTER ROLE egress WITH PASSWORD '${DB_PASSWORD}';" || true
+      psql -d ${DB_NAME} -tAc "GRANT SELECT ON ALL TABLES IN SCHEMA public TO 
egress;"
+      psql -tAc "DROP PUBLICATION auditor;"
+      psql -d ${DB_NAME} -tAc "CREATE PUBLICATION exchange FOR ALL TABLES;"
+EOF
+    grep -q "host all egress 127.16.0.0/12 md5" \
+      ${PG_CONF}/pg_hba.conf \
+      || echo "host all egress 172.16.0.0/12 md5" \
+         >> ${PG_CONF}/pg_hba.conf
+    systemctl restart postgresql
+  fi
+}
+
 # Allow DB_USER from remote (Exchange will continue initialization only when 
 # this one was run)
 function enable_remote_access() {
   # Enable password for taler since this is the case in real world deployments
   # For the postgres user do not enable authentication (used in metrics)
   if ! grep -q "host all ${DB_USER} 127.16.0.0/12 md5" \
-    /etc/postgresql/${POSTGRES_VERSION}/main/pg_hba.conf; then
+    ${PG_CONF}/pg_hba.conf; then
     echo "
     host all ${DB_USER} 172.16.0.0/12 md5
     host all postgres 172.16.0.0/12 trust
-    " >> /etc/postgresql/${POSTGRES_VERSION}/main/pg_hba.conf
+    " >> ${PG_CONF}/pg_hba.conf
   fi
 }
 
@@ -266,10 +302,9 @@ psql -d "${DB_NAME}" -tAc "CREATE USER MAPPING IF NOT 
EXISTS FOR \"${DB_USER}\"
                            SERVER \"${i}\"
                            OPTIONS (user '${DB_USER}', password 
'${DB_PASSWORD}');"
 EOF
-# Only in pg 14
-# for in $(seq $NUM_SHARDS); do
-#   psql -d "${DB_NAME}" -tAc "ALTER SERVER ${i} OPTIONS (async_capable 
"true");
-# done
+    if [[ ${POSTGRES_VERSION} == 14 ]]; then
+      psql -d "${DB_NAME}" -tAc "ALTER SERVER ${i} OPTIONS (async_capable 
'true');"
+    fi
   done
 
 }
@@ -286,6 +321,7 @@ psql postgres -tAc "SELECT 1 FROM pg_roles WHERE 
rolname='taler-exchange-httpd'"
   createuser taler-exchange-httpd
 psql -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | \
   grep -q 1 || \
+
   createdb -O taler-exchange-httpd "${DB_NAME}"
 psql -tAc "CREATE EXTENSION IF NOT EXISTS pg_stat_statements"
 EOF
@@ -303,10 +339,10 @@ EOF
   sudo -u taler-exchange-httpd taler-exchange-dbinit -s || true
 
   if [ "${SHARD_DB}" = "true" ]; then
-    sudo -u postgres taler-exchange-dbinit -F ${NUM_SHARDS}
+    sudo -u postgres taler-exchange-dbinit -F -P ${NUM_SHARDS} -f
     configure_shard_access
   elif [ "${PARTITION_DB}" = "true" ]; then
-    sudo -u taler-exchange-httpd taler-exchange-dbinit -P ${NUM_PARTITIONS}
+    sudo -u taler-exchange-httpd taler-exchange-dbinit -P ${NUM_PARTITIONS} -f
   else
     sudo -u taler-exchange-httpd taler-exchange-dbinit
   fi
@@ -314,7 +350,7 @@ EOF
   # Grant access to the databse to the remote user
   su taler-exchange-httpd -s /bin/bash << EOF
 psql -d "${DB_NAME}"
-GRANT SELECT,INSERT,UPDATE ON ALL TABLES IN SCHEMA public TO "${DB_USER}";
+GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO 
"${DB_USER}";
 GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "${DB_USER}";
 EOF
 
@@ -337,6 +373,7 @@ case ${1} in
       setup_disks
     fi
     init_db
+    setup_replication
     setup_pgbouncer
     restart_rsyslog
     ;;
diff --git a/experiment/scripts/exchange-proxy.sh 
b/experiment/scripts/exchange-proxy.sh
index ed4854c..e81d9a0 100755
--- a/experiment/scripts/exchange-proxy.sh
+++ b/experiment/scripts/exchange-proxy.sh
@@ -47,7 +47,7 @@ function setup_config() {
   
   # Allow enough files to be opened by nginx (www-data)
   echo "
-  fs.file-max=50000
+  fs.file-max=500000
   " >> /etc/sysctl.conf
   
   echo "
diff --git a/experiment/scripts/exchange.sh b/experiment/scripts/exchange.sh
index 12a5f8d..a887ae2 100755
--- a/experiment/scripts/exchange.sh
+++ b/experiment/scripts/exchange.sh
@@ -23,6 +23,11 @@ start NUM:
 
 stop NUM:
   Stop NUM exchange-httpd daemons
+
+add-auditor AUDITOR_PUB_KEY AUDITOR_API_URL AUDITOR_NAME:
+  Register an auditor to the exchange
+  Best called from the auditor node.
+  
 "
 
 set -eux
@@ -35,7 +40,7 @@ function setup_primary_config() {
   rm -rf /var/lib/taler/exchange-offline/*
 
   # Setup the base configuration (helpers.sh)
-  setup_exchange_config_without_master_key
+  setup_exchange_config_without_master_key 
"http://${NODE_NAME}.${DNS_ZONE}:10000/";
 
   MASTER_KEY=$(sudo -u taler-exchange-offline taler-exchange-offline setup)
   
@@ -142,6 +147,10 @@ case $1 in
   stop)
     stop_exchanges $2
     ;;
+  add-auditor)
+    taler-exchange-offline enable-auditor $2 $3 "$4" > auditor.json
+    taler-exchange-offline upload < auditor.json
+    ;;
   *)
     taler_perf_help $0 "$INFO_MSG" "$OPT_MSG"
     ;;
diff --git a/experiment/scripts/helpers.sh b/experiment/scripts/helpers.sh
index c972bd9..0278519 100755
--- a/experiment/scripts/helpers.sh
+++ b/experiment/scripts/helpers.sh
@@ -112,21 +112,26 @@ function setup_rsyslog_for_nginx() {
           /etc/rsyslog.conf
 }
 
+# Get the exchanges master public key via the primary exchanges API
+function get_exchange_masterkey() {
+  MASTER_KEY=$(
+    curl -k -f \
+       "${PRIMARY_EXCHANGE}:10000/keys" \
+       | jq -r '.master_public_key'
+  )
+  echo "${MASTER_KEY}"
+}
+
 
 # Setup taler.conf for aggregator etc. with downloading the 
 # master public key from the exchange API 
 function setup_exchange_config_master_key_from_api() {
 
-  setup_exchange_config_without_master_key
+  setup_exchange_config_without_master_key "http://${EXCHANGE_GW_DOMAIN}/";
 
   wait_for_keys "${PRIMARY_EXCHANGE}:10000"
 
-  MASTER_KEY=$(
-    curl -k -f \
-       "${PRIMARY_EXCHANGE}:10000/keys" \
-       | jq -r '.master_public_key'
-  )
-
+  MASTER_KEY=$(get_exchange_masterkey)
   sed -i -e "s/<MASTER_KEY_HERE>/${MASTER_KEY}/g" \
        /etc/taler/conf.d/exchange-business.conf
 
@@ -134,11 +139,14 @@ function setup_exchange_config_master_key_from_api() {
 
 # Setup taler.conf for any exchange-* process, does not configure
 # the master key
+# $1: Exchange base url
 function setup_exchange_config_without_master_key() {
 
   AGGREGATOR_SHARD_SIZE=$(echo "2^(30-${NUM_AGGREGATOR_PROCESSES})" | bc)
 
-  sed -i 
"s\<DB_URL_HERE>\postgresql://${DB_USER}:${DB_PASSWORD}@db.${DNS_ZONE}:${DB_PORT}/${DB_NAME}\g"
 \
+  sed -i -e 
"s\<DB_URL_HERE>\postgresql://${DB_USER}:${DB_PASSWORD}@db.${DNS_ZONE}:${DB_PORT}/${DB_NAME}\g"
 \
+         -e "s/<SHARD_USER_HERE>/${DB_USER}/g" \
+        -e "s/<SHARD_USER_PW_HERE>/${DB_PASSWORD}/g" \
        /etc/taler/secrets/exchange-db.secret.conf
 
   sed -i -e "s/<EXCHANGE_CIPHER_HERE>/${EXCHANGE_CIPHER}/g" \
@@ -149,9 +157,10 @@ function setup_exchange_config_without_master_key() {
        /etc/taler/secrets/exchange-accountcredentials.secret.conf
 
   sed -i -e "s/<BANK_HOST_HERE>/bank.${DNS_ZONE}/g" \
-         -e "s\<BASE_URL_HERE>\http://${NODE_NAME}.${DNS_ZONE}:10000/\g"; \
+         -e "s|<BASE_URL_HERE>|${1}|g" \
          -e "s/<MAX_REQUESTS_HERE>/${EXCHANGE_MAX_REQUESTS:-8192}/g" \
          -e "s/<AGGREGATOR_SHARD_SIZE_HERE>/${AGGREGATOR_SHARD_SIZE}/g" \
+        -e "s/<SHARD_DOMAIN_HERE>/${DNS_ZONE}/g" \
        /etc/taler/conf.d/exchange-business.conf
 
   sed -i "s/<LOOKAHEAD_SIGN_HERE>/${LOOKAHEAD_SIGN}/g" \
diff --git a/experiment/scripts/monitor.sh b/experiment/scripts/monitor.sh
index 94a21db..b10d7df 100755
--- a/experiment/scripts/monitor.sh
+++ b/experiment/scripts/monitor.sh
@@ -19,13 +19,20 @@ set -ex
 source ~/scripts/helpers.sh
 
 # Update a data source on the external grafana instance
-# $1: Data-source name (configured in .env)
-# $2: Grid5000 external url for the node where the data source is hosted
-#     - https://www.grid5000.fr/w/HTTP/HTTPs_access
+# $1: Datasource name (configured in .env)
+# $2: Port where the datasource is listenig
+#     (http/http8080 or https/https8443)
+# See: https://www.grid5000.fr/w/HTTP/HTTPs_access
 function update_datasource() {
+  # Get the id of the datasource to update
   ID=$(jq --arg name "$1" '.[] | select(.name == $name) | .id' ds.json)
 
-  jq --arg url "https://$(hostname | cut -d "." -f 1,2 
-).$2.proxy.grid5000.fr" \
+  # We require e.g. dahu-2.grenoble.<PORT> as domain
+  # Extract dahu-2.grenoble from 'hostname'
+  HOST=$(hostname | cut -d "." -f 1,2 -)
+  
+  # Replace the datasources url with our proxy domain
+  jq --arg url "https://${HOST}.${2}.proxy.grid5000.fr"; \
      --arg name "$1" \
      '.[] | select(.name == $name) | .url = $url' \
      ds.json | \
@@ -42,11 +49,13 @@ function update_datasource() {
 # step is skipped - requires admin level api key to update data sources
 function update_grafana() {
   if [[ -z ${GRAFANA_HOST} || -z ${GRAFANA_API_KEY} ]]; then
-    return
+    return 0
   fi
   AUTH_HEADER="Authorization: Bearer ${GRAFANA_API_KEY}"
   GRAFANA_API="${GRAFANA_HOST}/api"
   
+  # Retrieve the initially configured datasources and safe them to a file
+  # to be used later in update_datasource
   if ! curl -k -f -H "${AUTH_HEADER}" \
     "${GRAFANA_API}/datasources" \
     -o ds.json ;
@@ -62,12 +71,12 @@ function update_grafana() {
 # Configure all exporters which run on this host
 function configure_prometheus_and_exporters() {
   
-  sed -i -e 
"s\<EXCHANGE_DB_URL_HERE>\postgresql://postgres@db.${DNS_ZONE}:5432?sslmode=disable\g"
 \
+  sed -i -e 
"s\<EXCHANGE_DB_URL_HERE>\postgresql://postgres@db.${DNS_ZONE}:5432/${DB_NAME}?sslmode=disable\g"
 \
              /etc/default/prometheus-postgres-exporter
   
   CFG=""
   for MERCH in $(get_hosts "merchant"); do
-    CFG="${CFG},postgresql://postgres@${MERCH}.${DNS_ZONE}:5432"
+    
CFG="${CFG},postgresql://postgres@${MERCH}.${DNS_ZONE}:5432/taler-merchant?sslmode=disable"
     sed -i "s/<MERCHANT_HOST_HERE>/${MERCH}.${DNS_ZONE}/g" \
            /etc/monitor/prometheus.yaml
   done
@@ -76,10 +85,19 @@ function configure_prometheus_and_exporters() {
 
   CFG=""
   for SHARD in $(get_hosts "shard"); do
-    CFG="${CFG},postgresql://postgres@${SHARD}.${DNS_ZONE}:5432"
+    
CFG="${CFG},postgresql://postgres@${SHARD}.${DNS_ZONE}:5432/${DB_NAME}?sslmode=disable"
   done
   sed -i "s|<SHARD_DB_URLS_HERE>|${CFG}|g" \
           /etc/default/prometheus-postgres-exporter
+  
+  CFG=""
+  if [[ ${NUM_AUDITORS} -ge 1 ]] && \
+     [[ ${TALER_SETUP_AUDITOR_REPLICATION} == 1 ]];
+  then
+    
CFG="${CFG},postgresql://postgres@auditor.${DNS_ZONE}:5432/taler-ingress?sslmode=disable"
+  fi
+  sed -i "s|<AUDITOR_DB_URL_HERE>|${CFG}|g" \
+          /etc/default/prometheus-postgres-exporter
 }
 
 # Create the directory which will be used to store recovery data
diff --git a/experiment/scripts/run.sh b/experiment/scripts/run.sh
index 8f1dd47..c21fa77 100644
--- a/experiment/scripts/run.sh
+++ b/experiment/scripts/run.sh
@@ -22,6 +22,7 @@ set_host ${NODE_NAME}
 PROMTAIL_LOG_PORT=1514
 
 if [[ "${HOSTNAME}" =~ ${BANK_HOSTS} ]]; then 
+    PROMTAIL_LOG_PORT=1518
     setup_log
     enable_logrotate
     exec ~/scripts/bank.sh init
@@ -68,6 +69,10 @@ elif [[ "${HOSTNAME}" =~ ${WIREWATCH_HOSTS} ]]; then
     enable_logrotate
     enable_netdelay db.${DNS_ZONE}
     exec ~/scripts/exchange-wirewatch.sh init
+elif [[ "${HOSTNAME}" =~ ${AUDITOR_HOSTS} ]]; then 
+    setup_log
+    enable_logrotate
+    exec ~/scripts/auditor.sh init
 elif [[ "${HOSTNAME}" =~ ${MERCHANT_HOSTS} ]]; then 
     setup_log
     enable_logrotate
diff --git a/experiment/scripts/setup.sh b/experiment/scripts/setup.sh
index 14ad4d4..724b9e9 100644
--- a/experiment/scripts/setup.sh
+++ b/experiment/scripts/setup.sh
@@ -57,7 +57,7 @@ function parse_experiment_nodes() {
     )
 
     echo "${NODE^^}_HOSTS=\"${NODES_STR}\"" >> ~/.env
-    echo "NUM_${NODE^^}S=$(echo ${NODES_STR} | awk -F '|' '{print NF}')" >> 
~/.env
+    echo "NUM_${NODE^^}S=$(echo ${NODES_STR} | grep -v "none" | awk -F '|' 
'{print NF}')" >> ~/.env
   done
 
   # Export NODE_NAME, which can be used to set log directories for example
@@ -129,7 +129,12 @@ function setup_environment() {
 # Setup shared configurations such as the ones from configs/*
 function setup_config() {
   # Temporarily checkout to the feature branch
-  cd "${G5K_HOME}" && git checkout "${G5K_COMMIT_SHA}" && git pull && cd
+  cd "${G5K_HOME}" 
+
+  git pull
+  git checkout "${G5K_COMMIT_SHA}" 
+
+  cd
   
   # Remove default nginx config
   rm /etc/nginx/sites-enabled/default > /dev/null 2>&1 || true
@@ -197,7 +202,8 @@ function clean_previous_setup() {
   # (not all are present on every node - || true - to ignore errors)
   systemctl stop taler-exchange-* \
                 taler-wallet* \
-                prometheus* \
+                prometheus \
+                prometheus-*-exporter \
                  postgresql* \
                 promtail \
                 loki \
@@ -208,12 +214,16 @@ function clean_previous_setup() {
     HBA_FILE=/tmp/postgresql/${POSTGRES_VERSION}/data/pg_hba.conf
   fi
   sed -i "/172.16.0.0\/12/d" "${HBA_FILE}" || true
+
+  if [[ "$REMOVE_PREVIOUS_EXPERIMENT_DATA" == "true" ]]; then
+    rm -rf /home/${G5K_USER}/exp-* || true
+  fi
 }
 
 clean_previous_setup
 # Check if binaries need to be rebuilt on debian based operating systems
 if ! grep -q "Red Hat" /proc/version; then
-  source ~/scripts/install.sh &
+  source ~/scripts/install.sh
 fi
 parse_experiment_nodes
 setup_log_dir
@@ -221,8 +231,6 @@ setup_environment
 setup_config
 setup_dns
 
-wait
-
 if ! grep -q "Red Hat" /proc/version; then
   # Only works in debian based operating systems
   exec ~/scripts/createusers.sh
diff --git a/experiment/scripts/shard.sh b/experiment/scripts/shard.sh
index 4160c5d..921605f 100755
--- a/experiment/scripts/shard.sh
+++ b/experiment/scripts/shard.sh
@@ -25,7 +25,7 @@ function setup_config() {
   fi
 
   # Get hardware info to tune in postgresql.conf
-  SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 3 ))
+  SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 4 ))
   CACHE_SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) * 3/4))
   NUM_CPU=$(lscpu | grep "CPU(s)" | head -n 1 | awk '{print $2}')
 
@@ -41,6 +41,9 @@ function setup_config() {
     sysctl -p
   fi
 
+  # disable swap
+  swapoff -a
+
   # Configure postgres with an additional file and include this
   # in the main configuration
   echo "
diff --git a/experiment/scripts/taler-perf.sh b/experiment/scripts/taler-perf.sh
index 9e3340c..845c9f1 100644
--- a/experiment/scripts/taler-perf.sh
+++ b/experiment/scripts/taler-perf.sh
@@ -167,9 +167,9 @@ function rebuild() {
 }
 
 function rebuild_all() {
-  for NODE in $(dig -t AXFR ${DNS_ZONE} | grep "\<A\>" | awk 'print substr($1, 
1, length($1)-1)}'); do
+  for NODE in $(dig -t AXFR ${DNS_ZONE} | grep "\<A\>" | awk '{print 
substr($1, 1, length($1)-1)}'); do
     if [[ $NODE == $EXCHANGE_GW_DOMAIN ]]; then continue; fi
-    ssh ${NODE} "taler-perf build $(printf "%q " "$@")" &
+    ssh -o StrictHostKeyChecking=no ${NODE} "taler-perf build $(printf "%q " 
"$@")" &
   done
   wait
 }
@@ -193,7 +193,7 @@ case "$1" in
     ;;
   *)
     echo "Usage:"
-    echo "start|stop|rebuild"
+    echo "start|stop|build|rebuild_all"
     echo "just run a command without an argument to get help"
     exit 1
     ;;
diff --git a/experiment/taler.many.rspec b/experiment/taler.many.rspec
index 4abfe99..dc5c06a 100644
--- a/experiment/taler.many.rspec
+++ b/experiment/taler.many.rspec
@@ -1,87 +1,87 @@
 <?xml version='1.0'?>
-<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-04-06T21:42:37.131+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
+<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-05-15T13:28:29.815+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
   <node client_id="DB" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="97.68354430379748" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="94.0" 
y="32.5"/>
   </node>
   <node client_id="Exchange-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="221.0" 
y="72.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="155.0" 
y="76.5"/>
   </node>
   <node client_id="Bank" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="474.7974683544304" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="393.0" 
y="33.5"/>
   </node>
   <node client_id="EProxy-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="226.5" 
y="126.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="165.5" 
y="125.5"/>
   </node>
   <node client_id="Monitor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="915.0" 
y="92.81119637333838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.5" 
y="75.5"/>
   </node>
   <node client_id="Merchant-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="662.6455696202531" y="92.81119637333838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="861.5" 
y="34.5"/>
   </node>
   <node client_id="DNS" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="781.0253164556962" y="25.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="679.0" 
y="35.5"/>
   </node>
   <node client_id="Aggregator" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="500.5" 
y="138.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="541.5" 
y="35.5"/>
   </node>
   <node client_id="Wirewatch" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="649.5" 
y="139.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="539.5" 
y="74.5"/>
   </node>
   <node client_id="Transfer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="790.5" 
y="138.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="531.5" 
y="116.5"/>
   </node>
   <node client_id="Closer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="913.5" 
y="137.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="523.5" 
y="154.5"/>
   </node>
   <node client_id="Exchange-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="364.0" 
y="70.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="314.0" 
y="76.5"/>
   </node>
   <node client_id="Wallet-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -111,7 +111,7 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="205.30722735107315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="862.5" 
y="202.5"/>
   </node>
   <node client_id="Wallet-6" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -135,19 +135,19 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="660.5" 
y="234.5"/>
   </node>
   <node client_id="Wallet-10" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="236.665006020825"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="866.0" 
y="235.5"/>
   </node>
   <node client_id="Wallet-11" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="79.0" 
y="268.5"/>
   </node>
   <node client_id="Wallet-12" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -159,25 +159,25 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="268.5"/>
   </node>
   <node client_id="Wallet-14" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="265.5"/>
   </node>
   <node client_id="Wallet-15" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="268.0227846905768"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="266.5"/>
   </node>
   <node client_id="Wallet-16" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="82.0" 
y="298.5"/>
   </node>
   <node client_id="Wallet-17" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -189,31 +189,31 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="300.5"/>
   </node>
   <node client_id="Wallet-19" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="666.0" 
y="298.5"/>
   </node>
   <node client_id="Wallet-20" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="299.3805633603287"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="298.5"/>
   </node>
   <node client_id="Wallet-21" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="83.0" 
y="328.5"/>
   </node>
   <node client_id="Wallet-22" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="279.15189873417717" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="274.0" 
y="332.5"/>
   </node>
   <node client_id="Wallet-23" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -225,25 +225,25 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="677.5316455696203" y="333.4821476636838"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="666.0" 
y="331.5"/>
   </node>
   <node client_id="Wallet-25" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="876.012658227848" y="331.91425873019625"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="328.5"/>
   </node>
   <node client_id="Wallet-26" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="86.34177215189874" y="364.0559818666919"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="358.5"/>
   </node>
   <node client_id="Wallet-27" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="364.8399263334357"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="275.0" 
y="360.5"/>
   </node>
   <node client_id="Wallet-28" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
@@ -255,199 +255,199 @@
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="681.7848101265823" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="364.5"/>
   </node>
   <node client_id="Wallet-30" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="881.6835443037975" y="366.40781526692325"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="360.5"/>
   </node>
   <node client_id="Wallet-31" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="393.84587160295615"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="79.0" 
y="391.5"/>
   </node>
   <node client_id="Wallet-32" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="276.0" 
y="392.5"/>
   </node>
   <node client_id="Wallet-33" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="484.72151898734177" y="399.33348287016264"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="402.5"/>
   </node>
   <node client_id="Wallet-34" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="678.9493670886076" y="397.7655939366752"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="398.5"/>
   </node>
   <node client_id="Wallet-35" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="884.5189873417721" y="395.41376053644376"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="398.5"/>
   </node>
   <node client_id="Wallet-36" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="423.5"/>
   </node>
   <node client_id="Wallet-37" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="289.0759493670886" y="428.33942813968315"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="277.0" 
y="429.5"/>
   </node>
   <node client_id="Wallet-38" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="488.97468354430373" y="429.90731707317076"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="480.0" 
y="434.5"/>
   </node>
   <node client_id="Wallet-39" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="688.873417721519" y="426.77153920619554"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="432.5"/>
   </node>
   <node client_id="Wallet-40" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="891.6075949367088" y="427.55548367293943"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="431.5"/>
   </node>
   <node client_id="Wallet-41" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="463.3365853658537"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="80.0" 
y="454.5"/>
   </node>
   <node client_id="Wallet-42" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="295.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="277.0" 
y="460.5"/>
   </node>
   <node client_id="Wallet-43" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="485.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-44" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="685.0" 
y="455.8243902439025"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-45" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="892.0" 
y="460.3317073170732"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="464.5"/>
   </node>
   <node client_id="Wallet-46" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="87.0" 
y="497.89268292682925"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="81.0" 
y="487.5"/>
   </node>
   <node client_id="Wallet-47" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="297.0" 
y="492.63414634146346"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="278.0" 
y="495.5"/>
   </node>
   <node client_id="Wallet-48" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="491.0" 
y="496.390243902439"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="478.0" 
y="494.5"/>
   </node>
   <node client_id="Wallet-49" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.0" 
y="487.37560975609756"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="664.0" 
y="497.5"/>
   </node>
   <node client_id="Wallet-50" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="897.0" 
y="492.63414634146346"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="495.5"/>
   </node>
   <node client_id="Wallet-51" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="86.0" 
y="530.1951219512196"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="82.0" 
y="520.5"/>
   </node>
   <node client_id="Wallet-52" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="301.0" 
y="525.6878048780488"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="279.0" 
y="526.5"/>
   </node>
   <node client_id="Wallet-53" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="492.99999999999994" y="529.4439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="526.5"/>
   </node>
   <node client_id="Wallet-54" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="692.0" 
y="526.439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="664.0" 
y="526.5"/>
   </node>
   <node client_id="Wallet-55" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="901.9999999999999" y="529.4439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="527.5"/>
   </node>
   <node client_id="Wallet-56" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="90.0" 
y="558.7414634146342"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="552.5"/>
   </node>
   <node client_id="Wallet-57" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.0" 
y="558.7414634146342"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="279.0" 
y="558.5"/>
   </node>
   <node client_id="Wallet-58" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="494.0" 
y="560.2439024390244"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="479.0" 
y="556.5"/>
   </node>
   <node client_id="Wallet-59" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="696.0" 
y="557.2390243902439"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="665.0" 
y="558.5"/>
   </node>
   <node client_id="Wallet-60" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="904.9999999999999" y="564.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="865.0" 
y="560.5"/>
   </node>
   <node client_id="EProxy-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="338.0" 
y="126.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.5" 
y="125.5"/>
   </node>
 </rspec>
\ No newline at end of file
diff --git a/image/debian11/taler-debian11.yaml 
b/image/debian11/taler-debian11.yaml
index 738fba4..c3236ff 100644
--- a/image/debian11/taler-debian11.yaml
+++ b/image/debian11/taler-debian11.yaml
@@ -39,7 +39,7 @@ global:
   g5k_kernel_params: "mitigations=off"
   ## Environment visibility
   # g5k_visibility: "shared"
-  taler_build_packages: "recutils autoconf uncrustify autopoint libtool 
python3-pip libgcrypt20-dev libjansson-dev libcurl4-gnutls-dev libsodium-dev 
libidn2-dev libunistring-dev libgnutls28-dev libsqlite3-dev libqrencode-dev 
valgrind libpq-dev texinfo gdb make npm zip python3-distutils pkg-config"
+  taler_build_packages: "recutils autoconf uncrustify autopoint libtool 
python3-pip libgcrypt20-dev libjansson-dev libcurl4-gnutls-dev libsodium-dev 
libidn2-dev libunistring-dev libgnutls28-dev libsqlite3-dev libqrencode-dev 
valgrind libpq-dev texinfo gdb make zip python3-distutils pkg-config"
   taler_packages: "nginx postgresql-13 postgresql-contrib curl jq bc sudo git 
zile dnsutils prometheus-postgres-exporter prometheus-nginx-exporter net-tools 
netcat parallel nodejs tshark dnsmasq bind9 systemd-coredump bash-completion 
pgbouncer pgstat linux-perf"
   taler_packages_no_recommends: "prometheus prometheus-node-exporter 
prometheus-pgbouncer-exporter"
   taler_disable_services: "nginx postgresql prometheus 
prometheus-postgres-exporter prometheus-nginx-exporter prometheus-node-exporter 
named gettext-base dnsmasq prometheus-pgbouncer-exporter pgbouncer"
@@ -72,6 +72,8 @@ setup:
       - exec_in: |
          apt update
          apt upgrade -y
+         apt install -y curl
+         curl -sL https://deb.nodesource.com/setup_16.x | bash -
          apt install -y $${taler_packages} $${taler_build_packages}
          apt install -y --no-install-recommends 
$${taler_packages_no_recommends}
 
@@ -153,8 +155,7 @@ setup:
          npm install -g pnpm
 
          ./bootstrap
-         ./configure
-         sed -i "s|^\s*pnpm install --frozen-lockfile --filter 
@gnu-taler/taler-wallet-cli...|& --unsafe-perm|" Makefile
+         ./configure --prefix=/usr
          make install
 
     - grid5k:

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]