In the code example taken from here we see the following invocation:
invoke(
&system_instruction::create_account(
&user.key,
&power.key,
lamports_required,
account_span as u64,
program_id,
),
&[
user.clone(), power.clone(), system_program.clone()
]
)?;
Question is, who signs for this transaction? My guess will be the original signer who signed for the transaction that called the program from which the cross program invocation is being made. Is this correct?
If so, how then is the transaction fee for this CPI calculated? And who pays for it?