Assertion
Inherits: Credible, StateChanges
Title: Assertion
Author: Phylax Systems
Base contract for creating Credible Layer assertions
Inherit from this contract to create custom assertions. Assertions can inspect
transaction state via the inherited ph precompile and register triggers to specify
when the assertion should be executed.
Example:
contract MyAssertion is Assertion {
function triggers() external view override {
registerCallTrigger(this.checkInvariant.selector, ITarget.deposit.selector);
}
function checkInvariant() external {
ph.forkPostTx();
Check invariants...
}
}
State Variables
triggerRecorder
The trigger recorder precompile for registering assertion triggers
Address is derived from a deterministic hash for consistency
TriggerRecorder constant triggerRecorder = TriggerRecorder(address(uint160(uint256(keccak256("TriggerRecorder")))))
Functions
triggers
Used to record fn selectors and their triggers.
function triggers() external view virtual;
registerCallTrigger
Registers a call trigger for the AA without specifying an AA function selector. This will trigger the assertion function on any call to the AA.
function registerCallTrigger(bytes4 fnSelector) internal view;
Parameters
| Name | Type | Description |
|---|---|---|
fnSelector | bytes4 | The function selector of the assertion function. |
registerCallTrigger
Registers a call trigger for calls to the AA with a specific AA function selector.
function registerCallTrigger(bytes4 fnSelector, bytes4 triggerSelector) internal view;
Parameters
| Name | Type | Description |
|---|---|---|
fnSelector | bytes4 | The function selector of the assertion function. |
triggerSelector | bytes4 | The function selector upon which the assertion will be triggered. |
registerStorageChangeTrigger
Registers storage change trigger for any slot
function registerStorageChangeTrigger(bytes4 fnSelector) internal view;
Parameters
| Name | Type | Description |
|---|---|---|
fnSelector | bytes4 | The function selector of the assertion function. |
registerStorageChangeTrigger
Registers storage change trigger for a specific slot
function registerStorageChangeTrigger(bytes4 fnSelector, bytes32 slot) internal view;
Parameters
| Name | Type | Description |
|---|---|---|
fnSelector | bytes4 | The function selector of the assertion function. |
slot | bytes32 | The storage slot to trigger on. |
registerBalanceChangeTrigger
Registers balance change trigger for the AA
function registerBalanceChangeTrigger(bytes4 fnSelector) internal view;
Parameters
| Name | Type | Description |
|---|---|---|
fnSelector | bytes4 | The function selector of the assertion function. |