@leofcoin/chain 1.4.47 → 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 +22 -8
- package/exports/browser/{client-bdab491d-5e9615c3.js → client-345f1d43-a7ba559a.js} +1 -1
- package/exports/browser/{index-116df6d1-d144f080.js → index-5ed49438-539fe0fa.js} +1 -1
- package/exports/browser/{messages-fab7583b-10480899.js → messages-c26f8e97-a3403983.js} +1 -1
- package/exports/browser/{node-browser-b64e2ed2.js → node-browser-8791470c.js} +12 -5
- package/exports/browser/node-browser.js +1 -1
- package/exports/chain.js +22 -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;
|
|
@@ -8068,6 +8064,18 @@ class Chain extends Contract {
|
|
|
8068
8064
|
await globalThis.transactionPoolStore.clear();
|
|
8069
8065
|
}
|
|
8070
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
|
+
}
|
|
8071
8079
|
await this.#clearPool();
|
|
8072
8080
|
// this.node = await new Node()
|
|
8073
8081
|
this.#participants = [];
|
|
@@ -8085,6 +8093,7 @@ class Chain extends Contract {
|
|
|
8085
8093
|
// globalThis.peernet.protos['peernet-response']({response: node.encoded})
|
|
8086
8094
|
// })
|
|
8087
8095
|
await globalThis.peernet.addRequestHandler('transactionPool', this.#transactionPoolHandler.bind(this));
|
|
8096
|
+
await globalThis.peernet.addRequestHandler('version', this.#versionHandler.bind(this));
|
|
8088
8097
|
await globalThis.peernet.addRequestHandler('lastBlock', this.#lastBlockHandler.bind(this));
|
|
8089
8098
|
await globalThis.peernet.addRequestHandler('knownBlocks', this.#knownBlocksHandler.bind(this));
|
|
8090
8099
|
globalThis.peernet.subscribe('add-block', this.#addBlock.bind(this));
|
|
@@ -8194,6 +8203,8 @@ class Chain extends Contract {
|
|
|
8194
8203
|
return response.decoded.response;
|
|
8195
8204
|
}
|
|
8196
8205
|
async #peerConnected(peer) {
|
|
8206
|
+
if (!peer.version || peer.version !== this.version)
|
|
8207
|
+
return;
|
|
8197
8208
|
const lastBlock = await this.#makeRequest(peer, 'lastBlock');
|
|
8198
8209
|
this.#knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
|
|
8199
8210
|
let pool = await this.#makeRequest(peer, 'transactionPool');
|
|
@@ -8218,6 +8229,9 @@ class Chain extends Contract {
|
|
|
8218
8229
|
const pool = await globalThis.transactionPoolStore.keys();
|
|
8219
8230
|
return new globalThis.peernet.protos['peernet-response']({ response: pool });
|
|
8220
8231
|
}
|
|
8232
|
+
async #versionHandler() {
|
|
8233
|
+
return new globalThis.peernet.protos['peernet-response']({ response: { version: this.version } });
|
|
8234
|
+
}
|
|
8221
8235
|
async #lastBlockHandler() {
|
|
8222
8236
|
return new globalThis.peernet.protos['peernet-response']({ response: { hash: this.#lastBlock?.hash, index: this.#lastBlock?.index } });
|
|
8223
8237
|
}
|
|
@@ -8469,7 +8483,7 @@ class Chain extends Contract {
|
|
|
8469
8483
|
for (const validator of Object.keys(validators)) {
|
|
8470
8484
|
if (validators[validator].active) {
|
|
8471
8485
|
const peer = peers[validator];
|
|
8472
|
-
if (peer && peer.connected) {
|
|
8486
|
+
if (peer && peer.connected && peer.version === this.version) {
|
|
8473
8487
|
let data = await new BWRequestMessage();
|
|
8474
8488
|
const node = await globalThis.peernet.prepareMessage(validator, data.encoded);
|
|
8475
8489
|
try {
|
|
@@ -20267,7 +20267,7 @@ class Identity {
|
|
|
20267
20267
|
globalThis.peernet.selectedAccount = new TextDecoder().decode(selected);
|
|
20268
20268
|
}
|
|
20269
20269
|
else {
|
|
20270
|
-
const importee = await import(/* webpackChunkName: "generate-account" */ './index-
|
|
20270
|
+
const importee = await import(/* webpackChunkName: "generate-account" */ './index-5ed49438-539fe0fa.js');
|
|
20271
20271
|
const { identity, accounts } = await importee.default(password, this.network);
|
|
20272
20272
|
await globalThis.accountStore.put('public', JSON.stringify({ walletId: identity.walletId }));
|
|
20273
20273
|
await globalThis.walletStore.put('version', String(1));
|
|
@@ -20332,6 +20332,7 @@ class Peernet {
|
|
|
20332
20332
|
#starting = false;
|
|
20333
20333
|
#started = false;
|
|
20334
20334
|
#connections = {};
|
|
20335
|
+
requestProtos = {};
|
|
20335
20336
|
/**
|
|
20336
20337
|
* @access public
|
|
20337
20338
|
* @param {Object} options
|
|
@@ -20433,12 +20434,11 @@ class Peernet {
|
|
|
20433
20434
|
* @return {Promise} instance of Peernet
|
|
20434
20435
|
*/
|
|
20435
20436
|
async _init(options, password) {
|
|
20436
|
-
this.requestProtos = {};
|
|
20437
20437
|
this.storePrefix = options.storePrefix;
|
|
20438
20438
|
this.root = options.root;
|
|
20439
20439
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
20440
20440
|
// FolderMessageResponse
|
|
20441
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
20441
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-c26f8e97-a3403983.js');
|
|
20442
20442
|
/**
|
|
20443
20443
|
* proto Object containing protos
|
|
20444
20444
|
* @type {Object}
|
|
@@ -20477,6 +20477,13 @@ class Peernet {
|
|
|
20477
20477
|
});
|
|
20478
20478
|
pubsub.subscribe('peer:discovered', async (peer) => {
|
|
20479
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
|
+
}
|
|
20480
20487
|
let data = await new globalThis.peernet.protos['peernet-request']({ request: 'handshake' });
|
|
20481
20488
|
let node = await globalThis.peernet.prepareMessage(data);
|
|
20482
20489
|
let response = await peer.request(node.encoded);
|
|
@@ -20510,7 +20517,7 @@ class Peernet {
|
|
|
20510
20517
|
if (this.#starting || this.#started)
|
|
20511
20518
|
return;
|
|
20512
20519
|
this.#starting = true;
|
|
20513
|
-
const importee = await import('./client-
|
|
20520
|
+
const importee = await import('./client-345f1d43-a7ba559a.js');
|
|
20514
20521
|
/**
|
|
20515
20522
|
* @access public
|
|
20516
20523
|
* @type {PeernetClient}
|
|
@@ -20695,7 +20702,7 @@ class Peernet {
|
|
|
20695
20702
|
throw nothingFoundError(hash);
|
|
20696
20703
|
debug(`found ${providers.size} provider(s) for ${hash}`);
|
|
20697
20704
|
// get closest peer on earth
|
|
20698
|
-
const closestPeer =
|
|
20705
|
+
const closestPeer = Array.from(providers)[0];
|
|
20699
20706
|
// get peer instance by id
|
|
20700
20707
|
if (!closestPeer || !closestPeer.id)
|
|
20701
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;
|
|
@@ -663,6 +659,18 @@ class Chain extends Contract {
|
|
|
663
659
|
await globalThis.transactionPoolStore.clear();
|
|
664
660
|
}
|
|
665
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
|
+
}
|
|
666
674
|
await this.#clearPool();
|
|
667
675
|
// this.node = await new Node()
|
|
668
676
|
this.#participants = [];
|
|
@@ -680,6 +688,7 @@ class Chain extends Contract {
|
|
|
680
688
|
// globalThis.peernet.protos['peernet-response']({response: node.encoded})
|
|
681
689
|
// })
|
|
682
690
|
await globalThis.peernet.addRequestHandler('transactionPool', this.#transactionPoolHandler.bind(this));
|
|
691
|
+
await globalThis.peernet.addRequestHandler('version', this.#versionHandler.bind(this));
|
|
683
692
|
await globalThis.peernet.addRequestHandler('lastBlock', this.#lastBlockHandler.bind(this));
|
|
684
693
|
await globalThis.peernet.addRequestHandler('knownBlocks', this.#knownBlocksHandler.bind(this));
|
|
685
694
|
globalThis.peernet.subscribe('add-block', this.#addBlock.bind(this));
|
|
@@ -789,6 +798,8 @@ class Chain extends Contract {
|
|
|
789
798
|
return response.decoded.response;
|
|
790
799
|
}
|
|
791
800
|
async #peerConnected(peer) {
|
|
801
|
+
if (!peer.version || peer.version !== this.version)
|
|
802
|
+
return;
|
|
792
803
|
const lastBlock = await this.#makeRequest(peer, 'lastBlock');
|
|
793
804
|
this.#knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
|
|
794
805
|
let pool = await this.#makeRequest(peer, 'transactionPool');
|
|
@@ -813,6 +824,9 @@ class Chain extends Contract {
|
|
|
813
824
|
const pool = await globalThis.transactionPoolStore.keys();
|
|
814
825
|
return new globalThis.peernet.protos['peernet-response']({ response: pool });
|
|
815
826
|
}
|
|
827
|
+
async #versionHandler() {
|
|
828
|
+
return new globalThis.peernet.protos['peernet-response']({ response: { version: this.version } });
|
|
829
|
+
}
|
|
816
830
|
async #lastBlockHandler() {
|
|
817
831
|
return new globalThis.peernet.protos['peernet-response']({ response: { hash: this.#lastBlock?.hash, index: this.#lastBlock?.index } });
|
|
818
832
|
}
|
|
@@ -1064,7 +1078,7 @@ class Chain extends Contract {
|
|
|
1064
1078
|
for (const validator of Object.keys(validators)) {
|
|
1065
1079
|
if (validators[validator].active) {
|
|
1066
1080
|
const peer = peers[validator];
|
|
1067
|
-
if (peer && peer.connected) {
|
|
1081
|
+
if (peer && peer.connected && peer.version === this.version) {
|
|
1068
1082
|
let data = await new BWRequestMessage();
|
|
1069
1083
|
const node = await globalThis.peernet.prepareMessage(validator, data.encoded);
|
|
1070
1084
|
try {
|