feat(link): remote prover - #1415
Conversation
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
| Type ClientType `yaml:"type"` | ||
|
|
||
| // Params is this client type's settings. | ||
| Params yaml.RawMessage `yaml:"params,omitempty"` |
There was a problem hiding this comment.
This format of this is dependent on the type of light client, so we don't need to fill the ClientEnd config with tons of fields as we add support for more light clients.
There was a problem hiding this comment.
What parameters are available for configuration when using a remote prover? (Potentially).
| func (*AttestationParams) Validate() error { return nil } | ||
|
|
||
| // RemoteParams is the params block a remote client declares. | ||
| type RemoteParams struct { |
There was a problem hiding this comment.
Defines how ClientEnd.Params is formed. I'm defining these in config.go for now while we only have two light clients, but could move these definitions to be besides the light client implementations eventually and have the type and params registered on startup similar to the other PoC.
Greptile SummaryThe PR adds a protobuf/Connect contract and configurable client type for delegating proof generation to a remote prover, while generalizing the existing attestation proof generator behind a shared prover interface.
Confidence Score: 4/5The PR should not merge until remote prover requests are bounded so an unresponsive service cannot indefinitely halt packet processing. Remote prover calls use an HTTP client without a timeout and receive a background-derived pipeline context, allowing a server that accepts but never responds to hold stage workers forever and leave packets permanently pending. Files Needing Attention: link/internal/relay/prover/remote/remote.go Important Files Changed
|
| @@ -0,0 +1,89 @@ | |||
| // SPDX-License-Identifier: Apache-2.0 | |||
There was a problem hiding this comment.
This is pretty much identical to the internal interface except it specifies the chain and client in each request
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
| @@ -0,0 +1,69 @@ | |||
| // SPDX-License-Identifier: Apache-2.0 | |||
There was a problem hiding this comment.
Exposing a remote prover for e2es via a binary - relies on internal attestations provers
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
Signed-off-by: Dennis Fang <dhsfang@gmail.com>
a3ac382 to
c957434
Compare
| Type ClientType `yaml:"type"` | ||
|
|
||
| // Params is this client type's settings. | ||
| Params yaml.RawMessage `yaml:"params,omitempty"` |
There was a problem hiding this comment.
What parameters are available for configuration when using a remote prover? (Potentially).
| const ( | ||
| ClientTypeAttestation ClientType = "attestation" | ||
| // ClientTypeRemote delegates proof generation to a remote service | ||
| ClientTypeRemote ClientType = "remote" |
There was a problem hiding this comment.
Let's update the example ibc.yml to showcase this scenario
Summary
ProofGeneratortoProverthroughout.The contract
proto/link/prover.protomirrors the relayer's internal prover interfacemethod for method, with the client named on every request so one service can
serve many clients across many chains:
Configuration: