@leofcoin/chain 1.10.14 → 1.10.16

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.
Files changed (46) hide show
  1. package/exports/browser/beacon-envelope.js +1 -1
  2. package/exports/browser/beacon-epoch.js +1 -1
  3. package/exports/browser/beacon-lifecycle.js +1 -1
  4. package/exports/browser/beacon-round.js +1 -1
  5. package/exports/browser/beacon-wire.js +2 -2
  6. package/exports/browser/beacon.js +1 -1
  7. package/exports/browser/{browser-DvU1xNFS-BJCQsckZ.js → browser-CCfR9KOM-CvhDZrGu.js} +3 -3
  8. package/exports/browser/{browser-crypto-Yk_e6OHw.js → browser-crypto-CeE-yId5.js} +284 -159
  9. package/exports/browser/chain.js +28 -11
  10. package/exports/browser/{client-DDC8C510-CUi3_3uT.js → client-CAC7RVMf-Dmz_2A_5.js} +4 -4
  11. package/exports/browser/{connection-monitor-BjXI0nBP.js → connection-monitor-Cmv00mwl.js} +5 -4
  12. package/exports/browser/{index-C_RakUAS.js → index-BC-KRBgE.js} +55 -52
  13. package/exports/browser/{index-Bxr5Iztg-AmkW0EHS.js → index-dTQVgkpf-CuHJWO2l.js} +3 -3
  14. package/exports/browser/{messages-DH0tgNM9-CZwrcL37.js → messages-Dw86z0zq-DrPw_nlZ.js} +9 -4
  15. package/exports/browser/{node-browser-CQugE1WZ.js → node-browser-DWSdi-XP.js} +950 -482
  16. package/exports/browser/node-browser.js +3 -3
  17. package/exports/browser/workers/block-worker.js +5 -3
  18. package/exports/browser/workers/machine-worker.js +24 -12
  19. package/exports/{workers/worker-DMCj1e6z-CTYVa2yX.js → browser/workers/worker-BDTWOCzS-COrAszCt.js} +304 -168
  20. package/exports/chain.js +10 -5
  21. package/exports/{constants-CMYKv-Rt.js → constants-Dy9i9S_o.js} +1 -1
  22. package/exports/hash-format-state.js +17 -0
  23. package/exports/node.js +6 -1
  24. package/exports/workers/block-worker.js +5 -3
  25. package/exports/workers/machine-worker.js +24 -12
  26. package/exports/{browser/workers/worker-DMCj1e6z-CTYVa2yX.js → workers/worker-BDTWOCzS-COrAszCt.js} +304 -168
  27. package/package.json +6 -2
  28. package/exports/browser/browser-DvU1xNFS-4-PGqr4c.js +0 -151
  29. package/exports/browser/browser-DvU1xNFS-D9eSzJGJ.js +0 -151
  30. package/exports/browser/browser-crypto-BHeOz9rj.js +0 -8893
  31. package/exports/browser/browser-crypto-CTP3Yk4M.js +0 -8893
  32. package/exports/browser/client-DDC8C510-DbIdQjhy.js +0 -2225
  33. package/exports/browser/client-DDC8C510-ZN_MLo1Y.js +0 -2225
  34. package/exports/browser/connection-monitor-Cf0vNDCA.js +0 -453
  35. package/exports/browser/connection-monitor-pdopeM1I.js +0 -453
  36. package/exports/browser/hkdf-B9AXp_7K.js +0 -222
  37. package/exports/browser/index-Bxr5Iztg-Bdpw_E83.js +0 -40
  38. package/exports/browser/index-Bxr5Iztg-CxXVYm3t.js +0 -40
  39. package/exports/browser/index-CPQ5yvZ2.js +0 -4995
  40. package/exports/browser/index-uFaocBqT.js +0 -4995
  41. package/exports/browser/messages-DH0tgNM9-BRp0gcJh.js +0 -208
  42. package/exports/browser/messages-DH0tgNM9-DkNnpePH.js +0 -208
  43. package/exports/browser/node-browser-1VSuCeew.js +0 -17880
  44. package/exports/browser/node-browser-wDmRaOEo.js +0 -17880
  45. package/exports/browser/sha2-Dkoic3vb.js +0 -602
  46. package/exports/browser/weierstrass-HGdA_prK.js +0 -2156
@@ -1,6 +1,6 @@
1
- import { F as FormatInterface, p as proto, a as proto$1, b as proto$2, T as TransactionMessage, j as jsonStringifyBigInt, c as jsonParseBigInt, C as ContractMessage, d as Codec } from './browser-crypto-CTP3Yk4M.js';
2
- import { B as BlockMessage, L as LastBlockMessage, P as PROTOCOL_VERSION, R as REACHED_ONE_ZERO_ZERO, C as ConnectionMonitor, a as BWMessage, S as StateMessage } from './connection-monitor-pdopeM1I.js';
3
- import { M as MAX_TRANSACTION_BYTES, a as MAX_BLOCK_TRANSACTION_BYTES, b as MAX_BLOCK_TRANSACTIONS, c as MultiWallet, d as createTransactionHash, e as calculateFee, f as createContractMessage, s as signTransaction, r as randombytes, g as distributeTransactionFee, h as supportsTransactionFees, i as supportsMonetaryPolicy, v as validateBlockResourceLimits, j as calculateMonetaryPolicy, k as distributeAmount, l as aggregateValidatorFees, m as MONETARY_POLICY_AUTHORITY, n as contractFactoryMessage, o as nativeTokenMessage, p as validatorsMessage, q as nameServiceMessage, t as parseUnits, u as formatUnits } from './index-C_RakUAS.js';
1
+ import { F as FormatInterface, p as proto, a as proto$1, b as proto$2, T as TransactionMessage, j as jsonStringifyBigInt, c as jsonParseBigInt, C as ContractMessage, d as Codec } from './browser-crypto-CeE-yId5.js';
2
+ import { B as BlockMessage, L as LastBlockMessage, P as PROTOCOL_VERSION, R as REACHED_ONE_ZERO_ZERO, C as ConnectionMonitor, a as BWMessage, S as StateMessage } from './connection-monitor-Cmv00mwl.js';
3
+ import { M as MAX_TRANSACTION_BYTES, a as MAX_BLOCK_TRANSACTION_BYTES, b as MAX_BLOCK_TRANSACTIONS, c as MultiWallet, d as createTransactionHash, e as calculateFee, f as createContractMessage, s as signTransaction, r as randombytes, g as distributeTransactionFee, h as supportsTransactionFees, i as supportsMonetaryPolicy, v as validateBlockResourceLimits, j as calculateMonetaryPolicy, k as distributeAmount, l as aggregateValidatorFees, m as MONETARY_POLICY_AUTHORITY, n as contractFactoryMessage, o as nativeTokenMessage, p as validatorsMessage, q as nameServiceMessage, t as parseUnits, u as formatUnits } from './index-BC-KRBgE.js';
4
4
  import { f as fromBase58 } from './index-CvKt4UDE.js';
5
5
  import { q as quorumThreshold } from './quorum-S_qdgiAY.js';
6
6
  import './sha2-piimb6xL.js';
@@ -77,10 +77,10 @@ class ProposalMessage extends FormatInterface {
77
77
  }
78
78
  }
79
79
 
80
- var contractFactory$1 = "IHNY2GQG2XOULCWHDBW6MDLOPW35MCZC6KT6B6IBHIVWA3QJR56UFM2EVDG";
81
- var nativeToken$1 = "IHNY2GQG5V74HIRRP6YPMZYDZ7YM3SR3MQX63XSYEZIZ7TWHBPDWRWVA2XA";
82
- var nameService$1 = "IHNY2GQGQQKXPAEB2OKLN6BQ2JA2DJBV7BF3BHFKPBFJ6DCEJDDKSPKOZE6";
83
- var validators$1 = "IHNY2GQH432JU2JPBPU5C6QXGLMDFLXBRNL4QA34I5BFJNSO6Y42B3POXJD";
80
+ var contractFactory$1 = "B3OGRUBSBGSASFXWDZUI6AYITY76PYQZS4O5UDWVLSW56X5CSWTQGTGQHUGU";
81
+ var nativeToken$1 = "B3OGRUBSA5V74HIRRP6YPMZYDZ7YM3SR3MQX63XSYEZIZ7TWHBPDWRWVA2XA";
82
+ var nameService$1 = "B3OGRUBSBXX7EPFWHGZQGGSWBMMK7ATOSDICOW5CCFP25OMZBTRMHYGM4KFF";
83
+ var validators$1 = "B3OGRUBSBXLCYRTXG5SRL6XNINEJNAI7CLJBKSRCXY24GMFU5ZY7TXHAGJGT";
84
84
  var addresses$1 = {
85
85
  contractFactory: contractFactory$1,
86
86
  nativeToken: nativeToken$1,
@@ -5176,6 +5176,19 @@ const pruneCanonicalTransactions = async (transactions, latestTransactionHashes,
5176
5176
  return pending;
5177
5177
  };
5178
5178
 
5179
+ const assertHashFormatState = async (chainStore, stateStore) => {
5180
+ if (await chainStore.has("version")) {
5181
+ const version = new TextDecoder().decode(await chainStore.get("version"));
5182
+ const parsed = /^(\d+)\.(\d+)\.\d+$/.exec(version);
5183
+ const current = PROTOCOL_VERSION.split(".");
5184
+ if (parsed && parsed[1] === current[0] && parsed[2] === current[1]) return;
5185
+ throw new Error(`stored protocol ${version} is incompatible with canonical hash protocol ${PROTOCOL_VERSION}; back up existing data and use a separate migrated data root`);
5186
+ }
5187
+ if (await chainStore.has("lastBlock") || await stateStore?.has("lastBlock")) {
5188
+ throw new Error("existing chainstate has no protocol version; explicit canonical hash migration required");
5189
+ }
5190
+ };
5191
+
5179
5192
  const debug = createDebugger("leofcoin/chain");
5180
5193
  class Chain extends VersionControl {
5181
5194
  constructor(config) {
@@ -5223,8 +5236,9 @@ class Chain extends VersionControl {
5223
5236
  this.#committingHeights = /* @__PURE__ */ new Set();
5224
5237
  /** Prevents casting duplicate prevote/precommit per height:round */
5225
5238
  this.#castedVotes = /* @__PURE__ */ new Set();
5226
- this.ready = new Promise((resolve) => {
5239
+ this.ready = new Promise((resolve, reject) => {
5227
5240
  this.readyResolve = resolve;
5241
+ this.readyReject = reject;
5228
5242
  });
5229
5243
  // ── Tendermint consensus handlers ────────────────────────────────────────
5230
5244
  /**
@@ -5408,7 +5422,7 @@ class Chain extends VersionControl {
5408
5422
  const hash = await this.#sendTransaction(message);
5409
5423
  debug(`added ${hash}`);
5410
5424
  };
5411
- this.#init();
5425
+ this.#init().catch((error) => this.readyReject(error));
5412
5426
  }
5413
5427
  #state;
5414
5428
  #slotTime;
@@ -5704,15 +5718,18 @@ class Chain extends VersionControl {
5704
5718
  message: nameServiceMessage
5705
5719
  }
5706
5720
  ];
5707
- await Promise.all(
5721
+ const prepared = await Promise.all(
5708
5722
  contracts.map(async ({ address, message }) => {
5709
5723
  message = await new ContractMessage(Uint8Array.from(message.split(",").map((string) => Number(string))));
5710
- await globalThis.contractStore.put(address, message.encoded);
5724
+ if (await message.hash() !== address) throw new Error(`genesis contract hash mismatch for ${address}`);
5725
+ return { address, encoded: message.encoded };
5711
5726
  })
5712
5727
  );
5728
+ await Promise.all(prepared.map(({ address, encoded }) => globalThis.contractStore.put(address, encoded)));
5713
5729
  console.log("handle native contracts");
5714
5730
  }
5715
5731
  async #init() {
5732
+ await assertHashFormatState(globalThis.chainStore, globalThis.stateStore);
5716
5733
  this.#participants = [];
5717
5734
  this.#participating = false;
5718
5735
  this.#connectionMonitor = new ConnectionMonitor();
@@ -1,6 +1,6 @@
1
- import { i as inflate_1, c as createDebugger, d as deflate_1, L as LittlePubSub } from './node-browser-CQugE1WZ.js';
2
- import './browser-crypto-CTP3Yk4M.js';
3
- import './connection-monitor-pdopeM1I.js';
1
+ import { i as inflate_1, c as createDebugger, d as deflate_1, L as LittlePubSub } from './node-browser-DWSdi-XP.js';
2
+ import './browser-crypto-CeE-yId5.js';
3
+ import './connection-monitor-Cmv00mwl.js';
4
4
  import './index-CvKt4UDE.js';
5
5
  import './sha2-piimb6xL.js';
6
6
 
@@ -233,7 +233,7 @@ class SocketRequestClient {
233
233
  const init = async () => {
234
234
  // @ts-ignore
235
235
  if (!globalThis.WebSocket && !this.#experimentalWebsocket)
236
- globalThis.WebSocket = (await import('./browser-DvU1xNFS-BJCQsckZ.js').then(function (n) { return n.b; })).default.w3cwebsocket;
236
+ globalThis.WebSocket = (await import('./browser-CCfR9KOM-CvhDZrGu.js').then(function (n) { return n.b; })).default.w3cwebsocket;
237
237
  const client = new WebSocket(this.#url, this.#protocol);
238
238
  if (this.#experimentalWebsocket) {
239
239
  client.addEventListener('error', this.onerror);
@@ -1,4 +1,4 @@
1
- import { F as FormatInterface, o as proto$2, q as proto$3, i as index, f as index$1, r as proto$4 } from './browser-crypto-BHeOz9rj.js';
1
+ import { F as FormatInterface, o as proto$2, q as proto$3, r as encodeFrames, s as decodeFrames, t as proto$4 } from './browser-crypto-CeE-yId5.js';
2
2
 
3
3
  class ValidatorMessage extends FormatInterface {
4
4
  get messageName() {
@@ -33,13 +33,13 @@ class BlockMessage extends FormatInterface {
33
33
  }
34
34
  return super.encode({
35
35
  ...decoded,
36
- validators: index(validators)
36
+ validators: encodeFrames(validators)
37
37
  });
38
38
  }
39
39
  decode(encoded) {
40
40
  encoded = encoded || this.encoded;
41
41
  super.decode(encoded);
42
- this.decoded.validators = index$1(this.decoded.validators).map((validator) => new ValidatorMessage(validator).decoded);
42
+ this.decoded.validators = decodeFrames(this.decoded.validators, 0, { canonical: false }).map((validator) => new ValidatorMessage(validator).decoded);
43
43
  return this.decoded;
44
44
  }
45
45
  }
@@ -103,6 +103,7 @@ var networks = {
103
103
  // todo webrtc and bittorent stars
104
104
  },
105
105
  peach: {
106
+ faucet: "https://remote.leofcoin.org/faucet",
106
107
  port: 44444,
107
108
  description: "Main testnet: latest step before merging into main",
108
109
  versionHash: "1",
@@ -117,7 +118,7 @@ var networks$1 = /*#__PURE__*/Object.freeze({
117
118
  default: networks
118
119
  });
119
120
 
120
- const PROTOCOL_VERSION = "0.3.0";
121
+ const PROTOCOL_VERSION = "0.4.0";
121
122
  const REACHED_ONE_ZERO_ZERO = false;
122
123
  const DEFAULT_NODE_OPTIONS = {
123
124
  autoStart: false,