envio 2.31.1-rc.0 → 2.31.1-rc.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/package.json +5 -5
- package/src/ReorgDetection.res +6 -14
- package/src/ReorgDetection.res.js +3 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "envio",
|
|
3
|
-
"version": "v2.31.1-rc.
|
|
3
|
+
"version": "v2.31.1-rc.1",
|
|
4
4
|
"description": "A latency and sync speed optimized, developer friendly blockchain data indexer.",
|
|
5
5
|
"bin": "./bin.js",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://envio.dev",
|
|
27
27
|
"optionalDependencies": {
|
|
28
|
-
"envio-linux-x64": "v2.31.1-rc.
|
|
29
|
-
"envio-linux-arm64": "v2.31.1-rc.
|
|
30
|
-
"envio-darwin-x64": "v2.31.1-rc.
|
|
31
|
-
"envio-darwin-arm64": "v2.31.1-rc.
|
|
28
|
+
"envio-linux-x64": "v2.31.1-rc.1",
|
|
29
|
+
"envio-linux-arm64": "v2.31.1-rc.1",
|
|
30
|
+
"envio-darwin-x64": "v2.31.1-rc.1",
|
|
31
|
+
"envio-darwin-arm64": "v2.31.1-rc.1"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@envio-dev/hypersync-client": "0.6.6",
|
package/src/ReorgDetection.res
CHANGED
|
@@ -188,19 +188,16 @@ Returns the latest block number which matches block number and hashes in the pro
|
|
|
188
188
|
If it doesn't exist in the reorg threshold it returns NotFound
|
|
189
189
|
*/
|
|
190
190
|
let getLatestValidScannedBlock = (
|
|
191
|
-
|
|
191
|
+
reorgDetection: t,
|
|
192
192
|
~blockNumbersAndHashes: array<blockDataWithTimestamp>,
|
|
193
|
-
~currentBlockHeight,
|
|
194
193
|
) => {
|
|
195
194
|
let verifiedDataByBlockNumber = Js.Dict.empty()
|
|
196
195
|
for idx in 0 to blockNumbersAndHashes->Array.length - 1 {
|
|
197
196
|
let blockData = blockNumbersAndHashes->Array.getUnsafe(idx)
|
|
198
197
|
verifiedDataByBlockNumber->Js.Dict.set(blockData.blockNumber->Int.toString, blockData)
|
|
199
198
|
}
|
|
200
|
-
|
|
201
|
-
let dataByBlockNumber = self->getDataByBlockNumberCopyInThreshold(~currentBlockHeight)
|
|
202
199
|
// Js engine automatically orders numeric object keys
|
|
203
|
-
let ascBlockNumberKeys =
|
|
200
|
+
let ascBlockNumberKeys = verifiedDataByBlockNumber->Js.Dict.keys
|
|
204
201
|
|
|
205
202
|
let getPrevScannedBlockNumber = idx =>
|
|
206
203
|
ascBlockNumberKeys
|
|
@@ -216,15 +213,10 @@ let getLatestValidScannedBlock = (
|
|
|
216
213
|
let rec loop = idx => {
|
|
217
214
|
switch ascBlockNumberKeys->Belt.Array.get(idx) {
|
|
218
215
|
| Some(blockNumberKey) =>
|
|
219
|
-
let scannedBlock = dataByBlockNumber->Js.Dict.unsafeGet(blockNumberKey)
|
|
220
|
-
switch verifiedDataByBlockNumber->
|
|
221
|
-
|
|
|
222
|
-
|
|
223
|
-
`Unexpected case. Couldn't find verified hash for block number ${blockNumberKey}`,
|
|
224
|
-
)
|
|
225
|
-
| Some(verifiedBlockData) if verifiedBlockData.blockHash === scannedBlock.blockHash =>
|
|
226
|
-
loop(idx + 1)
|
|
227
|
-
| Some(_) => getPrevScannedBlockNumber(idx)
|
|
216
|
+
let scannedBlock = reorgDetection.dataByBlockNumber->Js.Dict.unsafeGet(blockNumberKey)
|
|
217
|
+
switch verifiedDataByBlockNumber->Js.Dict.unsafeGet(blockNumberKey) {
|
|
218
|
+
| verifiedBlockData if verifiedBlockData.blockHash === scannedBlock.blockHash => loop(idx + 1)
|
|
219
|
+
| _ => getPrevScannedBlockNumber(idx)
|
|
228
220
|
}
|
|
229
221
|
| None => getPrevScannedBlockNumber(idx)
|
|
230
222
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
5
4
|
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
6
5
|
var Belt_Option = require("rescript/lib/js/belt_Option.js");
|
|
7
6
|
|
|
@@ -108,14 +107,13 @@ function registerReorgGuard(self, reorgGuard, currentBlockHeight) {
|
|
|
108
107
|
}
|
|
109
108
|
}
|
|
110
109
|
|
|
111
|
-
function getLatestValidScannedBlock(
|
|
110
|
+
function getLatestValidScannedBlock(reorgDetection, blockNumbersAndHashes) {
|
|
112
111
|
var verifiedDataByBlockNumber = {};
|
|
113
112
|
for(var idx = 0 ,idx_finish = blockNumbersAndHashes.length; idx < idx_finish; ++idx){
|
|
114
113
|
var blockData = blockNumbersAndHashes[idx];
|
|
115
114
|
verifiedDataByBlockNumber[String(blockData.blockNumber)] = blockData;
|
|
116
115
|
}
|
|
117
|
-
var
|
|
118
|
-
var ascBlockNumberKeys = Object.keys(dataByBlockNumber);
|
|
116
|
+
var ascBlockNumberKeys = Object.keys(verifiedDataByBlockNumber);
|
|
119
117
|
var getPrevScannedBlockNumber = function (idx) {
|
|
120
118
|
return Belt_Option.flatMap(Belt_Array.get(ascBlockNumberKeys, idx - 1 | 0), (function (key) {
|
|
121
119
|
var v = verifiedDataByBlockNumber[key];
|
|
@@ -132,11 +130,8 @@ function getLatestValidScannedBlock(self, blockNumbersAndHashes, currentBlockHei
|
|
|
132
130
|
if (blockNumberKey === undefined) {
|
|
133
131
|
return getPrevScannedBlockNumber(idx$1);
|
|
134
132
|
}
|
|
135
|
-
var scannedBlock = dataByBlockNumber[blockNumberKey];
|
|
133
|
+
var scannedBlock = reorgDetection.dataByBlockNumber[blockNumberKey];
|
|
136
134
|
var verifiedBlockData = verifiedDataByBlockNumber[blockNumberKey];
|
|
137
|
-
if (verifiedBlockData === undefined) {
|
|
138
|
-
return Js_exn.raiseError("Unexpected case. Couldn't find verified hash for block number " + blockNumberKey);
|
|
139
|
-
}
|
|
140
135
|
if (verifiedBlockData.blockHash !== scannedBlock.blockHash) {
|
|
141
136
|
return getPrevScannedBlockNumber(idx$1);
|
|
142
137
|
}
|