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
90 changes: 45 additions & 45 deletions Cargo.lock

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions docker/.env.remote-sgx.sample
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ SGXGETH=true
SGX_MODE=remote
SENDER_PRIV_KEY=
PREFETCH_CHUNK_SIZE=4
NETWORK=taiko_a7 #taiko_mainnet, taiko_dev
L1_NETWORK=holesky #ethereum, taiko_dev_l1
NETWORK=taiko_a7 #taiko_mainnet, taiko_dev, taiko_transition
L1_NETWORK=holesky #ethereum, taiko_dev_l1, hoodi
SGX_VERIFIER_ADDRESS=
SGX_DIRECT=
SGX_PACAYA_INSTANCE_ID=
Expand All @@ -16,6 +16,7 @@ HOLESKY_RPC=
HOLESKY_BEACON_RPC=
TAIKO_A7_RPC=
TAIKO_MAINNET_RPC=
TAIKO_TRANS_RPC=
NETWORK_RPC_URL=
NETWORK_PRIVATE_KEY=
SP1_VERIFIER_RPC_URL=
Expand Down
5 changes: 3 additions & 2 deletions docker/.env.sample
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
SGXGETH=true
SENDER_PRIV_KEY=
PREFETCH_CHUNK_SIZE=
NETWORK=taiko_a7 #taiko_mainnet, taiko_dev
L1_NETWORK=holesky #ethereum, taiko_dev_l1
NETWORK=taiko_a7 #taiko_mainnet, taiko_dev, taiko_transition
L1_NETWORK=holesky #ethereum, taiko_dev_l1, hoodi
L1_RPC=
L1_CHAIN_ID=
SGX_VERIFIER_ADDRESS=
Expand All @@ -18,6 +18,7 @@ HOLESKY_RPC=
HOLESKY_BEACON_RPC=
TAIKO_A7_RPC=
TAIKO_MAINNET_RPC=
TAIKO_TRANS_RPC=
NETWORK_RPC_URL=
NETWORK_PRIVATE_KEY=
SP1_VERIFIER_RPC_URL=
Expand Down
211 changes: 211 additions & 0 deletions docker/docker-compose-transition.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
services:
init:
build:
context: ..
dockerfile: Dockerfile
image: us-docker.pkg.dev/evmchain/images/raiko:latest
container_name: raiko-init
command: --init
env_file:
- .env
devices:
- "/dev/sgx_enclave:/dev/sgx_enclave"
- "/dev/sgx_provision:/dev/sgx_provision"
volumes:
- /var/log/raiko:/var/log/raiko
- ${HOME}/.config/gramine:/root/.config/gramine
- ${TRANSITION_HOME}/raiko:/root/.config/raiko
environment:
- SGX=true
- SGXGETH=${SGXGETH}
# environment:
# you can use your own PCCS host
#- PCCS_HOST=host.docker.internal:8081
depends_on:
- pccs
init-self-register:
build:
context: ..
args:
ENABLE_SELF_REGISTER: "true"
dockerfile: Dockerfile
image: us-docker.pkg.dev/evmchain/images/raiko:latest
container_name: raiko-init-self-register
command: --init-self-register
env_file:
- .env
devices:
- "/dev/sgx_enclave:/dev/sgx_enclave"
- "/dev/sgx_provision:/dev/sgx_provision"
volumes:
- /var/log/raiko:/var/log/raiko
- ${HOME}/.config/gramine:/root/.config/gramine
- ${TRANSITION_HOME}/raiko:/root/.config/raiko
- ${TRANSITION_HOME}/raiko/config/config.sgx.json:/etc/raiko/config.sgx.json
environment:
- SGX=true
- SGXGETH=${SGXGETH}
- SENDER_PRIV_KEY=${SENDER_PRIV_KEY}
- SGX_VERIFIER_ADDRESS=${SGX_VERIFIER_ADDRESS}
- HOODI_RPC=${HOODI_RPC}
- HOODI_BEACON_RPC=${HOODI_BEACON_RPC}
- TAIKO_TRANS_RPC=${TAIKO_TRANS_RPC}
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
- NETWORK=${NETWORK}
- L1_NETWORK=${L1_NETWORK}
#- PCCS_HOST=host.docker.internal:8081
depends_on:
- pccs
raiko:
build:
context: ..
dockerfile: Dockerfile
image: us-docker.pkg.dev/evmchain/images/raiko:latest
container_name: raiko
command:
env_file:
- .env
devices:
- "/dev/sgx_enclave:/dev/sgx_enclave"
- "/dev/sgx_provision:/dev/sgx_provision"
volumes:
- /var/log/raiko:/var/log/raiko
- ${HOME}/.config/gramine:/root/.config/gramine
- ${TRANSITION_HOME}/raiko:/root/.config/raiko
ports:
- "8080:8080"
environment:
- SGX=true
- SGXGETH=${SGXGETH}
- SGX_MODE=${SGX_MODE:-local}
- RAIKO_REMOTE_URL=${RAIKO_REMOTE_URL:-http://transition-sgx-server:9090}
- GAIKO_REMOTE_URL=${GAIKO_REMOTE_URL:-http://transition-sgx-server:8090}
- PREFETCH_CHUNK_SIZE=${PREFETCH_CHUNK_SIZE}
- BASE_CONFIG_FILE=${BASE_CONFIG_FILE:-config.sgx.json}
- BASE_CHAINSPEC_FILE=${BASE_CHAINSPEC_FILE:-chain_spec_list.docker.json}
# Set to 0 (which is the default) to run on real hardware; use 1 for testing
- SGX_DIRECT=${SGX_DIRECT}
- SGX_PACAYA_INSTANCE_ID=${SGX_PACAYA_INSTANCE_ID}
- SGXGETH_PACAYA_INSTANCE_ID=${SGXGETH_PACAYA_INSTANCE_ID}
- SGX_SHASTA_INSTANCE_ID=${SGX_SHASTA_INSTANCE_ID}
- SGXGETH_SHASTA_INSTANCE_ID=${SGXGETH_SHASTA_INSTANCE_ID}
- ETHEREUM_RPC=${ETHEREUM_RPC}
- ETHEREUM_BEACON_RPC=${ETHEREUM_BEACON_RPC}
- HOODI_RPC=${HOODI_RPC}
- HOODI_BEACON_RPC=${HOODI_BEACON_RPC}
- TAIKO_TRANS_RPC=${TAIKO_TRANS_RPC}
- L1_NETWORK=${L1_NETWORK}
- NETWORK=${NETWORK}
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
- RUST_LOG=${RUST_LOG:-info}
# you can use your own PCCS host
#- PCCS_HOST=host.docker.internal:8081
# use the host's network to connect to the PCCS
#extra_hosts:
# - "host.docker.internal:host-gateway"
depends_on:
- redis
- pccs
profiles:
- prod-redis
raiko-zk:
build:
context: ..
dockerfile: Dockerfile.zk
image: us-docker.pkg.dev/evmchain/images/raiko-zk:latest
container_name: raiko-zk
command:
env_file:
- .env
volumes:
- /var/log/raiko:/var/log/raiko
ports:
- "8090:8080"
environment:
# you can use your own PCCS host
# - PCCS_HOST=host.docker.internal:8081
- RUST_LOG=${RUST_LOG:-info}
- ZK=true
- PREFETCH_CHUNK_SIZE=${PREFETCH_CHUNK_SIZE}
- BASE_CONFIG_FILE=${BASE_CONFIG_FILE:-config.sgx.json}
- BASE_CHAINSPEC_FILE=${BASE_CHAINSPEC_FILE:-chain_spec_list.docker.json}
- ETHEREUM_RPC=${ETHEREUM_RPC}
- ETHEREUM_BEACON_RPC=${ETHEREUM_BEACON_RPC}
- HOODI_RPC=${HOODI_RPC}
- HOODI_BEACON_RPC=${HOODI_BEACON_RPC}
- TAIKO_TRANS_RPC=${TAIKO_TRANS_RPC}
- L1_NETWORK=${L1_NETWORK}
- NETWORK=${NETWORK}
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
# risc0 service env
- BONSAI_API_KEY=${BONSAI_API_KEY}
- BONSAI_API_URL=${BONSAI_API_URL}
# risc0 verifier
- GROTH16_VERIFIER_RPC_URL=${GROTH16_VERIFIER_RPC_URL}
- GROTH16_VERIFIER_ADDRESS=${GROTH16_VERIFIER_ADDRESS}
# sp1 service env
- NETWORK_RPC_URL=${NETWORK_RPC_URL}
- NETWORK_PRIVATE_KEY=${NETWORK_PRIVATE_KEY}
- SKIP_SIMULATION=true
# sp1 verifier
- SP1_VERIFIER_RPC_URL=${SP1_VERIFIER_RPC_URL}
- SP1_VERIFIER_ADDRESS=${SP1_VERIFIER_ADDRESS}
depends_on:
- redis
profiles:
- prod-redis
transition-raiko-sgx-server:
build:
context: ..
dockerfile: Dockerfile
image: us-docker.pkg.dev/evmchain/images/raiko:latest
container_name: transition-sgx-server
command:
env_file:
- .env
devices:
- "/dev/sgx_enclave:/dev/sgx_enclave"
- "/dev/sgx_provision:/dev/sgx_provision"
volumes:
- /var/log/raiko:/var/log/raiko
- ${HOME}/.config/gramine:/root/.config/gramine
- ${TRANSITION_HOME}/raiko:/root/.config/raiko
ports:
- "8090:8090"
- "9090:9090"
environment:
- SGXGETH=${SGXGETH}
- SGX_SERVER=true
- SGX_PACAYA_INSTANCE_ID=${SGX_PACAYA_INSTANCE_ID}
- SGXGETH_PACAYA_INSTANCE_ID=${SGXGETH_PACAYA_INSTANCE_ID}
- SGX_SHASTA_INSTANCE_ID=${SGX_SHASTA_INSTANCE_ID}
- SGXGETH_SHASTA_INSTANCE_ID=${SGXGETH_SHASTA_INSTANCE_ID}
- GAIKO_GUEST_APP_VERBOSE_LEVEL=${GAIKO_GUEST_APP_VERBOSE_LEVEL}
# you can use your own PCCS host
#- PCCS_HOST=host.docker.internal:8081
# use the host's network to connect to the PCCS
#extra_hosts:
# - "host.docker.internal:host-gateway"
pccs:
build:
context: ..
dockerfile: Dockerfile.pccs
image: us-docker.pkg.dev/evmchain/images/pccs:latest
container_name: pccs
env_file:
- .env
ports:
- "8081:8081"
volumes:
- ${HOME}/.config/sgx-pccs/default.json:/opt/intel/pccs/config/default.json
- ${HOME}/.config/sgx-pccs/file.crt:/opt/intel/pccs/ssl_key/file.crt
- ${HOME}/.config/sgx-pccs/private.pem:/opt/intel/pccs/ssl_key/private.pem
redis:
image: redis
container_name: redis
env_file:
- .env
ports:
- "6379:6379"
profiles:
- prod-redis
4 changes: 4 additions & 0 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ function update_docker_chain_specs() {
update_chain_spec_json $CONFIG_FILE "taiko_mainnet" "rpc" $TAIKO_MAINNET_RPC
fi

if [ -n "${TAIKO_TRANSITION_RPC}" ]; then
update_chain_spec_json $CONFIG_FILE "taiko_transition" "rpc" $TAIKO_TRANSITION_RPC
fi

if [ -n "${HOODI_RPC}" ]; then
update_chain_spec_json $CONFIG_FILE "hoodi" "rpc" $HOODI_RPC
fi
Expand Down
44 changes: 44 additions & 0 deletions host/config/chain_spec_list_default.json
Original file line number Diff line number Diff line change
Expand Up @@ -246,5 +246,49 @@
"genesis_time": 0,
"seconds_per_slot": 1,
"is_taiko": true
},
{
"name": "taiko_transition",
"chain_id": 167014,
"max_spec_id": "SHASTA",
"hard_forks": {
"HEKLA": {
"Block": 0
},
"ONTAKE": {
"Block": 0
},
"PACAYA": {
"Block": 0
},
"SHASTA": {
"Timestamp": 1770987600
},
"CANCUN": "TBD"
},
"eip_1559_constants": {
"base_fee_change_denominator": "0x8",
"base_fee_max_increase_denominator": "0x8",
"base_fee_max_decrease_denominator": "0x8",
"elasticity_multiplier": "0x2"
},
"l1_contract": {
"PACAYA": "0x07700C3bC1B0EE3D311E7D642d364242fd537906",
"SHASTA": "0x2C34D466f6f57043B534D9b24DD032e905a95f50"
},
"l2_contract": "0x1670140000000000000000000000000000010001",
"rpc": "http://34.59.40.60:8545",
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default rpc endpoint for taiko_transition is a plaintext http:// URL to a raw IP address. This is inconsistent with the other default entries (mostly https:// hostnames) and makes MITM/downgrade attacks easier if used outside a trusted network; prefer an https:// endpoint or a placeholder value that must be overridden via env/config (e.g., via TAIKO_TRANSITION_RPC).

Suggested change
"rpc": "http://34.59.40.60:8545",
"rpc": "https://taiko-transition-rpc.invalid",

Copilot uses AI. Check for mistakes.
"beacon_rpc": null,
"verifier_address_forks": {
"SHASTA": {
"SGX": "0xF6c749514c65D16b244A46A6eA4F691f15241ad3",
"RISC0": "0x15190EEf1934DFC909Cd8ae3479701cd644982F7",
"SP1": "0xe00Bd5E1c0a63be8b1385ba560f99f2A595050Ba",
"SGXGETH": "0xA7b19cd71553f9Cc1519963b6F98EEf3dB73d885"
}
},
"genesis_time": 0,
"seconds_per_slot": 1,
"is_taiko": true
}
]
2 changes: 2 additions & 0 deletions lib/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use crate::{
use anyhow::{bail, ensure, Result};
use reth_chainspec::{
ChainSpecBuilder, Hardfork, HOLESKY, MAINNET, TAIKO_A7, TAIKO_DEV, TAIKO_MAINNET, TAIKO_TOLBA,
TAIKO_TRANSITION,
};
use reth_evm::execute::{BlockExecutionOutput, BlockValidationError, Executor, ProviderError};
use reth_evm_ethereum::execute::{
Expand Down Expand Up @@ -190,6 +191,7 @@ impl<DB: Database<Error = ProviderError> + DatabaseCommit + OptimisticDatabase>
"holesky" => HOLESKY.clone(),
"taiko_dev" => TAIKO_DEV.clone(),
"taiko_hoodi" => TAIKO_TOLBA.clone(),
"taiko_transition" => TAIKO_TRANSITION.clone(),
_ => unimplemented!(),
};

Expand Down
Loading
Loading