@ethernity-cloud/sdk-js 1.7.10 → 1.7.11

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/README.md CHANGED
@@ -59,20 +59,26 @@ The sdk has been tested on the following operating systems:
59
59
  validator set (SessionRegistry `0xfA70B5Df...`, ValidatorRegistry
60
60
  `0xbE3759f3...`).
61
61
  - LiteForge Unsafe - the unsafe network beside LiteForge (see below).
62
+ - Ethereum:
63
+ - Sepolia - CAS-attested the same way, by Sepolia's own ethernity-cas
64
+ validator set (SessionRegistry `0xDbB249E1...`, ValidatorRegistry
65
+ `0x8ad24b3F...`), on the PoX family of 2026-10-14.
66
+ - Sepolia Unsafe - the unsafe network beside Sepolia (see below).
62
67
  - Polyhon:
63
68
  - Amoy Testnet - to be provided during the following updates
64
69
  - Mainnet - to be provided during the following updates
65
70
 
66
- The remaining testnets (Amoy, IoTeX, Sepolia) have no ethernity-cas
71
+ The remaining testnets (Amoy, IoTeX) have no ethernity-cas
67
72
  deployment: their enclaves are debug-signed and sign their own certificates
68
73
  from their measurement, and `ecld-publish` registers no CAS session for them.
69
74
 
70
75
  ### The testnets and their unsafe networks
71
- `Bloxberg Testnet` and `LitVM LiteForge` run your securelock in an enclave
76
+ `Bloxberg Testnet`, `LitVM LiteForge` and `Ethereum Sepolia` run your securelock in an enclave
72
77
  attested through that chain's ethernity-cas validator set, on nodes whose
73
78
  platform the CAS can attest (DCAP). Each has an unsafe network beside it,
74
- `Bloxberg Testnet Unsafe` (`Bloxberg_Testnet_Unsafe`) and `LitVM LiteForge
75
- Unsafe` (`LitVM_LiteForge_Unsafe`): the same chain and contracts, for hardware
79
+ `Bloxberg Testnet Unsafe` (`Bloxberg_Testnet_Unsafe`), `LitVM LiteForge
80
+ Unsafe` (`LitVM_LiteForge_Unsafe`) and `Ethereum Sepolia Unsafe`
81
+ (`Ethereum_Sepolia_Unsafe`): the same chain and contracts, for hardware
76
82
  SGX platforms the CAS cannot attest (EPID-only, SGX1). No CAS and no LAS: the
77
83
  enclaves are debug-signed and sign their own certificates from their
78
84
  measurement, so a result proves which image ran but not that an enclave ran
@@ -82,7 +88,8 @@ always says so in the network it names. A dApp publishes one securelock per
82
88
  network from two project directories with the same project name: the unsafe
83
89
  one is registered as `<project>-unsafe` and runs on the
84
90
  `etny-<nodenithy|pynithy>-testnet-unsafe`
85
- (`ecld-<nodenithy|pynithy>-litvm-testnet-unsafe`) trustedzone. Both dApp types
91
+ (`ecld-<nodenithy|pynithy>-litvm-testnet-unsafe`,
92
+ `ecld-<nodenithy|pynithy>-ethereum-sepolia-unsafe`) trustedzone. Both dApp types
86
93
  build for both networks. Mainnet has no unsafe network.
87
94
 
88
95
  ### Pynithy dApps
@@ -176,8 +183,8 @@ sets the enclave heap (default `1024M`).
176
183
  that IPFS RPC API instead, with `ECLD_IPFS_TOKEN` (or `IPFS_TOKEN`) as its
177
184
  Authorization header, and a URL naming the public API is refused without one.
178
185
  The intake serves the networks the bootnode's agent runs, today the bloxberg
179
- testnet and LitVM LiteForge, each with its unsafe twin: a dApp on any other
180
- network (Bloxberg mainnet, Polygon, IoTeX, Sepolia) needs an IPFS API of its
186
+ testnet, LitVM LiteForge and Ethereum Sepolia, each with its unsafe twin: a dApp on any other
187
+ network (Bloxberg mainnet, Polygon, IoTeX) needs an IPFS API of its
181
188
  own (`IPFS_ENDPOINT` for the Hello World template, `--ipfs <url>` for `ecld-run`).
182
189
  Exit code 0 on a `SUCCESS` task result, 1 otherwise. `--unsafe` runs the
183
190
  network's unsafe variant; on an unsafe network the securelock and
package/cas/config.js CHANGED
@@ -18,6 +18,8 @@ const VALIDATOR_REGISTRY = {
18
18
  'etny-nodenithy-testnet': '0x0014aB102FEa6b02e3D793FF4b9a0Af309fB4E14',
19
19
  'ecld-pynithy-litvm-testnet': '0xbE3759f327e8643fC5A1717fb2072A0dAcBAD29E',
20
20
  'ecld-nodenithy-litvm-testnet': '0xbE3759f327e8643fC5A1717fb2072A0dAcBAD29E',
21
+ 'ecld-pynithy-ethereum-sepolia': '0x8ad24b3F406A41a0F8D3440021792EB203957F43',
22
+ 'ecld-nodenithy-ethereum-sepolia': '0x8ad24b3F406A41a0F8D3440021792EB203957F43',
21
23
  };
22
24
 
23
25
  const SESSION_REGISTRY = {
@@ -25,14 +27,20 @@ const SESSION_REGISTRY = {
25
27
  'etny-nodenithy-testnet': '0x444429681fCb26470Cb12B5436E48402cF7478A3',
26
28
  'ecld-pynithy-litvm-testnet': '0xfA70B5Df7C773A21164cAc5413704117e4dEaB76',
27
29
  'ecld-nodenithy-litvm-testnet': '0xfA70B5Df7C773A21164cAc5413704117e4dEaB76',
30
+ // Bound to Sepolia's ECImageRegistryV3 of 2026-10-14.
31
+ 'ecld-pynithy-ethereum-sepolia': '0xDbB249E108d19fC1691483Bf897bA8BA0dA99c06',
32
+ 'ecld-nodenithy-ethereum-sepolia': '0xDbB249E108d19fC1691483Bf897bA8BA0dA99c06',
28
33
  };
29
34
 
30
- // The chain the registries above live on.
35
+ // The chain the registries above live on. Sepolia's RPC is Tenderly's gateway:
36
+ // publicnode caps eth_getLogs at 50,000 blocks and prunes older ranges.
31
37
  const CHAIN = {
32
38
  'etny-pynithy-testnet': { rpcUrl: 'https://bloxberg.ethernity.cloud', chainId: 8995 },
33
39
  'etny-nodenithy-testnet': { rpcUrl: 'https://bloxberg.ethernity.cloud', chainId: 8995 },
34
40
  'ecld-pynithy-litvm-testnet': { rpcUrl: 'https://liteforge.rpc.caldera.xyz/infra-partner-http', chainId: 4441 },
35
41
  'ecld-nodenithy-litvm-testnet': { rpcUrl: 'https://liteforge.rpc.caldera.xyz/infra-partner-http', chainId: 4441 },
42
+ 'ecld-pynithy-ethereum-sepolia': { rpcUrl: 'https://sepolia.gateway.tenderly.co', chainId: 11155111 },
43
+ 'ecld-nodenithy-ethereum-sepolia': { rpcUrl: 'https://sepolia.gateway.tenderly.co', chainId: 11155111 },
36
44
  };
37
45
 
38
46
  // Whether the securelock takes its certificate from a CAS session: mainnet
@@ -55,6 +63,7 @@ const isMainnetNetwork = (network) =>
55
63
  const UNSAFE_NETWORKS = {
56
64
  Bloxberg_Testnet_Unsafe: 'Bloxberg_Testnet',
57
65
  LitVM_LiteForge_Unsafe: 'LitVM_LiteForge',
66
+ Ethereum_Sepolia_Unsafe: 'Ethereum_Sepolia',
58
67
  };
59
68
 
60
69
  // Case-insensitive: ecld-init writes Bloxberg_Testnet_Unsafe, a --network
package/info.js CHANGED
@@ -55,6 +55,14 @@ const NETWORKS = {
55
55
  imageRegistry: '0xAf8Ce29103E1f59feDD49688ff070Ffc2346AF1D',
56
56
  esr: '0x709052Fe77Af543d3d9FE2Ac06a15c635c8D4Be5',
57
57
  },
58
+ // The family of 2026-10-14, owned by 0xA247...; the previous PoX 0x29D3eC87...
59
+ // and V1 registry 0x55e0ad45... are abandoned.
60
+ ETHEREUM_SEPOLIA: {
61
+ type: 'testnet', chainId: 11155111, rpc: 'https://sepolia.gateway.tenderly.co',
62
+ protocol: '0x798975F9FdD90A21Cb11Ac26F1377e1542c58f9c',
63
+ imageRegistry: '0xa7E43a269E3307cf9d246b07df2B89CAA1b4C42F',
64
+ esr: '0x9927809B61122B2af3f3b3A3303875e0687b8eE3',
65
+ },
58
66
  };
59
67
  // The -unsafe networks: the chain and contracts of the network each is the
60
68
  // unsafe variant of, without a CAS.
package/init.js CHANGED
@@ -214,6 +214,7 @@ const main = async () => {
214
214
  "LitVM LiteForge",
215
215
  "Bloxberg Testnet Unsafe",
216
216
  "LitVM LiteForge Unsafe",
217
+ "Ethereum Sepolia Unsafe",
217
218
  ];
218
219
  const blockchainNetwork = await promptOptions(
219
220
  "On which Blockchain network do you want to have the app set up, as a starting point? (default is Bloxberg Testnet): ",
@@ -390,6 +391,7 @@ const main = async () => {
390
391
  "LitVM LiteForge": `ecld-${svc}-litvm-testnet`,
391
392
  "Bloxberg Testnet Unsafe": `etny-${svc}-testnet-unsafe`,
392
393
  "LitVM LiteForge Unsafe": `ecld-${svc}-litvm-testnet-unsafe`,
394
+ "Ethereum Sepolia Unsafe": `ecld-${svc}-ethereum-sepolia-unsafe`,
393
395
  };
394
396
  const trustedZoneImage = imageByNetwork[blockchainNetwork] || `etny-${svc}-testnet`;
395
397
  writeEnv("TRUSTED_ZONE_IMAGE", trustedZoneImage);
package/network.js CHANGED
@@ -31,6 +31,7 @@ function networkFor({ ECAddress, ECNetworkByChainId }, raw) {
31
31
  IOTEX_TESTNET: { address: ECAddress.IOTEX.TESTNET_ADDRESS, chainId: ECNetworkByChainId.IOTEX.TESTNET },
32
32
  ETHEREUM_SEPOLIA: sepolia,
33
33
  SEPOLIA: sepolia,
34
+ ETHEREUM_SEPOLIA_UNSAFE: { ...sepolia, unsafe: ['SEPOLIA', 'TESTNET_UNSAFE'] },
34
35
  LITVM_LITEFORGE: litvm,
35
36
  LITVM: litvm,
36
37
  LITVM_LITEFORGE_UNSAFE: { ...litvm, unsafe: ['LITVM', 'TESTNET_UNSAFE'] },
@@ -41,6 +41,17 @@ function setVars(network = "") {
41
41
  NETWORK_RPC = "https://liteforge.rpc.caldera.xyz/infra-partner-http";
42
42
  IMAGE_REGISTRY_ADDRESS = "0xAf8Ce29103E1f59feDD49688ff070Ffc2346AF1D";
43
43
  CHAIN_ID = 4441;
44
+ } else if (BLOCKCHAIN_NETWORK.includes("Sepolia")) {
45
+ // Sepolia's ECImageRegistryV3 of 2026-10-14; Tenderly's gateway serves
46
+ // the log ranges publicnode prunes.
47
+ NETWORK_RPC = "https://sepolia.gateway.tenderly.co";
48
+ IMAGE_REGISTRY_ADDRESS = "0xa7E43a269E3307cf9d246b07df2B89CAA1b4C42F";
49
+ CHAIN_ID = 11155111;
50
+ // Sepolia's EVM charges storage-heavy calls several times the local
51
+ // EVM's gas (a contract creation about seven times); the base fee is
52
+ // under 0.0001 gwei, so 0.1 gwei is paid in full as the tip.
53
+ GAS = 20000000;
54
+ GAS_PRICE = 100000000;
44
55
  }
45
56
  }
46
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethernity-cloud/sdk-js",
3
- "version": "1.7.10",
3
+ "version": "1.7.11",
4
4
  "description": "A package to run ethernity cloud build scripts",
5
5
  "scripts": {
6
6
  "test": "node --test \"test/**/*.test.js\"",
@@ -39,7 +39,7 @@
39
39
  "!**/*.pyc"
40
40
  ],
41
41
  "dependencies": {
42
- "@ethernity-cloud/runner": "^0.6.5",
42
+ "@ethernity-cloud/runner": "^0.6.6",
43
43
  "acorn": "^8.11.0",
44
44
  "adm-zip": "^0.5.14",
45
45
  "axios": "^1.7.2",
@@ -41,6 +41,17 @@ function setVars(network = "") {
41
41
  NETWORK_RPC = "https://liteforge.rpc.caldera.xyz/infra-partner-http";
42
42
  IMAGE_REGISTRY_ADDRESS = "0xAf8Ce29103E1f59feDD49688ff070Ffc2346AF1D";
43
43
  CHAIN_ID = 4441;
44
+ } else if (BLOCKCHAIN_NETWORK.includes("Sepolia")) {
45
+ // Sepolia's ECImageRegistryV3 of 2026-10-14; Tenderly's gateway serves
46
+ // the log ranges publicnode prunes.
47
+ NETWORK_RPC = "https://sepolia.gateway.tenderly.co";
48
+ IMAGE_REGISTRY_ADDRESS = "0xa7E43a269E3307cf9d246b07df2B89CAA1b4C42F";
49
+ CHAIN_ID = 11155111;
50
+ // Sepolia's EVM charges storage-heavy calls several times the local
51
+ // EVM's gas (a contract creation about seven times); the base fee is
52
+ // under 0.0001 gwei, so 0.1 gwei is paid in full as the tip.
53
+ GAS = 20000000;
54
+ GAS_PRICE = 100000000;
44
55
  }
45
56
  }
46
57
 
package/run.js CHANGED
@@ -90,7 +90,7 @@ usage: ecld-run 'hello("World")' | ecld-run --file payload.js | ecld-run --input
90
90
  payload: a code string, or --file <path>; input via --input <file> / --input-text <str>
91
91
  network: --network BLOXBERG_TESTNET (default: BLOCKCHAIN_NETWORK from .env)
92
92
  --unsafe: the network's -unsafe variant, which runs without a CAS
93
- (BLOXBERG_TESTNET_UNSAFE, LITVM_LITEFORGE_UNSAFE)
93
+ (BLOXBERG_TESTNET_UNSAFE, LITVM_LITEFORGE_UNSAFE, ETHEREUM_SEPOLIA_UNSAFE)
94
94
  enclaves: --securelock <name> (default PROJECT_NAME), --trustedzone <name> (default TRUSTED_ZONE_IMAGE);
95
95
  on an -unsafe network the default is each one's -unsafe variant
96
96
  key: PRIVATE_KEY (a funded 0x key) from .env / env, or ECLD_PRIVATE_KEY