@leofcoin/chain 1.8.7 → 1.8.8

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.
@@ -1,4 +1,4 @@
1
- import { t as toBase58, T as TransactionMessage, C as ContractMessage, R as RawTransactionMessage, B as BlockMessage, a as BWMessage, b as BWRequestMessage } from './index-DUfUgiQY.js';
1
+ import { t as toBase58, T as TransactionMessage, C as ContractMessage, R as RawTransactionMessage, B as BlockMessage, c as currentVersion, a as BWMessage, b as BWRequestMessage } from './flags-wmeqg14g.js';
2
2
  import { log } from 'console';
3
3
  import { log as log$1 } from 'node:console';
4
4
 
@@ -5693,8 +5693,6 @@ class State extends Contract {
5693
5693
  }
5694
5694
  }
5695
5695
 
5696
- const currentVersion = '0.1.1';
5697
-
5698
5696
  class VersionControl extends State {
5699
5697
  constructor(config) {
5700
5698
  super(config);
@@ -5709,8 +5707,10 @@ class VersionControl extends State {
5709
5707
  super.init && (await super.init());
5710
5708
  try {
5711
5709
  const version = await globalThis.chainStore.get('version');
5712
- this.version = new TextDecoder().decode(version);
5713
- console.log(this.version, this.#currentVersion);
5710
+ const storedVersion = new TextDecoder().decode(version);
5711
+ console.log(storedVersion, this.#currentVersion);
5712
+ // Always use current version, update store if different
5713
+ this.version = this.#currentVersion;
5714
5714
  /**
5715
5715
  * protocol version control!
5716
5716
  * Note that before v1.2.2 everything gets deleted because of big changes,
@@ -5726,12 +5726,13 @@ class VersionControl extends State {
5726
5726
  // if so, clear all data
5727
5727
  // once v1.0.0 is reached this will not run and we can remove this check once every node is above v1.0.0
5728
5728
  console.warn('the reachedZeroZero flag is set to false, this will clear all data on every start if above v1.0.0');
5729
- if (semver.compare(this.version, '1.0.0') === 1 && !this.#reachedOneZeroZero) {
5729
+ if (semver.compare(storedVersion, '1.0.0') === 1 && !this.#reachedOneZeroZero) {
5730
5730
  console.warn('clearing all data because we are below v1.0.0');
5731
5731
  await this.clearAll();
5732
5732
  }
5733
- if (semver.compare(this.#currentVersion, this.version) === 1) {
5734
- await this.#setCurrentVersion();
5733
+ if (storedVersion !== this.#currentVersion) {
5734
+ console.log(`Version mismatch: stored=${storedVersion}, current=${this.#currentVersion}. Updating...`);
5735
+ await globalThis.chainStore.put('version', this.version);
5735
5736
  }
5736
5737
  // if (version)
5737
5738
  }
@@ -5765,7 +5766,13 @@ class ConnectionMonitor {
5765
5766
  return Object.values(globalThis.peernet?.connections || {}).filter((peer) => peer.connected);
5766
5767
  }
5767
5768
  get compatiblePeers() {
5768
- return this.connectedPeers.filter((peer) => peer.version === this.#version);
5769
+ return this.connectedPeers.filter((peer) => {
5770
+ if (!peer.version || !this.#version)
5771
+ return false;
5772
+ const [peerMajor, peerMinor] = peer.version.split('.');
5773
+ const [localMajor, localMinor] = this.#version.split('.');
5774
+ return peerMajor === localMajor && peerMinor === localMinor;
5775
+ });
5769
5776
  }
5770
5777
  get disconnectedPeers() {
5771
5778
  return Object.values(globalThis.peernet?.connections || {}).filter((peer) => !peer.connected);
@@ -5983,7 +5990,7 @@ class ConnectionMonitor {
5983
5990
  const networkName = globalThis.peernet?.network;
5984
5991
  if (networkName && typeof networkName === 'string') {
5985
5992
  // Try to import network config
5986
- const { default: networks } = await import('./networks-BdMfU1ag.js');
5993
+ const { default: networks } = await import('./networks-F1y7bMrB.js');
5987
5994
  const [mainKey, subKey] = networkName.split(':');
5988
5995
  const networkConfig = networks?.[mainKey]?.[subKey];
5989
5996
  if (networkConfig?.stars && Array.isArray(networkConfig.stars)) {
@@ -6291,11 +6298,17 @@ class Chain extends VersionControl {
6291
6298
  // todo handle version changes
6292
6299
  // for now just do nothing if version doesn't match
6293
6300
  debug(`peer connected with version ${peer.version}`);
6294
- if (peer.version !== this.version) {
6301
+ const compatibleVersion = () => {
6302
+ if (!peer.version || !this.version)
6303
+ return false;
6304
+ const [peerMajor, peerMinor] = peer.version.split('.');
6305
+ const [localMajor, localMinor] = this.version.split('.');
6306
+ return peerMajor === localMajor && peerMinor === localMinor;
6307
+ };
6308
+ if (!compatibleVersion()) {
6295
6309
  debug(`versions don't match`);
6296
- }
6297
- if (!peer.version || peer.version !== this.version)
6298
6310
  return;
6311
+ }
6299
6312
  const lastBlock = await this.#makeRequest(peer, 'lastBlock');
6300
6313
  const localBlock = await this.lastBlock;
6301
6314
  if (lastBlock.hash === '0x0')
@@ -1,7 +1,7 @@
1
- import { c as createDebugger, i as inflate_1, d as deflate_1, L as LittlePubSub } from './node-browser-CRH9Pg7V.js';
1
+ import { c as createDebugger, i as inflate_1, d as deflate_1, L as LittlePubSub } from './node-browser-A1KVCavN.js';
2
2
  import './identity-nIyW_Xm8-BU8xakCv.js';
3
- import './index-DUfUgiQY.js';
4
- import './networks-BdMfU1ag.js';
3
+ import './flags-wmeqg14g.js';
4
+ import './networks-F1y7bMrB.js';
5
5
 
6
6
  class Api {
7
7
  _pubsub;
@@ -8211,4 +8211,6 @@ class RawTransactionMessage extends FormatInterface {
8211
8211
  }
8212
8212
  }
8213
8213
 
8214
- export { BlockMessage as B, ContractMessage as C, FormatInterface as F, RawTransactionMessage as R, TransactionMessage as T, ValidatorMessage as V, BWMessage as a, BWRequestMessage as b, toBase58 as t };
8214
+ const currentVersion = '0.1.1';
8215
+
8216
+ export { BlockMessage as B, ContractMessage as C, FormatInterface as F, RawTransactionMessage as R, TransactionMessage as T, ValidatorMessage as V, BWMessage as a, BWRequestMessage as b, currentVersion as c, toBase58 as t };
@@ -1,7 +1,7 @@
1
- import { F as FormatInterface } from './node-browser-CRH9Pg7V.js';
1
+ import { F as FormatInterface } from './node-browser-A1KVCavN.js';
2
2
  import './identity-nIyW_Xm8-BU8xakCv.js';
3
- import './index-DUfUgiQY.js';
4
- import './networks-BdMfU1ag.js';
3
+ import './flags-wmeqg14g.js';
4
+ import './networks-F1y7bMrB.js';
5
5
 
6
6
  var proto$b = {
7
7
  data: new Uint8Array(),
@@ -1,6 +1,6 @@
1
1
  // todo only one star needed, no need to have one for each network
2
- // unless we change anything to the star protocoll
3
- // version diferences should be handled in the chain
2
+ // unless we change anything to the star protocol
3
+ // version differences should be handled in the chain
4
4
  // maybe a good way to handle could be in p2pt-swarm
5
5
  var networks = {
6
6
  leofcoin: {
@@ -1,6 +1,6 @@
1
1
  import { b as base$1, I as Identity, i as index$4, a as index$5, c as base58$1, d as index$3, e as index$2 } from './identity-nIyW_Xm8-BU8xakCv.js';
2
- import { F as FormatInterface$2, T as TransactionMessage, C as ContractMessage, B as BlockMessage, a as BWMessage, b as BWRequestMessage, V as ValidatorMessage } from './index-DUfUgiQY.js';
3
- import networks from './networks-BdMfU1ag.js';
2
+ import { F as FormatInterface$2, T as TransactionMessage, C as ContractMessage, B as BlockMessage, a as BWMessage, b as BWRequestMessage, V as ValidatorMessage, c as currentVersion } from './flags-wmeqg14g.js';
3
+ import networks from './networks-F1y7bMrB.js';
4
4
 
5
5
  var proto = {
6
6
  lastblock: Object(),
@@ -8485,7 +8485,7 @@ class Peernet {
8485
8485
  this.root = options.root;
8486
8486
  const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
8487
8487
  // FolderMessageResponse
8488
- } = await import(/* webpackChunkName: "messages" */ './messages-C507MMRx-DCBd2pRi.js');
8488
+ } = await import(/* webpackChunkName: "messages" */ './messages-C507MMRx-ypXoH7gN.js');
8489
8489
  /**
8490
8490
  * proto Object containing protos
8491
8491
  * @type {Object}
@@ -8579,7 +8579,7 @@ class Peernet {
8579
8579
  if (this.#starting || this.#started)
8580
8580
  return;
8581
8581
  this.#starting = true;
8582
- const importee = await import('./client-CWkdUcxK-Cki9t2ip.js');
8582
+ const importee = await import('./client-CWkdUcxK-BEmg-tGc.js');
8583
8583
  /**
8584
8584
  * @access public
8585
8585
  * @type {PeernetClient}
@@ -9102,7 +9102,7 @@ globalThis.Peernet = Peernet;
9102
9102
  const DEFAULT_NODE_OPTIONS = {
9103
9103
  network: 'leofcoin:peach',
9104
9104
  networkVersion: 'peach',
9105
- version: '0.1.0',
9105
+ version: currentVersion,
9106
9106
  stars: networks.leofcoin.peach.stars
9107
9107
  };
9108
9108
 
@@ -1,4 +1,4 @@
1
- export { N as default } from './node-browser-CRH9Pg7V.js';
1
+ export { N as default } from './node-browser-A1KVCavN.js';
2
2
  import './identity-nIyW_Xm8-BU8xakCv.js';
3
- import './index-DUfUgiQY.js';
4
- import './networks-BdMfU1ag.js';
3
+ import './flags-wmeqg14g.js';
4
+ import './networks-F1y7bMrB.js';
package/exports/chain.js CHANGED
@@ -8,6 +8,7 @@ import { randombytes } from '@leofcoin/crypto';
8
8
  import EasyWorker from '@vandeurenglenn/easy-worker';
9
9
  import { ContractDeploymentError, ExecutionError, isResolveError, ResolveError, isExecutionError } from '@leofcoin/errors';
10
10
  import { log } from 'console';
11
+ import { c as currentVersion } from './flags-DKVwPDLE.js';
11
12
  import { log as log$1 } from 'node:console';
12
13
 
13
14
  const limit = 1800;
@@ -1831,8 +1832,6 @@ class State extends Contract {
1831
1832
  }
1832
1833
  }
1833
1834
 
1834
- const currentVersion = '0.1.1';
1835
-
1836
1835
  class VersionControl extends State {
1837
1836
  constructor(config) {
1838
1837
  super(config);
@@ -1847,8 +1846,10 @@ class VersionControl extends State {
1847
1846
  super.init && (await super.init());
1848
1847
  try {
1849
1848
  const version = await globalThis.chainStore.get('version');
1850
- this.version = new TextDecoder().decode(version);
1851
- console.log(this.version, this.#currentVersion);
1849
+ const storedVersion = new TextDecoder().decode(version);
1850
+ console.log(storedVersion, this.#currentVersion);
1851
+ // Always use current version, update store if different
1852
+ this.version = this.#currentVersion;
1852
1853
  /**
1853
1854
  * protocol version control!
1854
1855
  * Note that before v1.2.2 everything gets deleted because of big changes,
@@ -1864,12 +1865,13 @@ class VersionControl extends State {
1864
1865
  // if so, clear all data
1865
1866
  // once v1.0.0 is reached this will not run and we can remove this check once every node is above v1.0.0
1866
1867
  console.warn('the reachedZeroZero flag is set to false, this will clear all data on every start if above v1.0.0');
1867
- if (semver.compare(this.version, '1.0.0') === 1 && !this.#reachedOneZeroZero) {
1868
+ if (semver.compare(storedVersion, '1.0.0') === 1 && !this.#reachedOneZeroZero) {
1868
1869
  console.warn('clearing all data because we are below v1.0.0');
1869
1870
  await this.clearAll();
1870
1871
  }
1871
- if (semver.compare(this.#currentVersion, this.version) === 1) {
1872
- await this.#setCurrentVersion();
1872
+ if (storedVersion !== this.#currentVersion) {
1873
+ console.log(`Version mismatch: stored=${storedVersion}, current=${this.#currentVersion}. Updating...`);
1874
+ await globalThis.chainStore.put('version', this.version);
1873
1875
  }
1874
1876
  // if (version)
1875
1877
  }
@@ -1903,7 +1905,13 @@ class ConnectionMonitor {
1903
1905
  return Object.values(globalThis.peernet?.connections || {}).filter((peer) => peer.connected);
1904
1906
  }
1905
1907
  get compatiblePeers() {
1906
- return this.connectedPeers.filter((peer) => peer.version === this.#version);
1908
+ return this.connectedPeers.filter((peer) => {
1909
+ if (!peer.version || !this.#version)
1910
+ return false;
1911
+ const [peerMajor, peerMinor] = peer.version.split('.');
1912
+ const [localMajor, localMinor] = this.#version.split('.');
1913
+ return peerMajor === localMajor && peerMinor === localMinor;
1914
+ });
1907
1915
  }
1908
1916
  get disconnectedPeers() {
1909
1917
  return Object.values(globalThis.peernet?.connections || {}).filter((peer) => !peer.connected);
@@ -2429,11 +2437,17 @@ class Chain extends VersionControl {
2429
2437
  // todo handle version changes
2430
2438
  // for now just do nothing if version doesn't match
2431
2439
  debug(`peer connected with version ${peer.version}`);
2432
- if (peer.version !== this.version) {
2440
+ const compatibleVersion = () => {
2441
+ if (!peer.version || !this.version)
2442
+ return false;
2443
+ const [peerMajor, peerMinor] = peer.version.split('.');
2444
+ const [localMajor, localMinor] = this.version.split('.');
2445
+ return peerMajor === localMajor && peerMinor === localMinor;
2446
+ };
2447
+ if (!compatibleVersion()) {
2433
2448
  debug(`versions don't match`);
2434
- }
2435
- if (!peer.version || peer.version !== this.version)
2436
2449
  return;
2450
+ }
2437
2451
  const lastBlock = await this.#makeRequest(peer, 'lastBlock');
2438
2452
  const localBlock = await this.lastBlock;
2439
2453
  if (lastBlock.hash === '0x0')
@@ -0,0 +1,3 @@
1
+ const currentVersion = '0.1.1';
2
+
3
+ export { currentVersion as c };
package/exports/node.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import Peernet from '@leofcoin/peernet';
2
2
  import nodeConfig from '@leofcoin/lib/node-config';
3
3
  import networks from '@leofcoin/networks';
4
+ import { c as currentVersion } from './flags-DKVwPDLE.js';
4
5
 
5
6
  const DEFAULT_NODE_OPTIONS = {
6
7
  network: 'leofcoin:peach',
7
8
  networkVersion: 'peach',
8
- version: '0.1.0',
9
+ version: currentVersion,
9
10
  stars: networks.leofcoin.peach.stars
10
11
  };
11
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/chain",
3
- "version": "1.8.7",
3
+ "version": "1.8.8",
4
4
  "description": "Official javascript implementation",
5
5
  "private": false,
6
6
  "exports": {