Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Aligned fork in Holesky #34

Closed
wants to merge 9 commits into from
Closed
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
2 changes: 1 addition & 1 deletion batcher/aligned-sdk/abi/AlignedLayerServiceManager.json

Large diffs are not rendered by default.

21 changes: 20 additions & 1 deletion batcher/aligned-sdk/src/sdk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -311,10 +311,15 @@ async fn _is_proof_verified(
let contract_address = match chain {
Chain::Devnet => "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
// If we re-deploy the Aligned SM contract we need to change this value to the new contract address
Chain::Holesky => "0x0584313310bD52B77CF0b81b350Ca447B97Df5DF",
Chain::Holesky => "0x5B16cBbC0c78Cc6178Ed71156872bc5305f7265A",
Chain::HoleskyStage => "0x9C5231FC88059C086Ea95712d105A2026048c39B",
};

info!(
"batch merkle root: {}",
format!("{:02x?}", aligned_verification_data.batch_merkle_root)
);

let payment_service_addr = payment_service_addr
.parse::<Address>()
.map_err(|e| errors::VerificationError::HexDecodingError(e.to_string()))?;
Expand All @@ -334,6 +339,20 @@ async fn _is_proof_verified(

let service_manager = aligned_service_manager(eth_rpc_provider, contract_address).await?;

let task_created_call = service_manager.task_created_block(
aligned_verification_data.batch_merkle_root,
payment_service_addr,
);

info!("task created block: {}", task_created_call.await.unwrap());

let responded_call = service_manager.responded(
aligned_verification_data.batch_merkle_root,
payment_service_addr,
);

info!("responded: {}", responded_call.await.unwrap());

let call = service_manager.verify_batch_inclusion(
verification_data_comm.proof_commitment,
verification_data_comm.pub_input_commitment,
Expand Down
66 changes: 64 additions & 2 deletions contracts/bindings/AlignedLayerServiceManager/binding.go

Large diffs are not rendered by default.

Large diffs are not rendered by default.

33 changes: 14 additions & 19 deletions contracts/src/core/AlignedLayerServiceManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,7 @@ contract AlignedLayerServiceManager is
}

function createNewTask(bytes32 batchMerkleRoot, string calldata batchDataPointer) external payable {
bytes32 batchIdentifier;
if (
block.number < 2_268_375 // TODO set number of blocks
) {
batchIdentifier = batchMerkleRoot;
} else {
batchIdentifier = keccak256(abi.encodePacked(batchMerkleRoot, msg.sender));
}
bytes32 batchIdentifier = keccak256(abi.encodePacked(batchMerkleRoot, msg.sender));

require(batchesState[batchIdentifier].taskCreatedBlock == 0, "Batch was already submitted");

Expand All @@ -78,8 +71,6 @@ contract AlignedLayerServiceManager is

batchesState[batchIdentifier] = batchState;

// old event for smooth Operator upgradeability:
emit NewBatch(batchMerkleRoot, uint32(block.number), batchDataPointer);
emit NewBatchV2(batchMerkleRoot, msg.sender, uint32(block.number), batchDataPointer);
}

Expand Down Expand Up @@ -191,6 +182,18 @@ contract AlignedLayerServiceManager is
payable(msg.sender).transfer(txCost);
}

function taskCreatedBlock(bytes32 batchMerkleRoot, address senderAddress) external view returns (uint256) {
bytes32 batchIdentifierHash = keccak256(abi.encodePacked(batchMerkleRoot, senderAddress));

return batchesState[batchIdentifierHash].taskCreatedBlock;
}

function responded(bytes32 batchMerkleRoot, address senderAddress) external view returns (bool) {
bytes32 batchIdentifierHash = keccak256(abi.encodePacked(batchMerkleRoot, senderAddress));

return batchesState[batchIdentifierHash].responded;
}

function verifyBatchInclusion(
bytes32 proofCommitment,
bytes32 pubInputCommitment,
Expand All @@ -201,15 +204,7 @@ contract AlignedLayerServiceManager is
uint256 verificationDataBatchIndex,
address senderAddress
) external view returns (bool) {
// Temporary solution: Add the same condition than `createNewTask` to define a batch identifier.
bytes32 batchIdentifierHash;
if (
block.number < 2_268_375 // TODO set number of blocks
) {
batchIdentifierHash = batchMerkleRoot;
} else {
batchIdentifierHash = keccak256(abi.encodePacked(batchMerkleRoot, msg.sender));
}
bytes32 batchIdentifierHash = keccak256(abi.encodePacked(batchMerkleRoot, senderAddress));

if (batchesState[batchIdentifierHash].taskCreatedBlock == 0) {
return false;
Expand Down
15 changes: 7 additions & 8 deletions contracts/src/core/IAlignedLayerServiceManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,18 @@ pragma solidity =0.8.12;
import {IBLSSignatureChecker} from "eigenlayer-middleware/interfaces/IBLSSignatureChecker.sol";

interface IAlignedLayerServiceManager {
function createNewTask(
bytes32 batchMerkleRoot,
string calldata batchDataPointer
) external payable;
function createNewTask(bytes32 batchMerkleRoot, string calldata batchDataPointer) external payable;

// old respondToTask for smooth upgradeability:
function respondToTask(
bytes32 batchMerkleRoot,
IBLSSignatureChecker.NonSignerStakesAndSignature
memory nonSignerStakesAndSignature
IBLSSignatureChecker.NonSignerStakesAndSignature memory nonSignerStakesAndSignature
) external;

function respondToTaskV2(
bytes32 batchMerkleRoot,
address senderAddress,
IBLSSignatureChecker.NonSignerStakesAndSignature
memory nonSignerStakesAndSignature
IBLSSignatureChecker.NonSignerStakesAndSignature memory nonSignerStakesAndSignature
) external;

function verifyBatchInclusion(
Expand All @@ -35,4 +30,8 @@ interface IAlignedLayerServiceManager {
) external view returns (bool);

function balanceOf(address account) external view returns (uint256);

function taskCreatedBlock(bytes32 batchMerkleRoot, address senderAddress) external view returns (uint256);

function responded(bytes32 batchMerkleRoot, address senderAddress) external view returns (bool);
}
Loading