Troubleshooting
If you run into any problems, please visit the node troubleshooting page for help. If you run into an error that isn’t yet listed, please reach out in our Discord!
component. -->
A Taiko prover needs to be able to generate SGX proofs at the moment. To do that, you need to run raiko. Please follow the Docker setup guide here.
After successfully setting up raiko, set the SGX_RAIKO_HOST
endpoint in your .env
file.
Set the L1_PROVER_PRIVATE_KEY
to an L1 account’s private key which will send the Prove Block transactions.
You may optionally deploy a ProverSet
contract to run your prover. If you are working with a third party prover, you will have to follow the guide with them to negotiate allowance and deposit of TAIKO/TTKOh. A ProverSet is recommended for a longer term stable setup to avoid nonce issues. For testing purposes, you may not feel the need to deploy a ProverSet.
Finally set ENABLE_PROVER
to true
in simple-taiko-node .env
.
Set COMPOSE_PROFILES=prover
or add prover to the list.
You can then run your prover with docker compose up -d
! Please use docker compose -f docker-compose-hekla.yml up -d
if you are running on Hekla.
Please find all relevant bond, cooldown, and proving window information here.
Batch proving has been enabled in release 0.43.1 of the taiko alethia client!
Please use simple-taiko-node release 1.9.0 or above to enable this functionality.
This functionality can be enabled simply by setting SGX_BATCH_SIZE
in your .env
file to a number greater than 1.
If it is set to 1 or unset your prover will submit proofs upon assignment (standard function).
When enabled, your prover will submit a batch of proofs when x number of blocks are assigned, x being SGX_BATCH_SIZE
.
As provers are given a proof window for every assigned proof, it can become the case that while waiting for a batch size to be fulfilled the already assigned proofs exit their proof window and become unassigned.
To prevent this, we have introduced another flag FORCE_BATCH_PROVING_INTERVAL
. This flag will only be functional if batch proving is enabled.
This flag will force the prover to submit a batch of proofs every x minutes, regardless of the batch size being fulfilled. We don’t recommend this value be set > 45 minutes, as the provingWindow is 60 minutes and any closer will put you at risk of having proof assignments expire. It is by default set to 30 minutes.
Approve the TaikoL1 contract as a spender.
Visit the TAIKO contract on Ethereum here.
Click the Connect to Web3 button.
Click the approve function and set the spender address to the TaikoL1 contract address: 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a
.
Set the amount to at least the minimum bond amount of 150 TAIKO.
You will need 150 TAIKO for each bond you sign. After entering 150, you need to set the 18 decimals that the TAIKO contract takes, you can click the plus button and then select 10^18.
You will notice that the amount subtracted is separate in two transactions, 125 for the proposeBlock
and 25 for proveBlock
.
This is because the livenessBond
(125) is taken when the block is proposed, and once the proof has been provided in the window is credited in TaikoL1; the validityBond
(150) is then debited using the existing balance + an extra 25 TTKOh.
If you have bonded TTKOh in the TaikoL1 contract, it will be used first before more is taken from your ProverSet.
For an explanation of the difference between these bonds, please refer to the terminology section here.
Finally, click the Write button.
You will need TTKOh deposited on the TaikoL1 contract to secure the bond for the proofs you generate.
Approve the TaikoL1 contract as a spender.
Visit the TTKOh contract on Holesky here.
Click the Connect to Web3 button.
Click the approve function and set the spender address to the TaikoL1 contract address: 0x79C9109b764609df928d16fC4a91e9081F7e87DB
.
Set the amount to at least the minimum bond amount of 150 TTKOh.
You will need 150 TTKOh for each bond you sign. After entering 150, you need to set the 18 decimals that the TTKOh contract takes, you can click the plus button and then select 10^18.
You will notice that the amount subtracted is separate in two transactions, 125 for the proposeBlock
and 25 for proveBlock
.
This is because the livenessBond
(125) is taken when the block is proposed, and once the proof has been provided in the window is credited in TaikoL1; the validityBond
(150) is then debited using the existing balance + an extra 25 TTKOh.
If you have bonded TTKOh in the TaikoL1 contract, it will be used first before more is taken from your ProverSet.
For an explanation of the difference between these bonds, please refer to the terminology section here.
Finally, click the Write button.
Troubleshooting
If you run into any problems, please visit the node troubleshooting page for help. If you run into an error that isn’t yet listed, please reach out in our Discord!