@magicblock-labs/ephemeral-rollups-kit 0.11.0 → 0.11.2

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 (34) hide show
  1. package/README.md +5 -0
  2. package/lib/__test__/access-control.test.js +4 -4
  3. package/lib/__test__/access-control.test.js.map +1 -1
  4. package/lib/__test__/instructions.test.js +82 -2
  5. package/lib/__test__/instructions.test.js.map +1 -1
  6. package/lib/access-control/verify.d.ts +2 -2
  7. package/lib/access-control/verify.d.ts.map +1 -1
  8. package/lib/access-control/verify.js +24 -17
  9. package/lib/access-control/verify.js.map +1 -1
  10. package/lib/constants.d.ts +3 -0
  11. package/lib/constants.d.ts.map +1 -1
  12. package/lib/constants.js +4 -1
  13. package/lib/constants.js.map +1 -1
  14. package/lib/instructions/ephemeral-spl-token-program/crypto.d.ts +3 -0
  15. package/lib/instructions/ephemeral-spl-token-program/crypto.d.ts.map +1 -0
  16. package/lib/instructions/ephemeral-spl-token-program/crypto.js +55 -0
  17. package/lib/instructions/ephemeral-spl-token-program/crypto.js.map +1 -0
  18. package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.d.ts.map +1 -1
  19. package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.js +28 -104
  20. package/lib/instructions/ephemeral-spl-token-program/ephemeralAta.js.map +1 -1
  21. package/lib/instructions/ephemeral-spl-token-program/index.d.ts +1 -0
  22. package/lib/instructions/ephemeral-spl-token-program/index.d.ts.map +1 -1
  23. package/lib/instructions/ephemeral-spl-token-program/index.js +1 -0
  24. package/lib/instructions/ephemeral-spl-token-program/index.js.map +1 -1
  25. package/lib/instructions/ephemeral-spl-token-program/schedulePrivateTransfer.d.ts +6 -0
  26. package/lib/instructions/ephemeral-spl-token-program/schedulePrivateTransfer.d.ts.map +1 -0
  27. package/lib/instructions/ephemeral-spl-token-program/schedulePrivateTransfer.js +147 -0
  28. package/lib/instructions/ephemeral-spl-token-program/schedulePrivateTransfer.js.map +1 -0
  29. package/lib/instructions/ephemeral-spl-token-program/wire.d.ts +5 -0
  30. package/lib/instructions/ephemeral-spl-token-program/wire.d.ts.map +1 -0
  31. package/lib/instructions/ephemeral-spl-token-program/wire.js +33 -0
  32. package/lib/instructions/ephemeral-spl-token-program/wire.js.map +1 -0
  33. package/lib/instructions/magic-program/scheduleCommitAndUndelegate.js +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deriveStashPda = deriveStashPda;
4
+ exports.deriveStashAta = deriveStashAta;
5
+ exports.deriveHydraCrankPda = deriveHydraCrankPda;
6
+ exports.schedulePrivateTransferIx = schedulePrivateTransferIx;
7
+ const kit_1 = require("@solana/kit");
8
+ const system_1 = require("@solana-program/system");
9
+ const constants_1 = require("../../constants");
10
+ const crypto_1 = require("./crypto");
11
+ const ephemeralAta_1 = require("./ephemeralAta");
12
+ const transferQueue_1 = require("./transferQueue");
13
+ const wire_1 = require("./wire");
14
+ const SCHEDULE_PRIVATE_TRANSFER_DISCRIMINATOR = 30;
15
+ const STASH_PDA_SEED = new TextEncoder().encode("stash");
16
+ const HYDRA_CRANK_SEED_PREFIX = new TextEncoder().encode("crank");
17
+ const BUFFER_SEED = new TextEncoder().encode("buffer");
18
+ const DELEGATION_RECORD_SEED = new TextEncoder().encode("delegation");
19
+ const DELEGATION_METADATA_SEED = new TextEncoder().encode("delegation-metadata");
20
+ async function deriveStashPda(user, mint) {
21
+ const addressEncoder = (0, kit_1.getAddressEncoder)();
22
+ const [stashPda, bump] = await (0, kit_1.getProgramDerivedAddress)({
23
+ programAddress: constants_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
24
+ seeds: [
25
+ STASH_PDA_SEED,
26
+ addressEncoder.encode(user),
27
+ addressEncoder.encode(mint),
28
+ ],
29
+ });
30
+ return [stashPda, bump];
31
+ }
32
+ async function deriveStashAta(user, mint, tokenProgram = constants_1.TOKEN_PROGRAM_ID) {
33
+ const [stashPda] = await deriveStashPda(user, mint);
34
+ return deriveAtaWithBump(stashPda, mint, tokenProgram);
35
+ }
36
+ async function deriveHydraCrankPda(stashPda, shuttleId) {
37
+ if (!Number.isInteger(shuttleId) ||
38
+ shuttleId < 0 ||
39
+ shuttleId > 4294967295) {
40
+ throw new Error("shuttleId must fit in u32");
41
+ }
42
+ const [hydraCrankPda, bump] = await (0, kit_1.getProgramDerivedAddress)({
43
+ programAddress: constants_1.HYDRA_PROGRAM_ID,
44
+ seeds: [HYDRA_CRANK_SEED_PREFIX, hydraSeed(stashPda, shuttleId)],
45
+ });
46
+ return [hydraCrankPda, bump];
47
+ }
48
+ function hydraSeed(stashPda, shuttleId) {
49
+ const addressEncoder = (0, kit_1.getAddressEncoder)();
50
+ const seed = Buffer.from(addressEncoder.encode(stashPda));
51
+ seed.writeUInt32LE(shuttleId, 0);
52
+ return seed;
53
+ }
54
+ async function schedulePrivateTransferIx(user, mint, shuttleId, destinationOwner, minDelayMs, maxDelayMs, split, validator, tokenProgram = constants_1.TOKEN_PROGRAM_ID, clientRefId) {
55
+ if (!Number.isInteger(shuttleId) ||
56
+ shuttleId < 0 ||
57
+ shuttleId > 4294967295) {
58
+ throw new Error("shuttleId must fit in u32");
59
+ }
60
+ if (!Number.isInteger(split) || split <= 0 || split > 4294967295) {
61
+ throw new Error("split must be a positive u32");
62
+ }
63
+ if (minDelayMs < 0n ||
64
+ maxDelayMs < 0n ||
65
+ (clientRefId !== undefined && clientRefId < 0n)) {
66
+ throw new Error("delays and clientRefId must be non-negative");
67
+ }
68
+ if (maxDelayMs < minDelayMs) {
69
+ throw new Error("maxDelayMs must be greater than or equal to minDelayMs");
70
+ }
71
+ const U64_MAX = 0xffffffffffffffffn;
72
+ if (minDelayMs > U64_MAX ||
73
+ maxDelayMs > U64_MAX ||
74
+ (clientRefId !== undefined && clientRefId > U64_MAX)) {
75
+ throw new Error("delays and clientRefId must fit in u64");
76
+ }
77
+ const addressEncoder = (0, kit_1.getAddressEncoder)();
78
+ const [stashPda, stashBump] = await deriveStashPda(user, mint);
79
+ const [, stashAtaBump] = await deriveAtaWithBump(stashPda, mint, tokenProgram);
80
+ const [rentPda] = await (0, ephemeralAta_1.deriveRentPda)();
81
+ const [shuttleEphemeralAta, shuttleBump] = await (0, ephemeralAta_1.deriveShuttleEphemeralAta)(stashPda, mint, shuttleId);
82
+ const [shuttleAta, shuttleEataBump] = await (0, ephemeralAta_1.deriveShuttleAta)(shuttleEphemeralAta, mint);
83
+ const [, shuttleWalletAtaBump] = await deriveAtaWithBump(shuttleEphemeralAta, mint, tokenProgram);
84
+ const [, bufferBump] = await (0, kit_1.getProgramDerivedAddress)({
85
+ programAddress: constants_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
86
+ seeds: [BUFFER_SEED, addressEncoder.encode(shuttleAta)],
87
+ });
88
+ const [, delegationRecordBump] = await (0, kit_1.getProgramDerivedAddress)({
89
+ programAddress: constants_1.DELEGATION_PROGRAM_ID,
90
+ seeds: [DELEGATION_RECORD_SEED, addressEncoder.encode(shuttleAta)],
91
+ });
92
+ const [, delegationMetadataBump] = await (0, kit_1.getProgramDerivedAddress)({
93
+ programAddress: constants_1.DELEGATION_PROGRAM_ID,
94
+ seeds: [DELEGATION_METADATA_SEED, addressEncoder.encode(shuttleAta)],
95
+ });
96
+ const [vault, globalVaultBump] = await (0, ephemeralAta_1.deriveVault)(mint);
97
+ const [, vaultTokenBump] = await deriveAtaWithBump(vault, mint, tokenProgram);
98
+ const [, queueBump] = await (0, transferQueue_1.deriveTransferQueue)(mint, validator);
99
+ const [hydraCrankPda] = await deriveHydraCrankPda(stashPda, shuttleId);
100
+ const encryptedDestination = (0, crypto_1.encryptEd25519Recipient)(new Uint8Array(addressEncoder.encode(destinationOwner)), validator);
101
+ const encryptedSuffix = (0, crypto_1.encryptEd25519Recipient)((0, wire_1.packPrivateTransferSuffix)(minDelayMs, maxDelayMs, split, clientRefId), validator);
102
+ const data = Buffer.concat([
103
+ Buffer.from([SCHEDULE_PRIVATE_TRANSFER_DISCRIMINATOR]),
104
+ (0, wire_1.u32leBuffer)(shuttleId),
105
+ Buffer.from([stashBump]),
106
+ Buffer.from(addressEncoder.encode(mint)),
107
+ Buffer.from([shuttleBump]),
108
+ Buffer.from([shuttleEataBump]),
109
+ Buffer.from([shuttleWalletAtaBump]),
110
+ Buffer.from([bufferBump]),
111
+ Buffer.from([delegationRecordBump]),
112
+ Buffer.from([delegationMetadataBump]),
113
+ Buffer.from([globalVaultBump]),
114
+ Buffer.from([vaultTokenBump]),
115
+ Buffer.from([stashAtaBump]),
116
+ Buffer.from([queueBump]),
117
+ (0, wire_1.encodeLengthPrefixedBytes)(new Uint8Array(addressEncoder.encode(validator))),
118
+ (0, wire_1.encodeLengthPrefixedBytes)(encryptedDestination),
119
+ (0, wire_1.encodeLengthPrefixedBytes)(encryptedSuffix),
120
+ ]);
121
+ return {
122
+ accounts: [
123
+ { address: user, role: kit_1.AccountRole.WRITABLE_SIGNER },
124
+ { address: stashPda, role: kit_1.AccountRole.WRITABLE },
125
+ { address: rentPda, role: kit_1.AccountRole.WRITABLE },
126
+ { address: hydraCrankPda, role: kit_1.AccountRole.WRITABLE },
127
+ { address: constants_1.HYDRA_PROGRAM_ID, role: kit_1.AccountRole.READONLY },
128
+ { address: system_1.SYSTEM_PROGRAM_ADDRESS, role: kit_1.AccountRole.READONLY },
129
+ { address: tokenProgram, role: kit_1.AccountRole.READONLY },
130
+ ],
131
+ data,
132
+ programAddress: constants_1.EPHEMERAL_SPL_TOKEN_PROGRAM_ID,
133
+ };
134
+ }
135
+ async function deriveAtaWithBump(wallet, mint, tokenProgram) {
136
+ const addressEncoder = (0, kit_1.getAddressEncoder)();
137
+ const [ata, bump] = await (0, kit_1.getProgramDerivedAddress)({
138
+ programAddress: constants_1.ASSOCIATED_TOKEN_PROGRAM_ID,
139
+ seeds: [
140
+ addressEncoder.encode(wallet),
141
+ addressEncoder.encode(tokenProgram),
142
+ addressEncoder.encode(mint),
143
+ ],
144
+ });
145
+ return [ata, bump];
146
+ }
147
+ //# sourceMappingURL=schedulePrivateTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedulePrivateTransfer.js","sourceRoot":"","sources":["../../../src/instructions/ephemeral-spl-token-program/schedulePrivateTransfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function encodeLengthPrefixedBytes(bytes: Uint8Array): Buffer;
2
+ export declare function packPrivateTransferSuffix(minDelayMs: bigint, maxDelayMs: bigint, split: number, clientRefId?: bigint): Buffer;
3
+ export declare function u32leBuffer(value: number): Buffer;
4
+ export declare function u64leBuffer(value: bigint): Buffer;
5
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/instructions/ephemeral-spl-token-program/wire.ts"],"names":[],"mappings":"AAKA,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAKnE;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAWR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeLengthPrefixedBytes = encodeLengthPrefixedBytes;
4
+ exports.packPrivateTransferSuffix = packPrivateTransferSuffix;
5
+ exports.u32leBuffer = u32leBuffer;
6
+ exports.u64leBuffer = u64leBuffer;
7
+ function encodeLengthPrefixedBytes(bytes) {
8
+ if (bytes.length > 0xff) {
9
+ throw new Error("encrypted private transfer payload exceeds u8 length");
10
+ }
11
+ return Buffer.concat([Buffer.from([bytes.length]), Buffer.from(bytes)]);
12
+ }
13
+ function packPrivateTransferSuffix(minDelayMs, maxDelayMs, split, clientRefId) {
14
+ const suffix = Buffer.alloc(clientRefId === undefined ? 8 + 8 + 4 : 8 + 8 + 4 + 8);
15
+ suffix.writeBigUInt64LE(minDelayMs, 0);
16
+ suffix.writeBigUInt64LE(maxDelayMs, 8);
17
+ suffix.writeUInt32LE(split, 16);
18
+ if (clientRefId !== undefined) {
19
+ suffix.writeBigUInt64LE(clientRefId, 20);
20
+ }
21
+ return suffix;
22
+ }
23
+ function u32leBuffer(value) {
24
+ const out = Buffer.alloc(4);
25
+ out.writeUInt32LE(value, 0);
26
+ return out;
27
+ }
28
+ function u64leBuffer(value) {
29
+ const out = Buffer.alloc(8);
30
+ out.writeBigUInt64LE(value, 0);
31
+ return out;
32
+ }
33
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/instructions/ephemeral-spl-token-program/wire.ts"],"names":[],"mappings":";;AAKA,8DAKC;AAED,8DAgBC;AAED,kCAIC;AAED,kCAIC;AAnCD,SAAgB,yBAAyB,CAAC,KAAiB;IACzD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,yBAAyB,CACvC,UAAkB,EAClB,UAAkB,EAClB,KAAa,EACb,WAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CACzB,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CACtD,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -9,7 +9,7 @@ function createCommitAndUndelegateInstruction(payer, accountsToCommitAndUndelega
9
9
  { address: constants_1.MAGIC_CONTEXT_ID, role: instructions_1.AccountRole.WRITABLE },
10
10
  ...accountsToCommitAndUndelegate.map((account) => ({
11
11
  address: account,
12
- role: instructions_1.AccountRole.READONLY,
12
+ role: instructions_1.AccountRole.WRITABLE,
13
13
  })),
14
14
  ];
15
15
  const data = new Uint8Array(4);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicblock-labs/ephemeral-rollups-kit",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "author": "MagicBlock Labs",
5
5
  "license": "MIT",
6
6
  "publishConfig": {