Skip to content

Commit b9fd19d

Browse files
SwenSchaeferjohannSwen
andauthored
chore: bump JS versions to photon 0.38.0 (#1037)
* add nullable error to getLatestNonVotingSigs * rm paginated * bump js versions. support nullabel error field in getLatestNonVotingSignatures --------- Co-authored-by: Swen <swen.schaeferjohann@code.berlin>
1 parent 7c5f3d6 commit b9fd19d

File tree

10 files changed

+587
-39
lines changed

10 files changed

+587
-39
lines changed

cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lightprotocol/zk-compression-cli",
3-
"version": "0.5.0",
3+
"version": "0.5.1",
44
"description": "ZK Compression: Secure Scaling on Solana",
55
"maintainers": [
66
{

cli/src/utils/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const LIGHT_PROVER_PROCESS_NAME = "light-prover";
2121
export const INDEXER_PROCESS_NAME = "photon";
2222
export const FORESTER_PROCESS_NAME = "forester";
2323

24-
export const PHOTON_VERSION = "0.37.0";
24+
export const PHOTON_VERSION = "0.38.0";
2525

2626
export const LIGHT_PROTOCOL_PROGRAMS_DIR_ENV = "LIGHT_PROTOCOL_PROGRAMS_DIR";
2727
export const BASE_PATH = "../../bin/";

forester/scripts/prefill_queues.ts

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
import { PublicKey, Signer, Keypair } from "@solana/web3.js";
2+
import {
3+
airdropSol,
4+
createRpc,
5+
compress,
6+
transfer,
7+
createAccount,
8+
LightSystemProgram,
9+
Rpc,
10+
} from "@lightprotocol/stateless.js";
11+
import nacl from "tweetnacl";
12+
import * as dotenv from "dotenv";
13+
14+
dotenv.config();
15+
const PHOTON_API_KEY = process.env.PHOTON_API_KEY;
16+
17+
const payerKeypair = [
18+
46, 239, 29, 58, 196, 181, 39, 77, 196, 54, 249, 108, 80, 144, 32, 168, 245,
19+
161, 146, 92, 180, 79, 231, 37, 50, 88, 220, 48, 9, 146, 249, 82, 130, 60,
20+
106, 251, 24, 224, 192, 108, 70, 59, 111, 251, 186, 50, 23, 103, 106, 233,
21+
113, 148, 57, 190, 158, 111, 163, 28, 157, 47, 201, 41, 249, 59,
22+
];
23+
24+
const bobKeypair = [
25+
125, 14, 244, 185, 193, 42, 156, 191, 212, 42, 239, 56, 169, 240, 239, 52, 95,
26+
215, 240, 86, 151, 212, 245, 230, 198, 148, 12, 230, 83, 57, 56, 244, 191,
27+
129, 151, 233, 233, 129, 21, 255, 101, 163, 48, 212, 218, 82, 134, 36, 29,
28+
185, 30, 215, 183, 242, 244, 222, 8, 10, 158, 214, 99, 237, 126, 9,
29+
];
30+
const kp = (kp: number[]) => Keypair.fromSecretKey(Uint8Array.from(kp));
31+
32+
function getRpc(network: string): Rpc {
33+
switch (network) {
34+
case "localnet":
35+
return createRpc(
36+
"http://0.0.0.0:8899",
37+
"http://0.0.0.0:8784",
38+
"http://0.0.0.0:3001"
39+
);
40+
case "zktestnet":
41+
return createRpc(
42+
"https://zk-testnet.helius.dev:8899",
43+
"https://zk-testnet.helius.dev:8784"
44+
);
45+
case "devnet":
46+
const url = `https://devnet.helius-rpc.com?api-key=${PHOTON_API_KEY}`;
47+
return createRpc(url, url);
48+
default:
49+
throw new Error(`Unknown network: ${network}`);
50+
}
51+
}
52+
53+
const LAMPORTS = 1e9;
54+
const COMPRESS_AMOUNT = 1e9 - 50000;
55+
const TOTAL_NUMBER_OF_TRANSFERS = 10;
56+
const NUMBER_OF_CONCURRENT_TRANSFERS = 10;
57+
const TRANSFER_AMOUNT = 10;
58+
59+
async function transferAsync(
60+
i: number,
61+
rpc: Rpc,
62+
payer: Signer,
63+
bobPublicKey: PublicKey
64+
): Promise<void> {
65+
const transferSig = await transfer(
66+
rpc,
67+
payer,
68+
TRANSFER_AMOUNT,
69+
payer,
70+
bobPublicKey
71+
);
72+
console.log(`transfer ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${transferSig}`);
73+
}
74+
75+
async function createAccountAsync(i: number, rpc: Rpc, payer: Signer) {
76+
const sig = await createAccount(
77+
rpc,
78+
payer,
79+
nacl.randomBytes(32),
80+
LightSystemProgram.programId
81+
);
82+
console.log(`create account ${i} of ${TOTAL_NUMBER_OF_TRANSFERS}: ${sig}`);
83+
}
84+
85+
async function airdropToAccount(rpc: Rpc, account: Keypair, lamports: number) {
86+
console.log(
87+
`Airdropping ${lamports} lamports to ${account.publicKey.toBase58()}...`
88+
);
89+
const tx = await airdropSol({
90+
connection: rpc,
91+
lamports,
92+
recipientPublicKey: account.publicKey,
93+
});
94+
console.log("Airdrop tx:", tx);
95+
}
96+
97+
async function logBalances(rpc: Rpc, payer: Keypair, bob: Keypair) {
98+
const payerBalance = await rpc.getBalance(payer.publicKey);
99+
console.log("payer balance", payerBalance);
100+
101+
const bobBalance = await rpc.getBalance(bob.publicKey);
102+
console.log("bob balance", bobBalance);
103+
}
104+
105+
async function performTransfers(
106+
rpc: Rpc,
107+
payer: Signer,
108+
bobPublicKey: PublicKey
109+
) {
110+
for (
111+
let i = 0;
112+
i < TOTAL_NUMBER_OF_TRANSFERS;
113+
i += NUMBER_OF_CONCURRENT_TRANSFERS
114+
) {
115+
const transferPromises = Array.from(
116+
{ length: NUMBER_OF_CONCURRENT_TRANSFERS },
117+
(_, j) => transferAsync(i + j, rpc, payer, bobPublicKey)
118+
);
119+
await Promise.all(transferPromises);
120+
}
121+
}
122+
123+
async function performCreateAddresses(rpc: Rpc, payer: Signer) {
124+
for (
125+
let i = 0;
126+
i < TOTAL_NUMBER_OF_TRANSFERS;
127+
i += NUMBER_OF_CONCURRENT_TRANSFERS
128+
) {
129+
const createAccountPromises = Array.from(
130+
{ length: NUMBER_OF_CONCURRENT_TRANSFERS },
131+
(_, j) => createAccountAsync(i + j, rpc, payer)
132+
);
133+
await Promise.all(createAccountPromises);
134+
}
135+
}
136+
137+
async function compressSol(rpc: Rpc, payer: Signer, amount: number) {
138+
const compressSig = await compress(rpc, payer, amount, payer.publicKey);
139+
console.log("compress tx sig", compressSig);
140+
}
141+
142+
async function executeOperations(operations: string[]) {
143+
const rpc = getRpc("devnet");
144+
const payer = kp(payerKeypair);
145+
const bob = kp(bobKeypair);
146+
147+
console.log("payer:", payer.publicKey.toBase58());
148+
console.log("bob:", bob.publicKey.toBase58());
149+
150+
for (const operation of operations) {
151+
switch (operation) {
152+
case "airdrop":
153+
await airdropToAccount(rpc, payer, LAMPORTS);
154+
await airdropToAccount(rpc, bob, LAMPORTS);
155+
await logBalances(rpc, payer, bob);
156+
break;
157+
case "compress":
158+
await compressSol(rpc, payer, COMPRESS_AMOUNT);
159+
break;
160+
case "transfer":
161+
await performTransfers(rpc, payer, bob.publicKey);
162+
break;
163+
case "createAddresses":
164+
await performCreateAddresses(rpc, payer);
165+
break;
166+
default:
167+
console.log(`Unknown operation: ${operation}`);
168+
}
169+
}
170+
}
171+
172+
async function executeInfiniteLoop(rpc: Rpc, payer: Signer, bob: PublicKey) {
173+
while (true) {
174+
try {
175+
await Promise.all([
176+
performTransfers(rpc, payer, bob),
177+
performCreateAddresses(rpc, payer),
178+
]);
179+
180+
await new Promise((resolve) => setTimeout(resolve, 100));
181+
} catch (error) {
182+
console.error("Error in infinite loop:", error);
183+
break;
184+
}
185+
}
186+
}
187+
188+
async function main() {
189+
const rpc = getRpc("devnet");
190+
const payer = kp(payerKeypair);
191+
const bob = kp(bobKeypair);
192+
// Example usage:
193+
// await executeOperations(["airdrop", "compress"]);
194+
195+
await executeInfiniteLoop(rpc, payer, bob.publicKey);
196+
}
197+
198+
main().catch(console.error);

js/compressed-token/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lightprotocol/compressed-token",
3-
"version": "0.4.0",
3+
"version": "0.4.1",
44
"description": "JS client to interact with the compressed-token program",
55
"sideEffects": false,
66
"type": "module",

0 commit comments

Comments
 (0)