Skip to content

Commit 76e926e

Browse files
committed
feat: dockerize prover service
1 parent c1fd17f commit 76e926e

5 files changed

Lines changed: 33 additions & 18 deletions

File tree

.dockerignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.vscode/
2+
contracts/
3+
target/
4+
.git/
5+
.gitignore
6+
.env
7+
*.md
8+
Dockerfile
9+
.dockerignore

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
ETH_BEACON_RPC=
22
ETH_EXECUTION_RPC=
33
NETWORK_PRIVATE_KEY=
4+
LIGHT_CLIENT_CONTRACT=
5+
API_KEY=
6+
CHAIN_ID = # Optional, defaults to 1 (Ethereum Mainnet)
7+
PORT = # Optional, defaults to 50051

Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM rust:1.92-bookworm AS builder
2+
RUN apt-get update && apt-get install -y protobuf-compiler && rm -rf /var/lib/apt/lists/*
3+
WORKDIR /app
4+
COPY . .
5+
RUN cargo build --release --bin prover-service
6+
7+
FROM debian:bookworm-slim
8+
RUN apt-get update && apt-get install -y \
9+
ca-certificates \
10+
libssl3 \
11+
&& rm -rf /var/lib/apt/lists/*
12+
13+
COPY --from=builder /app/target/release/prover-service /usr/local/bin/
14+
15+
EXPOSE 50051
16+
ENTRYPOINT ["prover-service"]

service/src/prover/light_client.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ use alloy::{providers::ProviderBuilder, sol};
22
use alloy_primitives::Address;
33
use helios_ethereum::rpc::ConsensusRpc;
44
use scripts::light_client::{get_client, get_updates};
5-
use sp1_sdk::{
6-
HashableKey, Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, network::NetworkMode,
7-
};
5+
use sp1_sdk::{Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, network::NetworkMode};
86
use tracing::{info, instrument};
97

108
use primitives::{ETHEREUM_LIGHT_CLIENT_ELF, helios::Input};
@@ -94,19 +92,14 @@ pub async fn prove(input: Vec<u8>) -> Result<SP1ProofWithPublicValues, String> {
9492
let mut stdin = SP1Stdin::new();
9593
stdin.write_vec(input);
9694

97-
let (pk, vk) = prover_client.setup(ETHEREUM_LIGHT_CLIENT_ELF);
98-
info!(vk = %vk.bytes32(), "Verification key");
95+
let (pk, _) = prover_client.setup(ETHEREUM_LIGHT_CLIENT_ELF);
9996

10097
let proof = prover_client
10198
.prove(&pk, &stdin)
10299
.groth16()
103100
.run()
104101
.map_err(|e| e.to_string())?;
105102

106-
prover_client
107-
.verify(&proof, &vk)
108-
.map_err(|e| e.to_string())?;
109-
110103
info!("Light client proof complete");
111104
Ok(proof)
112105
})

service/src/prover/merkle.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use alloy::transports::http::reqwest::Url;
22
use alloy_primitives::Address;
33
use sp1_cc_host_executor::{EvmSketch, Genesis};
4-
use sp1_sdk::{
5-
HashableKey, Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, network::NetworkMode,
6-
};
4+
use sp1_sdk::{Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, network::NetworkMode};
75
use tracing::{info, instrument};
86

97
use primitives::{
@@ -59,19 +57,14 @@ pub async fn prove(input: Vec<u8>) -> Result<SP1ProofWithPublicValues, String> {
5957
let mut stdin = SP1Stdin::new();
6058
stdin.write_vec(input);
6159

62-
let (pk, vk) = prover_client.setup(HYPERLANE_MERKLE_ELF);
63-
info!(vk = %vk.bytes32(), "Verification key");
60+
let (pk, _) = prover_client.setup(HYPERLANE_MERKLE_ELF);
6461

6562
let proof = prover_client
6663
.prove(&pk, &stdin)
6764
.groth16()
6865
.run()
6966
.map_err(|e| e.to_string())?;
7067

71-
prover_client
72-
.verify(&proof, &vk)
73-
.map_err(|e| e.to_string())?;
74-
7568
info!("Merkle proof complete");
7669
Ok(proof)
7770
})

0 commit comments

Comments
 (0)