@leofcoin/chain 1.4.46 → 1.4.48
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/browser/chain.js +26 -8
- package/exports/browser/{client-31b62450-447815f7.js → client-345f1d43-a7ba559a.js} +1 -1
- package/exports/browser/{index-e407f1a3-a07c9df0.js → index-5ed49438-539fe0fa.js} +1 -1
- package/exports/browser/{messages-2465e07d-6cd91c3d.js → messages-c26f8e97-a3403983.js} +1 -1
- package/exports/browser/{node-browser-5de1f022.js → node-browser-8791470c.js} +13 -7
- package/exports/browser/node-browser.js +1 -1
- package/exports/chain.js +26 -8
- package/exports/typings/chain.d.ts +1 -0
- package/package.json +1 -1
package/exports/browser/chain.js
CHANGED
|
@@ -7860,6 +7860,7 @@ class Contract extends Transaction {
|
|
|
7860
7860
|
globalThis.BigNumber = BigNumber;
|
|
7861
7861
|
// check if browser or local
|
|
7862
7862
|
class Chain extends Contract {
|
|
7863
|
+
version;
|
|
7863
7864
|
#state;
|
|
7864
7865
|
#lastResolved;
|
|
7865
7866
|
#slotTime = 10000;
|
|
@@ -8024,7 +8025,7 @@ class Chain extends Contract {
|
|
|
8024
8025
|
let data = await new globalThis.peernet.protos['peernet-request']({ request: 'lastBlock' });
|
|
8025
8026
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
8026
8027
|
for (const peer of globalThis.peernet?.connections) {
|
|
8027
|
-
if (peer.connected) {
|
|
8028
|
+
if (peer.connected && peer.version === this.version) {
|
|
8028
8029
|
promises.push(async () => {
|
|
8029
8030
|
try {
|
|
8030
8031
|
const result = await peer.request(node.encoded);
|
|
@@ -8035,11 +8036,6 @@ class Chain extends Contract {
|
|
|
8035
8036
|
}
|
|
8036
8037
|
});
|
|
8037
8038
|
}
|
|
8038
|
-
else if (!peer.connected) {
|
|
8039
|
-
globalThis.peernet.removePeer(peer);
|
|
8040
|
-
// todo: remove peer
|
|
8041
|
-
// reinitiate channel?
|
|
8042
|
-
}
|
|
8043
8039
|
}
|
|
8044
8040
|
promises = await this.promiseRequests(promises);
|
|
8045
8041
|
let latest = { index: 0, hash: '0x0', previousHash: '0x0' };
|
|
@@ -8056,7 +8052,7 @@ class Chain extends Contract {
|
|
|
8056
8052
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
8057
8053
|
const peer = promises[0].peer;
|
|
8058
8054
|
latest = { ...message.decoded, hash };
|
|
8059
|
-
if (peer.connected && peer.
|
|
8055
|
+
if (peer.connected && peer.version === this.version) {
|
|
8060
8056
|
let message = await peer.request(node);
|
|
8061
8057
|
message = await new globalThis.peernet.protos['peernet-response'](message);
|
|
8062
8058
|
this.#knownBlocks = message.decoded.response;
|
|
@@ -8064,7 +8060,23 @@ class Chain extends Contract {
|
|
|
8064
8060
|
}
|
|
8065
8061
|
return latest;
|
|
8066
8062
|
}
|
|
8063
|
+
async #clearPool() {
|
|
8064
|
+
await globalThis.transactionPoolStore.clear();
|
|
8065
|
+
}
|
|
8067
8066
|
async #init() {
|
|
8067
|
+
try {
|
|
8068
|
+
const version = await globalThis.chainStore.get('version');
|
|
8069
|
+
this.version = version;
|
|
8070
|
+
// if (version)
|
|
8071
|
+
}
|
|
8072
|
+
catch {
|
|
8073
|
+
this.version = '1.0.0';
|
|
8074
|
+
await globalThis.chainStore.clear();
|
|
8075
|
+
await globalThis.blockStore.clear();
|
|
8076
|
+
await globalThis.transactionPoolStore.clear();
|
|
8077
|
+
await globalThis.chainStore.put('version', this.version);
|
|
8078
|
+
}
|
|
8079
|
+
await this.#clearPool();
|
|
8068
8080
|
// this.node = await new Node()
|
|
8069
8081
|
this.#participants = [];
|
|
8070
8082
|
this.#participating = false;
|
|
@@ -8081,6 +8093,7 @@ class Chain extends Contract {
|
|
|
8081
8093
|
// globalThis.peernet.protos['peernet-response']({response: node.encoded})
|
|
8082
8094
|
// })
|
|
8083
8095
|
await globalThis.peernet.addRequestHandler('transactionPool', this.#transactionPoolHandler.bind(this));
|
|
8096
|
+
await globalThis.peernet.addRequestHandler('version', this.#versionHandler.bind(this));
|
|
8084
8097
|
await globalThis.peernet.addRequestHandler('lastBlock', this.#lastBlockHandler.bind(this));
|
|
8085
8098
|
await globalThis.peernet.addRequestHandler('knownBlocks', this.#knownBlocksHandler.bind(this));
|
|
8086
8099
|
globalThis.peernet.subscribe('add-block', this.#addBlock.bind(this));
|
|
@@ -8190,6 +8203,8 @@ class Chain extends Contract {
|
|
|
8190
8203
|
return response.decoded.response;
|
|
8191
8204
|
}
|
|
8192
8205
|
async #peerConnected(peer) {
|
|
8206
|
+
if (!peer.version || peer.version !== this.version)
|
|
8207
|
+
return;
|
|
8193
8208
|
const lastBlock = await this.#makeRequest(peer, 'lastBlock');
|
|
8194
8209
|
this.#knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
|
|
8195
8210
|
let pool = await this.#makeRequest(peer, 'transactionPool');
|
|
@@ -8214,6 +8229,9 @@ class Chain extends Contract {
|
|
|
8214
8229
|
const pool = await globalThis.transactionPoolStore.keys();
|
|
8215
8230
|
return new globalThis.peernet.protos['peernet-response']({ response: pool });
|
|
8216
8231
|
}
|
|
8232
|
+
async #versionHandler() {
|
|
8233
|
+
return new globalThis.peernet.protos['peernet-response']({ response: { version: this.version } });
|
|
8234
|
+
}
|
|
8217
8235
|
async #lastBlockHandler() {
|
|
8218
8236
|
return new globalThis.peernet.protos['peernet-response']({ response: { hash: this.#lastBlock?.hash, index: this.#lastBlock?.index } });
|
|
8219
8237
|
}
|
|
@@ -8465,7 +8483,7 @@ class Chain extends Contract {
|
|
|
8465
8483
|
for (const validator of Object.keys(validators)) {
|
|
8466
8484
|
if (validators[validator].active) {
|
|
8467
8485
|
const peer = peers[validator];
|
|
8468
|
-
if (peer && peer.connected) {
|
|
8486
|
+
if (peer && peer.connected && peer.version === this.version) {
|
|
8469
8487
|
let data = await new BWRequestMessage();
|
|
8470
8488
|
const node = await globalThis.peernet.prepareMessage(validator, data.encoded);
|
|
8471
8489
|
try {
|
|
@@ -6286,8 +6286,7 @@ const lastFetched = {
|
|
|
6286
6286
|
const fetchedCoordinates = {};
|
|
6287
6287
|
const getAddress = async () => {
|
|
6288
6288
|
const { address } = lastFetched;
|
|
6289
|
-
|
|
6290
|
-
if (now - address.timestamp > 1200000) {
|
|
6289
|
+
if (address) {
|
|
6291
6290
|
address.value = await fetch('https://icanhazip.com/');
|
|
6292
6291
|
address.value = await address.value.text();
|
|
6293
6292
|
address.timestamp = Math.round(new Date().getTime() / 1000);
|
|
@@ -20268,7 +20267,7 @@ class Identity {
|
|
|
20268
20267
|
globalThis.peernet.selectedAccount = new TextDecoder().decode(selected);
|
|
20269
20268
|
}
|
|
20270
20269
|
else {
|
|
20271
|
-
const importee = await import(/* webpackChunkName: "generate-account" */ './index-
|
|
20270
|
+
const importee = await import(/* webpackChunkName: "generate-account" */ './index-5ed49438-539fe0fa.js');
|
|
20272
20271
|
const { identity, accounts } = await importee.default(password, this.network);
|
|
20273
20272
|
await globalThis.accountStore.put('public', JSON.stringify({ walletId: identity.walletId }));
|
|
20274
20273
|
await globalThis.walletStore.put('version', String(1));
|
|
@@ -20333,6 +20332,7 @@ class Peernet {
|
|
|
20333
20332
|
#starting = false;
|
|
20334
20333
|
#started = false;
|
|
20335
20334
|
#connections = {};
|
|
20335
|
+
requestProtos = {};
|
|
20336
20336
|
/**
|
|
20337
20337
|
* @access public
|
|
20338
20338
|
* @param {Object} options
|
|
@@ -20434,12 +20434,11 @@ class Peernet {
|
|
|
20434
20434
|
* @return {Promise} instance of Peernet
|
|
20435
20435
|
*/
|
|
20436
20436
|
async _init(options, password) {
|
|
20437
|
-
this.requestProtos = {};
|
|
20438
20437
|
this.storePrefix = options.storePrefix;
|
|
20439
20438
|
this.root = options.root;
|
|
20440
20439
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
20441
20440
|
// FolderMessageResponse
|
|
20442
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
20441
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-c26f8e97-a3403983.js');
|
|
20443
20442
|
/**
|
|
20444
20443
|
* proto Object containing protos
|
|
20445
20444
|
* @type {Object}
|
|
@@ -20478,6 +20477,13 @@ class Peernet {
|
|
|
20478
20477
|
});
|
|
20479
20478
|
pubsub.subscribe('peer:discovered', async (peer) => {
|
|
20480
20479
|
// console.log(peer);
|
|
20480
|
+
if (this.requestProtos['version']) {
|
|
20481
|
+
let data = await new globalThis.peernet.protos['peernet-request']({ request: 'version' });
|
|
20482
|
+
let node = await globalThis.peernet.prepareMessage(data);
|
|
20483
|
+
let response = await peer.request(node.encoded);
|
|
20484
|
+
response = await new globalThis.peernet.protos['peernet-response'](new Uint8Array(Object.values(response)));
|
|
20485
|
+
peer.version = response.decoded.response.version;
|
|
20486
|
+
}
|
|
20481
20487
|
let data = await new globalThis.peernet.protos['peernet-request']({ request: 'handshake' });
|
|
20482
20488
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
20483
20489
|
let response = await peer.request(node.encoded);
|
|
@@ -20511,7 +20517,7 @@ class Peernet {
|
|
|
20511
20517
|
if (this.#starting || this.#started)
|
|
20512
20518
|
return;
|
|
20513
20519
|
this.#starting = true;
|
|
20514
|
-
const importee = await import('./client-
|
|
20520
|
+
const importee = await import('./client-345f1d43-a7ba559a.js');
|
|
20515
20521
|
/**
|
|
20516
20522
|
* @access public
|
|
20517
20523
|
* @type {PeernetClient}
|
|
@@ -20696,7 +20702,7 @@ class Peernet {
|
|
|
20696
20702
|
throw nothingFoundError(hash);
|
|
20697
20703
|
debug(`found ${providers.size} provider(s) for ${hash}`);
|
|
20698
20704
|
// get closest peer on earth
|
|
20699
|
-
const closestPeer =
|
|
20705
|
+
const closestPeer = Array.from(providers)[0];
|
|
20700
20706
|
// get peer instance by id
|
|
20701
20707
|
if (!closestPeer || !closestPeer.id)
|
|
20702
20708
|
return this.requestData(hash, store?.name || store);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { N as default } from './node-browser-
|
|
1
|
+
export { N as default } from './node-browser-8791470c.js';
|
|
2
2
|
import './contract-f76383c3.js';
|
package/exports/chain.js
CHANGED
|
@@ -455,6 +455,7 @@ class Contract extends Transaction {
|
|
|
455
455
|
globalThis.BigNumber = BigNumber;
|
|
456
456
|
// check if browser or local
|
|
457
457
|
class Chain extends Contract {
|
|
458
|
+
version;
|
|
458
459
|
#state;
|
|
459
460
|
#lastResolved;
|
|
460
461
|
#slotTime = 10000;
|
|
@@ -619,7 +620,7 @@ class Chain extends Contract {
|
|
|
619
620
|
let data = await new globalThis.peernet.protos['peernet-request']({ request: 'lastBlock' });
|
|
620
621
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
621
622
|
for (const peer of globalThis.peernet?.connections) {
|
|
622
|
-
if (peer.connected) {
|
|
623
|
+
if (peer.connected && peer.version === this.version) {
|
|
623
624
|
promises.push(async () => {
|
|
624
625
|
try {
|
|
625
626
|
const result = await peer.request(node.encoded);
|
|
@@ -630,11 +631,6 @@ class Chain extends Contract {
|
|
|
630
631
|
}
|
|
631
632
|
});
|
|
632
633
|
}
|
|
633
|
-
else if (!peer.connected) {
|
|
634
|
-
globalThis.peernet.removePeer(peer);
|
|
635
|
-
// todo: remove peer
|
|
636
|
-
// reinitiate channel?
|
|
637
|
-
}
|
|
638
634
|
}
|
|
639
635
|
promises = await this.promiseRequests(promises);
|
|
640
636
|
let latest = { index: 0, hash: '0x0', previousHash: '0x0' };
|
|
@@ -651,7 +647,7 @@ class Chain extends Contract {
|
|
|
651
647
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
652
648
|
const peer = promises[0].peer;
|
|
653
649
|
latest = { ...message.decoded, hash };
|
|
654
|
-
if (peer.connected && peer.
|
|
650
|
+
if (peer.connected && peer.version === this.version) {
|
|
655
651
|
let message = await peer.request(node);
|
|
656
652
|
message = await new globalThis.peernet.protos['peernet-response'](message);
|
|
657
653
|
this.#knownBlocks = message.decoded.response;
|
|
@@ -659,7 +655,23 @@ class Chain extends Contract {
|
|
|
659
655
|
}
|
|
660
656
|
return latest;
|
|
661
657
|
}
|
|
658
|
+
async #clearPool() {
|
|
659
|
+
await globalThis.transactionPoolStore.clear();
|
|
660
|
+
}
|
|
662
661
|
async #init() {
|
|
662
|
+
try {
|
|
663
|
+
const version = await globalThis.chainStore.get('version');
|
|
664
|
+
this.version = version;
|
|
665
|
+
// if (version)
|
|
666
|
+
}
|
|
667
|
+
catch {
|
|
668
|
+
this.version = '1.0.0';
|
|
669
|
+
await globalThis.chainStore.clear();
|
|
670
|
+
await globalThis.blockStore.clear();
|
|
671
|
+
await globalThis.transactionPoolStore.clear();
|
|
672
|
+
await globalThis.chainStore.put('version', this.version);
|
|
673
|
+
}
|
|
674
|
+
await this.#clearPool();
|
|
663
675
|
// this.node = await new Node()
|
|
664
676
|
this.#participants = [];
|
|
665
677
|
this.#participating = false;
|
|
@@ -676,6 +688,7 @@ class Chain extends Contract {
|
|
|
676
688
|
// globalThis.peernet.protos['peernet-response']({response: node.encoded})
|
|
677
689
|
// })
|
|
678
690
|
await globalThis.peernet.addRequestHandler('transactionPool', this.#transactionPoolHandler.bind(this));
|
|
691
|
+
await globalThis.peernet.addRequestHandler('version', this.#versionHandler.bind(this));
|
|
679
692
|
await globalThis.peernet.addRequestHandler('lastBlock', this.#lastBlockHandler.bind(this));
|
|
680
693
|
await globalThis.peernet.addRequestHandler('knownBlocks', this.#knownBlocksHandler.bind(this));
|
|
681
694
|
globalThis.peernet.subscribe('add-block', this.#addBlock.bind(this));
|
|
@@ -785,6 +798,8 @@ class Chain extends Contract {
|
|
|
785
798
|
return response.decoded.response;
|
|
786
799
|
}
|
|
787
800
|
async #peerConnected(peer) {
|
|
801
|
+
if (!peer.version || peer.version !== this.version)
|
|
802
|
+
return;
|
|
788
803
|
const lastBlock = await this.#makeRequest(peer, 'lastBlock');
|
|
789
804
|
this.#knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
|
|
790
805
|
let pool = await this.#makeRequest(peer, 'transactionPool');
|
|
@@ -809,6 +824,9 @@ class Chain extends Contract {
|
|
|
809
824
|
const pool = await globalThis.transactionPoolStore.keys();
|
|
810
825
|
return new globalThis.peernet.protos['peernet-response']({ response: pool });
|
|
811
826
|
}
|
|
827
|
+
async #versionHandler() {
|
|
828
|
+
return new globalThis.peernet.protos['peernet-response']({ response: { version: this.version } });
|
|
829
|
+
}
|
|
812
830
|
async #lastBlockHandler() {
|
|
813
831
|
return new globalThis.peernet.protos['peernet-response']({ response: { hash: this.#lastBlock?.hash, index: this.#lastBlock?.index } });
|
|
814
832
|
}
|
|
@@ -1060,7 +1078,7 @@ class Chain extends Contract {
|
|
|
1060
1078
|
for (const validator of Object.keys(validators)) {
|
|
1061
1079
|
if (validators[validator].active) {
|
|
1062
1080
|
const peer = peers[validator];
|
|
1063
|
-
if (peer && peer.connected) {
|
|
1081
|
+
if (peer && peer.connected && peer.version === this.version) {
|
|
1064
1082
|
let data = await new BWRequestMessage();
|
|
1065
1083
|
const node = await globalThis.peernet.prepareMessage(validator, data.encoded);
|
|
1066
1084
|
try {
|