genlayer-js 0.18.9 → 0.18.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
1
 
2
2
 
3
+ ## 0.18.10 (2026-02-07)
4
+
3
5
  ## 0.18.9 (2025-12-12)
4
6
 
5
7
  ## 0.18.8 (2025-12-05)
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkSC2VXHL3cjs = require('../chunk-SC2VXHL3.cjs');
5
+ var _chunkPPBY3UXFcjs = require('../chunk-PPBY3UXF.cjs');
6
6
  require('../chunk-75ZPJI57.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
- exports.localnet = _chunkSC2VXHL3cjs.localnet; exports.studionet = _chunkSC2VXHL3cjs.studionet; exports.testnetAsimov = _chunkSC2VXHL3cjs.testnetAsimov;
11
+ exports.localnet = _chunkPPBY3UXFcjs.localnet; exports.studionet = _chunkPPBY3UXFcjs.studionet; exports.testnetAsimov = _chunkPPBY3UXFcjs.testnetAsimov;
@@ -2,7 +2,7 @@ import {
2
2
  localnet,
3
3
  studionet,
4
4
  testnetAsimov
5
- } from "../chunk-V3MYVW3P.js";
5
+ } from "../chunk-WZNF2WK4.js";
6
6
  import "../chunk-MLKGABMK.js";
7
7
  export {
8
8
  localnet,
@@ -8704,14 +8704,15 @@ var STAKING_ABI = [
8704
8704
  ];
8705
8705
 
8706
8706
  // src/chains/testnetAsimov.ts
8707
- var TESTNET_JSON_RPC_URL = "https://genlayer-testnet.rpc.caldera.xyz/http";
8707
+ var TESTNET_JSON_RPC_URL = "https://zksync-os-testnet-genlayer.zksync.dev";
8708
+ var TESTNET_WS_URL = "wss://zksync-os-testnet-alpha.zksync.dev/ws";
8708
8709
  var STAKING_CONTRACT = {
8709
- address: "0x03f410748EBdb4026a6b8299E9B6603A273709D1",
8710
+ address: "0x63Fa5E0bb10fb6fA98F44726C5518223F767687A",
8710
8711
  abi: STAKING_ABI
8711
8712
  };
8712
8713
  var EXPLORER_URL2 = "https://explorer-asimov.genlayer.com/";
8713
8714
  var CONSENSUS_MAIN_CONTRACT3 = {
8714
- address: "0x67fd4aC71530FB220E0B7F90668BAF977B88fF07",
8715
+ address: "0x6CAFF6769d70824745AD895663409DC70aB5B28E",
8715
8716
  abi: [
8716
8717
  {
8717
8718
  inputs: [],
@@ -10100,7 +10101,7 @@ var CONSENSUS_MAIN_CONTRACT3 = {
10100
10101
  bytecode: ""
10101
10102
  };
10102
10103
  var CONSENSUS_DATA_CONTRACT3 = {
10103
- address: "0xB6E1316E57d47d82FDcEa5002028a554754EF243",
10104
+ address: "0x0D9d1d74d72Fa5eB94bcf746C8FCcb312a722c9B",
10104
10105
  abi: [
10105
10106
  {
10106
10107
  inputs: [],
@@ -12686,7 +12687,8 @@ var testnetAsimov = _viem.defineChain.call(void 0, {
12686
12687
  name: "Genlayer Asimov Testnet",
12687
12688
  rpcUrls: {
12688
12689
  default: {
12689
- http: [TESTNET_JSON_RPC_URL]
12690
+ http: [TESTNET_JSON_RPC_URL],
12691
+ webSocket: [TESTNET_WS_URL]
12690
12692
  }
12691
12693
  },
12692
12694
  nativeCurrency: {
@@ -8704,14 +8704,15 @@ var STAKING_ABI = [
8704
8704
  ];
8705
8705
 
8706
8706
  // src/chains/testnetAsimov.ts
8707
- var TESTNET_JSON_RPC_URL = "https://genlayer-testnet.rpc.caldera.xyz/http";
8707
+ var TESTNET_JSON_RPC_URL = "https://zksync-os-testnet-genlayer.zksync.dev";
8708
+ var TESTNET_WS_URL = "wss://zksync-os-testnet-alpha.zksync.dev/ws";
8708
8709
  var STAKING_CONTRACT = {
8709
- address: "0x03f410748EBdb4026a6b8299E9B6603A273709D1",
8710
+ address: "0x63Fa5E0bb10fb6fA98F44726C5518223F767687A",
8710
8711
  abi: STAKING_ABI
8711
8712
  };
8712
8713
  var EXPLORER_URL2 = "https://explorer-asimov.genlayer.com/";
8713
8714
  var CONSENSUS_MAIN_CONTRACT3 = {
8714
- address: "0x67fd4aC71530FB220E0B7F90668BAF977B88fF07",
8715
+ address: "0x6CAFF6769d70824745AD895663409DC70aB5B28E",
8715
8716
  abi: [
8716
8717
  {
8717
8718
  inputs: [],
@@ -10100,7 +10101,7 @@ var CONSENSUS_MAIN_CONTRACT3 = {
10100
10101
  bytecode: ""
10101
10102
  };
10102
10103
  var CONSENSUS_DATA_CONTRACT3 = {
10103
- address: "0xB6E1316E57d47d82FDcEa5002028a554754EF243",
10104
+ address: "0x0D9d1d74d72Fa5eB94bcf746C8FCcb312a722c9B",
10104
10105
  abi: [
10105
10106
  {
10106
10107
  inputs: [],
@@ -12686,7 +12687,8 @@ var testnetAsimov = defineChain3({
12686
12687
  name: "Genlayer Asimov Testnet",
12687
12688
  rpcUrls: {
12688
12689
  default: {
12689
- http: [TESTNET_JSON_RPC_URL]
12690
+ http: [TESTNET_JSON_RPC_URL],
12691
+ webSocket: [TESTNET_WS_URL]
12690
12692
  }
12691
12693
  },
12692
12694
  nativeCurrency: {
package/dist/index.cjs CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkSC2VXHL3cjs = require('./chunk-SC2VXHL3.cjs');
8
+ var _chunkPPBY3UXFcjs = require('./chunk-PPBY3UXF.cjs');
9
9
 
10
10
 
11
11
 
@@ -31,7 +31,7 @@ var _viem = require('viem');
31
31
  function accountActions(client) {
32
32
  return {
33
33
  fundAccount: async ({ address, amount }) => {
34
- if (_optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.id]) !== _chunkSC2VXHL3cjs.localnet.id) {
34
+ if (_optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.id]) !== _chunkPPBY3UXFcjs.localnet.id) {
35
35
  throw new Error("Client is not connected to the localnet");
36
36
  }
37
37
  return client.request({
@@ -415,8 +415,8 @@ function serialize(data) {
415
415
  // src/abi/index.ts
416
416
  var abi_exports = {};
417
417
  _chunk75ZPJI57cjs.__export.call(void 0, abi_exports, {
418
- STAKING_ABI: () => _chunkSC2VXHL3cjs.STAKING_ABI,
419
- VALIDATOR_WALLET_ABI: () => _chunkSC2VXHL3cjs.VALIDATOR_WALLET_ABI,
418
+ STAKING_ABI: () => _chunkPPBY3UXFcjs.STAKING_ABI,
419
+ VALIDATOR_WALLET_ABI: () => _chunkPPBY3UXFcjs.VALIDATOR_WALLET_ABI,
420
420
  calldata: () => calldata,
421
421
  transactions: () => transactions
422
422
  });
@@ -516,7 +516,7 @@ function _toJsonSafeDeep(value, seen) {
516
516
  var contractActions = (client, publicClient) => {
517
517
  return {
518
518
  getContractCode: async (address) => {
519
- if (client.chain.id !== _chunkSC2VXHL3cjs.localnet.id) {
519
+ if (client.chain.id !== _chunkPPBY3UXFcjs.localnet.id) {
520
520
  throw new Error("Getting contract code is not supported on this network");
521
521
  }
522
522
  const result = await client.request({
@@ -527,7 +527,7 @@ var contractActions = (client, publicClient) => {
527
527
  return new TextDecoder().decode(codeBytes);
528
528
  },
529
529
  getContractSchema: async (address) => {
530
- if (client.chain.id !== _chunkSC2VXHL3cjs.localnet.id) {
530
+ if (client.chain.id !== _chunkPPBY3UXFcjs.localnet.id) {
531
531
  throw new Error("Contract schema is not supported on this network");
532
532
  }
533
533
  const schema = await client.request({
@@ -537,7 +537,7 @@ var contractActions = (client, publicClient) => {
537
537
  return schema;
538
538
  },
539
539
  getContractSchemaForCode: async (contractCode) => {
540
- if (client.chain.id !== _chunkSC2VXHL3cjs.localnet.id) {
540
+ if (client.chain.id !== _chunkPPBY3UXFcjs.localnet.id) {
541
541
  throw new Error("Contract schema is not supported on this network");
542
542
  }
543
543
  const schema = await client.request({
@@ -1068,7 +1068,7 @@ var receiptActions = (client, publicClient) => ({
1068
1068
  const requestedStatus = _chunkW4V73RPNcjs.transactionsStatusNameToNumber[status];
1069
1069
  if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && _chunkW4V73RPNcjs.isDecidedState.call(void 0, transactionStatusString)) {
1070
1070
  let finalTransaction = transaction;
1071
- if (client.chain.id === _chunkSC2VXHL3cjs.localnet.id) {
1071
+ if (client.chain.id === _chunkPPBY3UXFcjs.localnet.id) {
1072
1072
  finalTransaction = decodeLocalnetTransaction(transaction);
1073
1073
  }
1074
1074
  if (!fullTransaction) {
@@ -1133,9 +1133,9 @@ var snapID = {
1133
1133
 
1134
1134
  // src/wallet/connect.ts
1135
1135
  var networks = {
1136
- localnet: _chunkSC2VXHL3cjs.localnet,
1137
- studionet: _chunkSC2VXHL3cjs.studionet,
1138
- testnetAsimov: _chunkSC2VXHL3cjs.testnetAsimov
1136
+ localnet: _chunkPPBY3UXFcjs.localnet,
1137
+ studionet: _chunkPPBY3UXFcjs.studionet,
1138
+ testnetAsimov: _chunkPPBY3UXFcjs.testnetAsimov
1139
1139
  };
1140
1140
  var connect = async (client, network = "studionet", snapSource = "npm") => {
1141
1141
  if (!window.ethereum) {
@@ -1251,7 +1251,7 @@ function formatStakingAmount(amount) {
1251
1251
  // src/staking/actions.ts
1252
1252
  var FALLBACK_GAS = 1000000n;
1253
1253
  var GAS_BUFFER_MULTIPLIER = 2n;
1254
- var COMBINED_ERROR_ABI = [..._chunkSC2VXHL3cjs.STAKING_ABI, ..._chunkSC2VXHL3cjs.VALIDATOR_WALLET_ABI];
1254
+ var COMBINED_ERROR_ABI = [..._chunkPPBY3UXFcjs.STAKING_ABI, ..._chunkPPBY3UXFcjs.VALIDATOR_WALLET_ABI];
1255
1255
  function extractRevertReason(err) {
1256
1256
  if (err instanceof _viem.BaseError) {
1257
1257
  const rawError = err.walk((e) => e instanceof _viem.RawContractError);
@@ -1383,7 +1383,7 @@ var stakingActions = (client, publicClient) => {
1383
1383
  const address = getStakingAddress();
1384
1384
  return _viem.getContract.call(void 0, {
1385
1385
  address,
1386
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1386
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1387
1387
  client: { public: publicClient, wallet: client }
1388
1388
  });
1389
1389
  };
@@ -1391,7 +1391,7 @@ var stakingActions = (client, publicClient) => {
1391
1391
  const address = getStakingAddress();
1392
1392
  return _viem.getContract.call(void 0, {
1393
1393
  address,
1394
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1394
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1395
1395
  client: publicClient
1396
1396
  });
1397
1397
  };
@@ -1400,11 +1400,11 @@ var stakingActions = (client, publicClient) => {
1400
1400
  const amount = parseStakingAmount(options.amount);
1401
1401
  const stakingAddress = getStakingAddress();
1402
1402
  const data = options.operator ? _viem.encodeFunctionData.call(void 0, {
1403
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1403
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1404
1404
  functionName: "validatorJoin",
1405
1405
  args: [options.operator]
1406
1406
  }) : _viem.encodeFunctionData.call(void 0, {
1407
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1407
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1408
1408
  functionName: "validatorJoin"
1409
1409
  });
1410
1410
  const result = await executeWrite({ to: stakingAddress, data, value: amount });
@@ -1413,7 +1413,7 @@ var stakingActions = (client, publicClient) => {
1413
1413
  let eventFound = false;
1414
1414
  for (const log of receipt.logs) {
1415
1415
  try {
1416
- const decoded = _viem.decodeEventLog.call(void 0, { abi: _chunkSC2VXHL3cjs.STAKING_ABI, data: log.data, topics: log.topics });
1416
+ const decoded = _viem.decodeEventLog.call(void 0, { abi: _chunkPPBY3UXFcjs.STAKING_ABI, data: log.data, topics: log.topics });
1417
1417
  if (decoded.eventName === "ValidatorJoin") {
1418
1418
  validatorWallet = decoded.args.validator;
1419
1419
  eventFound = true;
@@ -1440,7 +1440,7 @@ var stakingActions = (client, publicClient) => {
1440
1440
  validatorDeposit: async (options) => {
1441
1441
  const amount = parseStakingAmount(options.amount);
1442
1442
  const data = _viem.encodeFunctionData.call(void 0, {
1443
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1443
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1444
1444
  functionName: "validatorDeposit"
1445
1445
  });
1446
1446
  return executeWrite({ to: getStakingAddress(), data, value: amount });
@@ -1448,7 +1448,7 @@ var stakingActions = (client, publicClient) => {
1448
1448
  validatorExit: async (options) => {
1449
1449
  const shares = typeof options.shares === "string" ? BigInt(options.shares) : options.shares;
1450
1450
  const data = _viem.encodeFunctionData.call(void 0, {
1451
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1451
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1452
1452
  functionName: "validatorExit",
1453
1453
  args: [shares]
1454
1454
  });
@@ -1460,7 +1460,7 @@ var stakingActions = (client, publicClient) => {
1460
1460
  }
1461
1461
  const validatorAddress = _optionalChain([options, 'optionalAccess', _61 => _61.validator]) || client.account.address;
1462
1462
  const data = _viem.encodeFunctionData.call(void 0, {
1463
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1463
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1464
1464
  functionName: "validatorClaim",
1465
1465
  args: [validatorAddress]
1466
1466
  });
@@ -1469,7 +1469,7 @@ var stakingActions = (client, publicClient) => {
1469
1469
  },
1470
1470
  validatorPrime: async (options) => {
1471
1471
  const data = _viem.encodeFunctionData.call(void 0, {
1472
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1472
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1473
1473
  functionName: "validatorPrime",
1474
1474
  args: [options.validator]
1475
1475
  });
@@ -1477,7 +1477,7 @@ var stakingActions = (client, publicClient) => {
1477
1477
  },
1478
1478
  setOperator: async (options) => {
1479
1479
  const data = _viem.encodeFunctionData.call(void 0, {
1480
- abi: _chunkSC2VXHL3cjs.VALIDATOR_WALLET_ABI,
1480
+ abi: _chunkPPBY3UXFcjs.VALIDATOR_WALLET_ABI,
1481
1481
  functionName: "setOperator",
1482
1482
  args: [options.operator]
1483
1483
  });
@@ -1493,7 +1493,7 @@ var stakingActions = (client, publicClient) => {
1493
1493
  }
1494
1494
  }
1495
1495
  const data = _viem.encodeFunctionData.call(void 0, {
1496
- abi: _chunkSC2VXHL3cjs.VALIDATOR_WALLET_ABI,
1496
+ abi: _chunkPPBY3UXFcjs.VALIDATOR_WALLET_ABI,
1497
1497
  functionName: "setIdentity",
1498
1498
  args: [
1499
1499
  options.moniker,
@@ -1512,7 +1512,7 @@ var stakingActions = (client, publicClient) => {
1512
1512
  delegatorJoin: async (options) => {
1513
1513
  const amount = parseStakingAmount(options.amount);
1514
1514
  const data = _viem.encodeFunctionData.call(void 0, {
1515
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1515
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1516
1516
  functionName: "delegatorJoin",
1517
1517
  args: [options.validator]
1518
1518
  });
@@ -1528,7 +1528,7 @@ var stakingActions = (client, publicClient) => {
1528
1528
  delegatorExit: async (options) => {
1529
1529
  const shares = typeof options.shares === "string" ? BigInt(options.shares) : options.shares;
1530
1530
  const data = _viem.encodeFunctionData.call(void 0, {
1531
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1531
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1532
1532
  functionName: "delegatorExit",
1533
1533
  args: [options.validator, shares]
1534
1534
  });
@@ -1540,7 +1540,7 @@ var stakingActions = (client, publicClient) => {
1540
1540
  }
1541
1541
  const delegatorAddress = options.delegator || client.account.address;
1542
1542
  const data = _viem.encodeFunctionData.call(void 0, {
1543
- abi: _chunkSC2VXHL3cjs.STAKING_ABI,
1543
+ abi: _chunkPPBY3UXFcjs.STAKING_ABI,
1544
1544
  functionName: "delegatorClaim",
1545
1545
  args: [delegatorAddress, options.validator]
1546
1546
  });
@@ -1558,7 +1558,7 @@ var stakingActions = (client, publicClient) => {
1558
1558
  }
1559
1559
  const walletContract = _viem.getContract.call(void 0, {
1560
1560
  address: validator,
1561
- abi: _chunkSC2VXHL3cjs.VALIDATOR_WALLET_ABI,
1561
+ abi: _chunkPPBY3UXFcjs.VALIDATOR_WALLET_ABI,
1562
1562
  client: publicClient
1563
1563
  });
1564
1564
  const [view, owner, operator, identityRaw, currentEpoch] = await Promise.all([
@@ -1799,7 +1799,7 @@ var stakingActions = (client, publicClient) => {
1799
1799
  function chainActions(client) {
1800
1800
  return {
1801
1801
  initializeConsensusSmartContract: async (forceReset = false) => {
1802
- if (_optionalChain([client, 'access', _62 => _62.chain, 'optionalAccess', _63 => _63.id]) === _chunkSC2VXHL3cjs.testnetAsimov.id) {
1802
+ if (_optionalChain([client, 'access', _62 => _62.chain, 'optionalAccess', _63 => _63.id]) === _chunkPPBY3UXFcjs.testnetAsimov.id) {
1803
1803
  return;
1804
1804
  }
1805
1805
  if (!forceReset && _optionalChain([client, 'access', _64 => _64.chain, 'access', _65 => _65.consensusMainContract, 'optionalAccess', _66 => _66.address]) && _optionalChain([client, 'access', _67 => _67.chain, 'access', _68 => _68.consensusMainContract, 'optionalAccess', _69 => _69.abi])) {
@@ -1869,8 +1869,8 @@ var getCustomTransportConfig = (config, chainConfig) => {
1869
1869
  }
1870
1870
  };
1871
1871
  };
1872
- var createClient = (config = { chain: _chunkSC2VXHL3cjs.localnet }) => {
1873
- const chainConfig = config.chain || _chunkSC2VXHL3cjs.localnet;
1872
+ var createClient = (config = { chain: _chunkPPBY3UXFcjs.localnet }) => {
1873
+ const chainConfig = config.chain || _chunkPPBY3UXFcjs.localnet;
1874
1874
  if (config.endpoint) {
1875
1875
  chainConfig.rpcUrls.default.http = [config.endpoint];
1876
1876
  }
@@ -1931,4 +1931,4 @@ var createAccount = (accountPrivateKey) => {
1931
1931
 
1932
1932
 
1933
1933
 
1934
- exports.abi = abi_exports; exports.chains = _chunkSC2VXHL3cjs.chains_exports; exports.createAccount = createAccount; exports.createClient = createClient; exports.decodeInputData = decodeInputData; exports.decodeLocalnetTransaction = decodeLocalnetTransaction; exports.decodeTransaction = decodeTransaction; exports.formatStakingAmount = formatStakingAmount; exports.generatePrivateKey = generatePrivateKey; exports.parseStakingAmount = parseStakingAmount; exports.simplifyTransactionReceipt = simplifyTransactionReceipt;
1934
+ exports.abi = abi_exports; exports.chains = _chunkPPBY3UXFcjs.chains_exports; exports.createAccount = createAccount; exports.createClient = createClient; exports.decodeInputData = decodeInputData; exports.decodeLocalnetTransaction = decodeLocalnetTransaction; exports.decodeTransaction = decodeTransaction; exports.formatStakingAmount = formatStakingAmount; exports.generatePrivateKey = generatePrivateKey; exports.parseStakingAmount = parseStakingAmount; exports.simplifyTransactionReceipt = simplifyTransactionReceipt;
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  localnet,
6
6
  studionet,
7
7
  testnetAsimov
8
- } from "./chunk-V3MYVW3P.js";
8
+ } from "./chunk-WZNF2WK4.js";
9
9
  import {
10
10
  CalldataAddress,
11
11
  isDecidedState,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "genlayer-js",
3
3
  "type": "module",
4
- "version": "0.18.9",
4
+ "version": "0.18.10",
5
5
  "description": "GenLayer JavaScript SDK",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -3,15 +3,16 @@ import {GenLayerChain} from "@/types";
3
3
  import {STAKING_ABI} from "@/abi/staking";
4
4
 
5
5
  // chains/localnet.ts
6
- const TESTNET_JSON_RPC_URL = "https://genlayer-testnet.rpc.caldera.xyz/http";
6
+ const TESTNET_JSON_RPC_URL = "https://zksync-os-testnet-genlayer.zksync.dev";
7
+ const TESTNET_WS_URL = "wss://zksync-os-testnet-alpha.zksync.dev/ws";
7
8
 
8
9
  const STAKING_CONTRACT = {
9
- address: "0x03f410748EBdb4026a6b8299E9B6603A273709D1" as Address,
10
+ address: "0x63Fa5E0bb10fb6fA98F44726C5518223F767687A" as Address,
10
11
  abi: STAKING_ABI,
11
12
  };
12
13
  const EXPLORER_URL = "https://explorer-asimov.genlayer.com/";
13
14
  const CONSENSUS_MAIN_CONTRACT = {
14
- address: "0x67fd4aC71530FB220E0B7F90668BAF977B88fF07" as Address,
15
+ address: "0x6CAFF6769d70824745AD895663409DC70aB5B28E" as Address,
15
16
  abi: [
16
17
  {
17
18
  inputs: [],
@@ -1401,7 +1402,7 @@ const CONSENSUS_MAIN_CONTRACT = {
1401
1402
  };
1402
1403
 
1403
1404
  const CONSENSUS_DATA_CONTRACT = {
1404
- address: "0xB6E1316E57d47d82FDcEa5002028a554754EF243" as Address,
1405
+ address: "0x0D9d1d74d72Fa5eB94bcf746C8FCcb312a722c9B" as Address,
1405
1406
  abi: [
1406
1407
  {
1407
1408
  inputs: [],
@@ -3989,6 +3990,7 @@ export const testnetAsimov: GenLayerChain = defineChain({
3989
3990
  rpcUrls: {
3990
3991
  default: {
3991
3992
  http: [TESTNET_JSON_RPC_URL],
3993
+ webSocket: [TESTNET_WS_URL],
3992
3994
  },
3993
3995
  },
3994
3996
  nativeCurrency: {
@@ -0,0 +1,59 @@
1
+ // tests/smoke.test.ts
2
+ // Basic smoke tests to verify testnet chain configuration and connectivity
3
+ import {describe, it, expect} from "vitest";
4
+ import {testnetAsimov} from "@/chains/testnetAsimov";
5
+ import {createPublicClient, http} from "viem";
6
+
7
+ describe("Testnet Asimov Chain Config", () => {
8
+ it("should have valid RPC URL", () => {
9
+ const rpcUrl = testnetAsimov.rpcUrls.default.http[0];
10
+ expect(rpcUrl).toBe("https://zksync-os-testnet-genlayer.zksync.dev");
11
+ });
12
+
13
+ it("should have valid WebSocket URL", () => {
14
+ const wsUrl = testnetAsimov.rpcUrls.default.webSocket?.[0];
15
+ expect(wsUrl).toBe("wss://zksync-os-testnet-alpha.zksync.dev/ws");
16
+ });
17
+
18
+ it("should have consensus main contract address", () => {
19
+ expect(testnetAsimov.consensusMainContract?.address).toBe(
20
+ "0x6CAFF6769d70824745AD895663409DC70aB5B28E",
21
+ );
22
+ });
23
+
24
+ it("should have consensus data contract address", () => {
25
+ expect(testnetAsimov.consensusDataContract?.address).toBe(
26
+ "0x0D9d1d74d72Fa5eB94bcf746C8FCcb312a722c9B",
27
+ );
28
+ });
29
+
30
+ it("should have staking contract address", () => {
31
+ expect(testnetAsimov.stakingContract?.address).toBe(
32
+ "0x63Fa5E0bb10fb6fA98F44726C5518223F767687A",
33
+ );
34
+ });
35
+
36
+ it("should have correct chain ID", () => {
37
+ expect(testnetAsimov.id).toBe(0x107d);
38
+ });
39
+ });
40
+
41
+ describe("Testnet Asimov RPC Connectivity", () => {
42
+ it("should connect and fetch chain ID", async () => {
43
+ const client = createPublicClient({
44
+ chain: testnetAsimov,
45
+ transport: http(testnetAsimov.rpcUrls.default.http[0]),
46
+ });
47
+ const chainId = await client.getChainId();
48
+ expect(chainId).toBe(testnetAsimov.id);
49
+ }, 15000);
50
+
51
+ it("should fetch latest block number", async () => {
52
+ const client = createPublicClient({
53
+ chain: testnetAsimov,
54
+ transport: http(testnetAsimov.rpcUrls.default.http[0]),
55
+ });
56
+ const blockNumber = await client.getBlockNumber();
57
+ expect(blockNumber).toBeGreaterThan(0n);
58
+ }, 15000);
59
+ });