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. -->
The recent protocol upgrade now requires that the address of the prover and proposer are the same. This can be achieved by simply using the same private keys to run the proposer and prover software, but this is not recommended as it can cause nonce issues.
This guide outlines how to achieve this with separate EOAs running prover and proposer through the ProverSet smart contract.
Clone the Taiko monorepo
The Taiko monorepo contains the scripts for deploying your ProverSet
. Checkout the latest stable release. (Use protocol-v1.9.0
for Hekla!)
Deploy the ProverSet
Set ROLLUP_ADDRESS_MANAGER
to the address of the RollupAddressManager contract on the network you are deploying to. You can find these values in our network reference docs.
Set PROVER_SET_ADMIN
to the address of your prover EOA. You will be able to withdraw TAIKO/TTKOh from the contract to this address.
Run the DeployProverSet.s.sol
script with your proposer’s private key. You can find the script here.
The script should print your implementation and proxy address with the log:
Use proxy address for the following steps.
Verify the contract as a proxy on Etherscan
Navigate to the proxyAddress
logged as output of the script above in Etherscan.
In the Contract
tab, you can find the More options
section as follows:
Select the Is this a proxy?
option and follow the instructions. This should verify the contract as a proxy to your ProverSet
implementation.
Write to the Proxy to enableProver()
If the above step was completed correctly, you should be able to see the Write as Proxy
option in the Contract
tab.
Connect to Etherscan with the EOA you used to deploy the ProverSet and send two enableProver()
transactions, enabling both your proposer
and prover
EOAs as provers. Set isProver
as true
for both transactions. You can set these as false
if you want to disable these provers in the future.
This will allow both EOAs to send transactions to your ProverSet implementation which will act as a proxy to TaikoL1.
Configure the contract as necessary
Manage the contract’s allowance with approveAllowance(). TaikoL1’s contract allowance is by default set to UINT256.MAX
in the init function.
Deposit your tokens and run your proposer + prover as usual!
If you’ve followed the instructions, send your TAIKO/TTKOh to the ProverSet proxy and begin running your prover and proposer as usual. If you’ve set up your allowance properly, there should be no need to use the depositBond
function, as it deposits TTKOh from the ProverSet to TaikoL1.
Ensure that you have set up the EOAs correctly to avoid problems.
If you’ve already deployed a ProverSet but would like to upgrade it through the Proxy, this guide is for you!
Find your existing Proxy’s address
This will be necessary for the following step.
Navigate to the taiko monorepo and checkout the release version of ProverSet you want to deploy.
Deploy the ProverSet contract from your prover EOA and call upgradeTo with the new implementation address on your original Proxy
Execute the following command, filling in the values in the curly braces appropriately.
You should see logs like these:
Then, proceed to your original Proxy contract; access the Write to Proxy
tab and scroll to the upgradeTo()
function.
Connect your EOA that you originally deployed the ProverSet from and call the function with your new Deployed to:
address.
Once the transaction succeeds, you have successfully upgraded your ProverSet.
If you’ve managed to propose and prove some blocks, it’s likely you’re wondering where your tokens went after.
It’s not missing, it’s just been deposited as bond in the TaikoL1 contract; you can withdraw it to the ProverSet contract with withdrawBond() manually.
Once you’ve deployed the contract, you should be able to find the contract address. You can do this on Etherscan manually or with forge!
You will need foundry installed, and an Etherscan API key; you can get this by signing in on etherscan.io
and navigating to your profile’s API Keys
.
Then, navigate to the protocol
package in taiko-mono
and execute the following command substituting values in curly braces as necessary.
You should get a success message and your contract should now show up as verified on Etherscan!
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!