-
Notifications
You must be signed in to change notification settings - Fork 6
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
feat: Submit MsgUpdateClient
to tendermint light client
#67
Conversation
~ $ simd query ibc channelv2 unreceived-packets channel-0 height: revision_height: "475" revision_number: "0" sequences: [] ~ $ simd query ibc channelv2 unreceived-packets channel-1 height: revision_height: "475" revision_number: "0" sequences: []
failed to request state transition proof: rpc error: code = Internal desc = error sending request for url (http://localhost:8545/)
The request is hitting celestia-prover
Getting this error
I think the client ID may need to be the SP1 contract address |
|
I think this line in the docker-compose may be incorrect |
New error unlocked
|
I made the celestia-prover crash. Logs from before the crash
Looks like it OOMed
|
The proof verifies off-chain:
|
The original public values are == to "reduced" public values, that is public values that have been modulo'ed the bn254 field limit. See https://www.diffchecker.com/rZxdMTKG/ |
I switched to returning a hex-encoded verifier key from the celestia-prover. Now I'm getting a verifier key mismatch error again. The logs
To find the verifier key in the contract:
The EVM error
which maps to the error
|
Updating the client finally works:
|
MsgUpdateClient
to tendermint light client
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
great work, getting closer
ethereumRPC = "http://localhost:8545/" | ||
// ethereumAddress is an address on the EVM chain. | ||
// ethereumAddress = "0xaF9053bB6c4346381C77C2FeD279B17ABAfCDf4d" | ||
// ethPrivateKey is the private key for ethereumAddress. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe we should specify that this is a faucet?
return txOpts | ||
} | ||
|
||
func getTxReciept(ctx context.Context, chain ethereum.Ethereum, hash ethcommon.Hash) *ethtypes.Receipt { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think i added something similar in make setup
script
Closes step two of #31. A few changes in this PR, can split them into separate PRs if reviewers request: 1. Checkout submodules in CI workflows lint and test. 2. Sort makefile commands alphabetically. Add a new `make relay` command that does step 2. 3. Update README with an important step to apply a diff in `solidity-ibc-eureka/justfile`. The diff is needed so that the Tendermint light client on the EVM roll-up supports Groth16 and has the correct verifier key (from the celestia-prover) 4. Enable debug mode on Reth node (can revert if requested) 5. Add `curl` to the Celestia-prover for debugging purposes (can revert if requested) 6. Update solidity-ibc-eureka version 7. Modify the prover proto to return hex-encoded verifier keys. This made it easier to plumb directly into the EVM contract and Tendermint light client set-up (can revert if requested) 8. Add a line to celestia-prover README to show example usage of `Info` endpoint 9. Add a debug-txhash script to help debug failed EVM transactions (can revert if requested) 10. Refactor the `extractDeployedContractAddresses` to utils package so that it can be used in multiple places 11. Refactor the `transfer` script I can't run the celestia-prover in Docker because #89 but if I run it locally, it works: ``` $ make relay go run testing/demo/pkg/relay/main.go Extracted deployed contract addresses: utils.ContractAddresses{ERC20:"0xa05915fd6e32a1aa7e67d800164cacb12487142d", Escrow:"0xc4515dd838dd640d6839933b33ff8d19640c1231", IBCStore:"0xf73bd8a7184bec941b3f9ef5e6f6df981e105535", ICS07Tendermint:"0xe53275a1fca119e1c5eeb32e7a72e54835a63936", ICS20Transfer:"0xb1c938f5ba4b3593377f399e12175e8db0c787ff", ICS26Router:"0x48fd1226d797400779bbfaf1706f5fb8da04ae91", ICSCore:"0x7e7ad18adc99b94d4c728fdf13d4de97b926a0d8"} Getting celestia prover info... Got celestia prover info. StateTransitionVerifierKey: 0x0081282e1279b92586a3330c1cd83a3f0910299bdc7be90ac1a24b2a0826523bInvoking icsCore.UpdateClient... Transaction hash: 0x6370b144be660a5d8f798c45fe3f1942735e7a86063dc1834b61013f04de3b11 Block number: 170 Gas used: 289132 Logs: [] recvBlockNumber 170 ```
Closes step two of #31.
A few changes in this PR, can split them into separate PRs if reviewers request:
make relay
command that does step 2.solidity-ibc-eureka/justfile
. The diff is needed so that the Tendermint light client on the EVM roll-up supports Groth16 and has the correct verifier key (from the celestia-prover)curl
to the Celestia-prover for debugging purposes (can revert if requested)Info
endpointextractDeployedContractAddresses
to utils package so that it can be used in multiple placestransfer
scriptTesting
I can't run the celestia-prover in Docker because #89 but if I run it locally, it works: