Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions docs/provers/ARBITRUM.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ function getTargetStateCommitment(bytes calldata input)
**Returns**: Ethereum block hash (proven from Arbitrum state)

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -91,7 +91,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input

// Verify proof and return L1 block hash
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}
```
Expand Down Expand Up @@ -195,7 +195,7 @@ The `sendRoot` is a commitment to the Arbitrum state that can be looked up in th
**Returns**: Arbitrum block hash (proven from Ethereum state)

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -209,7 +209,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
uint256 slot = SlotDerivation.deriveMapping(bytes32(rootsSlot), sendRoot);

targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, outbox, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, outbox, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
8 changes: 4 additions & 4 deletions docs/provers/OPTIMISM.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ function getTargetStateCommitment(bytes calldata)
**Returns**: Ethereum block hash (proven from Optimism state)

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -103,7 +103,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input

// Verify proof against L1Block predeploy's storage
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash,
homeStateCommitment,
rlpBlockHeader,
l1BlockPredeploy,
l1BlockHashSlot, // slot 2
Expand Down Expand Up @@ -245,7 +245,7 @@ This function performs a complex verification:
5. Return the L2 block hash from the preimage

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -258,7 +258,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
) = abi.decode(input, (bytes, bytes, bytes, bytes, bytes, OutputRootProof));

// Verify block header
require(homeBlockHash == keccak256(rlpBlockHeader), "Invalid home block header");
require(homeStateCommitment == keccak256(rlpBlockHeader), "Invalid home block header");
bytes32 stateRoot = ProverUtils.extractStateRootFromBlockHeader(rlpBlockHeader);

// Get anchor game address from AnchorStateRegistry
Expand Down
8 changes: 4 additions & 4 deletions docs/provers/SCROLL.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ function getTargetStateCommitment(bytes calldata input)
**Returns**: Ethereum block hash

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -117,7 +117,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
);

targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}
```
Expand Down Expand Up @@ -192,7 +192,7 @@ function getTargetStateCommitment(bytes calldata input)
**Returns**: Scroll state root

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -208,7 +208,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
);

targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, scrollChain, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, scrollChain, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
8 changes: 4 additions & 4 deletions docs/provers/TAIKO.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ function getTargetStateCommitment(bytes calldata input)
**Returns**: Ethereum block hash (proven from Taiko L2 state)

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -132,7 +132,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
);

targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, signalService, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, signalService, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down Expand Up @@ -219,7 +219,7 @@ function getTargetStateCommitment(bytes calldata input)
**Returns**: Taiko L2 block hash

```solidity
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external view returns (bytes32 targetStateCommitment)
{
(
Expand All @@ -235,7 +235,7 @@ function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input
);

targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, signalService, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, signalService, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
2 changes: 1 addition & 1 deletion scripts/generate-optimism-test-payloads.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ async function main() {
try {
const { input, targetStateCommitment } = await helper.buildInputForVerifyTargetBlockHash(optimismBlockHash)

// Format: [homeBlockHash (32 bytes), targetStateCommitment (32 bytes), input (variable)]
// Format: [homeStateCommitment (32 bytes), targetStateCommitment (32 bytes), input (variable)]
const payload = encodeAbiParameters(
[{ type: 'bytes32' }, { type: 'bytes32' }, { type: 'bytes' }],
[optimismBlockHash, targetStateCommitment, input]
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/arbitrum/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ contract ChildToParentProver is IStateProver {
}

/// @notice Get a parent chain block hash from the buffer at `blockHashBuffer` using a storage proof
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, uint256 targetBlockNumber, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -49,7 +49,7 @@ contract ChildToParentProver is IStateProver {

// verify proofs and get the block hash
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}

Expand Down
9 changes: 5 additions & 4 deletions src/contracts/provers/arbitrum/ParentToChildProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ contract ParentToChildProver is IStateProver {
}

/// @notice Verify a target chain block hash given a home chain block hash and a proof.
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, bytes32 sendRoot, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -51,8 +51,9 @@ contract ParentToChildProver is IStateProver {
uint256 slot = uint256(SlotDerivation.deriveMapping(bytes32(rootsSlot), sendRoot));

// verify proofs and get the block hash
targetStateCommitment =
ProverUtils.getSlotFromBlockHeader(homeBlockHash, rlpBlockHeader, outbox, slot, accountProof, storageProof);
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeStateCommitment, rlpBlockHeader, outbox, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
revert TargetBlockHashNotFound();
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/linea/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ contract ChildToParentProver is IStateProver {
}

/// @notice Get a parent chain block hash from the buffer at `blockHashBuffer` using a storage proof
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, uint256 targetBlockNumber, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -48,7 +48,7 @@ contract ChildToParentProver is IStateProver {

// verify proofs and get the block hash
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}

Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/optimism/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ contract ChildToParentProver is IStateProver {
}

/// @notice Verify the latest available target block hash given a home chain block hash and a storage proof of the L1Block predeploy.
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -50,7 +50,7 @@ contract ChildToParentProver is IStateProver {

// verify proofs and get the value
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, l1BlockPredeploy, l1BlockHashSlot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, l1BlockPredeploy, l1BlockHashSlot, accountProof, storageProof
);
}

Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/optimism/ParentToChildProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ contract ParentToChildProver is IStateProver {
/// 3. The game's root claim hash is extracted from the game proxy code.
/// 4. The root claim preimage is verified against the root claim hash.
/// 5. The target block hash is returned from the root claim preimage.
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader,
/// bytes asrAccountProof,
/// bytes asrStorageProof,
/// bytes gameProxyAccountProof,
/// bytes gameProxyCode,
/// bytes rootClaimPreimage)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -79,7 +79,7 @@ contract ParentToChildProver is IStateProver {
) = abi.decode(input, (bytes, bytes, bytes, bytes, bytes, OutputRootProof));

// check the block hash
require(homeBlockHash == keccak256(rlpBlockHeader), "Invalid home block header");
require(homeStateCommitment == keccak256(rlpBlockHeader), "Invalid home block header");
bytes32 stateRoot = ProverUtils.extractStateRootFromBlockHeader(rlpBlockHeader);

// grab the anchor game address
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/scroll/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ contract ChildToParentProver is IStateProver {
}

/// @notice Get a parent chain block hash from the buffer at `blockHashBuffer` using a storage proof
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, uint256 targetBlockNumber, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -49,7 +49,7 @@ contract ChildToParentProver is IStateProver {

// verify proofs and get the block hash
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}

Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/scroll/ParentToChildProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ contract ParentToChildProver is IStateProver {

/// @notice Verify L2 state root using L1 ScrollChain storage proof
/// @dev Called on non-home chains (e.g., another L2 that has L1 block hashes)
/// @param homeBlockHash The L1 block hash
/// @param homeStateCommitment The L1 block hash
/// @param input ABI encoded (bytes rlpBlockHeader, uint256 batchIndex, bytes accountProof, bytes storageProof)
/// @return targetStateCommitment The L2 state root stored in L1's ScrollChain (NOTE: this is a state root, not a block hash)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -66,7 +66,7 @@ contract ParentToChildProver is IStateProver {

// Verify proofs and get the L2 state root from L1's ScrollChain
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, scrollChain, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, scrollChain, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/taiko/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ contract ChildToParentProver is IStateProver {

/// @notice Verify L1 block hash using L2 SignalService checkpoint with storage proof
/// @dev Called on non-home chains (e.g., Ethereum L1)
/// @param homeBlockHash The L2 block hash
/// @param homeStateCommitment The L2 block hash
/// @param input ABI encoded (bytes rlpBlockHeader, uint48 l1BlockNumber, bytes accountProof, bytes storageProof)
/// @return targetStateCommitment The L1 block hash stored in L2's SignalService
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -67,7 +67,7 @@ contract ChildToParentProver is IStateProver {
// Verify proofs and get the L1 block hash from L2's SignalService
// CheckpointRecord.blockHash is stored at the base slot
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, signalService, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, signalService, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/taiko/ParentToChildProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ contract ParentToChildProver is IStateProver {

/// @notice Verify L2 block hash using L1 SignalService checkpoint with storage proof
/// @dev Called on non-home chains (e.g., Taiko L2)
/// @param homeBlockHash The L1 block hash
/// @param homeStateCommitment The L1 block hash
/// @param input ABI encoded (bytes rlpBlockHeader, uint48 l2BlockNumber, bytes accountProof, bytes storageProof)
/// @return targetStateCommitment The L2 block hash stored in L1's SignalService
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -67,7 +67,7 @@ contract ParentToChildProver is IStateProver {
// Verify proofs and get the L2 block hash from L1's SignalService
// CheckpointRecord.blockHash is stored at the base slot
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, signalService, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, signalService, slot, accountProof, storageProof
);

if (targetStateCommitment == bytes32(0)) {
Expand Down
6 changes: 3 additions & 3 deletions src/contracts/provers/zksync/ChildToParentProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ contract ChildToParentProver is IStateProver {
}

/// @notice Get a parent chain block hash from the buffer at `blockHashBuffer` using a storage proof
/// @param homeBlockHash The block hash of the home chain.
/// @param homeStateCommitment The block hash of the home chain.
/// @param input ABI encoded (bytes blockHeader, uint256 targetBlockNumber, bytes accountProof, bytes storageProof)
function verifyTargetStateCommitment(bytes32 homeBlockHash, bytes calldata input)
function verifyTargetStateCommitment(bytes32 homeStateCommitment, bytes calldata input)
external
view
returns (bytes32 targetStateCommitment)
Expand All @@ -49,7 +49,7 @@ contract ChildToParentProver is IStateProver {

// verify proofs and get the block hash
targetStateCommitment = ProverUtils.getSlotFromBlockHeader(
homeBlockHash, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
homeStateCommitment, rlpBlockHeader, blockHashBuffer, slot, accountProof, storageProof
);
}

Expand Down
4 changes: 2 additions & 2 deletions test/mocks/MockProver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import {IStateProver} from "src/contracts/interfaces/IStateProver.sol";

contract MockProver is IStateProver {
function verifyTargetStateCommitment(
bytes32 homeBlockHash,
bytes32 homeStateCommitment,
bytes calldata /*input*/
)
external
pure
returns (bytes32 targetStateCommitment)
{
return homeBlockHash;
return homeStateCommitment;
}

function getTargetStateCommitment(bytes calldata input) external pure returns (bytes32 targetStateCommitment) {
Expand Down
Loading