I get a signer privilege escalated error and I suspect that it is because I am incorrectly passing the signers to the executing thread instruction.
Here is roughly how MyContext looks like (including pda initialization):
pub struct MyContext<'info> { #[account( init, seeds=[...], bump=, payer = creator, )] pub acc: Account<'info, MyAccount>, #[account(mut)] pub creator: Signer<'info>, #[account(signer, address = thread.pubkey())] pub thread: Account<'info, Thread>,}
This is how I invoke the associated MyContext instruction:
const ix = await myProgram.methods .myContextIx({...}) .accounts({ acc: acc, creator: signer.publicKey, thread: threadPubkey, }) .instruction() const thread_transaction = await threadProgram.methods .threadCreate( threadName, { programId: myProgram.programId, accounts: ix.keys, data: ix.data, }, trigger ) .accounts({ authority: signer.publicKey, payer: signer.publicKey, thread: threadPubkey, systemProgram: anchor.web3.SystemProgram.programId, }) .rpc();
So I am wondering how do I make a thread execute a designated instruction that requires another signer. In this case, both the thread and the creator account?
I can see from the thread_exec.rs source code, that the signer for the thread CPI instruction call is always going to be the thread account, so is it even possible to consider another signer?