Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Sealer status
Se trata de dos _scripts_ que reportan la última aparición de cada uno de los selladores, buscando en los últimos bloques de la cadena hasta un cierto máximo (por default 720 bloques, es decir una hora).
## `sealer_status.js`
Escrito en JavaScript, puede ejecutarse desde la consola JavaScript de `geth`.
Por ejemplo, en una instalación típica de BFA:
```
bfa@bootnode:~$ geth attach ipc:/home/bfa/bfa/network/node/geth.ipc --exec 'loadScript("sealer_status.js")'
9b3ac6719b02ec7bb48: 466728
998c2651db6f76ca568: 466727
c0310a7b3b25f49b11b: 466726
609043ebde4a06bd28a: 466725
46991ada2a2544468eb: 466724
91c055c6478bd0ad6d1: 466723
39170a1ce03729d141d: 466722
2feb6a8876bd9e2116b: 466721
19fe7b9b3a1bebde77c: 466720
342e1d075d820ed3f9d: -1
true
bfa@bootnode:~$
```
Para cada sellador reporta el último bloque que selló. Si un sellador no apareció en los últimos 720 bloques, reporta -1.
## `sealer_status.py`
Este es un _script_ escrito en Python, que requiere Python 3 y la biblioteca web3 (que puede instalarse con `pip`).
Para funcionar requiere conocer el directorio donde está el _socket_ `geth.ipc` (asume que es `${BFANETWORKDIR}/node/geth.ipc` o, en su defecto `~/bfa/network/node/geth.ipc`), y el puerto RPC (asume que es el 8545). Ambos valores pueden especificarse en la línea de comandos.
El control de errores es nulo. Cualquier error de conexíón con `geth` producirá un _stacktrace_.
```
bfa@bootnode:~$ bfa/src/sealer_status.py --help
usage: sealer_status.py [-h] [-n N] [-b] [--ipc-path IPC_PATH]
[--rpc-port RPC_PORT]
Muestra la cantidad de bloques transcurridos desde la ultima aparición de cada
uno de los selladores de la BFA. Si un sellador no ha aparecido por un cierto
tiempo (por default 1 hora) imprime -1.
optional arguments:
-h, --help show this help message and exit
-n N Máxima cantidad de bloques a recorrer. Default: 720 (1
hora)
-b, --blockNumber Muestra el número de bloque en lugar de la cantidad de
bloques transcurridos
--ipc-path IPC_PATH Path del archivo geth.ipc. Default:
/home/bfa/bfa/network/node/geth.ipc
--rpc-port RPC_PORT Puerto RPC. Default: 8545
bfa@bootnode:~$ bfa/src/sealer_status.py
c0310a7b3b25f49b11b: 0
9b3ac6719b02ec7bb48: 1
46991ada2a2544468eb: 2
39170a1ce03729d141d: 3
91c055c6478bd0ad6d1: 4
609043ebde4a06bd28a: 5
19fe7b9b3a1bebde77c: 6
2feb6a8876bd9e2116b: 9
998c2651db6f76ca568: 10
342e1d075d820ed3f9d: -1
(web3py) bfa@bfa-3:~$ bfa/src/sealer_status.py -b
998c2651db6f76ca568: 466927
c0310a7b3b25f49b11b: 466926
9b3ac6719b02ec7bb48: 466925
46991ada2a2544468eb: 466924
39170a1ce03729d141d: 466923
91c055c6478bd0ad6d1: 466922
609043ebde4a06bd28a: 466921
19fe7b9b3a1bebde77c: 466920
2feb6a8876bd9e2116b: 466917
342e1d075d820ed3f9d: -1
bfa@bootnode:~$