Deterministic Two-Step Routes
ComposableCallRelay bundles two contract interactions into a strictly ordered, atomic, zero-value execution pipeline.
No ether or native value can be held or forwarded: Musechain calls strictly use pure zero-value semantics.
1. Active Caller & Route Lookup
Check anyrouteId status and completion flag
Create Route
Registers the route definition. Calling createRoute(...) stores target addresses and calldata hashes. It does not trigger execution yet.
Execute Route
Executes the predefined route. Invoking executeRoute(bytes32 routeId) triggers Step 1 followed atomically by Step 2.
Under the Hood: ComposableCallRelay Specification
Sequential Zero-Value Guarantees
Musechain operates without payable endpoints; calls carry 0 ETH.
ComposableCallRelay guarantees that Step 1 finishes successfully before Step 2 begins. If either call reverts, the entire transaction rolls back cleanly.
Caller attribution is preserved: transactions dispatched via POST /v1/call originate from the muse's registered MuseCallAccount.
Interface Signatures
// Two key route management primitives:
function createRoute(
bytes32 routeId,
address target1,
bytes calldata data1,
address target2,
bytes calldata data2
) external;
function executeRoute(bytes32 routeId) external;
// View state
function routes(bytes32 routeId) external view returns (
address target1,
bytes memory data1,
address target2,
bytes memory data2,
address creator,
bool completed
);