From db61a4ba0cc29a678bebcca6082802803867b254 Mon Sep 17 00:00:00 2001 From: Michal Rostecki Date: Sat, 28 Jan 2023 11:35:12 +0800 Subject: [PATCH 1/2] light-sdk-ts: Autogenerate IDL with Anchor --- light-sdk-ts/src/idls/index.ts | 20 +- light-sdk-ts/src/idls/merkle_tree_program.ts | 4 +- light-sdk-ts/src/idls/verifier_program_one.ts | 398 ++++++++++-------- light-sdk-ts/src/idls/verifier_program_two.ts | 66 +-- .../src/idls/verifier_program_zero.ts | 292 +++++++------ light-system-programs/Anchor.toml | 5 + 6 files changed, 438 insertions(+), 347 deletions(-) diff --git a/light-sdk-ts/src/idls/index.ts b/light-sdk-ts/src/idls/index.ts index b1620907c6..a76de40325 100644 --- a/light-sdk-ts/src/idls/index.ts +++ b/light-sdk-ts/src/idls/index.ts @@ -1,4 +1,16 @@ -export * from "./merkle_tree_program"; -export * from "./verifier_program_one"; -export * from "./verifier_program_two"; -export * from "./verifier_program_zero"; +export { + MerkleTreeProgram, + IDL as MERKLE_TREE_PROGRAM_IDL, +} from "./merkle_tree_program"; +export { + VerifierProgramOne, + IDL as VERIFIER_PROGRAM_ONE_IDL, +} from "./verifier_program_one"; +export { + VerifierProgramTwo, + IDL as VERIFIER_PROGRAM_TWO_IDL, +} from "./verifier_program_two"; +export { + VerifierProgramZero, + IDL as VERIFIER_PROGRAM_ZERO_IDL, +} from "./verifier_program_zero"; diff --git a/light-sdk-ts/src/idls/merkle_tree_program.ts b/light-sdk-ts/src/idls/merkle_tree_program.ts index 3b802e4f33..4942b0b8bd 100644 --- a/light-sdk-ts/src/idls/merkle_tree_program.ts +++ b/light-sdk-ts/src/idls/merkle_tree_program.ts @@ -1167,7 +1167,7 @@ export type MerkleTreeProgram = { ]; }; -export const IDL_MERKLE_TREE_PROGRAM: MerkleTreeProgram = { +export const IDL: MerkleTreeProgram = { version: "0.1.0", name: "merkle_tree_program", constants: [ @@ -2339,5 +2339,3 @@ export const IDL_MERKLE_TREE_PROGRAM: MerkleTreeProgram = { }, ], }; - -export default MerkleTreeProgram; diff --git a/light-sdk-ts/src/idls/verifier_program_one.ts b/light-sdk-ts/src/idls/verifier_program_one.ts index 14ccf18175..8feb884f8c 100644 --- a/light-sdk-ts/src/idls/verifier_program_one.ts +++ b/light-sdk-ts/src/idls/verifier_program_one.ts @@ -1,191 +1,23 @@ -export const VerifierProgramOne: VerifierProgramOneIdl = { - version: "0.1.0", - name: "verifier_program_one", - instructions: [ - { - name: "shieldedTransferFirst", - accounts: [ - { - name: "signingAddress", - isMut: true, - isSigner: true, - }, - { - name: "systemProgram", - isMut: false, - isSigner: false, - }, - { - name: "verifierState", - isMut: true, - isSigner: false, - }, - ], - args: [ - { - name: "publicAmount", - type: "bytes", - }, - { - name: "nullifiers", - type: { - array: [ - { - array: ["u8", 32], - }, - 10, - ], - }, - }, - { - name: "leaves", - type: { - array: [ - { - array: ["u8", 32], - }, - 2, - ], - }, - }, - { - name: "feeAmount", - type: "bytes", - }, - { - name: "rootIndex", - type: "u64", - }, - { - name: "relayerFee", - type: "u64", - }, - { - name: "encryptedUtxos", - type: "bytes", - }, - ], - }, - { - name: "shieldedTransferSecond", - accounts: [ - { - name: "signingAddress", - isMut: true, - isSigner: true, - }, - { - name: "verifierState", - isMut: true, - isSigner: false, - }, - { - name: "systemProgram", - isMut: false, - isSigner: false, - }, - { - name: "programMerkleTree", - isMut: false, - isSigner: false, - }, - { - name: "merkleTree", - isMut: false, - isSigner: false, - }, - { - name: "preInsertedLeavesIndex", - isMut: true, - isSigner: false, - }, - { - name: "authority", - isMut: true, - isSigner: false, - }, - { - name: "tokenProgram", - isMut: false, - isSigner: false, - }, - { - name: "sender", - isMut: true, - isSigner: false, - }, - { - name: "recipient", - isMut: true, - isSigner: false, - }, - { - name: "senderFee", - isMut: true, - isSigner: false, - }, - { - name: "recipientFee", - isMut: true, - isSigner: false, - }, - { - name: "relayerRecipient", - isMut: true, - isSigner: false, - }, - { - name: "escrow", - isMut: true, - isSigner: false, - }, - { - name: "tokenAuthority", - isMut: true, - isSigner: false, - }, - { - name: "registeredVerifierPda", - isMut: true, - isSigner: false, - }, - ], - args: [ - { - name: "proof", - type: "bytes", - }, - ], - }, - { - name: "closeVerifierState", - accounts: [ - { - name: "signingAddress", - isMut: true, - isSigner: true, - }, - { - name: "verifierState", - isMut: true, - isSigner: false, - }, - ], - args: [], - }, - ], -}; -export type VerifierProgramOneIdl = { +export type VerifierProgramOne = { version: "0.1.0"; name: "verifier_program_one"; instructions: [ { name: "shieldedTransferFirst"; + docs: [ + "This instruction is the first step of a shielded transaction with 10 inputs and 2 outputs.", + "It creates and initializes a verifier state account which stores public inputs and other data", + "such as leaves, amounts, recipients, nullifiers, etc. to execute the verification and", + "protocol logicin the second transaction.", + ]; accounts: [ { name: "signingAddress"; isMut: true; isSigner: true; + docs: [ + "First transaction, therefore the signing address is not checked but saved to be checked in future instructions.", + ]; }, { name: "systemProgram"; @@ -245,6 +77,11 @@ export type VerifierProgramOneIdl = { }, { name: "shieldedTransferSecond"; + docs: [ + "This instruction is the second step of a shieled transaction.", + "The proof is verified with the parameters saved in the first transaction.", + "At successful verification protocol logic is executed.", + ]; accounts: [ { name: "signingAddress"; @@ -325,6 +162,9 @@ export type VerifierProgramOneIdl = { name: "registeredVerifierPda"; isMut: true; isSigner: false; + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ]; }, ]; args: [ @@ -336,6 +176,9 @@ export type VerifierProgramOneIdl = { }, { name: "closeVerifierState"; + docs: [ + "Close the verifier state to reclaim rent in case the proofdata is wrong and does not verify.", + ]; accounts: [ { name: "signingAddress"; @@ -352,4 +195,201 @@ export type VerifierProgramOneIdl = { }, ]; }; -export default VerifierProgramOne; + +export const IDL: VerifierProgramOne = { + version: "0.1.0", + name: "verifier_program_one", + instructions: [ + { + name: "shieldedTransferFirst", + docs: [ + "This instruction is the first step of a shielded transaction with 10 inputs and 2 outputs.", + "It creates and initializes a verifier state account which stores public inputs and other data", + "such as leaves, amounts, recipients, nullifiers, etc. to execute the verification and", + "protocol logicin the second transaction.", + ], + accounts: [ + { + name: "signingAddress", + isMut: true, + isSigner: true, + docs: [ + "First transaction, therefore the signing address is not checked but saved to be checked in future instructions.", + ], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + }, + { + name: "verifierState", + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: "publicAmount", + type: "bytes", + }, + { + name: "nullifiers", + type: { + array: [ + { + array: ["u8", 32], + }, + 10, + ], + }, + }, + { + name: "leaves", + type: { + array: [ + { + array: ["u8", 32], + }, + 2, + ], + }, + }, + { + name: "feeAmount", + type: "bytes", + }, + { + name: "rootIndex", + type: "u64", + }, + { + name: "relayerFee", + type: "u64", + }, + { + name: "encryptedUtxos", + type: "bytes", + }, + ], + }, + { + name: "shieldedTransferSecond", + docs: [ + "This instruction is the second step of a shieled transaction.", + "The proof is verified with the parameters saved in the first transaction.", + "At successful verification protocol logic is executed.", + ], + accounts: [ + { + name: "signingAddress", + isMut: true, + isSigner: true, + }, + { + name: "verifierState", + isMut: true, + isSigner: false, + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + }, + { + name: "programMerkleTree", + isMut: false, + isSigner: false, + }, + { + name: "merkleTree", + isMut: false, + isSigner: false, + }, + { + name: "preInsertedLeavesIndex", + isMut: true, + isSigner: false, + }, + { + name: "authority", + isMut: true, + isSigner: false, + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + }, + { + name: "sender", + isMut: true, + isSigner: false, + }, + { + name: "recipient", + isMut: true, + isSigner: false, + }, + { + name: "senderFee", + isMut: true, + isSigner: false, + }, + { + name: "recipientFee", + isMut: true, + isSigner: false, + }, + { + name: "relayerRecipient", + isMut: true, + isSigner: false, + }, + { + name: "escrow", + isMut: true, + isSigner: false, + }, + { + name: "tokenAuthority", + isMut: true, + isSigner: false, + }, + { + name: "registeredVerifierPda", + isMut: true, + isSigner: false, + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ], + }, + ], + args: [ + { + name: "proof", + type: "bytes", + }, + ], + }, + { + name: "closeVerifierState", + docs: [ + "Close the verifier state to reclaim rent in case the proofdata is wrong and does not verify.", + ], + accounts: [ + { + name: "signingAddress", + isMut: true, + isSigner: true, + }, + { + name: "verifierState", + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + ], +}; diff --git a/light-sdk-ts/src/idls/verifier_program_two.ts b/light-sdk-ts/src/idls/verifier_program_two.ts index e60664bcd0..f6a8197536 100644 --- a/light-sdk-ts/src/idls/verifier_program_two.ts +++ b/light-sdk-ts/src/idls/verifier_program_two.ts @@ -1,14 +1,17 @@ -export type VerifierProgramTwoIdl = { +export type VerifierProgramTwo = { version: "0.1.0"; name: "verifier_program_two"; instructions: [ { name: "shieldedTransferInputs"; + docs: [ + "This instruction is used to invoke this system verifier and can only be invoked via cpi.", + ]; accounts: [ { name: "verifierState"; isMut: false; - isSigner: false; + isSigner: true; }, { name: "signingAddress"; @@ -27,17 +30,17 @@ export type VerifierProgramTwoIdl = { }, { name: "merkleTree"; - isMut: false; + isMut: true; isSigner: false; }, { name: "preInsertedLeavesIndex"; - isMut: false; + isMut: true; isSigner: false; }, { name: "authority"; - isMut: false; + isMut: true; isSigner: false; }, { @@ -82,13 +85,11 @@ export type VerifierProgramTwoIdl = { }, { name: "registeredVerifierPda"; - isMut: false; - isSigner: false; - }, - { - name: "invokingVerifier"; - isMut: false; + isMut: true; isSigner: false; + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ]; }, ]; args: [ @@ -97,24 +98,35 @@ export type VerifierProgramTwoIdl = { type: "bytes"; }, { - name: "appHash"; + name: "connectingHash"; type: "bytes"; }, ]; }, ]; + errors: [ + { + code: 6000; + name: "InvalidVerifier"; + msg: "System program is no valid verifier."; + }, + ]; }; -export const VerifierProgramTwo: VerifierProgramTwoIdl = { + +export const IDL: VerifierProgramTwo = { version: "0.1.0", name: "verifier_program_two", instructions: [ { name: "shieldedTransferInputs", + docs: [ + "This instruction is used to invoke this system verifier and can only be invoked via cpi.", + ], accounts: [ { name: "verifierState", isMut: false, - isSigner: false, + isSigner: true, }, { name: "signingAddress", @@ -133,17 +145,17 @@ export const VerifierProgramTwo: VerifierProgramTwoIdl = { }, { name: "merkleTree", - isMut: false, + isMut: true, isSigner: false, }, { name: "preInsertedLeavesIndex", - isMut: false, + isMut: true, isSigner: false, }, { name: "authority", - isMut: false, + isMut: true, isSigner: false, }, { @@ -188,13 +200,11 @@ export const VerifierProgramTwo: VerifierProgramTwoIdl = { }, { name: "registeredVerifierPda", - isMut: false, - isSigner: false, - }, - { - name: "invokingVerifier", - isMut: false, + isMut: true, isSigner: false, + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ], }, ], args: [ @@ -203,11 +213,17 @@ export const VerifierProgramTwo: VerifierProgramTwoIdl = { type: "bytes", }, { - name: "appHash", + name: "connectingHash", type: "bytes", }, ], }, ], + errors: [ + { + code: 6000, + name: "InvalidVerifier", + msg: "System program is no valid verifier.", + }, + ], }; -export default VerifierProgramTwo; diff --git a/light-sdk-ts/src/idls/verifier_program_zero.ts b/light-sdk-ts/src/idls/verifier_program_zero.ts index 72e828baf9..696f6020d0 100644 --- a/light-sdk-ts/src/idls/verifier_program_zero.ts +++ b/light-sdk-ts/src/idls/verifier_program_zero.ts @@ -1,143 +1,16 @@ -export const VerifierProgramZero: VerifierProgramZeroIdl = { - version: "0.1.0", - name: "verifier_program_zero", - instructions: [ - { - name: "shieldedTransferInputs", - accounts: [ - { - name: "signingAddress", - isMut: true, - isSigner: true, - }, - { - name: "systemProgram", - isMut: false, - isSigner: false, - }, - { - name: "programMerkleTree", - isMut: false, - isSigner: false, - }, - { - name: "merkleTree", - isMut: false, - isSigner: false, - }, - { - name: "preInsertedLeavesIndex", - isMut: true, - isSigner: false, - }, - { - name: "authority", - isMut: true, - isSigner: false, - }, - { - name: "tokenProgram", - isMut: false, - isSigner: false, - }, - { - name: "sender", - isMut: true, - isSigner: false, - }, - { - name: "recipient", - isMut: true, - isSigner: false, - }, - { - name: "senderFee", - isMut: true, - isSigner: false, - }, - { - name: "recipientFee", - isMut: true, - isSigner: false, - }, - { - name: "relayerRecipient", - isMut: true, - isSigner: false, - }, - { - name: "escrow", - isMut: true, - isSigner: false, - }, - { - name: "tokenAuthority", - isMut: true, - isSigner: false, - }, - { - name: "registeredVerifierPda", - isMut: true, - isSigner: false, - }, - ], - args: [ - { - name: "proof", - type: "bytes", - }, - { - name: "amount", - type: "bytes", - }, - { - name: "nullifiers", - type: { - array: [ - { - array: ["u8", 32], - }, - 2, - ], - }, - }, - { - name: "leaves", - type: { - array: [ - { - array: ["u8", 32], - }, - 2, - ], - }, - }, - { - name: "feeAmount", - type: "bytes", - }, - { - name: "rootIndex", - type: "u64", - }, - { - name: "relayerFee", - type: "u64", - }, - { - name: "encryptedUtxos", - type: "bytes", - }, - ], - }, - ], -}; -export type VerifierProgramZeroIdl = { +export type VerifierProgramZero = { version: "0.1.0"; name: "verifier_program_zero"; instructions: [ { name: "shieldedTransferInputs"; + docs: [ + "This instruction is the first step of a shieled transaction.", + "It creates and initializes a verifier state account to save state of a verification during", + "computation verifying the zero-knowledge proof (ZKP). Additionally, it stores other data", + "such as leaves, amounts, recipients, nullifiers, etc. to execute the protocol logic", + "in the last transaction after successful ZKP verification. light_verifier_sdk::light_instruction::LightInstruction2", + ]; accounts: [ { name: "signingAddress"; @@ -213,6 +86,9 @@ export type VerifierProgramZeroIdl = { name: "registeredVerifierPda"; isMut: true; isSigner: false; + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ]; }, ]; args: [ @@ -266,4 +142,148 @@ export type VerifierProgramZeroIdl = { }, ]; }; -export default VerifierProgramZero; + +export const IDL: VerifierProgramZero = { + version: "0.1.0", + name: "verifier_program_zero", + instructions: [ + { + name: "shieldedTransferInputs", + docs: [ + "This instruction is the first step of a shieled transaction.", + "It creates and initializes a verifier state account to save state of a verification during", + "computation verifying the zero-knowledge proof (ZKP). Additionally, it stores other data", + "such as leaves, amounts, recipients, nullifiers, etc. to execute the protocol logic", + "in the last transaction after successful ZKP verification. light_verifier_sdk::light_instruction::LightInstruction2", + ], + accounts: [ + { + name: "signingAddress", + isMut: true, + isSigner: true, + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + }, + { + name: "programMerkleTree", + isMut: false, + isSigner: false, + }, + { + name: "merkleTree", + isMut: false, + isSigner: false, + }, + { + name: "preInsertedLeavesIndex", + isMut: true, + isSigner: false, + }, + { + name: "authority", + isMut: true, + isSigner: false, + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + }, + { + name: "sender", + isMut: true, + isSigner: false, + }, + { + name: "recipient", + isMut: true, + isSigner: false, + }, + { + name: "senderFee", + isMut: true, + isSigner: false, + }, + { + name: "recipientFee", + isMut: true, + isSigner: false, + }, + { + name: "relayerRecipient", + isMut: true, + isSigner: false, + }, + { + name: "escrow", + isMut: true, + isSigner: false, + }, + { + name: "tokenAuthority", + isMut: true, + isSigner: false, + }, + { + name: "registeredVerifierPda", + isMut: true, + isSigner: false, + docs: [ + "Verifier config pda which needs ot exist Is not checked the relayer has complete freedom.", + ], + }, + ], + args: [ + { + name: "proof", + type: "bytes", + }, + { + name: "amount", + type: "bytes", + }, + { + name: "nullifiers", + type: { + array: [ + { + array: ["u8", 32], + }, + 2, + ], + }, + }, + { + name: "leaves", + type: { + array: [ + { + array: ["u8", 32], + }, + 2, + ], + }, + }, + { + name: "feeAmount", + type: "bytes", + }, + { + name: "rootIndex", + type: "u64", + }, + { + name: "relayerFee", + type: "u64", + }, + { + name: "encryptedUtxos", + type: "bytes", + }, + ], + }, + ], +}; diff --git a/light-system-programs/Anchor.toml b/light-system-programs/Anchor.toml index 5a7d1aea80..987500f983 100644 --- a/light-system-programs/Anchor.toml +++ b/light-system-programs/Anchor.toml @@ -22,6 +22,7 @@ merkle_tree_program = "JA5cjkRJ1euVi9xLWsCJVzsRzEkT8vcC4rqw9sVAo5d6" [test] startup_wait = 100_000 + [registry] url = "https://anchor.projectserum.com" @@ -29,5 +30,9 @@ url = "https://anchor.projectserum.com" cluster = "localnet" wallet = "~/.config/solana/id.json" # --resolveJsonModule ./tsconfig.json + [scripts] test = "yarn run ts-mocha -t 100000000 tests/functional_tests.ts --exit" + +[workspace] +types = "../light-sdk-ts/src/idls" From 7af7a8e8313d8eaf69dcf265782d9b93c69b64dd Mon Sep 17 00:00:00 2001 From: Michal Rostecki Date: Sat, 28 Jan 2023 12:28:58 +0800 Subject: [PATCH 2/2] light-sdk-ts: Use the autogenrated IDL --- light-sdk-ts/src/constants.ts | 12 ++++---- light-sdk-ts/src/idls/index.ts | 8 ++--- .../src/merkleTree/merkleTreeConfig.ts | 5 +--- .../src/test-utils/initLookUpTable.ts | 8 ++--- .../src/test-utils/setUpMerkleTree.ts | 29 +++++++++---------- light-sdk-ts/src/test-utils/testChecks.ts | 4 +-- light-sdk-ts/src/transaction.ts | 9 ++---- light-sdk-ts/src/verifiers/verifierOne.ts | 9 ++---- light-sdk-ts/src/verifiers/verifierTwo.ts | 11 +++---- light-sdk-ts/src/verifiers/verifierZero.ts | 9 ++---- light-sdk-ts/src/wallet/buildBalance.ts | 4 +-- 11 files changed, 45 insertions(+), 63 deletions(-) diff --git a/light-sdk-ts/src/constants.ts b/light-sdk-ts/src/constants.ts index e8910f2a98..71505e1004 100644 --- a/light-sdk-ts/src/constants.ts +++ b/light-sdk-ts/src/constants.ts @@ -7,9 +7,9 @@ import { } from "@solana/spl-token"; import { - VerifierProgramTwoIdl, - VerifierProgramOneIdl, - VerifierProgramZeroIdl, + VerifierProgramTwo, + VerifierProgramOne, + VerifierProgramZero, MerkleTreeProgram, } from "./idls/index"; @@ -51,9 +51,9 @@ export const verifierProgramTwoProgramId = new PublicKey( ); export type merkleTreeProgram = Program; -export type verifierProgramZero = Program; -export type verifierProgramOne = Program; -export type verifierProgramTwo = Program; +export type verifierProgramZero = Program; +export type verifierProgramOne = Program; +export type verifierProgramTwo = Program; export const confirmConfig: ConfirmOptions = { commitment: "confirmed", diff --git a/light-sdk-ts/src/idls/index.ts b/light-sdk-ts/src/idls/index.ts index a76de40325..c2999422bd 100644 --- a/light-sdk-ts/src/idls/index.ts +++ b/light-sdk-ts/src/idls/index.ts @@ -1,16 +1,16 @@ export { MerkleTreeProgram, - IDL as MERKLE_TREE_PROGRAM_IDL, + IDL as IDL_MERKLE_TREE_PROGRAM, } from "./merkle_tree_program"; export { VerifierProgramOne, - IDL as VERIFIER_PROGRAM_ONE_IDL, + IDL as IDL_VERIFIER_PROGRAM_ONE, } from "./verifier_program_one"; export { VerifierProgramTwo, - IDL as VERIFIER_PROGRAM_TWO_IDL, + IDL as IDL_VERIFIER_PROGRAM_TWO, } from "./verifier_program_two"; export { VerifierProgramZero, - IDL as VERIFIER_PROGRAM_ZERO_IDL, + IDL as IDL_VERIFIER_PROGRAM_ZERO, } from "./verifier_program_zero"; diff --git a/light-sdk-ts/src/merkleTree/merkleTreeConfig.ts b/light-sdk-ts/src/merkleTree/merkleTreeConfig.ts index 8480532371..a807b5be3d 100644 --- a/light-sdk-ts/src/merkleTree/merkleTreeConfig.ts +++ b/light-sdk-ts/src/merkleTree/merkleTreeConfig.ts @@ -1,8 +1,5 @@ import * as anchor from "@coral-xyz/anchor"; -import { - IDL_MERKLE_TREE_PROGRAM, - MerkleTreeProgram, -} from "../idls/merkle_tree_program"; +import { IDL_MERKLE_TREE_PROGRAM, MerkleTreeProgram } from "../idls/index"; import { assert, expect } from "chai"; const token = require("@solana/spl-token"); import { Connection, PublicKey, Keypair } from "@solana/web3.js"; diff --git a/light-sdk-ts/src/test-utils/initLookUpTable.ts b/light-sdk-ts/src/test-utils/initLookUpTable.ts index 552c9e2579..01ee9bf4c0 100644 --- a/light-sdk-ts/src/test-utils/initLookUpTable.ts +++ b/light-sdk-ts/src/test-utils/initLookUpTable.ts @@ -30,9 +30,7 @@ import { REGISTERED_VERIFIER_TWO_PDA, MINT, } from "../index"; -import VerifierProgramZero, { - VerifierProgramZeroIdl, -} from "../idls/verifier_program_zero"; +import { VerifierProgramZero, IDL_VERIFIER_PROGRAM_ZERO } from "../idls/index"; // TODO: create cli function to create a lookup table for apps // Probably only works for testing @@ -98,8 +96,8 @@ export async function initLookUpTable( payer: payerPubkey, recentSlot, })[0]; - const verifierProgramZero: Program = new Program( - VerifierProgramZero, + const verifierProgramZero: Program = new Program( + IDL_VERIFIER_PROGRAM_ZERO, verifierProgramZeroProgramId, ); let escrows = ( diff --git a/light-sdk-ts/src/test-utils/setUpMerkleTree.ts b/light-sdk-ts/src/test-utils/setUpMerkleTree.ts index d8d000e4da..14970952f4 100644 --- a/light-sdk-ts/src/test-utils/setUpMerkleTree.ts +++ b/light-sdk-ts/src/test-utils/setUpMerkleTree.ts @@ -1,14 +1,13 @@ import * as anchor from "@coral-xyz/anchor"; import { assert } from "chai"; -import VerifierProgramOne, { - VerifierProgramOneIdl, -} from "../idls/verifier_program_one"; -import VerifierProgramTwo, { - VerifierProgramTwoIdl, -} from "../idls/verifier_program_two"; -import VerifierProgramZero, { - VerifierProgramZeroIdl, -} from "../idls/verifier_program_zero"; +import { + VerifierProgramOne, + IDL_VERIFIER_PROGRAM_ONE, + VerifierProgramTwo, + IDL_VERIFIER_PROGRAM_TWO, + VerifierProgramZero, + IDL_VERIFIER_PROGRAM_ZERO, +} from "../idls/index"; import { MERKLE_TREE_KEY, @@ -28,12 +27,12 @@ import { import { MerkleTreeConfig } from "../merkleTree/merkleTreeConfig"; export async function setUpMerkleTree(provider: anchor.Provider) { - const verifierProgramZero: anchor.Program = - new anchor.Program(VerifierProgramZero, verifierProgramZeroProgramId); - const verifierProgramOne: anchor.Program = - new anchor.Program(VerifierProgramOne, verifierProgramOneProgramId); - const verifierProgramTwo: anchor.Program = - new anchor.Program(VerifierProgramTwo, verifierProgramTwoProgramId); + const verifierProgramZero: anchor.Program = + new anchor.Program(IDL_VERIFIER_PROGRAM_ZERO, verifierProgramZeroProgramId); + const verifierProgramOne: anchor.Program = + new anchor.Program(IDL_VERIFIER_PROGRAM_ONE, verifierProgramOneProgramId); + const verifierProgramTwo: anchor.Program = + new anchor.Program(IDL_VERIFIER_PROGRAM_TWO, verifierProgramTwoProgramId); var merkleTreeAccountInfoInit = await provider.connection.getAccountInfo( MERKLE_TREE_KEY, diff --git a/light-sdk-ts/src/test-utils/testChecks.ts b/light-sdk-ts/src/test-utils/testChecks.ts index d077d72d1a..7281bd22de 100644 --- a/light-sdk-ts/src/test-utils/testChecks.ts +++ b/light-sdk-ts/src/test-utils/testChecks.ts @@ -4,7 +4,7 @@ const token = require("@solana/spl-token"); import * as anchor from "@coral-xyz/anchor"; import { Connection, PublicKey } from "@solana/web3.js"; import { MerkleTree } from "merkleTree/merkleTree"; -import { MerkleTreeProgramIdl } from "idls"; +import { MerkleTreeProgram } from "idls"; /* * @@ -37,7 +37,7 @@ export async function checkMerkleTreeUpdateStateCreated({ MerkleTree: MerkleTree; leavesPdas: Array; current_instruction_index: number; - merkleTreeProgram: anchor.Program; + merkleTreeProgram: anchor.Program; }) { var merkleTreeTmpAccountInfo = await connection.getAccountInfo( merkleTreeUpdateState, diff --git a/light-sdk-ts/src/transaction.ts b/light-sdk-ts/src/transaction.ts index ce88f067d1..319a6101f8 100644 --- a/light-sdk-ts/src/transaction.ts +++ b/light-sdk-ts/src/transaction.ts @@ -35,10 +35,7 @@ import { Relayer, SolMerkleTree, } from "./index"; -import { - IDL_MERKLE_TREE_PROGRAM, - MerkleTreeProgram, -} from "./idls/merkle_tree_program"; +import { IDL_MERKLE_TREE_PROGRAM, MerkleTreeProgram } from "./idls/index"; export type transactionParameters = { inputUtxos?: Array; @@ -99,7 +96,7 @@ export class TransactionParameters implements transactionParameters { isWritable: boolean; pubkey: PublicKey; }[]; - merkleTreeProgram?: Program; + merkleTreeProgram?: Program; constructor({ merkleTreePubkey, @@ -182,7 +179,7 @@ export type LightInstance = { // TODO: add log option that enables logs // TODO: write functional test for every method export class Transaction { - merkleTreeProgram?: Program; + merkleTreeProgram?: Program; payer?: SolanaKeypair; poseidon: any; shuffleEnabled: Boolean; diff --git a/light-sdk-ts/src/verifiers/verifierOne.ts b/light-sdk-ts/src/verifiers/verifierOne.ts index 2cff88511e..88f5139ae5 100644 --- a/light-sdk-ts/src/verifiers/verifierOne.ts +++ b/light-sdk-ts/src/verifiers/verifierOne.ts @@ -1,7 +1,4 @@ -import { - VerifierProgramOne, - VerifierProgramOneIdl, -} from "../idls/verifier_program_one"; +import { VerifierProgramOne, IDL_VERIFIER_PROGRAM_ONE } from "../idls/index"; import * as anchor from "@coral-xyz/anchor"; import { Program } from "@coral-xyz/anchor"; @@ -13,7 +10,7 @@ import { Transaction } from "../transaction"; import { Verifier, PublicInputs } from "."; export class VerifierOne implements Verifier { - verifierProgram: Program; + verifierProgram: Program; wtnsGenPath: String; zkeyPath: String; calculateWtns: NodeRequire; @@ -24,7 +21,7 @@ export class VerifierOne implements Verifier { constructor() { try { this.verifierProgram = new Program( - VerifierProgramOne, + IDL_VERIFIER_PROGRAM_ONE, verifierProgramOneProgramId, ); } catch (error) { diff --git a/light-sdk-ts/src/verifiers/verifierTwo.ts b/light-sdk-ts/src/verifiers/verifierTwo.ts index 8e9e616847..a097649e03 100644 --- a/light-sdk-ts/src/verifiers/verifierTwo.ts +++ b/light-sdk-ts/src/verifiers/verifierTwo.ts @@ -1,7 +1,4 @@ -import { - VerifierProgramTwo, - VerifierProgramTwoIdl, -} from "../idls/verifier_program_two"; +import { VerifierProgramTwo, IDL_VERIFIER_PROGRAM_TWO } from "../idls/index"; import { Program } from "@coral-xyz/anchor"; import { hashAndTruncateToCircuit, @@ -12,7 +9,7 @@ import { Verifier, PublicInputs } from "."; import { BN } from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; export class VerifierTwo implements Verifier { - verifierProgram: Program; + verifierProgram: Program; wtnsGenPath: String; zkeyPath: String; calculateWtns: NodeRequire; @@ -21,7 +18,7 @@ export class VerifierTwo implements Verifier { pubkey: BN; constructor() { this.verifierProgram = new Program( - VerifierProgramTwo, + IDL_VERIFIER_PROGRAM_TWO, verifierProgramTwoProgramId, ); @@ -59,7 +56,7 @@ export class VerifierTwo implements Verifier { initVerifierProgram(): void { this.verifierProgram = new Program( - VerifierProgramTwo, + IDL_VERIFIER_PROGRAM_TWO, verifierProgramTwoProgramId, ); } diff --git a/light-sdk-ts/src/verifiers/verifierZero.ts b/light-sdk-ts/src/verifiers/verifierZero.ts index cb2be6e144..7a34f79c31 100644 --- a/light-sdk-ts/src/verifiers/verifierZero.ts +++ b/light-sdk-ts/src/verifiers/verifierZero.ts @@ -6,16 +6,13 @@ import { } from "../index"; import { Transaction } from "../transaction"; import { Verifier, PublicInputs } from "."; -import { - VerifierProgramZero, - VerifierProgramZeroIdl, -} from "../idls/verifier_program_zero"; +import { VerifierProgramZero, IDL_VERIFIER_PROGRAM_ZERO } from "../idls/index"; import { PublicKey } from "@solana/web3.js"; // Proofgen does not work within sdk needs circuit-build // TODO: bundle files in npm package // TODO: define verifier with an Idl thus absorb this functionality into the Transaction class export class VerifierZero implements Verifier { - verifierProgram: Program; + verifierProgram: Program; wtnsGenPath: String; zkeyPath: String; calculateWtns: NodeRequire; @@ -25,7 +22,7 @@ export class VerifierZero implements Verifier { constructor() { try { this.verifierProgram = new Program( - VerifierProgramZero, + IDL_VERIFIER_PROGRAM_ZERO, verifierProgramZeroProgramId, ); } catch (error) { diff --git a/light-sdk-ts/src/wallet/buildBalance.ts b/light-sdk-ts/src/wallet/buildBalance.ts index 5e3a2cd620..ad96dffad8 100644 --- a/light-sdk-ts/src/wallet/buildBalance.ts +++ b/light-sdk-ts/src/wallet/buildBalance.ts @@ -1,7 +1,7 @@ import { Utxo } from "../utxo"; import * as anchor from "@coral-xyz/anchor"; import { Keypair, PublicKey } from "@solana/web3.js"; -import { MerkleTreeProgramIdl } from "../idls/index"; +import { MerkleTreeProgram } from "../idls/index"; import { MerkleTree } from "merkleTree/merkleTree"; export async function getUnspentUtxo( @@ -9,7 +9,7 @@ export async function getUnspentUtxo( provider: anchor.Provider, KEYPAIR: Keypair, POSEIDON: any, - merkleTreeProgram: anchor.Program, + merkleTreeProgram: anchor.Program, merkleTree: MerkleTree, index: number, ) {