Skip to main content
The Action precompile exposes the x/action module to the EVM at a single fixed address. Solidity contracts can request, finalize, approve, and query Cascade storage and Sense analysis actions without leaving the EVM execution context. The EVM is live on testnet (lumera-testnet-2) only. Mainnet runs v1.12.0 and gains the EVM with its upgrade.

Address

Lumera custom precompiles start at 0x0900. Everything below that range belongs to the Ethereum and Cosmos EVM standard sets. See the precompiles overview for the full address map.

Design

The precompile mixes typed and generic methods. Typed methods carry action-specific metadata, which gives Solidity compile-time safety for fields that differ between Cascade and Sense. Generic methods share one signature regardless of action type.

Action lifecycle

The state field in query results uses these values. The actionType field uses 1 for Sense and 2 for Cascade.

Solidity interface

The interface below comes from IAction.sol in the lumera repo.
IAction.sol

Request a Cascade action from a contract

A minimal storage client queries the fee, requests the action, and tracks the returned actionId.
CascadeStorageClient.sol
Requesting the action registers it on chain. The file itself still travels to SuperNodes off chain, the same way as in the normal upload lifecycle. finalizeCascade and finalizeSense are called by SuperNodes when processing completes, not by your app.

Fees

getActionFee returns the base fee, the per-kilobyte rate, and the total, all in ulume. The current parameters are 10000 ulume base plus 10 ulume per KB. Governance can change them, so query the fee on chain instead of hardcoding values.

Call it from JavaScript

Read methods work through eth_call with no deployed contract.
query-action.ts
Transaction methods work the same way with a signer attached.

Behavior notes

  • Address translation. The precompile converts your EVM 0x... caller address to lumera1... before it reaches the message server. Addresses in returned ActionInfo structs come back converted to 0x... form.
  • Metadata bridging. Typed Solidity arguments become a JSON metadata string inside the precompile, then flow through MsgRequestAction to the keeper exactly like a Cosmos transaction.
  • Pagination. List queries cap at 100 results per call. A larger limit is silently capped, so page with offset.
  • Events. The precompile emits ActionRequested, ActionFinalized, and ActionApproved as EVM logs, so standard event subscriptions work.
  • Gas. Calls meter gas from the underlying Cosmos gas usage converted to EVM gas units.
The Go implementation lives in precompiles/action, with a full reference in the action precompile doc.

Next steps

How Cascade works

The full storage flow behind every Cascade action.

SuperNode precompile

Read the state of the nodes that process your actions.

Standard precompiles

Staking, governance, and IBC from Solidity.