@witnet/sdk 1.1.5 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env_witnet +13 -1
- package/dist/package.json +41 -24
- package/dist/src/bin/helpers.d.ts +59 -49
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +228 -229
- package/dist/src/index.d.ts +3 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -47
- package/dist/src/lib/crypto/account.d.ts +3 -3
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +31 -25
- package/dist/src/lib/crypto/coinbase.d.ts +4 -4
- package/dist/src/lib/crypto/coinbase.d.ts.map +1 -1
- package/dist/src/lib/crypto/coinbase.js +8 -13
- package/dist/src/lib/crypto/index.d.ts +7 -7
- package/dist/src/lib/crypto/index.d.ts.map +1 -1
- package/dist/src/lib/crypto/index.js +7 -30
- package/dist/src/lib/crypto/interfaces.d.ts +5 -5
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +2 -3
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +5 -5
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +98 -85
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts +3 -4
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +81 -71
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts +4 -5
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +36 -43
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts +3 -4
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +46 -48
- package/dist/src/lib/crypto/payloads.d.ts +5 -5
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +44 -45
- package/dist/src/lib/crypto/signer.d.ts +3 -3
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +45 -88
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +6 -6
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +6 -10
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts +5 -5
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +7 -11
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts +6 -7
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +9 -13
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts +5 -5
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +6 -10
- package/dist/src/lib/crypto/transmitters.d.ts +6 -6
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +89 -76
- package/dist/src/lib/crypto/types.d.ts +1 -2
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +71 -67
- package/dist/src/lib/crypto/utils.d.ts +5 -5
- package/dist/src/lib/crypto/utils.d.ts.map +1 -1
- package/dist/src/lib/crypto/utils.js +48 -66
- package/dist/src/lib/crypto/wallet.d.ts +3 -3
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +72 -89
- package/dist/src/lib/index.d.ts +5 -4
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +6 -44
- package/dist/src/lib/radon/ccdr/eth.d.ts +1 -1
- package/dist/src/lib/radon/ccdr/eth.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +95 -83
- package/dist/src/lib/radon/ccdr/index.d.ts +2 -2
- package/dist/src/lib/radon/ccdr/index.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/index.js +3 -39
- package/dist/src/lib/radon/ccdr/wit.d.ts +2 -2
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +17 -19
- package/dist/src/lib/radon/filters.d.ts.map +1 -1
- package/dist/src/lib/radon/filters.js +23 -19
- package/dist/src/lib/radon/index.d.ts +10 -11
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +205 -187
- package/dist/src/lib/radon/reducers.d.ts +2 -2
- package/dist/src/lib/radon/reducers.d.ts.map +1 -1
- package/dist/src/lib/radon/reducers.js +48 -34
- package/dist/src/lib/radon/types.d.ts +2 -2
- package/dist/src/lib/radon/types.d.ts.map +1 -1
- package/dist/src/lib/radon/types.js +80 -110
- package/dist/src/lib/radon/utils.d.ts +3 -3
- package/dist/src/lib/radon/utils.d.ts.map +1 -1
- package/dist/src/lib/radon/utils.js +49 -52
- package/dist/src/lib/rest/kermit.d.ts +20 -0
- package/dist/src/lib/rest/kermit.d.ts.map +1 -0
- package/dist/src/lib/rest/kermit.js +68 -0
- package/dist/src/lib/rest/types.d.ts +5 -0
- package/dist/src/lib/rest/types.d.ts.map +1 -0
- package/dist/src/lib/rest/types.js +2 -0
- package/dist/src/lib/rpc/index.d.ts +2 -2
- package/dist/src/lib/rpc/index.d.ts.map +1 -1
- package/dist/src/lib/rpc/index.js +3 -19
- package/dist/src/lib/rpc/nodes.d.ts +13 -13
- package/dist/src/lib/rpc/nodes.d.ts.map +1 -1
- package/dist/src/lib/rpc/nodes.js +69 -98
- package/dist/src/lib/rpc/provider.d.ts +4 -4
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +106 -122
- package/dist/src/lib/rpc/types.d.ts +2 -2
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +13 -16
- package/dist/src/lib/types.d.ts +5 -4
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +3 -9
- package/dist/src/lib/utils.d.ts +5 -5
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +40 -99
- package/dist/witnet/assets/index.cjs +6 -0
- package/dist/witnet/assets/index.d.cts +29 -0
- package/dist/witnet/assets/index.d.cts.map +1 -0
- package/dist/witnet/assets/modals/index.cjs +9 -0
- package/dist/witnet/assets/modals/index.d.cts +16 -0
- package/dist/witnet/assets/modals/index.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/eth.cjs +23 -0
- package/dist/witnet/assets/modals/web3/eth.d.cts +4 -0
- package/dist/witnet/assets/modals/web3/eth.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/ipfs.cjs +18 -0
- package/dist/witnet/assets/modals/web3/ipfs.d.cts +3 -0
- package/dist/witnet/assets/modals/web3/ipfs.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/wit.cjs +24 -0
- package/dist/witnet/assets/modals/web3/wit.d.cts +3 -0
- package/dist/witnet/assets/modals/web3/wit.d.cts.map +1 -0
- package/dist/witnet/assets/requests.cjs +43 -0
- package/dist/witnet/assets/requests.d.cts +10 -0
- package/dist/witnet/assets/requests.d.cts.map +1 -0
- package/package.json +41 -24
- package/src/bin/bots/watcher.cjs +354 -0
- package/src/bin/cli/history.cjs +31 -0
- package/src/bin/cli/inspect.js +545 -471
- package/src/bin/cli/network.js +658 -557
- package/src/bin/cli/nodes.js +392 -332
- package/src/bin/cli/radon.js +1071 -844
- package/src/bin/cli/wallet.js +1317 -1074
- package/src/bin/helpers.js +969 -868
- package/src/bin/index.js +329 -0
- package/witnet/assets/_index.cjs +5 -0
- package/witnet/assets/_requests.cjs +25 -0
- package/witnet/assets/_sources.cjs +36 -0
- package/witnet/assets/_templates.cjs +36 -0
- package/witnet/assets/index.cjs +4 -0
- package/witnet/assets/modals/index.cjs +7 -0
- package/witnet/assets/modals/web3/eth.cjs +27 -0
- package/witnet/assets/modals/web3/ipfs.cjs +22 -0
- package/witnet/assets/modals/web3/wit.cjs +28 -0
- package/witnet/assets/requests.cjs +49 -0
- package/witnet/witnet copy.proto +457 -0
- package/witnet/witnet.proto +456 -0
- package/witnet/witnet_toolkit-1.6.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-1.7.1-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.0-rc.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.2-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.21-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.8-x86_64-pc-windows-msvc.exe +0 -0
- package/dist/witnet/assets/index.d.ts +0 -29
- package/dist/witnet/assets/index.d.ts.map +0 -1
- package/dist/witnet/assets/index.js +0 -6
- package/dist/witnet/assets/modals/index.d.ts +0 -16
- package/dist/witnet/assets/modals/index.d.ts.map +0 -1
- package/dist/witnet/assets/modals/index.js +0 -11
- package/dist/witnet/assets/modals/web3/eth.d.ts +0 -5
- package/dist/witnet/assets/modals/web3/eth.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/eth.js +0 -26
- package/dist/witnet/assets/modals/web3/ipfs.d.ts +0 -4
- package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +0 -18
- package/dist/witnet/assets/modals/web3/wit.d.ts +0 -4
- package/dist/witnet/assets/modals/web3/wit.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/wit.js +0 -17
- package/dist/witnet/assets/requests.d.ts +0 -11
- package/dist/witnet/assets/requests.d.ts.map +0 -1
- package/dist/witnet/assets/requests.js +0 -43
- package/src/bin/cli/history.js +0 -31
- package/src/bin/postinstall.js +0 -9
- package/src/bin/toolkit.js +0 -290
- package/witnet/assets/_index.js +0 -8
- package/witnet/assets/_requests.js +0 -25
- package/witnet/assets/_sources.js +0 -36
- package/witnet/assets/_templates.js +0 -36
- package/witnet/assets/index.js +0 -4
- package/witnet/assets/modals/index.js +0 -9
- package/witnet/assets/modals/web3/eth.js +0 -29
- package/witnet/assets/modals/web3/ipfs.js +0 -22
- package/witnet/assets/modals/web3/wit.js +0 -21
- package/witnet/assets/requests.js +0 -49
- /package/witnet/assets/modals/web3/{btc.js → btc.cjs} +0 -0
- /package/witnet/assets/modals/web3/{sol.js → sol.cjs} +0 -0
package/src/bin/cli/network.js
CHANGED
|
@@ -1,594 +1,695 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Witnet } from "../../../dist/src/index.js";
|
|
2
|
+
import * as helpers from "../helpers.js";
|
|
3
3
|
|
|
4
|
-
const FLAGS_LIMIT_MAX = 2048
|
|
5
|
-
const FLAGS_LIMIT_DEFAULT = 64
|
|
6
|
-
const OPTIONS_DEFAULT_SINCE = -2048
|
|
4
|
+
const FLAGS_LIMIT_MAX = 2048;
|
|
5
|
+
const FLAGS_LIMIT_DEFAULT = 64;
|
|
6
|
+
const OPTIONS_DEFAULT_SINCE = -2048;
|
|
7
7
|
|
|
8
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
cyan,
|
|
10
|
+
white,
|
|
11
|
+
gray,
|
|
12
|
+
green,
|
|
13
|
+
lcyan,
|
|
14
|
+
lyellow,
|
|
15
|
+
mgreen,
|
|
16
|
+
mred,
|
|
17
|
+
myellow,
|
|
18
|
+
yellow,
|
|
19
|
+
} = helpers.colors;
|
|
9
20
|
|
|
10
21
|
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
11
22
|
/// CLI SUBMODULE CONSTANTS ===========================================================================================
|
|
12
23
|
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
24
|
+
export const envars = {
|
|
25
|
+
WITNET_SDK_PROVIDER_URL:
|
|
26
|
+
"=> Wit/Oracle RPC provider(s) to connect to, if no otherwise specified.",
|
|
27
|
+
};
|
|
28
|
+
export const flags = {
|
|
29
|
+
limit: {
|
|
30
|
+
hint: "Limits number of output records (default: 64).",
|
|
31
|
+
param: "LIMIT",
|
|
32
|
+
},
|
|
33
|
+
offset: {
|
|
34
|
+
hint: "Skips first records as found on server side (default: 0).",
|
|
35
|
+
param: "SKIP",
|
|
36
|
+
},
|
|
37
|
+
provider: {
|
|
38
|
+
hint: "Public Wit/Oracle JSON-RPC provider, other than default.",
|
|
39
|
+
param: "PROVIDER_URL",
|
|
40
|
+
},
|
|
41
|
+
verbose: {
|
|
42
|
+
hint: "Outputs detailed information.",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
export const router = {
|
|
46
|
+
blocks: {
|
|
47
|
+
hint: "List recently validated blocks.",
|
|
48
|
+
options: {
|
|
49
|
+
since: {
|
|
50
|
+
hint: "Since the specified epoch (default: -<LIMIT>-2).",
|
|
51
|
+
param: "EPOCH|MINUS_EPOCHS",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
constants: {
|
|
56
|
+
hint: "Show network's consensus constants.",
|
|
57
|
+
},
|
|
58
|
+
fees: {
|
|
59
|
+
hint: "Estimate transaction fees based on recent network activity.",
|
|
60
|
+
params: '"vtt" | "drt" | "st" | "ut"',
|
|
61
|
+
options: {
|
|
62
|
+
eti: {
|
|
63
|
+
hint: "Expected time before inclusion (default: 60 seconds).",
|
|
64
|
+
param: "ETI_SECONDS",
|
|
65
|
+
},
|
|
66
|
+
weight: {
|
|
67
|
+
hint: "Assuming this transaction weight (default: 1).",
|
|
68
|
+
param: "TX_WEIGHT",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
holders: {
|
|
73
|
+
hint: "List identities holding Wits within the specified range.",
|
|
74
|
+
options: {
|
|
75
|
+
"min-balance": {
|
|
76
|
+
hint: "Having at least this amount of unlocked Wits (default: 1 Wit).",
|
|
77
|
+
param: "WITS",
|
|
78
|
+
},
|
|
79
|
+
"max-balance": {
|
|
80
|
+
hint: "Having at most this amount of unlocked Wits.",
|
|
81
|
+
param: "WITS",
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
knownPeers: {
|
|
86
|
+
hint: "Get a full list of peers as known by the Wit/Oracle RPC provider(s).",
|
|
87
|
+
},
|
|
88
|
+
mempool: {
|
|
89
|
+
hint: "Dump current transactions mempool.",
|
|
90
|
+
params: '["vtt" | "drt" | "st" | "ut"]',
|
|
91
|
+
options: {
|
|
92
|
+
count: { hint: "Just count the number of entries (ignoring limit)." },
|
|
93
|
+
offset: {
|
|
94
|
+
hint: "Skips first matching entries (default: 0).",
|
|
95
|
+
param: "OFFSET",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
powers: {
|
|
100
|
+
hint: "List validation identities ordered by their current mining power.",
|
|
101
|
+
options: {
|
|
102
|
+
distinct: { hint: "Include only the first appearance per validator." },
|
|
103
|
+
witnessing: { hint: "Order by witnessing power instead." },
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
provider: {
|
|
107
|
+
hint: "Show the underlying Wit/RPC provider and network id being used.",
|
|
108
|
+
},
|
|
109
|
+
senate: {
|
|
110
|
+
hint: "List distinct identities that have lately validated at least one block.",
|
|
111
|
+
options: {
|
|
112
|
+
since: {
|
|
113
|
+
hint: "Since the specified epoch (default: -2048).",
|
|
114
|
+
param: "MINUS_EPOCHS",
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
stakes: {
|
|
119
|
+
hint: "List active stake entries at present time.",
|
|
120
|
+
options: {
|
|
121
|
+
validator: { hint: "Filter by validator address.", param: "WIT_ADDRESS" },
|
|
122
|
+
withdrawer: {
|
|
123
|
+
hint: "Filter by withdrawer address.",
|
|
124
|
+
param: "WIT_ADDRESS",
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
"stats*": {
|
|
129
|
+
hint: "Report network stats.",
|
|
130
|
+
},
|
|
131
|
+
status: {
|
|
132
|
+
hint: "Report the sync status of the network's Wit/Oracle RPC provider being used.",
|
|
133
|
+
},
|
|
134
|
+
supplyInfo: {
|
|
135
|
+
hint: "Get network's Wit supply information.",
|
|
136
|
+
},
|
|
137
|
+
versions: {
|
|
138
|
+
hint: "List known protocol versions and which one is currently live.",
|
|
139
|
+
},
|
|
140
|
+
wips: {
|
|
141
|
+
hint: "Show currently activated WIPs on the network.",
|
|
142
|
+
options: {
|
|
143
|
+
pending: { hint: "Only shows pending upgrades, if any." },
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export const subcommands = {
|
|
149
|
+
blocks,
|
|
150
|
+
constants,
|
|
151
|
+
holders,
|
|
152
|
+
knownPeers,
|
|
153
|
+
mempool,
|
|
154
|
+
fees: priorities,
|
|
155
|
+
powers,
|
|
156
|
+
provider,
|
|
157
|
+
senate,
|
|
158
|
+
stakes,
|
|
159
|
+
supplyInfo,
|
|
160
|
+
status: syncStatus,
|
|
161
|
+
versions,
|
|
162
|
+
wips,
|
|
163
|
+
};
|
|
150
164
|
|
|
151
165
|
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
152
166
|
/// CLI SUBMODULE COMMANDS ============================================================================================
|
|
153
167
|
|
|
154
|
-
async function blocks
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
168
|
+
async function blocks(options = {}) {
|
|
169
|
+
options.limit = Math.min(
|
|
170
|
+
parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT,
|
|
171
|
+
FLAGS_LIMIT_MAX,
|
|
172
|
+
);
|
|
173
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
174
|
+
// todo: use prompter?
|
|
175
|
+
const records = await provider.blocks(
|
|
176
|
+
parseInt(options?.since, 10) || -options.limit - 2,
|
|
177
|
+
options.limit,
|
|
178
|
+
);
|
|
179
|
+
if (records.length > 0) {
|
|
180
|
+
helpers.traceTable(
|
|
181
|
+
records.slice(0, options.limit).map((record) => [record[0], record[1]]),
|
|
182
|
+
{
|
|
183
|
+
headlines: ["EPOCH", "BLOCK HASHES"],
|
|
184
|
+
humanizers: [helpers.commas],
|
|
185
|
+
colors: [undefined, helpers.colors.gray],
|
|
186
|
+
},
|
|
187
|
+
);
|
|
188
|
+
console.info(
|
|
189
|
+
`^ Listed ${records.length} blocks for a range of ${options.limit} epochs.`,
|
|
190
|
+
);
|
|
191
|
+
} else {
|
|
192
|
+
console.info(
|
|
193
|
+
`> No blocks found in specified range (since: ${
|
|
194
|
+
options?.since || -options.limit
|
|
195
|
+
}, limit: ${options.limit}).`,
|
|
196
|
+
);
|
|
197
|
+
}
|
|
179
198
|
}
|
|
180
199
|
|
|
181
|
-
async function constants
|
|
182
|
-
|
|
183
|
-
|
|
200
|
+
async function constants(options = {}) {
|
|
201
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
202
|
+
console.info(await provider.constants());
|
|
184
203
|
}
|
|
185
204
|
|
|
186
|
-
async function holders
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
205
|
+
async function holders(options = {}) {
|
|
206
|
+
options.limit = Math.min(
|
|
207
|
+
parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT,
|
|
208
|
+
FLAGS_LIMIT_MAX,
|
|
209
|
+
);
|
|
210
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
211
|
+
const records = Object.entries(
|
|
212
|
+
await helpers.prompter(
|
|
213
|
+
provider.holders(
|
|
214
|
+
options["min-balance"] ? options["min-balance"] * 10 ** 9 : 1000000,
|
|
215
|
+
options["max-balance"] ? options["max-balance"] * 10 ** 9 : null,
|
|
216
|
+
),
|
|
217
|
+
),
|
|
218
|
+
);
|
|
219
|
+
const totalRecords = records.length;
|
|
220
|
+
helpers.traceTable(
|
|
221
|
+
records
|
|
222
|
+
.slice(0, options.limit)
|
|
223
|
+
.map(([address, balance], index) => [
|
|
224
|
+
index + 1,
|
|
225
|
+
address,
|
|
226
|
+
...(options?.verbose
|
|
227
|
+
? [
|
|
228
|
+
Witnet.Coins.fromNanowits(balance.locked).wits,
|
|
229
|
+
Witnet.Coins.fromNanowits(balance.staked).wits,
|
|
230
|
+
Witnet.Coins.fromNanowits(balance.unlocked).wits,
|
|
231
|
+
]
|
|
232
|
+
: []),
|
|
233
|
+
Witnet.Coins.fromNanowits(
|
|
234
|
+
balance.locked + balance.staked + balance.unlocked,
|
|
235
|
+
).wits,
|
|
236
|
+
]),
|
|
237
|
+
{
|
|
238
|
+
headlines: [
|
|
239
|
+
"RANK",
|
|
240
|
+
"HOLDERS",
|
|
241
|
+
...(options?.verbose
|
|
242
|
+
? ["Locked ($WIT)", "Staked ($WIT)", "Available ($WIT)"]
|
|
243
|
+
: []),
|
|
244
|
+
"BALANCE ($WIT)",
|
|
245
|
+
],
|
|
246
|
+
humanizers: [
|
|
247
|
+
undefined,
|
|
248
|
+
undefined,
|
|
249
|
+
helpers.commas,
|
|
250
|
+
helpers.commas,
|
|
251
|
+
helpers.commas,
|
|
252
|
+
helpers.commas,
|
|
253
|
+
],
|
|
254
|
+
colors: [
|
|
255
|
+
undefined,
|
|
256
|
+
mgreen,
|
|
257
|
+
...(options?.verbose ? [gray, yellow, myellow] : []),
|
|
258
|
+
lyellow,
|
|
259
|
+
],
|
|
260
|
+
},
|
|
261
|
+
);
|
|
262
|
+
if (options.limit < totalRecords) {
|
|
263
|
+
console.info(
|
|
264
|
+
`^ Listed ${Math.min(options.limit, totalRecords)} out of ${totalRecords} records.`,
|
|
265
|
+
);
|
|
266
|
+
}
|
|
235
267
|
}
|
|
236
268
|
|
|
237
|
-
async function knownPeers
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
269
|
+
async function knownPeers(options = {}) {
|
|
270
|
+
if (!options) options = {};
|
|
271
|
+
options.limit = parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT;
|
|
272
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
273
|
+
const knownPeers = await provider.knownPeers();
|
|
274
|
+
console.info(knownPeers);
|
|
243
275
|
}
|
|
244
276
|
|
|
245
|
-
async function mempool
|
|
246
|
-
|
|
247
|
-
|
|
277
|
+
async function mempool(options = {}) {
|
|
278
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
279
|
+
console.info(await provider.mempool());
|
|
248
280
|
}
|
|
249
281
|
|
|
250
|
-
async function powers
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
282
|
+
async function powers(options = {}) {
|
|
283
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
284
|
+
const query = {
|
|
285
|
+
distinct: options?.distinct || false,
|
|
286
|
+
limit: parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT,
|
|
287
|
+
offset: parseInt(options?.offset, 10) || 0,
|
|
288
|
+
orderBy: options?.witnessing ? "witnessing" : "mining",
|
|
289
|
+
};
|
|
290
|
+
const records = await provider.powers(query);
|
|
291
|
+
if (records.length > 0) {
|
|
292
|
+
helpers.traceTable(
|
|
293
|
+
records.map((record) => [
|
|
294
|
+
record.ranking,
|
|
295
|
+
record.validator,
|
|
296
|
+
...(options?.verbose ? [record.withdrawer] : []),
|
|
297
|
+
record.power,
|
|
298
|
+
]),
|
|
299
|
+
{
|
|
300
|
+
headlines: [
|
|
301
|
+
"G_RANK",
|
|
302
|
+
"VALIDATORS",
|
|
303
|
+
...(options?.verbose ? ["Withdrawer"] : []),
|
|
304
|
+
`${query.orderBy.toUpperCase()} POWER`,
|
|
305
|
+
],
|
|
306
|
+
colors: [
|
|
307
|
+
undefined,
|
|
308
|
+
helpers.colors.green,
|
|
309
|
+
...(options?.verbose ? [helpers.colors.mgreen] : []),
|
|
310
|
+
query.orderBy === "mining"
|
|
311
|
+
? helpers.colors.mcyan
|
|
312
|
+
: helpers.colors.mmagenta,
|
|
313
|
+
],
|
|
314
|
+
humanizers: [
|
|
315
|
+
helpers.commas,
|
|
316
|
+
undefined,
|
|
317
|
+
...(options?.verbose
|
|
318
|
+
? [undefined, helpers.commas]
|
|
319
|
+
: [helpers.commas]),
|
|
320
|
+
],
|
|
321
|
+
},
|
|
322
|
+
);
|
|
323
|
+
if (records.length === query.limit || query.offset === 0) {
|
|
324
|
+
console.info(`^ Listed ${records.length} records.`);
|
|
325
|
+
} else if (query.offset !== 0) {
|
|
326
|
+
console.info(
|
|
327
|
+
`^ Listed ${records.length} out of ${records.length + query.offset} records.`,
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
} else {
|
|
331
|
+
if (query.offset === 0) {
|
|
332
|
+
console.info("> No records found.");
|
|
333
|
+
} else {
|
|
334
|
+
console.info(`> No as many as ${query.offset + 1} records exist.`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
297
337
|
}
|
|
298
338
|
|
|
299
|
-
async function priorities
|
|
300
|
-
|
|
301
|
-
|
|
339
|
+
async function priorities(options = {}) {
|
|
340
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
341
|
+
console.info(await provider.priorities());
|
|
302
342
|
}
|
|
303
343
|
|
|
304
|
-
async function provider
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
344
|
+
async function provider(options = {}) {
|
|
345
|
+
const provider = await Witnet.JsonRpcProvider.fromEnv(options?.provider);
|
|
346
|
+
console.info(`> Witnet RPC provider: ${white(provider.endpoints)}`);
|
|
347
|
+
console.info(
|
|
348
|
+
`> Witnet environment: ${
|
|
349
|
+
provider.networkId === 40941
|
|
350
|
+
? lcyan("MAINNET")
|
|
351
|
+
: provider.network === "testnet"
|
|
352
|
+
? cyan("TESTNET")
|
|
353
|
+
: mred("Unknown")
|
|
354
|
+
}`,
|
|
355
|
+
);
|
|
356
|
+
console.info(
|
|
357
|
+
`> Witnet network id: ${green(`0x${provider.networkId.toString(16).toUpperCase()}`)}`,
|
|
358
|
+
);
|
|
313
359
|
}
|
|
314
360
|
|
|
315
|
-
async function senate
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
361
|
+
async function senate(options = {}) {
|
|
362
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
363
|
+
const params = {
|
|
364
|
+
distinct: true,
|
|
365
|
+
limit: Math.min(
|
|
366
|
+
parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT,
|
|
367
|
+
FLAGS_LIMIT_MAX,
|
|
368
|
+
),
|
|
369
|
+
offset: parseInt(options?.offset || 0, 10),
|
|
370
|
+
order: { by: "mining" },
|
|
371
|
+
since: -Math.abs(parseInt(options?.since, 10) || OPTIONS_DEFAULT_SINCE) - 1,
|
|
372
|
+
};
|
|
373
|
+
const records = await provider.stakes({ params }); // todo: use prompter?
|
|
374
|
+
if (records.length > 0) {
|
|
375
|
+
helpers.traceTable(
|
|
376
|
+
records.map((record, index) => [
|
|
377
|
+
...(options?.verbose
|
|
378
|
+
? [
|
|
379
|
+
index + 1,
|
|
380
|
+
record.key.validator,
|
|
381
|
+
record.value.nonce,
|
|
382
|
+
record.value.epochs.witnessing,
|
|
383
|
+
]
|
|
384
|
+
: [record.key.validator]),
|
|
385
|
+
record.value.epochs.mining,
|
|
386
|
+
]),
|
|
387
|
+
{
|
|
388
|
+
headlines: [
|
|
389
|
+
...(options?.verbose
|
|
390
|
+
? [
|
|
391
|
+
"INDEX",
|
|
392
|
+
`Superblock Voting Committee ${params.since + 1}`,
|
|
393
|
+
"Nonce",
|
|
394
|
+
"LW_Epoch",
|
|
395
|
+
]
|
|
396
|
+
: [`Superblock Voting Committee ${params.since + 1}`]),
|
|
397
|
+
"LM_Epoch",
|
|
398
|
+
],
|
|
399
|
+
humanizers: [
|
|
400
|
+
...(options?.verbose
|
|
401
|
+
? [
|
|
402
|
+
helpers.commas,
|
|
403
|
+
undefined,
|
|
404
|
+
helpers.commas,
|
|
405
|
+
helpers.commas,
|
|
406
|
+
helpers.commas,
|
|
407
|
+
]
|
|
408
|
+
: [undefined, helpers.commas, helpers.commas, helpers.commas]),
|
|
409
|
+
],
|
|
410
|
+
colors: [
|
|
411
|
+
...(options?.verbose
|
|
412
|
+
? [
|
|
413
|
+
undefined,
|
|
414
|
+
undefined,
|
|
415
|
+
undefined,
|
|
416
|
+
helpers.colors.magenta,
|
|
417
|
+
helpers.colors.mcyan,
|
|
418
|
+
]
|
|
419
|
+
: [undefined, helpers.colors.mcyan]),
|
|
420
|
+
],
|
|
421
|
+
},
|
|
422
|
+
);
|
|
423
|
+
if (records.length < params.limit) {
|
|
424
|
+
if (params.offset === 0) {
|
|
425
|
+
console.info(
|
|
426
|
+
`^ Only ${records.length} qualified members out of ${params.limit} seats.`,
|
|
427
|
+
);
|
|
428
|
+
} else {
|
|
429
|
+
console.info(
|
|
430
|
+
`^ Listed ${records.length} out of ${records.length + params.offset} members.`,
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
} else {
|
|
434
|
+
console.info(`^ Listed ${records.length} members.`);
|
|
435
|
+
}
|
|
436
|
+
} else {
|
|
437
|
+
if (params.offset === 0) {
|
|
438
|
+
console.info("No qualified members found.");
|
|
439
|
+
} else {
|
|
440
|
+
console.info(`No as many as ${params.offset} qualified members exist.`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
391
443
|
}
|
|
392
444
|
|
|
393
|
-
async function stakes
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
445
|
+
async function stakes(options = {}) {
|
|
446
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
447
|
+
const query = {
|
|
448
|
+
params: {
|
|
449
|
+
limit: Math.min(
|
|
450
|
+
parseInt(options.limit, 10) || FLAGS_LIMIT_DEFAULT,
|
|
451
|
+
FLAGS_LIMIT_MAX,
|
|
452
|
+
),
|
|
453
|
+
offset: parseInt(options?.offset || 0, 10),
|
|
454
|
+
},
|
|
455
|
+
};
|
|
456
|
+
if (options?.validator) query.filter = { validator: options.validator };
|
|
457
|
+
if (options?.withdrawer)
|
|
458
|
+
query.filter = { ...query.filter, withdrawer: options.withdrawer };
|
|
459
|
+
const records = await provider.stakes(query); // todo: use prompter?
|
|
460
|
+
if (records.length > 0) {
|
|
461
|
+
helpers.traceTable(
|
|
462
|
+
records.map((record, index) => [
|
|
463
|
+
1 + index + query.params.offset,
|
|
464
|
+
record.key.withdrawer,
|
|
465
|
+
record.key.validator,
|
|
466
|
+
...(options?.verbose
|
|
467
|
+
? [
|
|
468
|
+
record.value.nonce,
|
|
469
|
+
record.value.epochs.witnessing,
|
|
470
|
+
record.value.epochs.mining,
|
|
471
|
+
]
|
|
472
|
+
: []),
|
|
473
|
+
Witnet.Coins.fromNanowits(record.value.coins).wits,
|
|
474
|
+
]),
|
|
475
|
+
{
|
|
476
|
+
headlines: [
|
|
477
|
+
options?.validator || options?.withdrawer ? "RANK" : "G_RANK",
|
|
478
|
+
"STAKERS",
|
|
479
|
+
"Validator",
|
|
480
|
+
...(options?.verbose ? ["Nonce", "LW_Epoch", "LM_Epoch"] : []),
|
|
481
|
+
"STAKED ($WIT)",
|
|
482
|
+
],
|
|
483
|
+
humanizers: [
|
|
484
|
+
undefined,
|
|
485
|
+
undefined,
|
|
486
|
+
undefined,
|
|
487
|
+
...(options?.verbose
|
|
488
|
+
? [helpers.commas, helpers.commas, helpers.commas]
|
|
489
|
+
: []),
|
|
490
|
+
(x) => helpers.commas(Math.floor(parseFloat(x))),
|
|
491
|
+
],
|
|
492
|
+
colors: [
|
|
493
|
+
undefined,
|
|
494
|
+
helpers.colors.mgreen,
|
|
495
|
+
undefined,
|
|
496
|
+
...(options?.verbose
|
|
497
|
+
? [undefined, helpers.colors.magenta, helpers.colors.cyan]
|
|
498
|
+
: []),
|
|
499
|
+
helpers.colors.myellow,
|
|
500
|
+
],
|
|
501
|
+
},
|
|
502
|
+
);
|
|
503
|
+
if (records.length === query.params.limit || query.params.offset === 0) {
|
|
504
|
+
console.info(`^ Listed ${records.length} records.`);
|
|
505
|
+
} else if (query.params.offset !== 0) {
|
|
506
|
+
console.info(
|
|
507
|
+
`^ Listed ${records.length} out of ${records.length + query.params.offset} records.`,
|
|
508
|
+
);
|
|
509
|
+
}
|
|
510
|
+
} else {
|
|
511
|
+
if (query.params.offset === 0) {
|
|
512
|
+
console.info("> No records found.");
|
|
513
|
+
} else {
|
|
514
|
+
console.info(`> No as many as ${query.params.offset + 1} records exist.`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
460
517
|
}
|
|
461
518
|
|
|
462
|
-
async function supplyInfo
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
519
|
+
async function supplyInfo(options = {}) {
|
|
520
|
+
const reporter = new Witnet.JsonRpcProvider(
|
|
521
|
+
options?.provider || process.env.WITNET_SDK_PROVIDER_URL,
|
|
522
|
+
);
|
|
523
|
+
const data = await reporter.supplyInfo();
|
|
524
|
+
console.info(
|
|
525
|
+
`> Supply info at epoch ${helpers.colors.white(helpers.commas(data.epoch))}:`,
|
|
526
|
+
);
|
|
527
|
+
const records = [];
|
|
528
|
+
records.push([
|
|
529
|
+
"Minted blocks",
|
|
530
|
+
`${helpers.toFixedTrunc((100 * data.blocks_minted) / (data.epoch - 1), 1)} %`,
|
|
531
|
+
]);
|
|
532
|
+
records.push([
|
|
533
|
+
"Minted rewards",
|
|
534
|
+
helpers.whole_wits(data.blocks_minted_reward, 2),
|
|
535
|
+
]);
|
|
536
|
+
if (data.burnt_supply) {
|
|
537
|
+
records.push(["Burnt supply", helpers.whole_wits(data.burnt_supply, 2)]);
|
|
538
|
+
}
|
|
539
|
+
if (data.current_locked_supply) {
|
|
540
|
+
records.push([
|
|
541
|
+
"Locked supply",
|
|
542
|
+
helpers.whole_wits(data.current_locked_supply, 2),
|
|
543
|
+
]);
|
|
544
|
+
}
|
|
545
|
+
if (data.current_staked_supply) {
|
|
546
|
+
records.push([
|
|
547
|
+
"Staked supply",
|
|
548
|
+
helpers.whole_wits(data.current_staked_supply, 2),
|
|
549
|
+
]);
|
|
550
|
+
}
|
|
551
|
+
records.push([
|
|
552
|
+
"Circulating supply",
|
|
553
|
+
helpers.whole_wits(data.current_unlocked_supply, 2),
|
|
554
|
+
]);
|
|
555
|
+
helpers.traceTable(records, {
|
|
556
|
+
headlines: [":KPI", "VALUE"],
|
|
557
|
+
colors: [helpers.colors.mgreen, helpers.colors.myellow],
|
|
558
|
+
});
|
|
483
559
|
}
|
|
484
560
|
|
|
485
|
-
async function syncStatus
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
561
|
+
async function syncStatus(options = {}) {
|
|
562
|
+
const provider = await Witnet.JsonRpcProvider.fromEnv(options?.provider);
|
|
563
|
+
const syncStatus = await provider.syncStatus();
|
|
564
|
+
helpers.traceTable(
|
|
565
|
+
[
|
|
566
|
+
[
|
|
567
|
+
provider.network === "mainnet"
|
|
568
|
+
? "Mainnet"
|
|
569
|
+
: `Testnet (${provider.networkId.toString(16).toUpperCase()})`,
|
|
570
|
+
syncStatus.node_state || "",
|
|
571
|
+
syncStatus.current_epoch,
|
|
572
|
+
syncStatus.chain_beacon.checkpoint,
|
|
573
|
+
syncStatus.chain_beacon.hashPrevBlock,
|
|
574
|
+
],
|
|
575
|
+
],
|
|
576
|
+
{
|
|
577
|
+
headlines: [
|
|
578
|
+
"NETWORK",
|
|
579
|
+
":STATUS",
|
|
580
|
+
"Current epoch",
|
|
581
|
+
"Checkpoint epoch",
|
|
582
|
+
"Checkpoint block hash",
|
|
583
|
+
],
|
|
584
|
+
humanizers: [undefined, undefined, helpers.commas, helpers.commas],
|
|
585
|
+
colors: [
|
|
586
|
+
helpers.colors.mgreen,
|
|
587
|
+
helpers.colors.lgreen,
|
|
588
|
+
helpers.colors.white,
|
|
589
|
+
undefined,
|
|
590
|
+
helpers.colors.gray,
|
|
591
|
+
],
|
|
592
|
+
},
|
|
593
|
+
);
|
|
507
594
|
}
|
|
508
595
|
|
|
509
|
-
async function versions
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
596
|
+
async function versions(options = {}) {
|
|
597
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
598
|
+
const protocolInfo = await provider.protocolInfo();
|
|
599
|
+
if (
|
|
600
|
+
protocolInfo?.all_checkpoints_periods &&
|
|
601
|
+
protocolInfo?.all_versions?.efv &&
|
|
602
|
+
Object.keys(protocolInfo.all_versions.efv).length > 0
|
|
603
|
+
) {
|
|
604
|
+
const records = Object.fromEntries(
|
|
605
|
+
Object.entries(protocolInfo.all_checkpoints_periods)
|
|
606
|
+
.sort(([a], [b]) => b - a)
|
|
607
|
+
.map(([version, period]) => [version, { period }]),
|
|
608
|
+
);
|
|
609
|
+
Object.entries(protocolInfo.all_versions.efv).forEach(([key, epoch]) => {
|
|
610
|
+
if (records[key]) records[key].epoch = epoch;
|
|
611
|
+
});
|
|
612
|
+
helpers.traceTable(
|
|
613
|
+
Object.entries(records).map(([key, props]) => [
|
|
614
|
+
key === "V1_7" ? "V1_0" : key,
|
|
615
|
+
props?.epoch,
|
|
616
|
+
props?.period,
|
|
617
|
+
]),
|
|
618
|
+
{
|
|
619
|
+
headlines: [":Version", "Activation epoch", ":Block time (secs)"],
|
|
620
|
+
humanizers: [undefined, helpers.commas],
|
|
621
|
+
colors: [
|
|
622
|
+
helpers.colors.mgreen,
|
|
623
|
+
helpers.colors.white,
|
|
624
|
+
helpers.colors.normal,
|
|
625
|
+
],
|
|
626
|
+
},
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
console.info(
|
|
630
|
+
`Current protocol version is ${helpers.colors.mgreen(protocolInfo.current_version)}.`,
|
|
631
|
+
);
|
|
541
632
|
}
|
|
542
633
|
|
|
543
|
-
async function wips
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
634
|
+
async function wips(options = {}) {
|
|
635
|
+
const provider = new Witnet.JsonRpcProvider(options?.provider);
|
|
636
|
+
const wips = await provider.wips();
|
|
637
|
+
if (!options?.pending) {
|
|
638
|
+
// console.info(`> Active WIP upgrades at epoch ${helpers.colors.white(helpers.commas(wips.epoch))}:`)
|
|
639
|
+
const active_upgrades = Object.entries(wips.active_upgrades).map(
|
|
640
|
+
([wip, epoch]) => [wip, epoch],
|
|
641
|
+
);
|
|
642
|
+
helpers.traceTable(active_upgrades, {
|
|
643
|
+
headlines: [":WIP", "Activation epoch"],
|
|
644
|
+
humanizers: [undefined, helpers.commas],
|
|
645
|
+
colors: [helpers.colors.mcyan, helpers.colors.white],
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
if (wips.pending_upgrades || options?.pending) {
|
|
649
|
+
if (wips.pending_upgrades.length === 0) {
|
|
650
|
+
console.info(
|
|
651
|
+
`> No pending WIP upgrades at epoch ${helpers.colors.white(helpers.commas(wips.epoch))}.`,
|
|
652
|
+
);
|
|
653
|
+
} else {
|
|
654
|
+
console.info(
|
|
655
|
+
`Pending WIP upgrades at epoch ${helpers.colors.white(helpers.commas(wips.epoch))}:`,
|
|
656
|
+
);
|
|
657
|
+
const pending_upgrades = wips.pending_upgrades.map((upgrade) => {
|
|
658
|
+
return [
|
|
659
|
+
upgrade.wip,
|
|
660
|
+
upgrade.bit,
|
|
661
|
+
upgrade.init,
|
|
662
|
+
upgrade.votes,
|
|
663
|
+
upgrade.period,
|
|
664
|
+
// upgrade.end,
|
|
665
|
+
];
|
|
666
|
+
});
|
|
667
|
+
helpers.traceTable(pending_upgrades, {
|
|
668
|
+
headlines: [
|
|
669
|
+
":WIP",
|
|
670
|
+
"WIP_BIT",
|
|
671
|
+
"From epoch",
|
|
672
|
+
"Aye votes",
|
|
673
|
+
"Duration",
|
|
674
|
+
// "Deadline",
|
|
675
|
+
],
|
|
676
|
+
humanizers: [
|
|
677
|
+
undefined,
|
|
678
|
+
undefined,
|
|
679
|
+
helpers.commas,
|
|
680
|
+
helpers.commas,
|
|
681
|
+
helpers.commas,
|
|
682
|
+
helpers.commas,
|
|
683
|
+
],
|
|
684
|
+
colors: [
|
|
685
|
+
helpers.colors.lcyan,
|
|
686
|
+
helpers.colors.mcyan,
|
|
687
|
+
helpers.colors.white,
|
|
688
|
+
helpers.colors.myellow,
|
|
689
|
+
helpers.colors.mgreen,
|
|
690
|
+
// helpers.colors.myellow,
|
|
691
|
+
],
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
}
|
|
594
695
|
}
|