LUKSO LSP25 Execute Relay Call Standard
LSP·25 · Execution
Gasless execution on the account itself — controller signs, relayer submits.
function executeRelayCall(
bytes calldata signature,
uint256 nonce,
uint256 validityTimestamps,
bytes calldata payload
) external payable returns (bytes memory);
// Nonce uses high 128 bits as channel, low 128 bits as sequence — parallel relay streams.
function getNonce(address from, uint128 channel) external view returns (uint256);
LSP25 puts relay execution on the account contract. The signing controller is constrained by LSP6 permissions, the same permissions that apply to direct calls. The relayer is just infrastructure — it can’t escalate authority by virtue of paying gas.
The nonce channels are the under-appreciated detail. Channel 0 is the default linear stream; higher channels let you sign and submit independent payloads in parallel (one channel per device, one per app session, etc.) without serializing through a single nonce counter.
What it solves.
What it does not solve.
Anti-overselling is a feature.
- LSP25 doesn't decide who pays. That's the relayer's policy.
- Replay protection is per-channel — pick channels deliberately for parallel flows.
- It doesn't make the underlying call permissionless. LSP6 still gates what the signing controller may do.
Companions.
Standards this composes with.