@magicblock-labs/ephemeral-rollups-sdk 0.2.8 → 0.2.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/lib/privacy/auth.d.ts +3 -0
- package/lib/privacy/auth.d.ts.map +1 -0
- package/lib/privacy/auth.js +25 -0
- package/lib/privacy/auth.js.map +1 -0
- package/lib/privacy/constants.d.ts +4 -0
- package/lib/privacy/constants.d.ts.map +1 -0
- package/lib/privacy/constants.js +7 -0
- package/lib/privacy/constants.js.map +1 -0
- package/lib/privacy/index.d.ts +5 -0
- package/lib/privacy/index.d.ts.map +1 -0
- package/lib/privacy/index.js +21 -0
- package/lib/privacy/index.js.map +1 -0
- package/lib/privacy/pda.d.ts +4 -0
- package/lib/privacy/pda.d.ts.map +1 -0
- package/lib/privacy/pda.js +15 -0
- package/lib/privacy/pda.js.map +1 -0
- package/lib/privacy/verify.d.ts +2 -0
- package/lib/privacy/verify.d.ts.map +1 -0
- package/lib/privacy/verify.js +29 -0
- package/lib/privacy/verify.js.map +1 -0
- package/package.json +7 -2
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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.
|
|
3
|
+
"version": "0.2.10",
|
|
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.
|
|
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"
|