diff --git a/clients/js/src/generated/instructions/execute.ts b/clients/js/src/generated/instructions/execute.ts index 21b56c3..2a69289 100644 --- a/clients/js/src/generated/instructions/execute.ts +++ b/clients/js/src/generated/instructions/execute.ts @@ -39,7 +39,7 @@ import { type ResolvedInstructionAccount, type ResolvedInstructionAccountMeta, } from '@solana/kit/program-client-core'; -import { resolveMessageAccounts } from '../../hooked'; +import { resolveExecutionMessageAccounts } from '../../hooked'; import { MESSAGE_EXECUTOR_PROGRAM_ADDRESS } from '../programs'; export const EXECUTE_DISCRIMINATOR = 0; @@ -147,7 +147,7 @@ export function getExecuteInstruction< } // Remaining accounts. - const remainingAccounts: AccountMeta[] = resolveMessageAccounts(resolverScope); + const remainingAccounts: AccountMeta[] = resolveExecutionMessageAccounts(resolverScope); return Object.freeze({ accounts: [ diff --git a/clients/js/src/generated/instructions/submit.ts b/clients/js/src/generated/instructions/submit.ts index 57d5a79..df2d0b7 100644 --- a/clients/js/src/generated/instructions/submit.ts +++ b/clients/js/src/generated/instructions/submit.ts @@ -29,7 +29,7 @@ import { type InstructionWithData, type ReadonlyUint8Array, } from '@solana/kit'; -import { resolveSubmitMessageAccounts } from '../../hooked'; +import { resolveAuthorizationMessageAccounts } from '../../hooked'; import { ED25519_SIGNER_PROGRAM_ADDRESS } from '../programs'; export const SUBMIT_DISCRIMINATOR = 0; @@ -93,7 +93,7 @@ export function getSubmitInstruction { - const message = decodeV1Message(scope.args.message, 'The message executor only supports v1 inner messages'); +export const resolveExecutionMessageAccounts = (scope: MessageAccountsResolverScope): AccountMeta[] => { + const message = decodeV1Message(scope.args.message, 'The message executor only supports v1 execution messages'); return getStaticAccountMetas(message); }; /** - * Resolves the remaining `Submit` accounts from the wrapped message's static account list. - * Account order and writable privileges match the wrapped message, while signer privileges are - * removed because the wrapped signers are not signers of the outer transaction. + * Resolves the remaining `Submit` accounts from the authorization message's static account list. + * Account order and writable privileges match the authorization message, while signer privileges + * are removed because the authorization message's signers do not sign the relay transaction. * Throws for a message that is not v1, which the signer program rejects. * * Mirrors `signer/client/src/instruction.rs`. */ -export const resolveSubmitMessageAccounts = (scope: MessageAccountsResolverScope): AccountMeta[] => { - const message = decodeV1Message(scope.args.message, 'The signer program only supports v1 wrapped messages'); +export const resolveAuthorizationMessageAccounts = (scope: MessageAccountsResolverScope): AccountMeta[] => { + const message = decodeV1Message(scope.args.message, 'The signer program only supports v1 authorization messages'); return getStaticAccountMetas(message).map(account => ({ ...account, - // Wrapped signatures authorize the wrapped message, not the outer transaction that submits it. + // Authority signatures cover the authorization message, not the relay transaction that submits it. role: downgradeRoleToNonSigner(account.role), })); }; diff --git a/clients/js/test/resolvers.test.ts b/clients/js/test/resolvers.test.ts index d4a6479..33a6db4 100644 --- a/clients/js/test/resolvers.test.ts +++ b/clients/js/test/resolvers.test.ts @@ -146,7 +146,7 @@ const expectedSubmitAccounts = [ ]; describe('remaining account resolvers', () => { - it('resolves account order and permissions for a v1 message', () => { + it('resolves account order and permissions for a v1 execution message', () => { expect(getExecuteAccounts(getTestMessage(1))).toEqual([ { address: NONCE_AUTHORITY.address, role: AccountRole.READONLY_SIGNER, signer: NONCE_AUTHORITY }, { address: NONCE_ACCOUNT, role: AccountRole.WRITABLE }, @@ -155,19 +155,19 @@ describe('remaining account resolvers', () => { ]); }); - it('removes signer privileges from a submitted v1 message', () => { + it('removes signer privileges from a v1 authorization message', () => { expect(getSubmitAccounts(getTestMessage(1))).toEqual(expectedSubmitAccounts); }); - it.each(UNSUPPORTED_MESSAGE_VERSIONS)('rejects a %s inner message', (version, label) => { + it.each(UNSUPPORTED_MESSAGE_VERSIONS)('rejects a %s execution message', (version, label) => { expect(() => getExecuteAccounts(getTestMessage(version))).toThrow( - `The message executor only supports v1 inner messages, got a ${label} message`, + `The message executor only supports v1 execution messages, got a ${label} message`, ); }); - it.each(UNSUPPORTED_MESSAGE_VERSIONS)('rejects a submitted %s message', (version, label) => { + it.each(UNSUPPORTED_MESSAGE_VERSIONS)('rejects a %s authorization message', (version, label) => { expect(() => getSubmitAccounts(getTestMessage(version))).toThrow( - `The signer program only supports v1 wrapped messages, got a ${label} message`, + `The signer program only supports v1 authorization messages, got a ${label} message`, ); }); @@ -211,7 +211,7 @@ describe('remaining account resolvers', () => { }); }); - it('rejects trailing bytes after a compiled message', () => { + it('rejects trailing bytes after an execution message', () => { const message = encodeMessage(getTestMessage(1)); expect(() => @@ -228,7 +228,7 @@ describe('remaining account resolvers', () => { ); }); - it('rejects trailing bytes after a submitted message', () => { + it('rejects trailing bytes after an authorization message', () => { const message = encodeMessage(getTestMessage(1)); expect(() => diff --git a/codama.mjs b/codama.mjs index 727b4a2..2fd484e 100644 --- a/codama.mjs +++ b/codama.mjs @@ -7,7 +7,7 @@ import { } from 'codama'; const executeRemainingAccounts = instructionRemainingAccountsNode( - resolverValueNode('resolveMessageAccounts', { + resolverValueNode('resolveExecutionMessageAccounts', { dependsOn: [argumentValueNode('message')], docs: "Preserves each execution message account's signer and writable role.", }), @@ -20,7 +20,7 @@ const executeRemainingAccounts = instructionRemainingAccountsNode( ); const submitRemainingAccounts = instructionRemainingAccountsNode( - resolverValueNode('resolveSubmitMessageAccounts', { + resolverValueNode('resolveAuthorizationMessageAccounts', { dependsOn: [argumentValueNode('message')], docs: "Preserves each authorization message account's writable role without marking it as a relay transaction signer.", }), diff --git a/idl.json b/idl.json index d6cb968..34585f7 100644 --- a/idl.json +++ b/idl.json @@ -90,7 +90,7 @@ ], "value": { "kind": "resolverValueNode", - "name": "resolveSubmitMessageAccounts", + "name": "resolveAuthorizationMessageAccounts", "docs": [ "Preserves each authorization message account's writable role without marking it as a relay transaction signer." ], @@ -297,7 +297,7 @@ ], "value": { "kind": "resolverValueNode", - "name": "resolveMessageAccounts", + "name": "resolveExecutionMessageAccounts", "docs": [ "Preserves each execution message account's signer and writable role." ],