Glossary

Crosschain

Crosschain API - Lamina’s forward-facing API interface. Protocols talk to the Crosschain API by sending transaction calldata and target information (chain, address, cost). Crosschain does the heavy lifting on the backend, wrapping userops and calculating the overall transaction cost, then returns data for the protocol to sign before forwarding said signed data as a blob to the Crosschain Client.

// UserOp Operation Structure: 
type UserOperation struct {
	Sender                string `json:"sender"`
	Nonce                 string `json:"nonce"`
	InitCode              string `json:"initCode"`
	CallData              string `json:"callData"`
	CallGasLimit          string `json:"callGasLimit"`
	VerificationGasLimit  string `json:"verificationGasLimit"`
	PreVerificationGas    string `json:"preVerificationGas"`
	MaxFeePerGas          string `json:"maxFeePerGas"`
	MaxPritorityFeePerGas string `json:"maxPriorityFeePerGas"`
	PaymasterAndData      string `json:"paymasterAndData"`
	Signature             string `json:"signature"`
}

// Execution Data Structure:
type ExecutionData struct {
	DestinationChain string `json:"destinationChain"`
	TargetAddress    string `json:"targetAddress"`
	Asset            string `json:"asset"`
	Amount           string `json:"amount"`
	Calldata         string `json:"calldata"`
}

// Protocol's Request Transaction Format:
type RequestTransaction struct {
	Signer           string        `json:"signer"`
	ExecutionRequest ExecutionData `json:"executionRequest"`
}

// Protocol's Request Transaction Response
// (calldata and userop are to be signed):
type RequestTransactionResponse struct {
	Signer   string        `json:"signer"`
	Escrow   string        `json:"escrow"`
	Deadline string        `json:"deadline"`
	Calldata string        `json:"calldata"`
	UserOp   UserOperation `json:"userop"`
}

// Protocol's Signed Format:
type SubmitTransaction struct {
	Signer    string        `json:"signer"`
	Escrow    string        `json:"escrow"`
	Deadline  string        `json:"deadline"`
	Calldata  string        `json:"calldata"`
	Signature string        `json:"signature"`
	Hash      string        `json:"hash"`
	UserOp    UserOperation `json:"userop"`
}

Crosschain Client - Lamina's backend infrastructure responsible for lock request execution and userop validation. This client currently comprises of a private bundler and relayer but is expected to scale by offering a reward-based model to bring new bundlers and relayers into the fold.

Crosschain Mempool - Lamina’s Crosschain Mempool is a currently a private mempool with custom blobs of data. These blobs include a proposed bid, execution cost, and userop. Solvers digest these blobs and execute an array of userops on the destination chain’s ERC4337 EntryPoint contract.

Crosschain Paymaster - Lamina's userop paymaster. During preOp the paymaster validates the userop and digests the paymasterAndData field. Then constructs the Hyperlane message for later authentication on the origin chain. Extra data from the paymasterAndData field will be appended with the Solver's address. During postOp the paymaster will pay for the Hyperlane IGP and redeposit used funds to it's own stake and send residual funds back to the Solver.


Hyperlane

Hyperlane Mailbox - The mailbox, for Hyperlane messages, acts as either the receiver contract on destination chains, or the sender contract on origin chains. Hyperlane messages transmitted or received include: target chain, target address, value, and message. When a valid message received on the origin chain it will be added to the Hyperlane network with a pending state until payment is accepted by the Hyperlane IGP. When a valid message is received on the destination chain it will use the message data to call the target contract. Learn more here.

Hyperlane IGP (Interchain Gas Paymaster) - The gas paymaster estimates this native currency cost required to process the submitted Hyperlane message. The gas requirements must be quoted after the Hyperlane message is submitted. Crosschain Paymaster quotes the cost of a Hyperlane message during preOp and submits payment during postOp. This approach ensures that the Hyperlane message is triggered only if the userop is executed successfully. Learn more here.

Hyperlane Validator - The Hyperlane network on any chain includes a series of validators that process transactions on destination chains. Learn more here.

Hyperlane Handler - The handle function on the target contract accepting a message from the Hyperlane Mailbox on the destination chain. Learn more here.


Escrow

Escrow - Every signer has a create2 escrow address. The Escrow is a lightweight ERC1967 proxy that supports tracking of any lock or unlocked token. Only the signers locked funds are used for paying solvers. When receiving a Hyperlane message to handle it will validate and then execute the Solver payout.

Escrow Factory - Factory contract for initializing a signer’s ERC1967 Escrow.

Copy

Escrow Simpleton - Escrow current logic contract deployment.

Last updated