
State committees
Succinct zero-knowledge state proofs with one block finality for any optimistic rollup. Easily integrate shared cross-chain security into any existing messaging protocol or bridge.

struct block {
var block_header,
var current_committee,
var next_committee,
}
struct block_attestation {
var block,
var signer_public_keys,
var bls_signature,
var previous_block_attestation
}
A simple, secure AND extensible design for shared cross-chain state security

integrate with Trustless cross-chain states
Lagrange State Proofs use restaked collateral to bring fast and provable one-slot finality to optimistic rollups. Request a state proof and verify it cross-chain. It's that simple.
// Create a configuration to request an array of 2 state proofs for Arbitrum rollup blocks
const providerUrl = {
arbitrum: "https://arbitrum-mainnet.infura.io/v3/PROJECT-ID"
};
const proofRequests = [
{
chain: 'Arbitrum',
block: 91504300,
},
{
chain: 'Arbitrum',
block: 91504301,
}
];
// Request state proofs generated by the Arbitrum State Committee
const lagrangeSDK = initializeSDK(providerUrl);
const arbitrumStateProofs = await lagrangeSDK.getProof(proofRequests);
//Create a dataframe of storage proofs for 1024 consecutive blocks of Polygon
var dataframe = polygon.createDataFrame({
block_range_start:
polygon.currentBlock() - 1024,
block_range_start:
polygon.currentBlock(),
interval: 1,
content:{
address:"0xb794f...68",
keys:[
{name: liquidity_1, memory:"0x56e81...21"},
{name: liquidity_2, memory:"0x56211...32"},
]
}
})
// Create a configuration to request an array of 2 state proofs for Arbitrum rollup blocks
const providerUrl = {
arbitrum: https://arbitrummainnet.infura.io/v3/PROJECT-ID"
};
const proofRequests = [
{
chain: 'Arbitrum',
block: 91504300,
},
{
chain: 'Arbitrum',
block: 91504301,
}
];
// Request state proofs generated by the Arbitrum State Committee
const lagrangeSDK = initializeSDK(providerUrl);
const arbitrumStateProofs = await lagrangeSDK.getProof(proofRequests);
//Create a dataframe of storage proofs for 1024 consecutive blocks of Polygon
var dataframe = polygon.createDataFrame({
block_range_start:
polygon.currentBlock() - 1024,
block_range_start:
polygon.currentBlock(),
interval: 1,
content:{
address:"0xb794f...68",
keys:[
{name: liquidity_1, memory:"0x56e81...21"},
{name: liquidity_2, memory:"0x56211...32"},
]
}
})
Easy to verify On and off chain
Easily verify a state proof directly on any EVM chain in a Lagrange verifier contract or integrate it with an existing cross-chain bridge or messaging protocol through simple off-chain verification.
//Integrate a state proof into any existing messaging protocol or bridge with a simple function call
const validity = await lagrangeSDK.verify({
publicStatement: arbitrumStateProofs.publicStatement,
proof: arbitrumStateProofs.proof
})
//Or verify a state proof on-chain through a simple verifier contract call
await lagrangeSDK.submitStateProof({
chain: "ethereum",
provider: rpc_provider,
publicStatement: arbitrumStateProofs.publicStatement,
proof: arbitrumStateProofs.proof
})
//Integrate a state proof into any existing messaging protocol or bridge with a simple function call
const validity = await lagrangeSDK.verify({
publicStatement: arbitrumStateProofs.publicStatement,
proof: arbitrumStateProofs.proof
})
//Or verify a state proof on-chain through a simple verifier contract call
await lagrangeSDK.submitStateProof({
chain: "ethereum",
provider: rpc_provider,
publicStatement: arbitrumStateProofs.publicStatement,
proof: arbitrumStateProofs.proof
})
Aggregate Multi-Chain States into One Proof
Customize your proof requirements, select your chains and aggregate your proofs. Lagrange State Proofs make it easy to combine proofs of present and historical blocks across multiple chains.
// Create a configuration to request an array of state proofs for Optimism, Base and Arbitrum rollup blocks
const proofRequests = [
{
chain: 'Optimism',
block: 98960825,
},
{
chain: 'Base',
block: 4553170,
},
{
chain: 'Arbitrum',
block: 91504300,
},
{
chain: 'Arbitrum',
block: 91504301,
},
.
.
.
{
chain: 'Arbitrum',
block: 91504399,
}
];