From 984de4bc48e394a704a4104b983fe5e6ff796265 Mon Sep 17 00:00:00 2001 From: ananas-block Date: Tue, 2 Jul 2024 00:46:21 +0100 Subject: [PATCH] cleanup, updated idls --- .../src/idl/light_compressed_token.ts | 242 ++---------------- .../src/idls/account_compression.ts | 162 ++++++------ .../src/idls/light_compressed_token.ts | 242 ++---------------- .../src/idls/light_system_program.ts | 184 ++++++++----- programs/system/src/errors.rs | 2 +- programs/system/src/invoke/append_state.rs | 6 +- programs/system/src/invoke/verify_signer.rs | 1 - .../tests/merkle_tree_tests.rs | 1 - 8 files changed, 238 insertions(+), 602 deletions(-) diff --git a/js/compressed-token/src/idl/light_compressed_token.ts b/js/compressed-token/src/idl/light_compressed_token.ts index af4fced761..622d482be2 100644 --- a/js/compressed-token/src/idl/light_compressed_token.ts +++ b/js/compressed-token/src/idl/light_compressed_token.ts @@ -626,24 +626,6 @@ export type LightCompressedToken = { ]; }, ]; - accounts: [ - { - name: 'RegisteredProgram'; - type: { - kind: 'struct'; - fields: [ - { - name: 'registeredProgramId'; - type: 'publicKey'; - }, - { - name: 'groupAuthorityPda'; - type: 'publicKey'; - }, - ]; - }; - }, - ]; types: [ { name: 'AccessMetadata'; @@ -658,7 +640,7 @@ export type LightCompressedToken = { { name: 'programOwner'; docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ]; type: 'publicKey'; }, @@ -1363,108 +1345,23 @@ export type LightCompressedToken = { errors: [ { code: 6000; - name: 'PublicKeyAmountMissmatch'; - msg: 'public keys and amounts must be of same length'; + name: 'SignerCheckFailed'; + msg: 'Signer check failed'; }, { code: 6001; - name: 'SignerCheckFailed'; - msg: 'SignerCheckFailed'; + name: 'CreateTransferInstructionFailed'; + msg: 'Create transfer instruction failed'; }, { code: 6002; - name: 'ComputeInputSumFailed'; - msg: 'ComputeInputSumFailed'; + name: 'AccountNotFound'; + msg: 'Account not found'; }, { code: 6003; - name: 'ComputeOutputSumFailed'; - msg: 'ComputeOutputSumFailed'; - }, - { - code: 6004; - name: 'ComputeCompressSumFailed'; - msg: 'ComputeCompressSumFailed'; - }, - { - code: 6005; - name: 'ComputeDecompressSumFailed'; - msg: 'ComputeDecompressSumFailed'; - }, - { - code: 6006; - name: 'SumCheckFailed'; - msg: 'SumCheckFailed'; - }, - { - code: 6007; - name: 'DecompressRecipientUndefinedForDecompress'; - msg: 'DecompressRecipientUndefinedForDecompress'; - }, - { - code: 6008; - name: 'CompressedPdaUndefinedForDecompress'; - msg: 'CompressedPdaUndefinedForDecompress'; - }, - { - code: 6009; - name: 'DeCompressAmountUndefinedForDecompress'; - msg: 'DeCompressAmountUndefinedForDecompress'; - }, - { - code: 6010; - name: 'CompressedPdaUndefinedForCompress'; - msg: 'CompressedPdaUndefinedForCompress'; - }, - { - code: 6011; - name: 'DeCompressAmountUndefinedForCompress'; - msg: 'DeCompressAmountUndefinedForCompress'; - }, - { - code: 6012; - name: 'DelegateUndefined'; - msg: 'DelegateUndefined while delegated amount is defined'; - }, - { - code: 6013; - name: 'DelegateSignerCheckFailed'; - msg: 'DelegateSignerCheckFailed'; - }, - { - code: 6014; - name: 'SplTokenSupplyMismatch'; - msg: 'SplTokenSupplyMismatch'; - }, - { - code: 6015; - name: 'HeapMemoryCheckFailed'; - msg: 'HeapMemoryCheckFailed'; - }, - { - code: 6016; - name: 'InstructionNotCallable'; - msg: 'The instruction is not callable'; - }, - { - code: 6017; - name: 'ArithmeticUnderflow'; - msg: 'ArithmeticUnderflow'; - }, - { - code: 6018; - name: 'InvalidDelegate'; - msg: 'InvalidDelegate'; - }, - { - code: 6019; - name: 'HashToFieldError'; - msg: 'HashToFieldError'; - }, - { - code: 6020; - name: 'InvalidMint'; - msg: 'InvalidMint'; + name: 'SerializationError'; + msg: 'Serialization error'; }, ]; }; @@ -2096,24 +1993,6 @@ export const IDL: LightCompressedToken = { ], }, ], - accounts: [ - { - name: 'RegisteredProgram', - type: { - kind: 'struct', - fields: [ - { - name: 'registeredProgramId', - type: 'publicKey', - }, - { - name: 'groupAuthorityPda', - type: 'publicKey', - }, - ], - }, - }, - ], types: [ { name: 'AccessMetadata', @@ -2128,7 +2007,7 @@ export const IDL: LightCompressedToken = { { name: 'programOwner', docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ], type: 'publicKey', }, @@ -2838,108 +2717,23 @@ export const IDL: LightCompressedToken = { errors: [ { code: 6000, - name: 'PublicKeyAmountMissmatch', - msg: 'public keys and amounts must be of same length', + name: 'SignerCheckFailed', + msg: 'Signer check failed', }, { code: 6001, - name: 'SignerCheckFailed', - msg: 'SignerCheckFailed', + name: 'CreateTransferInstructionFailed', + msg: 'Create transfer instruction failed', }, { code: 6002, - name: 'ComputeInputSumFailed', - msg: 'ComputeInputSumFailed', + name: 'AccountNotFound', + msg: 'Account not found', }, { code: 6003, - name: 'ComputeOutputSumFailed', - msg: 'ComputeOutputSumFailed', - }, - { - code: 6004, - name: 'ComputeCompressSumFailed', - msg: 'ComputeCompressSumFailed', - }, - { - code: 6005, - name: 'ComputeDecompressSumFailed', - msg: 'ComputeDecompressSumFailed', - }, - { - code: 6006, - name: 'SumCheckFailed', - msg: 'SumCheckFailed', - }, - { - code: 6007, - name: 'DecompressRecipientUndefinedForDecompress', - msg: 'DecompressRecipientUndefinedForDecompress', - }, - { - code: 6008, - name: 'CompressedPdaUndefinedForDecompress', - msg: 'CompressedPdaUndefinedForDecompress', - }, - { - code: 6009, - name: 'DeCompressAmountUndefinedForDecompress', - msg: 'DeCompressAmountUndefinedForDecompress', - }, - { - code: 6010, - name: 'CompressedPdaUndefinedForCompress', - msg: 'CompressedPdaUndefinedForCompress', - }, - { - code: 6011, - name: 'DeCompressAmountUndefinedForCompress', - msg: 'DeCompressAmountUndefinedForCompress', - }, - { - code: 6012, - name: 'DelegateUndefined', - msg: 'DelegateUndefined while delegated amount is defined', - }, - { - code: 6013, - name: 'DelegateSignerCheckFailed', - msg: 'DelegateSignerCheckFailed', - }, - { - code: 6014, - name: 'SplTokenSupplyMismatch', - msg: 'SplTokenSupplyMismatch', - }, - { - code: 6015, - name: 'HeapMemoryCheckFailed', - msg: 'HeapMemoryCheckFailed', - }, - { - code: 6016, - name: 'InstructionNotCallable', - msg: 'The instruction is not callable', - }, - { - code: 6017, - name: 'ArithmeticUnderflow', - msg: 'ArithmeticUnderflow', - }, - { - code: 6018, - name: 'InvalidDelegate', - msg: 'InvalidDelegate', - }, - { - code: 6019, - name: 'HashToFieldError', - msg: 'HashToFieldError', - }, - { - code: 6020, - name: 'InvalidMint', - msg: 'InvalidMint', + name: 'SerializationError', + msg: 'Serialization error', }, ], }; diff --git a/js/stateless.js/src/idls/account_compression.ts b/js/stateless.js/src/idls/account_compression.ts index 105bc8afec..fae27957f8 100644 --- a/js/stateless.js/src/idls/account_compression.ts +++ b/js/stateless.js/src/idls/account_compression.ts @@ -296,7 +296,8 @@ export type AccountCompression = { { name: 'initializeGroupAuthority'; docs: [ - 'initialize group (a group can be used to give multiple programs access to the same Merkle trees by registering the programs to the group)', + 'initialize group (a group can be used to give multiple programs access', + 'to the same Merkle trees by registering the programs to the group)', ]; accounts: [ { @@ -531,7 +532,7 @@ export type AccountCompression = { }; }, { - name: 'indices'; + name: 'leafIndices'; type: { vec: 'u64'; }; @@ -632,22 +633,6 @@ export type AccountCompression = { }, ]; accounts: [ - { - name: 'groupAuthority'; - type: { - kind: 'struct'; - fields: [ - { - name: 'authority'; - type: 'publicKey'; - }, - { - name: 'seed'; - type: 'publicKey'; - }, - ]; - }; - }, { name: 'registeredProgram'; type: { @@ -677,7 +662,7 @@ export type AccountCompression = { { name: 'programOwner'; docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ]; type: 'publicKey'; }, @@ -698,6 +683,22 @@ export type AccountCompression = { ]; }; }, + { + name: 'groupAuthority'; + type: { + kind: 'struct'; + fields: [ + { + name: 'authority'; + type: 'publicKey'; + }, + { + name: 'seed'; + type: 'publicKey'; + }, + ]; + }; + }, { name: 'merkleTreeMetadata'; type: { @@ -987,96 +988,86 @@ export type AccountCompression = { }, { code: 6002; - name: 'InvalidVerifier'; - msg: 'InvalidVerifier'; - }, - { - code: 6003; name: 'NumberOfLeavesMismatch'; msg: 'Leaves <> remaining accounts mismatch. The number of remaining accounts must match the number of leaves.'; }, { - code: 6004; + code: 6003; name: 'InvalidNoopPubkey'; msg: 'Provided noop program public key is invalid'; }, { - code: 6005; + code: 6004; name: 'NumberOfChangeLogIndicesMismatch'; msg: 'Number of change log indices mismatch'; }, { - code: 6006; + code: 6005; name: 'NumberOfIndicesMismatch'; msg: 'Number of indices mismatch'; }, { - code: 6007; + code: 6006; name: 'NumberOfProofsMismatch'; msg: 'NumberOfProofsMismatch'; }, { - code: 6008; + code: 6007; name: 'InvalidMerkleProof'; msg: 'InvalidMerkleProof'; }, { - code: 6009; - name: 'InvalidMerkleTree'; - msg: 'InvalidMerkleTree'; - }, - { - code: 6010; + code: 6008; name: 'LeafNotFound'; msg: 'Could not find the leaf in the queue'; }, { - code: 6011; + code: 6009; name: 'MerkleTreeAndQueueNotAssociated'; msg: 'MerkleTreeAndQueueNotAssociated'; }, { - code: 6012; + code: 6010; name: 'MerkleTreeAlreadyRolledOver'; msg: 'MerkleTreeAlreadyRolledOver'; }, { - code: 6013; + code: 6011; name: 'NotReadyForRollover'; msg: 'NotReadyForRollover'; }, { - code: 6014; + code: 6012; name: 'RolloverNotConfigured'; msg: 'RolloverNotConfigured'; }, { - code: 6015; + code: 6013; name: 'NotAllLeavesProcessed'; msg: 'NotAllLeavesProcessed'; }, { - code: 6016; + code: 6014; name: 'InvalidQueueType'; msg: 'InvalidQueueType'; }, { - code: 6017; + code: 6015; name: 'InputElementsEmpty'; msg: 'InputElementsEmpty'; }, { - code: 6018; + code: 6016; name: 'NoLeavesForMerkleTree'; msg: 'NoLeavesForMerkleTree'; }, { - code: 6019; + code: 6017; name: 'SizeMismatch'; msg: 'SizeMismatch'; }, { - code: 6020; + code: 6018; name: 'InsufficientRolloverFee'; msg: 'InsufficientRolloverFee'; }, @@ -1381,7 +1372,8 @@ export const IDL: AccountCompression = { { name: 'initializeGroupAuthority', docs: [ - 'initialize group (a group can be used to give multiple programs access to the same Merkle trees by registering the programs to the group)', + 'initialize group (a group can be used to give multiple programs access', + 'to the same Merkle trees by registering the programs to the group)', ], accounts: [ { @@ -1616,7 +1608,7 @@ export const IDL: AccountCompression = { }, }, { - name: 'indices', + name: 'leafIndices', type: { vec: 'u64', }, @@ -1717,22 +1709,6 @@ export const IDL: AccountCompression = { }, ], accounts: [ - { - name: 'groupAuthority', - type: { - kind: 'struct', - fields: [ - { - name: 'authority', - type: 'publicKey', - }, - { - name: 'seed', - type: 'publicKey', - }, - ], - }, - }, { name: 'registeredProgram', type: { @@ -1762,7 +1738,7 @@ export const IDL: AccountCompression = { { name: 'programOwner', docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ], type: 'publicKey', }, @@ -1783,6 +1759,22 @@ export const IDL: AccountCompression = { ], }, }, + { + name: 'groupAuthority', + type: { + kind: 'struct', + fields: [ + { + name: 'authority', + type: 'publicKey', + }, + { + name: 'seed', + type: 'publicKey', + }, + ], + }, + }, { name: 'merkleTreeMetadata', type: { @@ -2072,96 +2064,86 @@ export const IDL: AccountCompression = { }, { code: 6002, - name: 'InvalidVerifier', - msg: 'InvalidVerifier', - }, - { - code: 6003, name: 'NumberOfLeavesMismatch', msg: 'Leaves <> remaining accounts mismatch. The number of remaining accounts must match the number of leaves.', }, { - code: 6004, + code: 6003, name: 'InvalidNoopPubkey', msg: 'Provided noop program public key is invalid', }, { - code: 6005, + code: 6004, name: 'NumberOfChangeLogIndicesMismatch', msg: 'Number of change log indices mismatch', }, { - code: 6006, + code: 6005, name: 'NumberOfIndicesMismatch', msg: 'Number of indices mismatch', }, { - code: 6007, + code: 6006, name: 'NumberOfProofsMismatch', msg: 'NumberOfProofsMismatch', }, { - code: 6008, + code: 6007, name: 'InvalidMerkleProof', msg: 'InvalidMerkleProof', }, { - code: 6009, - name: 'InvalidMerkleTree', - msg: 'InvalidMerkleTree', - }, - { - code: 6010, + code: 6008, name: 'LeafNotFound', msg: 'Could not find the leaf in the queue', }, { - code: 6011, + code: 6009, name: 'MerkleTreeAndQueueNotAssociated', msg: 'MerkleTreeAndQueueNotAssociated', }, { - code: 6012, + code: 6010, name: 'MerkleTreeAlreadyRolledOver', msg: 'MerkleTreeAlreadyRolledOver', }, { - code: 6013, + code: 6011, name: 'NotReadyForRollover', msg: 'NotReadyForRollover', }, { - code: 6014, + code: 6012, name: 'RolloverNotConfigured', msg: 'RolloverNotConfigured', }, { - code: 6015, + code: 6013, name: 'NotAllLeavesProcessed', msg: 'NotAllLeavesProcessed', }, { - code: 6016, + code: 6014, name: 'InvalidQueueType', msg: 'InvalidQueueType', }, { - code: 6017, + code: 6015, name: 'InputElementsEmpty', msg: 'InputElementsEmpty', }, { - code: 6018, + code: 6016, name: 'NoLeavesForMerkleTree', msg: 'NoLeavesForMerkleTree', }, { - code: 6019, + code: 6017, name: 'SizeMismatch', msg: 'SizeMismatch', }, { - code: 6020, + code: 6018, name: 'InsufficientRolloverFee', msg: 'InsufficientRolloverFee', }, diff --git a/js/stateless.js/src/idls/light_compressed_token.ts b/js/stateless.js/src/idls/light_compressed_token.ts index af4fced761..622d482be2 100644 --- a/js/stateless.js/src/idls/light_compressed_token.ts +++ b/js/stateless.js/src/idls/light_compressed_token.ts @@ -626,24 +626,6 @@ export type LightCompressedToken = { ]; }, ]; - accounts: [ - { - name: 'RegisteredProgram'; - type: { - kind: 'struct'; - fields: [ - { - name: 'registeredProgramId'; - type: 'publicKey'; - }, - { - name: 'groupAuthorityPda'; - type: 'publicKey'; - }, - ]; - }; - }, - ]; types: [ { name: 'AccessMetadata'; @@ -658,7 +640,7 @@ export type LightCompressedToken = { { name: 'programOwner'; docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ]; type: 'publicKey'; }, @@ -1363,108 +1345,23 @@ export type LightCompressedToken = { errors: [ { code: 6000; - name: 'PublicKeyAmountMissmatch'; - msg: 'public keys and amounts must be of same length'; + name: 'SignerCheckFailed'; + msg: 'Signer check failed'; }, { code: 6001; - name: 'SignerCheckFailed'; - msg: 'SignerCheckFailed'; + name: 'CreateTransferInstructionFailed'; + msg: 'Create transfer instruction failed'; }, { code: 6002; - name: 'ComputeInputSumFailed'; - msg: 'ComputeInputSumFailed'; + name: 'AccountNotFound'; + msg: 'Account not found'; }, { code: 6003; - name: 'ComputeOutputSumFailed'; - msg: 'ComputeOutputSumFailed'; - }, - { - code: 6004; - name: 'ComputeCompressSumFailed'; - msg: 'ComputeCompressSumFailed'; - }, - { - code: 6005; - name: 'ComputeDecompressSumFailed'; - msg: 'ComputeDecompressSumFailed'; - }, - { - code: 6006; - name: 'SumCheckFailed'; - msg: 'SumCheckFailed'; - }, - { - code: 6007; - name: 'DecompressRecipientUndefinedForDecompress'; - msg: 'DecompressRecipientUndefinedForDecompress'; - }, - { - code: 6008; - name: 'CompressedPdaUndefinedForDecompress'; - msg: 'CompressedPdaUndefinedForDecompress'; - }, - { - code: 6009; - name: 'DeCompressAmountUndefinedForDecompress'; - msg: 'DeCompressAmountUndefinedForDecompress'; - }, - { - code: 6010; - name: 'CompressedPdaUndefinedForCompress'; - msg: 'CompressedPdaUndefinedForCompress'; - }, - { - code: 6011; - name: 'DeCompressAmountUndefinedForCompress'; - msg: 'DeCompressAmountUndefinedForCompress'; - }, - { - code: 6012; - name: 'DelegateUndefined'; - msg: 'DelegateUndefined while delegated amount is defined'; - }, - { - code: 6013; - name: 'DelegateSignerCheckFailed'; - msg: 'DelegateSignerCheckFailed'; - }, - { - code: 6014; - name: 'SplTokenSupplyMismatch'; - msg: 'SplTokenSupplyMismatch'; - }, - { - code: 6015; - name: 'HeapMemoryCheckFailed'; - msg: 'HeapMemoryCheckFailed'; - }, - { - code: 6016; - name: 'InstructionNotCallable'; - msg: 'The instruction is not callable'; - }, - { - code: 6017; - name: 'ArithmeticUnderflow'; - msg: 'ArithmeticUnderflow'; - }, - { - code: 6018; - name: 'InvalidDelegate'; - msg: 'InvalidDelegate'; - }, - { - code: 6019; - name: 'HashToFieldError'; - msg: 'HashToFieldError'; - }, - { - code: 6020; - name: 'InvalidMint'; - msg: 'InvalidMint'; + name: 'SerializationError'; + msg: 'Serialization error'; }, ]; }; @@ -2096,24 +1993,6 @@ export const IDL: LightCompressedToken = { ], }, ], - accounts: [ - { - name: 'RegisteredProgram', - type: { - kind: 'struct', - fields: [ - { - name: 'registeredProgramId', - type: 'publicKey', - }, - { - name: 'groupAuthorityPda', - type: 'publicKey', - }, - ], - }, - }, - ], types: [ { name: 'AccessMetadata', @@ -2128,7 +2007,7 @@ export const IDL: LightCompressedToken = { { name: 'programOwner', docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ], type: 'publicKey', }, @@ -2838,108 +2717,23 @@ export const IDL: LightCompressedToken = { errors: [ { code: 6000, - name: 'PublicKeyAmountMissmatch', - msg: 'public keys and amounts must be of same length', + name: 'SignerCheckFailed', + msg: 'Signer check failed', }, { code: 6001, - name: 'SignerCheckFailed', - msg: 'SignerCheckFailed', + name: 'CreateTransferInstructionFailed', + msg: 'Create transfer instruction failed', }, { code: 6002, - name: 'ComputeInputSumFailed', - msg: 'ComputeInputSumFailed', + name: 'AccountNotFound', + msg: 'Account not found', }, { code: 6003, - name: 'ComputeOutputSumFailed', - msg: 'ComputeOutputSumFailed', - }, - { - code: 6004, - name: 'ComputeCompressSumFailed', - msg: 'ComputeCompressSumFailed', - }, - { - code: 6005, - name: 'ComputeDecompressSumFailed', - msg: 'ComputeDecompressSumFailed', - }, - { - code: 6006, - name: 'SumCheckFailed', - msg: 'SumCheckFailed', - }, - { - code: 6007, - name: 'DecompressRecipientUndefinedForDecompress', - msg: 'DecompressRecipientUndefinedForDecompress', - }, - { - code: 6008, - name: 'CompressedPdaUndefinedForDecompress', - msg: 'CompressedPdaUndefinedForDecompress', - }, - { - code: 6009, - name: 'DeCompressAmountUndefinedForDecompress', - msg: 'DeCompressAmountUndefinedForDecompress', - }, - { - code: 6010, - name: 'CompressedPdaUndefinedForCompress', - msg: 'CompressedPdaUndefinedForCompress', - }, - { - code: 6011, - name: 'DeCompressAmountUndefinedForCompress', - msg: 'DeCompressAmountUndefinedForCompress', - }, - { - code: 6012, - name: 'DelegateUndefined', - msg: 'DelegateUndefined while delegated amount is defined', - }, - { - code: 6013, - name: 'DelegateSignerCheckFailed', - msg: 'DelegateSignerCheckFailed', - }, - { - code: 6014, - name: 'SplTokenSupplyMismatch', - msg: 'SplTokenSupplyMismatch', - }, - { - code: 6015, - name: 'HeapMemoryCheckFailed', - msg: 'HeapMemoryCheckFailed', - }, - { - code: 6016, - name: 'InstructionNotCallable', - msg: 'The instruction is not callable', - }, - { - code: 6017, - name: 'ArithmeticUnderflow', - msg: 'ArithmeticUnderflow', - }, - { - code: 6018, - name: 'InvalidDelegate', - msg: 'InvalidDelegate', - }, - { - code: 6019, - name: 'HashToFieldError', - msg: 'HashToFieldError', - }, - { - code: 6020, - name: 'InvalidMint', - msg: 'InvalidMint', + name: 'SerializationError', + msg: 'Serialization error', }, ], }; diff --git a/js/stateless.js/src/idls/light_system_program.ts b/js/stateless.js/src/idls/light_system_program.ts index 451efb6e1f..03ce77220b 100644 --- a/js/stateless.js/src/idls/light_system_program.ts +++ b/js/stateless.js/src/idls/light_system_program.ts @@ -42,6 +42,9 @@ export type LightSystemProgram = { name: 'feePayer'; isMut: true; isSigner: true; + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ]; }, { name: 'authority'; @@ -62,23 +65,36 @@ export type LightSystemProgram = { name: 'accountCompressionAuthority'; isMut: false; isSigner: false; + docs: [ + 'This pda is used to invoke the account compression program.', + ]; }, { name: 'accountCompressionProgram'; isMut: false; isSigner: false; + docs: ['Merkle trees.']; }, { name: 'solPoolPda'; isMut: true; isSigner: false; isOptional: true; + docs: [ + 'Sol pool pda is used to store compressed sol.', + "It's only required when compressing or decompressing sol.", + ]; }, { name: 'decompressionRecipient'; isMut: true; isSigner: false; isOptional: true; + docs: [ + 'Only needs to be provided for decompression as a recipient for the', + 'decompressed sol.', + 'Compressed sol originate from authority.', + ]; }, { name: 'systemProgram'; @@ -100,6 +116,9 @@ export type LightSystemProgram = { name: 'feePayer'; isMut: true; isSigner: true; + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ]; }, { name: 'authority'; @@ -174,6 +193,9 @@ export type LightSystemProgram = { name: 'feePayer'; isMut: true; isSigner: true; + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ]; }, { name: 'authority'; @@ -194,23 +216,36 @@ export type LightSystemProgram = { name: 'accountCompressionAuthority'; isMut: false; isSigner: false; + docs: [ + 'This pda is used to invoke the account compression program.', + ]; }, { name: 'accountCompressionProgram'; isMut: false; isSigner: false; + docs: ['Merkle trees.']; }, { name: 'solPoolPda'; isMut: true; isSigner: false; isOptional: true; + docs: [ + 'Sol pool pda is used to store compressed sol.', + "It's only required when compressing or decompressing sol.", + ]; }, { name: 'decompressionRecipient'; isMut: true; isSigner: false; isOptional: true; + docs: [ + 'Only needs to be provided for decompression as a recipient for the', + 'decompressed sol.', + 'Compressed sol originate from authority.', + ]; }, { name: 'systemProgram'; @@ -241,22 +276,6 @@ export type LightSystemProgram = { }, ]; accounts: [ - { - name: 'registeredProgram'; - type: { - kind: 'struct'; - fields: [ - { - name: 'registeredProgramId'; - type: 'publicKey'; - }, - { - name: 'groupAuthorityPda'; - type: 'publicKey'; - }, - ]; - }; - }, { name: 'stateMerkleTreeAccount'; docs: [ @@ -321,7 +340,7 @@ export type LightSystemProgram = { { name: 'programOwner'; docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ]; type: 'publicKey'; }, @@ -925,7 +944,7 @@ export type LightSystemProgram = { { code: 6019; name: 'ProofIsSome'; - msg: 'ProofIsSome'; + msg: 'Proof is some but no input compressed accounts or new addresses provided.'; }, { code: 6020; @@ -939,44 +958,59 @@ export type LightSystemProgram = { }, { code: 6022; - name: 'CpiContextProofMismatch'; - msg: 'CpiContextMismatch'; - }, - { - code: 6023; name: 'CpiContextEmpty'; msg: 'CpiContextEmpty'; }, { - code: 6024; + code: 6023; name: 'CpiContextMissing'; msg: 'CpiContextMissing'; }, { - code: 6025; + code: 6024; name: 'DecompressionRecipienDefined'; msg: 'DecompressionRecipienDefined'; }, { - code: 6026; + code: 6025; name: 'SolPoolPdaDefined'; msg: 'SolPoolPdaDefined'; }, { - code: 6027; + code: 6026; name: 'AppendStateFailed'; msg: 'AppendStateFailed'; }, { - code: 6028; + code: 6027; name: 'InstructionNotCallable'; msg: 'The instruction is not callable'; }, { - code: 6029; + code: 6028; name: 'CpiContextFeePayerMismatch'; msg: 'CpiContextFeePayerMismatch'; }, + { + code: 6029; + name: 'CpiContextAssociatedMerkleTreeMismatch'; + msg: 'CpiContextAssociatedMerkleTreeMismatch'; + }, + { + code: 6030; + name: 'NoInputs'; + msg: 'NoInputs'; + }, + { + code: 6031; + name: 'InputMerkleTreeIndicesNotInOrder'; + msg: 'Input merkle tree indices are not in ascending order.'; + }, + { + code: 6032; + name: 'OutputMerkleTreeIndicesNotInOrder'; + msg: 'Output merkle tree indices are not in ascending order.'; + }, ]; }; @@ -1024,6 +1058,9 @@ export const IDL: LightSystemProgram = { name: 'feePayer', isMut: true, isSigner: true, + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ], }, { name: 'authority', @@ -1044,23 +1081,36 @@ export const IDL: LightSystemProgram = { name: 'accountCompressionAuthority', isMut: false, isSigner: false, + docs: [ + 'This pda is used to invoke the account compression program.', + ], }, { name: 'accountCompressionProgram', isMut: false, isSigner: false, + docs: ['Merkle trees.'], }, { name: 'solPoolPda', isMut: true, isSigner: false, isOptional: true, + docs: [ + 'Sol pool pda is used to store compressed sol.', + "It's only required when compressing or decompressing sol.", + ], }, { name: 'decompressionRecipient', isMut: true, isSigner: false, isOptional: true, + docs: [ + 'Only needs to be provided for decompression as a recipient for the', + 'decompressed sol.', + 'Compressed sol originate from authority.', + ], }, { name: 'systemProgram', @@ -1082,6 +1132,9 @@ export const IDL: LightSystemProgram = { name: 'feePayer', isMut: true, isSigner: true, + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ], }, { name: 'authority', @@ -1156,6 +1209,9 @@ export const IDL: LightSystemProgram = { name: 'feePayer', isMut: true, isSigner: true, + docs: [ + 'Fee payer needs to be mutable to pay rollover and protocol fees.', + ], }, { name: 'authority', @@ -1176,23 +1232,36 @@ export const IDL: LightSystemProgram = { name: 'accountCompressionAuthority', isMut: false, isSigner: false, + docs: [ + 'This pda is used to invoke the account compression program.', + ], }, { name: 'accountCompressionProgram', isMut: false, isSigner: false, + docs: ['Merkle trees.'], }, { name: 'solPoolPda', isMut: true, isSigner: false, isOptional: true, + docs: [ + 'Sol pool pda is used to store compressed sol.', + "It's only required when compressing or decompressing sol.", + ], }, { name: 'decompressionRecipient', isMut: true, isSigner: false, isOptional: true, + docs: [ + 'Only needs to be provided for decompression as a recipient for the', + 'decompressed sol.', + 'Compressed sol originate from authority.', + ], }, { name: 'systemProgram', @@ -1223,22 +1292,6 @@ export const IDL: LightSystemProgram = { }, ], accounts: [ - { - name: 'registeredProgram', - type: { - kind: 'struct', - fields: [ - { - name: 'registeredProgramId', - type: 'publicKey', - }, - { - name: 'groupAuthorityPda', - type: 'publicKey', - }, - ], - }, - }, { name: 'stateMerkleTreeAccount', docs: [ @@ -1303,7 +1356,7 @@ export const IDL: LightSystemProgram = { { name: 'programOwner', docs: [ - 'Delegate of the Merkle tree. This will be used for program owned Merkle trees.', + 'Program owner of the Merkle tree. This will be used for program owned Merkle trees.', ], type: 'publicKey', }, @@ -1912,7 +1965,7 @@ export const IDL: LightSystemProgram = { { code: 6019, name: 'ProofIsSome', - msg: 'ProofIsSome', + msg: 'Proof is some but no input compressed accounts or new addresses provided.', }, { code: 6020, @@ -1926,43 +1979,58 @@ export const IDL: LightSystemProgram = { }, { code: 6022, - name: 'CpiContextProofMismatch', - msg: 'CpiContextMismatch', - }, - { - code: 6023, name: 'CpiContextEmpty', msg: 'CpiContextEmpty', }, { - code: 6024, + code: 6023, name: 'CpiContextMissing', msg: 'CpiContextMissing', }, { - code: 6025, + code: 6024, name: 'DecompressionRecipienDefined', msg: 'DecompressionRecipienDefined', }, { - code: 6026, + code: 6025, name: 'SolPoolPdaDefined', msg: 'SolPoolPdaDefined', }, { - code: 6027, + code: 6026, name: 'AppendStateFailed', msg: 'AppendStateFailed', }, { - code: 6028, + code: 6027, name: 'InstructionNotCallable', msg: 'The instruction is not callable', }, { - code: 6029, + code: 6028, name: 'CpiContextFeePayerMismatch', msg: 'CpiContextFeePayerMismatch', }, + { + code: 6029, + name: 'CpiContextAssociatedMerkleTreeMismatch', + msg: 'CpiContextAssociatedMerkleTreeMismatch', + }, + { + code: 6030, + name: 'NoInputs', + msg: 'NoInputs', + }, + { + code: 6031, + name: 'InputMerkleTreeIndicesNotInOrder', + msg: 'Input merkle tree indices are not in ascending order.', + }, + { + code: 6032, + name: 'OutputMerkleTreeIndicesNotInOrder', + msg: 'Output merkle tree indices are not in ascending order.', + }, ], }; diff --git a/programs/system/src/errors.rs b/programs/system/src/errors.rs index 3113bc7551..523a152442 100644 --- a/programs/system/src/errors.rs +++ b/programs/system/src/errors.rs @@ -68,5 +68,5 @@ pub enum SystemProgramError { #[msg("Input merkle tree indices are not in ascending order.")] InputMerkleTreeIndicesNotInOrder, #[msg("Output merkle tree indices are not in ascending order.")] - OutputMerkleTreeIndicesNotInOrder, // TODO: adapt failing tests + OutputMerkleTreeIndicesNotInOrder, } diff --git a/programs/system/src/invoke/append_state.rs b/programs/system/src/invoke/append_state.rs index 7a63e7a034..e080292bb8 100644 --- a/programs/system/src/invoke/append_state.rs +++ b/programs/system/src/invoke/append_state.rs @@ -118,7 +118,7 @@ pub fn create_cpi_accounts_and_instruction_data<'a>( let num_leaves = output_compressed_account_hashes.len(); let mut instruction_data = Vec::::with_capacity(12 + 33 * num_leaves); let mut hashed_merkle_tree = [0u8; 32]; - let mut num_accounts = 0; + let mut index_merkle_tree_account = 0; // Anchor instruction signature. instruction_data.extend_from_slice(&[199, 144, 10, 82, 247, 142, 143, 7]); @@ -162,7 +162,7 @@ pub fn create_cpi_accounts_and_instruction_data<'a>( account_infos.push(account_info); num_leaves_in_tree = 0; - num_accounts += 1; + index_merkle_tree_account += 1; } else { // Check 2. // Output Merkle tree indices must be in order since we use the @@ -220,7 +220,7 @@ pub fn create_cpi_accounts_and_instruction_data<'a>( &output_compressed_account_indices[j], )?; // - 1 since we want the index of the next account index. - instruction_data.extend_from_slice(&[num_accounts - 1]); + instruction_data.extend_from_slice(&[index_merkle_tree_account - 1]); instruction_data.extend_from_slice(&output_compressed_account_hashes[j]); } Ok(instruction_data) diff --git a/programs/system/src/invoke/verify_signer.rs b/programs/system/src/invoke/verify_signer.rs index 02632d1e4b..f141eaeabf 100644 --- a/programs/system/src/invoke/verify_signer.rs +++ b/programs/system/src/invoke/verify_signer.rs @@ -17,7 +17,6 @@ pub fn input_compressed_accounts_signer_check( .try_for_each( |compressed_account_with_context: &PackedCompressedAccountWithMerkleContext| { if compressed_account_with_context.compressed_account.owner == *authority { - println!("ok"); Ok(()) } else { msg!( diff --git a/test-programs/account-compression-test/tests/merkle_tree_tests.rs b/test-programs/account-compression-test/tests/merkle_tree_tests.rs index 048e4851cf..9176aeed45 100644 --- a/test-programs/account-compression-test/tests/merkle_tree_tests.rs +++ b/test-programs/account-compression-test/tests/merkle_tree_tests.rs @@ -1743,7 +1743,6 @@ pub async fn functional_3_append_leaves_to_merkle_tree( .0 .push(leaf.clone()); } - println!("leaves len {}", leaves.len()); let instruction = [create_insert_leaves_instruction( leaves.clone(), context.get_payer().pubkey(),