@magicblock-labs/ephemeral-rollups-sdk 0.2.8 → 0.2.9

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.
@@ -0,0 +1,3 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function getAuthToken(rpcUrl: string, publicKey: PublicKey, signMessage: (message: Uint8Array) => Promise<Uint8Array>): Promise<string>;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/privacy/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkB5C,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,mBAkC1D"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAuthToken = getAuthToken;
4
+ async function getAuthToken(rpcUrl, publicKey, signMessage) {
5
+ const bs58 = (await import("bs58")).default;
6
+ const challengeResponse = await fetch(`${rpcUrl}/auth/challenge?pubkey=${publicKey.toString()}`);
7
+ const { challenge } = await challengeResponse.json();
8
+ const signature = await signMessage(new Uint8Array(Buffer.from(challenge, "utf-8")));
9
+ const signatureString = bs58.encode(signature);
10
+ const authResponse = await fetch(`${rpcUrl}/auth/login`, {
11
+ method: "POST",
12
+ headers: { "Content-Type": "application/json" },
13
+ body: JSON.stringify({
14
+ pubkey: publicKey.toString(),
15
+ challenge,
16
+ signature: signatureString,
17
+ }),
18
+ });
19
+ const authJson = await authResponse.json();
20
+ if (authResponse.status !== 200) {
21
+ throw new Error(`Failed to authenticate: ${authJson.error}`);
22
+ }
23
+ return authJson.token;
24
+ }
25
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/privacy/auth.ts"],"names":[],"mappings":";;AAkBA,oCAqCC;AArCM,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,SAAoB,EACpB,WAAyD;IAGzD,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAG5C,MAAM,iBAAiB,GAAG,MAAM,KAAK,CACnC,GAAG,MAAM,0BAA0B,SAAS,CAAC,QAAQ,EAAE,EAAE,CAC1D,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,GAA0B,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAG5E,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAChD,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAG/C,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC5B,SAAS;YACT,SAAS,EAAE,eAAe;SAC3B,CAAC;KACH,CAAC,CAAC;IACH,MAAM,QAAQ,GAAsB,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IAE9D,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare const SESSION_DURATION: number;
3
+ export declare const PERMISSION_PROGRAM_ID: PublicKey;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/privacy/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,gBAAgB,QAA2B,CAAC;AAEzD,eAAO,MAAM,qBAAqB,EAAE,SAEnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMISSION_PROGRAM_ID = exports.SESSION_DURATION = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ exports.SESSION_DURATION = 1000 * 60 * 60 * 24 * 30;
6
+ exports.PERMISSION_PROGRAM_ID = new web3_js_1.PublicKey("BTWAqWNBmF2TboMh3fxMJfgR16xGHYD7Kgr2dPwbRPBi");
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/privacy/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5C,QAAA,qBAAqB,GAAc,IAAI,mBAAS,CAC3D,8CAA8C,CAC/C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./pda";
2
+ export * from "./auth";
3
+ export * from "./verify";
4
+ export * from "./constants";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/privacy/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./pda"), exports);
18
+ __exportStar(require("./auth"), exports);
19
+ __exportStar(require("./verify"), exports);
20
+ __exportStar(require("./constants"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/privacy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,yCAAuB;AACvB,2CAAyB;AACzB,8CAA4B"}
@@ -0,0 +1,4 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function permissionPdaFromAccount(account: PublicKey): PublicKey;
3
+ export declare function groupPdaFromId(id: PublicKey): PublicKey;
4
+ //# sourceMappingURL=pda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../src/privacy/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,aAK1D;AAOD,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,aAK3C"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.permissionPdaFromAccount = permissionPdaFromAccount;
4
+ exports.groupPdaFromId = groupPdaFromId;
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const constants_1 = require("./constants");
7
+ const PERMISSION_SEED = Buffer.from("permission:");
8
+ const GROUP_SEED = Buffer.from("group:");
9
+ function permissionPdaFromAccount(account) {
10
+ return web3_js_1.PublicKey.findProgramAddressSync([PERMISSION_SEED, account.toBuffer()], constants_1.PERMISSION_PROGRAM_ID)[0];
11
+ }
12
+ function groupPdaFromId(id) {
13
+ return web3_js_1.PublicKey.findProgramAddressSync([GROUP_SEED, id.toBuffer()], constants_1.PERMISSION_PROGRAM_ID)[0];
14
+ }
15
+ //# sourceMappingURL=pda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.js","sourceRoot":"","sources":["../../src/privacy/pda.ts"],"names":[],"mappings":";;AAWA,4DAKC;AAOD,wCAKC;AA5BD,6CAA4C;AAC5C,2CAAoD;AAEpD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAOzC,SAAgB,wBAAwB,CAAC,OAAkB;IACzD,OAAO,mBAAS,CAAC,sBAAsB,CACrC,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,EACrC,iCAAqB,CACtB,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAOD,SAAgB,cAAc,CAAC,EAAa;IAC1C,OAAO,mBAAS,CAAC,sBAAsB,CACrC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAC3B,iCAAqB,CACtB,CAAC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function verifyTeeRpcIntegrity(rpcUrl: string): Promise<boolean>;
2
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/privacy/verify.ts"],"names":[],"mappings":"AAcA,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4C5E"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyTeeRpcIntegrity = verifyTeeRpcIntegrity;
4
+ async function verifyTeeRpcIntegrity(rpcUrl) {
5
+ const { default: init, js_get_collateral: jsGetCollateral, js_verify: jsVerify, } = await import("@phala/dcap-qvl-web");
6
+ const challengeBytes = Buffer.from(Uint8Array.from(Array(32)
7
+ .fill(0)
8
+ .map(() => Math.floor(Math.random() * 256))));
9
+ const challenge = challengeBytes.toString("base64");
10
+ const url = `${rpcUrl}/quote?challenge=${encodeURIComponent(challenge)}`;
11
+ const response = await fetch(url);
12
+ const responseBody = await response.json();
13
+ if (response.status !== 200 || !("quote" in responseBody)) {
14
+ throw new Error(responseBody.error ?? "Failed to get quote");
15
+ }
16
+ await init();
17
+ const rawQuote = Uint8Array.from(Buffer.from(responseBody.quote, "base64"));
18
+ const pccsUrl = "https://pccs.phala.network/tdx/certification/v4";
19
+ const quoteCollateral = await jsGetCollateral(pccsUrl, rawQuote);
20
+ const now = BigInt(Math.floor(Date.now() / 1000));
21
+ try {
22
+ jsVerify(rawQuote, quoteCollateral, now);
23
+ return true;
24
+ }
25
+ catch (error) {
26
+ return false;
27
+ }
28
+ }
29
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/privacy/verify.ts"],"names":[],"mappings":";;AAcA,sDA4CC;AA5CM,KAAK,UAAU,qBAAqB,CAAC,MAAc;IAExD,MAAM,EACJ,OAAO,EAAE,IAAI,EACb,iBAAiB,EAAE,eAAe,EAClC,SAAS,EAAE,QAAQ,GACpB,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,UAAU,CAAC,IAAI,CACb,KAAK,CAAC,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAC9C,CACF,CAAC;IACF,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,GAAG,MAAM,oBAAoB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;IAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,YAAY,GAAkC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE1E,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAGD,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAG5E,MAAM,OAAO,GAAG,iDAAiD,CAAC;IAClE,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAGjE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAGlD,IAAI,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicblock-labs/ephemeral-rollups-sdk",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "author": "MagicBlock Labs",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -8,6 +8,10 @@
8
8
  "registry": "https://registry.npmjs.org/"
9
9
  },
10
10
  "main": "lib/index.js",
11
+ "exports": {
12
+ ".": "./lib/index.js",
13
+ "./privacy": "./lib/privacy/index.js"
14
+ },
11
15
  "scripts": {
12
16
  "clean": "rimraf lib",
13
17
  "build": "npm run clean && npm run lint:fix && tsc",
@@ -36,10 +40,11 @@
36
40
  "prettier": "^3.3.2",
37
41
  "rimraf": "^3.0.2",
38
42
  "ts-jest": "^29.1.1",
39
- "typescript": "^5.7.2"
43
+ "typescript": "^5.3.0"
40
44
  },
41
45
  "dependencies": {
42
46
  "@metaplex-foundation/beet": "^0.7.2",
47
+ "@phala/dcap-qvl-web": "^0.2.7",
43
48
  "@solana/web3.js": "^1.98.0",
44
49
  "bs58": "^6.0.0",
45
50
  "rpc-websockets": "^9.0.4"