@leofcoin/chain 1.4.26 → 1.4.28
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/exports/chain.js +14 -8
- package/package.json +1 -1
package/exports/chain.js
CHANGED
|
@@ -590,12 +590,17 @@ class Chain extends Contract {
|
|
|
590
590
|
promises = await Promise.allSettled(promises);
|
|
591
591
|
promises = promises.filter(({ status }) => status === 'fulfilled');
|
|
592
592
|
clearTimeout(timeout);
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
593
|
+
if (promises.length > 0) {
|
|
594
|
+
promises = promises.map(async ({ value }) => {
|
|
595
|
+
const node = await new peernet.protos['peernet-response'](value.result);
|
|
596
|
+
return { value: node.decoded.response, peer: value.peer };
|
|
597
|
+
});
|
|
598
|
+
promises = await Promise.all(promises);
|
|
599
|
+
resolve(promises);
|
|
600
|
+
}
|
|
601
|
+
else {
|
|
602
|
+
resolve([]);
|
|
603
|
+
}
|
|
599
604
|
});
|
|
600
605
|
}
|
|
601
606
|
getLatestBlock() {
|
|
@@ -622,7 +627,8 @@ class Chain extends Contract {
|
|
|
622
627
|
promises = await this.promiseRequests(promises);
|
|
623
628
|
let latest = { index: 0, hash: '0x0', previousHash: '0x0' };
|
|
624
629
|
promises = promises.sort((a, b) => b.index - a.index);
|
|
625
|
-
|
|
630
|
+
if (promises.length > 0)
|
|
631
|
+
latest = promises[0].value;
|
|
626
632
|
if (latest.hash && latest.hash !== '0x0') {
|
|
627
633
|
let message = await peernet.get(latest.hash, 'block');
|
|
628
634
|
message = await new BlockMessage(message);
|
|
@@ -632,12 +638,12 @@ class Chain extends Contract {
|
|
|
632
638
|
let data = await new peernet.protos['peernet-request']({ request: 'knownBlocks' });
|
|
633
639
|
let node = await peernet.prepareMessage(data);
|
|
634
640
|
const peer = promises[0].peer;
|
|
641
|
+
latest = { ...message.decoded, hash };
|
|
635
642
|
if (peer.connected && peer.readyState === 'open' && peer.peerId !== this.id) {
|
|
636
643
|
let message = await peer.request(node);
|
|
637
644
|
message = await new peernet.protos['peernet-response'](message);
|
|
638
645
|
this.#knownBlocks = message.decoded.response;
|
|
639
646
|
}
|
|
640
|
-
latest = { ...message.decoded, hash };
|
|
641
647
|
}
|
|
642
648
|
return latest;
|
|
643
649
|
}
|