The Account contract has a mechanism where before every execution, the keyhash that has authorized this execution is pushed onto a stack in transient storage.
This means that whenever an external contract receives a call from the Ithaca Account they can determine, which key was used to make this execution.
This is particularly useful for contracts like the MultiSigSigner, who want to do authentication not just by checking that the msg.sender is the account, but they also want to check that the correct key is calling them.
Currently we have broad tests for this mechanism in the orchestrator and MultiSigSigner tests, but we should add targeted tests for the Account itself in Account.t.sol for completeness and sanity.
The Account contract has a mechanism where before every execution, the keyhash that has authorized this execution is pushed onto a stack in transient storage.
This means that whenever an external contract receives a call from the Ithaca Account they can determine, which key was used to make this execution.
This is particularly useful for contracts like the MultiSigSigner, who want to do authentication not just by checking that the msg.sender is the account, but they also want to check that the correct key is calling them.
Currently we have broad tests for this mechanism in the orchestrator and MultiSigSigner tests, but we should add targeted tests for the Account itself in
Account.t.solfor completeness and sanity.