@witnet/solidity 3.0.4 → 3.0.5

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.
Files changed (222) hide show
  1. package/LICENSE +2 -2
  2. package/build/contracts/Bech32.json +1 -1
  3. package/build/contracts/Clonable.json +1 -1
  4. package/build/contracts/Context.json +1 -1
  5. package/build/contracts/Create3.json +1 -1
  6. package/build/contracts/ERC165.json +1 -1
  7. package/build/contracts/Escrowable.json +1 -1
  8. package/build/contracts/IChainlinkAggregatorV3.json +1 -1
  9. package/build/contracts/IERC165.json +1 -1
  10. package/build/contracts/IERC20.json +1 -1
  11. package/build/contracts/IERC2362.json +1 -1
  12. package/build/contracts/IPythChainlinkAggregatorV3.json +1 -1
  13. package/build/contracts/IWitAppliance.json +1 -1
  14. package/build/contracts/IWitOracle.json +1 -1
  15. package/build/contracts/IWitOracleAppliance.json +1 -1
  16. package/build/contracts/IWitOracleConsumer.json +1 -1
  17. package/build/contracts/IWitOracleConsumerLegacy.json +1 -1
  18. package/build/contracts/IWitOracleLegacy.json +1 -1
  19. package/build/contracts/IWitOracleQueriable.json +1 -1
  20. package/build/contracts/IWitOracleQueriableConsumer.json +1 -1
  21. package/build/contracts/IWitOracleQueriableEvents.json +1 -1
  22. package/build/contracts/IWitOracleQueriableExperimental.json +1 -1
  23. package/build/contracts/IWitOracleQueriableTrustableReporter.json +1 -1
  24. package/build/contracts/IWitOracleQueriableTrustlessReporter.json +1 -1
  25. package/build/contracts/IWitOracleRadonRegistry.json +1 -1
  26. package/build/contracts/IWitOracleRadonRegistryEvents.json +1 -1
  27. package/build/contracts/IWitOracleRadonRegistryLegacy.json +1 -1
  28. package/build/contracts/IWitOracleRadonRequestFactory.json +1 -1
  29. package/build/contracts/IWitOracleRadonRequestModal.json +1 -1
  30. package/build/contracts/IWitOracleRadonRequestTemplate.json +1 -1
  31. package/build/contracts/IWitOracleRequest.json +1 -1
  32. package/build/contracts/IWitOracleRequestFactory.json +1 -1
  33. package/build/contracts/IWitOracleRequestFactoryEvents.json +1 -1
  34. package/build/contracts/IWitOracleRequestTemplate.json +1 -1
  35. package/build/contracts/IWitOracleTrustableAdmin.json +1 -1
  36. package/build/contracts/IWitOracleTrustless.json +1 -1
  37. package/build/contracts/IWitPriceFeeds.json +1 -1
  38. package/build/contracts/IWitPriceFeedsAdmin.json +1 -1
  39. package/build/contracts/IWitPriceFeedsConsumer.json +1 -1
  40. package/build/contracts/IWitPriceFeedsEvents.json +1 -1
  41. package/build/contracts/IWitPriceFeedsLegacy.json +1 -1
  42. package/build/contracts/IWitPriceFeedsLegacyAdmin.json +1 -1
  43. package/build/contracts/IWitPriceFeedsLegacySolver.json +1 -1
  44. package/build/contracts/IWitPriceFeedsLegacySolverFactory.json +1 -1
  45. package/build/contracts/IWitPriceFeedsTypes.json +1 -1
  46. package/build/contracts/IWitPyth.json +1 -1
  47. package/build/contracts/IWitPythChainlinkAggregator.json +1 -1
  48. package/build/contracts/IWitPythErrors.json +1 -1
  49. package/build/contracts/IWitPythEvents.json +1 -1
  50. package/build/contracts/IWitPythReporter.json +1 -1
  51. package/build/contracts/IWitRandomness.json +1 -1
  52. package/build/contracts/IWitRandomnessAdmin.json +1 -1
  53. package/build/contracts/IWitRandomnessAdminV2.json +1 -1
  54. package/build/contracts/IWitRandomnessConsumer.json +1 -1
  55. package/build/contracts/IWitRandomnessEvents.json +1 -1
  56. package/build/contracts/IWitRandomnessLegacy.json +1 -1
  57. package/build/contracts/IWitRandomnessTypes.json +1 -1
  58. package/build/contracts/Initializable.json +1 -1
  59. package/build/contracts/OVM_GasPriceOracle.json +1 -1
  60. package/build/contracts/Ownable.json +1 -1
  61. package/build/contracts/Ownable2Step.json +1 -1
  62. package/build/contracts/Payable.json +1 -1
  63. package/build/contracts/Proxiable.json +1 -1
  64. package/build/contracts/ReentrancyGuard.json +1 -1
  65. package/build/contracts/Secp256k1.json +1 -1
  66. package/build/contracts/Slices.json +1 -1
  67. package/build/contracts/TestBech32.json +1 -1
  68. package/build/contracts/TestSecp256k1.json +1 -1
  69. package/build/contracts/Upgradeable.json +1 -1
  70. package/build/contracts/UsingWitOracle.json +1 -1
  71. package/build/contracts/UsingWitPriceFeeds.json +1 -1
  72. package/build/contracts/UsingWitRandomness.json +1 -1
  73. package/build/contracts/WitOracle.json +2 -13
  74. package/build/contracts/WitOracleBasePushOnly.json +1 -1
  75. package/build/contracts/WitOracleBasePushOnlyTrustable.json +1 -1
  76. package/build/contracts/WitOracleBasePushOnlyTrustless.json +1 -1
  77. package/build/contracts/WitOracleBasePushOnlyUpgradable.json +1 -1
  78. package/build/contracts/WitOracleBaseQueriable.json +1 -1
  79. package/build/contracts/WitOracleBaseQueriableTrustable.json +1 -1
  80. package/build/contracts/WitOracleBaseQueriableTrustless.json +1 -1
  81. package/build/contracts/WitOracleBaseQueriableUpgradable.json +1 -1
  82. package/build/contracts/WitOracleDataLib.json +2 -254
  83. package/build/contracts/WitOraclePushOnly.json +1 -1
  84. package/build/contracts/WitOracleRadonEncodingLib.json +2 -13
  85. package/build/contracts/WitOracleRadonRegistry.json +2 -13
  86. package/build/contracts/WitOracleRadonRegistryBase.json +1 -1
  87. package/build/contracts/WitOracleRadonRegistryBaseUpgradable.json +1 -1
  88. package/build/contracts/WitOracleRadonRegistryData.json +1 -1
  89. package/build/contracts/WitOracleRadonRegistryDefaultV21.json +1 -1
  90. package/build/contracts/WitOracleRadonRegistryUpgradableDefault.json +2 -17
  91. package/build/contracts/WitOracleRadonRegistryUpgradableNoSha256.json +1 -1
  92. package/build/contracts/WitOracleRadonRegistryUpgradableZkSync.json +1 -1
  93. package/build/contracts/WitOracleRadonRequestFactory.json +2 -13
  94. package/build/contracts/WitOracleRadonRequestFactoryBase.json +1 -1
  95. package/build/contracts/WitOracleRadonRequestFactoryBaseUpgradable.json +1 -1
  96. package/build/contracts/WitOracleRadonRequestFactoryModals.json +2 -13
  97. package/build/contracts/WitOracleRadonRequestFactoryModalsDefault.json +2 -13
  98. package/build/contracts/WitOracleRadonRequestFactoryTemplates.json +2 -13
  99. package/build/contracts/WitOracleRadonRequestFactoryTemplatesDefault.json +2 -13
  100. package/build/contracts/WitOracleRadonRequestFactoryUpgradableConfluxCore.json +1 -1
  101. package/build/contracts/WitOracleRadonRequestFactoryUpgradableDefault.json +2 -13
  102. package/build/contracts/WitOracleResultStatusLib.json +2 -14
  103. package/build/contracts/WitOracleTrustableDefault.json +2 -259
  104. package/build/contracts/WitOracleTrustableExperimental.json +1 -1
  105. package/build/contracts/WitOracleTrustableObscuro.json +1 -1
  106. package/build/contracts/WitOracleTrustableOvm2.json +1 -1
  107. package/build/contracts/WitOracleTrustablePushOnly.json +1 -1
  108. package/build/contracts/WitOracleTrustableReef.json +1 -1
  109. package/build/contracts/WitOracleTrustableZkSync.json +1 -1
  110. package/build/contracts/WitOracleTrustlessDataLib.json +1 -1
  111. package/build/contracts/WitOracleTrustlessDefaultV22.json +1 -1
  112. package/build/contracts/WitOracleTrustlessUpgradableDefault.json +1 -1
  113. package/build/contracts/WitPriceFeeds.json +2 -13
  114. package/build/contracts/WitPriceFeedsDataLib.json +2 -14
  115. package/build/contracts/WitPriceFeedsLegacy.json +2 -8
  116. package/build/contracts/WitPriceFeedsLegacyDataLib.json +2 -84
  117. package/build/contracts/WitPriceFeedsLegacyUpgradable.json +1 -1
  118. package/build/contracts/WitPriceFeedsLegacyUpgradableBypass.json +2 -80
  119. package/build/contracts/WitPriceFeedsSolverBase.json +1 -1
  120. package/build/contracts/WitPriceFeedsV3.json +1 -1
  121. package/build/contracts/WitPriceFeedsV3Upgradable.json +2 -17
  122. package/build/contracts/WitPythChainlinkAggregator.json +1 -1
  123. package/build/contracts/WitRandomness.json +2 -13
  124. package/build/contracts/WitRandomnessLegacy.json +1 -1
  125. package/build/contracts/WitRandomnessV3.json +2 -13
  126. package/build/contracts/WitRngConsumer.json +1 -1
  127. package/build/contracts/Witnet.json +1 -1
  128. package/build/contracts/WitnetBuffer.json +1 -1
  129. package/build/contracts/WitnetCBOR.json +1 -1
  130. package/build/contracts/WitnetDeployer.json +2 -13
  131. package/build/contracts/WitnetDeployerConfluxCore.json +1 -1
  132. package/build/contracts/WitnetDeployerDeferred.json +1 -1
  133. package/build/contracts/WitnetDeployerMeter.json +1 -1
  134. package/build/contracts/WitnetProxy.json +2 -9
  135. package/build/contracts/WitnetUpgradableBase.json +1 -1
  136. package/{migrations → dist/migrations}/addresses.json +1 -25
  137. package/{migrations → dist/migrations}/constructorArgs.json +1 -6
  138. package/dist/migrations/settings/artifacts.d.ts +95 -0
  139. package/dist/migrations/settings/artifacts.d.ts.map +1 -0
  140. package/dist/migrations/settings/artifacts.js +80 -0
  141. package/dist/migrations/settings/networks.d.ts +593 -0
  142. package/dist/migrations/settings/networks.d.ts.map +1 -0
  143. package/dist/migrations/settings/networks.js +593 -0
  144. package/dist/src/bin/helpers.cjs +350 -0
  145. package/dist/src/bin/helpers.d.cts +76 -0
  146. package/dist/src/bin/helpers.d.cts.map +1 -0
  147. package/dist/src/index.d.ts +6 -0
  148. package/dist/src/index.d.ts.map +1 -0
  149. package/dist/src/index.js +33 -0
  150. package/dist/src/lib/types.d.ts +99 -0
  151. package/dist/src/lib/types.d.ts.map +1 -0
  152. package/dist/src/lib/types.js +18 -0
  153. package/dist/src/lib/utils.d.ts +22 -0
  154. package/dist/src/lib/utils.d.ts.map +1 -0
  155. package/dist/src/lib/utils.js +267 -0
  156. package/dist/src/lib/wrappers/ContractWrapper.d.ts +47 -0
  157. package/dist/src/lib/wrappers/ContractWrapper.d.ts.map +1 -0
  158. package/dist/src/lib/wrappers/ContractWrapper.js +81 -0
  159. package/dist/src/lib/wrappers/WitAppliance.d.ts +7 -0
  160. package/dist/src/lib/wrappers/WitAppliance.d.ts.map +1 -0
  161. package/dist/src/lib/wrappers/WitAppliance.js +17 -0
  162. package/dist/src/lib/wrappers/WitArtifact.d.ts +6 -0
  163. package/dist/src/lib/wrappers/WitArtifact.d.ts.map +1 -0
  164. package/dist/src/lib/wrappers/WitArtifact.js +16 -0
  165. package/dist/src/lib/wrappers/WitOracle.d.ts +105 -0
  166. package/dist/src/lib/wrappers/WitOracle.d.ts.map +1 -0
  167. package/dist/src/lib/wrappers/WitOracle.js +217 -0
  168. package/dist/src/lib/wrappers/WitOracleConsumer.d.ts +16 -0
  169. package/dist/src/lib/wrappers/WitOracleConsumer.d.ts.map +1 -0
  170. package/dist/src/lib/wrappers/WitOracleConsumer.js +30 -0
  171. package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts +102 -0
  172. package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts.map +1 -0
  173. package/dist/src/lib/wrappers/WitOracleRadonRegistry.js +140 -0
  174. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts +81 -0
  175. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts.map +1 -0
  176. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.js +257 -0
  177. package/dist/src/lib/wrappers/WitPriceFeeds.d.ts +91 -0
  178. package/dist/src/lib/wrappers/WitPriceFeeds.d.ts.map +1 -0
  179. package/dist/src/lib/wrappers/WitPriceFeeds.js +356 -0
  180. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts +14 -0
  181. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts.map +1 -0
  182. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.js +64 -0
  183. package/dist/src/lib/wrappers/WitRandomness.d.ts +55 -0
  184. package/dist/src/lib/wrappers/WitRandomness.d.ts.map +1 -0
  185. package/dist/src/lib/wrappers/WitRandomness.js +165 -0
  186. package/dist/src/lib/wrappers.d.ts +8 -0
  187. package/dist/src/lib/wrappers.d.ts.map +1 -0
  188. package/dist/src/lib/wrappers.js +8 -0
  189. package/package.json +78 -54
  190. package/scripts/clean.cjs +21 -0
  191. package/scripts/eth-create2.cjs +38 -0
  192. package/scripts/eth-create3.cjs +45 -0
  193. package/scripts/postinstall.cjs +9 -0
  194. package/scripts/prepare.cjs +27 -0
  195. package/scripts/vanity2gen.cjs +121 -0
  196. package/scripts/vanity3gen.cjs +84 -0
  197. package/scripts/verify-proxies.cjs +50 -0
  198. package/scripts/verify-truffle.cjs +69 -0
  199. package/scripts/verify.js +95 -0
  200. package/scripts/wof-acls.js +17 -0
  201. package/src/bin/bots/bridge.cjs +0 -0
  202. package/src/bin/bots/randomizer.cjs +290 -0
  203. package/src/bin/bots/reporter.cjs +0 -0
  204. package/src/bin/cli/accounts.cjs +47 -0
  205. package/src/bin/cli/assets.cjs +466 -0
  206. package/src/bin/cli/framework.cjs +100 -0
  207. package/src/bin/cli/gateway.cjs +26 -0
  208. package/src/bin/cli/networks.cjs +63 -0
  209. package/src/bin/cli/priceFeeds.cjs +170 -0
  210. package/src/bin/cli/queries.cjs +217 -0
  211. package/src/bin/cli/randomness.cjs +367 -0
  212. package/src/bin/cli/reports.cjs +272 -0
  213. package/src/bin/cli/wizard.cjs +352 -0
  214. package/src/bin/helpers.cjs +388 -0
  215. package/src/bin/index.cjs +407 -0
  216. package/settings/artifacts.js +0 -71
  217. package/settings/index.js +0 -49
  218. package/settings/networks.js +0 -593
  219. package/settings/solidity.js +0 -11
  220. package/settings/specs.js +0 -102
  221. package/src/index.js +0 -96
  222. package/src/utils.js +0 -305
@@ -0,0 +1,170 @@
1
+ const helpers = require("../helpers.cjs")
2
+ const moment = require("moment")
3
+ const prompt = require("inquirer").createPromptModule()
4
+
5
+ const { Witnet } = require("@witnet/sdk")
6
+ const { utils, WitOracle } = require("../../../dist/src")
7
+
8
+ module.exports = async (options = {}, args = []) => {
9
+ ;[args] = helpers.deleteExtraFlags(args)
10
+
11
+ const witOracle = await WitOracle.fromJsonRpcUrl(
12
+ `http://127.0.0.1:${options?.port || 8545}`,
13
+ options?.signer,
14
+ )
15
+
16
+ const { network, provider } = witOracle
17
+ helpers.traceHeader(`${network.toUpperCase()}`, helpers.colors.lcyan)
18
+ const framework = await helpers.prompter(
19
+ utils.fetchWitOracleFramework(provider),
20
+ )
21
+
22
+ let target = args[0]
23
+ let chosen = false
24
+ if (!target) {
25
+ const artifacts = Object.entries(framework).filter(([key]) =>
26
+ key.startsWith("WitPriceFeeds"),
27
+ )
28
+ if (artifacts.length === 1) {
29
+ target = artifacts[0][1].address
30
+ } else {
31
+ const selection = await prompt([
32
+ {
33
+ choices: artifacts.map(([, artifact]) => artifact.address),
34
+ message: "Price feeds contract:",
35
+ name: "target",
36
+ type: "rawlist",
37
+ },
38
+ ])
39
+ target = selection.target
40
+ chosen = true
41
+ }
42
+ }
43
+
44
+ let pfs
45
+ try {
46
+ pfs = await witOracle.getWitPriceFeedsAt(target)
47
+ } catch {
48
+ pfs = await witOracle.getWitPriceFeedsLegacyAt(target)
49
+ }
50
+ const artifact = await pfs.getEvmImplClass()
51
+ if (artifact.indexOf("Legacy") >= 0) {
52
+ pfs = await witOracle.getWitPriceFeedsLegacyAt(target)
53
+ }
54
+ const version = await pfs.getEvmImplVersion()
55
+ const maxWidth = Math.max(21, artifact.length + 2)
56
+ console.info(
57
+ `> ${helpers.colors.lwhite(artifact)}:${" ".repeat(
58
+ maxWidth - artifact.length,
59
+ )}${chosen ? "" : `${helpers.colors.lblue(target)} `}${helpers.colors.blue(
60
+ `[ ${version} ]`,
61
+ )}`,
62
+ )
63
+
64
+ let priceFeeds = (await pfs.lookupPriceFeeds()).sort((a, b) =>
65
+ a.symbol.localeCompare(b.symbol),
66
+ )
67
+
68
+ if (!options["trace-back"]) {
69
+ const registry = await witOracle.getWitOracleRadonRegistry()
70
+ priceFeeds = await helpers.prompter(
71
+ Promise.all(
72
+ priceFeeds.map(async (pf) => {
73
+ let providers = []
74
+ if (pf?.oracle && pf.oracle.class === "Witnet") {
75
+ const bytecode = await registry.lookupRadonRequestBytecode(
76
+ pf.oracle.sources,
77
+ )
78
+ const request = Witnet.Radon.RadonRequest.fromBytecode(bytecode)
79
+ try {
80
+ const dryrun = JSON.parse(await request.execDryRun(true))
81
+ // const result = dryrun.tally.result
82
+ providers = request.sources
83
+ .map((source, index) => {
84
+ let authority = source.authority.split(".").slice(-2)[0]
85
+ authority = authority[0].toUpperCase() + authority.slice(1)
86
+ return dryrun.retrieve[index].result?.RadonInteger
87
+ ? helpers.colors.mmagenta(authority)
88
+ : helpers.colors.red(authority)
89
+ })
90
+ .sort((a, b) =>
91
+ helpers.colorstrip(a).localeCompare(helpers.colorstrip(b)),
92
+ )
93
+ } catch (_err) {
94
+ providers = request.sources
95
+ .map((source) => {
96
+ const authority = source.authority.split(".").slice(-2)[0]
97
+ return helpers.colors.magenta(
98
+ authority[0].toUpperCase() + authority.slice(1),
99
+ )
100
+ })
101
+ .sort((a, b) =>
102
+ helpers.colorstrip(a).localeCompare(helpers.colorstrip(b)),
103
+ )
104
+ }
105
+ } else if (pf?.oracle) {
106
+ providers = [
107
+ helpers.colors.mblue(
108
+ `${pf.oracle.class}:${
109
+ pf.oracle.sources !==
110
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
111
+ ? `${pf.oracle.target}:${pf.oracle.sources.slice(2, 10)}`
112
+ : pf.oracle.target
113
+ }`,
114
+ ),
115
+ ]
116
+ } else if (pf?.mapper) {
117
+ providers = pf.mapper.deps.map((dep) =>
118
+ helpers.colors.gray(dep.split(".").pop().toLowerCase()),
119
+ )
120
+ }
121
+ return {
122
+ ...pf,
123
+ providers,
124
+ }
125
+ }),
126
+ ).catch((err) => console.error(err)),
127
+ )
128
+ }
129
+
130
+ if (priceFeeds?.length > 0) {
131
+ helpers.traceTable(
132
+ priceFeeds.map((pf) => [
133
+ pf.id4,
134
+ pf.symbol,
135
+ pf.lastUpdate.timestamp ? pf.lastUpdate.price.toFixed(6) : "",
136
+ pf.lastUpdate.timestamp
137
+ ? moment.unix(Number(pf.lastUpdate.timestamp)).fromNow()
138
+ : "",
139
+ ...(options["trace-back"]
140
+ ? [
141
+ pf.lastUpdate.trail !==
142
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
143
+ ? helpers.colors.mmagenta(pf.lastUpdate.trail.slice(2))
144
+ : "",
145
+ ]
146
+ : [pf?.providers?.join(" ")]),
147
+ ]),
148
+ {
149
+ colors: [
150
+ helpers.colors.lwhite,
151
+ helpers.colors.mgreen,
152
+ helpers.colors.mcyan,
153
+ helpers.colors.yellow,
154
+ undefined,
155
+ ],
156
+ headlines: [
157
+ ":ID4",
158
+ ":CAPTION",
159
+ "LAST PRICE:",
160
+ "FRESHNESS:",
161
+ options["trace-back"]
162
+ ? `DATA WITNESSING TRAIL ON ${helpers.colors.lwhite(`WITNET ${utils.isEvmNetworkMainnet(network) ? "MAINNET" : "TESTNET"}`)}`
163
+ : ":DATA PROVIDERS",
164
+ ],
165
+ },
166
+ )
167
+ } else {
168
+ console.info("> No price feeds currently supported.")
169
+ }
170
+ }
@@ -0,0 +1,217 @@
1
+ const helpers = require("../helpers.cjs")
2
+ const moment = require("moment")
3
+
4
+ const { utils, WitOracle } = require("../../../dist/src")
5
+
6
+ const { DEFAULT_BATCH_SIZE, DEFAULT_LIMIT, DEFAULT_SINCE } = helpers
7
+
8
+ module.exports = async (options = {}, args = []) => {
9
+ ;[args] = helpers.deleteExtraFlags(args)
10
+
11
+ const { limit, offset, since } = options
12
+
13
+ const witOracle = await WitOracle.fromJsonRpcUrl(
14
+ `http://127.0.0.1:${options?.port || 8545}`,
15
+ options?.signer,
16
+ )
17
+
18
+ const { address, network, provider } = witOracle
19
+ helpers.traceHeader(`${network.toUpperCase()}`, helpers.colors.lcyan)
20
+
21
+ const symbol = utils.getEvmNetworkSymbol(network)
22
+ const artifact = await witOracle.getEvmImplClass()
23
+ const version = await witOracle.getEvmImplVersion()
24
+ console.info(
25
+ `> ${helpers.colors.lwhite(artifact)}: ${helpers.colors.lblue(address)} ${helpers.colors.blue(`[ v${version} ]`)}`,
26
+ )
27
+
28
+ // determine current block number
29
+ const blockNumber = await provider.getBlockNumber()
30
+
31
+ // determine fromBlock
32
+ let fromBlock
33
+ if (since === undefined || since < 0) {
34
+ fromBlock = BigInt(blockNumber) + BigInt(since ?? DEFAULT_SINCE)
35
+ } else {
36
+ fromBlock = BigInt(since ?? 0n)
37
+ }
38
+
39
+ // fetch events since specified block
40
+ let logs = await witOracle.filterWitOracleQueryEvents({
41
+ fromBlock,
42
+ where: {
43
+ evmRequester: options["filter-requester"],
44
+ queryRadHash: options["filter-radHash"],
45
+ },
46
+ })
47
+
48
+ // filter out unspecified query ids
49
+ if (args && args.length > 0) {
50
+ logs = logs.filter((log) => args.includes(log.queryId.toString()))
51
+ }
52
+
53
+ // fetch query statuses
54
+ const queryIds = logs.map((log) => log.queryId)
55
+ const queryStatuses = await helpers.prompter(
56
+ Promise.all(
57
+ [...helpers.chunks(queryIds, DEFAULT_BATCH_SIZE)].map((ids) =>
58
+ witOracle.getQueryStatuses(ids),
59
+ ),
60
+ ).then((ids) => ids.flat()),
61
+ )
62
+ logs = logs.map((log, index) => ({
63
+ ...log,
64
+ queryStatus: queryStatuses[index],
65
+ }))
66
+
67
+ // filter out deleted queries, if no otherwise specified
68
+ if (!options.voids) {
69
+ logs = logs.filter((log) => log.queryStatus !== "Void")
70
+ }
71
+
72
+ // count logs before last filter
73
+ const totalLogs = logs.length
74
+
75
+ // apply limit/offset filter
76
+ logs =
77
+ !since || BigInt(since) < 0n
78
+ ? logs
79
+ .slice(offset || 0)
80
+ .slice(0, limit || DEFAULT_LIMIT) // oldest first
81
+ : logs
82
+ .reverse()
83
+ .slice(offset || 0)
84
+ .slice(0, limit || DEFAULT_LIMIT) // latest first
85
+
86
+ if (options["trace-back"]) {
87
+ logs = await Promise.all(
88
+ logs.map(async (log) => {
89
+ const response = await witOracle.getQueryResponse(log.queryId)
90
+ return {
91
+ ...log,
92
+ resultDrTxHash: response.resultDrTxHash,
93
+ }
94
+ }),
95
+ ).catch((err) => console.error(err))
96
+ } else {
97
+ logs = await helpers.prompter(
98
+ Promise.all(
99
+ logs.map(async (log) => {
100
+ const receipt = await provider.getTransactionReceipt(
101
+ log.evmTransactionHash,
102
+ )
103
+ const transaction = await provider.getTransaction(
104
+ log.evmTransactionHash,
105
+ )
106
+ const evmTransactionCost =
107
+ transaction.value + receipt.gasPrice * receipt.gasUsed
108
+ const resultStatus =
109
+ log.queryStatus !== "Void"
110
+ ? await witOracle.getQueryResultStatusDescription(log.queryId)
111
+ : ""
112
+ let resultTTR = ""
113
+ if (["Finalized", "Reported", "Disputed"].includes(log.queryStatus)) {
114
+ const query = await witOracle.getQuery(log.queryId)
115
+ const evmCheckpointBlock = await provider.getBlock(query.checkpoint)
116
+ const evmQueryBlock = await provider.getBlock(log.evmBlockNumber)
117
+ resultTTR = moment
118
+ .duration(
119
+ moment
120
+ .unix(evmCheckpointBlock.timestamp)
121
+ .diff(moment.unix(evmQueryBlock.timestamp)),
122
+ )
123
+ .humanize()
124
+ }
125
+ return {
126
+ ...log,
127
+ evmTransactionCost,
128
+ resultStatus,
129
+ resultTTR,
130
+ }
131
+ }),
132
+ ).catch((err) => console.error(err)),
133
+ )
134
+ }
135
+
136
+ if (logs?.length > 0) {
137
+ if (!options["trace-back"]) {
138
+ helpers.traceTable(
139
+ logs.map((log) => [
140
+ log.evmBlockNumber,
141
+ log.queryId,
142
+ `${log.evmRequester?.slice(0, 8)}..${log.evmRequester?.slice(-4)}`,
143
+ Number(Number(log?.evmTransactionCost || 0n) / 10 ** 18).toFixed(7),
144
+ `${log.queryRadHash?.slice(2).slice(0, 6)}..${log.queryRadHash.slice(-5)}`,
145
+ `${log.queryParams.witnesses}`,
146
+ // `${Witnet.Coins.fromPedros(BigInt(log.queryParams.unitaryReward) * (3n + log.queryParams.witnesses)).toString(2)}`,
147
+ log.resultTTR,
148
+ log.queryStatus,
149
+ log.resultStatus,
150
+ ]),
151
+ {
152
+ colors: [
153
+ helpers.colors.white,
154
+ helpers.colors.lwhite,
155
+ helpers.colors.mblue,
156
+ helpers.colors.gray,
157
+ helpers.colors.mgreen,
158
+ helpers.colors.green,
159
+ // helpers.colors.green,
160
+ helpers.colors.cyan,
161
+ helpers.colors.mcyan,
162
+ helpers.colors.magenta,
163
+ ],
164
+ headlines: [
165
+ "EVM BLOCK:",
166
+ "QUERY ID:",
167
+ "EVM REQUESTER",
168
+ `$${helpers.colors.lwhite(symbol)} COST`,
169
+ "radon request",
170
+ "witnesses",
171
+ // "witnet fees",
172
+ "T.T.R.:",
173
+ ":QUERY STATUS",
174
+ ":RESULT STATUS",
175
+ ],
176
+ humanizers: [helpers.commas, helpers.commas],
177
+ },
178
+ )
179
+ } else {
180
+ // traceBack is ON
181
+ helpers.traceTable(
182
+ logs.map((log) => [
183
+ log.evmBlockNumber,
184
+ log.queryId,
185
+ log.evmTransactionHash,
186
+ log.resultDrTxHash.slice(2),
187
+ ]),
188
+ {
189
+ colors: [
190
+ helpers.colors.white,
191
+ helpers.colors.lwhite,
192
+ helpers.colors.gray,
193
+ helpers.colors.mmagenta,
194
+ ],
195
+ headlines: [
196
+ "EVM BLOCK:",
197
+ "QUERY ID:",
198
+ "EVM DATA QUERYING TRANSACTION HASH",
199
+ `QUERY'S RESOLUTION ACT ON ${helpers.colors.lwhite(`WITNET ${utils.isEvmNetworkMainnet(network) ? "MAINNET" : "TESTNET"}`)}`,
200
+ ],
201
+ humanizers: [helpers.commas, helpers.commas],
202
+ },
203
+ )
204
+ }
205
+ console.info(
206
+ `^ Listed ${logs.length} out of ${totalLogs} queries${
207
+ fromBlock
208
+ ? ` since block #${helpers.commas(fromBlock)}.`
209
+ : ` up until current block #${helpers.colors.lwhite(helpers.commas(blockNumber))}.`
210
+ }`,
211
+ )
212
+ } else {
213
+ console.info(
214
+ `^ No oracle queries${fromBlock ? ` since block #${helpers.colors.lwhite(helpers.commas(fromBlock))}.` : "."}`,
215
+ )
216
+ }
217
+ }