Skip to content

Commit 2a76deb

Browse files
goran-ethernalvcastellmjoanestebanrarnaubennassar
authored
feat: agg-sender (#22)
Co-authored-by: Goran Rojovic <[email protected]> Co-authored-by: Victor Castell <[email protected]> Co-authored-by: joanestebanr <[email protected]> Co-authored-by: Arnau Bennassar <[email protected]>
1 parent b43c062 commit 2a76deb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+6741
-183
lines changed

aggregator/agglayer/agglayer_client.go renamed to agglayer/client.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ var ErrAgglayerRateLimitExceeded = fmt.Errorf("agglayer rate limit exceeded")
2121
type AgglayerClientInterface interface {
2222
SendTx(signedTx SignedTx) (common.Hash, error)
2323
WaitTxToBeMined(hash common.Hash, ctx context.Context) error
24+
SendCertificate(certificate *SignedCertificate) (common.Hash, error)
25+
GetCertificateHeader(certificateHash common.Hash) (*CertificateHeader, error)
2426
}
2527

2628
// AggLayerClient is the client that will be used to interact with the AggLayer
@@ -86,3 +88,43 @@ func (c *AggLayerClient) WaitTxToBeMined(hash common.Hash, ctx context.Context)
8688
}
8789
}
8890
}
91+
92+
// SendCertificate sends a certificate to the AggLayer
93+
func (c *AggLayerClient) SendCertificate(certificate *SignedCertificate) (common.Hash, error) {
94+
response, err := rpc.JSONRPCCall(c.url, "interop_sendCertificate", certificate)
95+
if err != nil {
96+
return common.Hash{}, err
97+
}
98+
99+
if response.Error != nil {
100+
return common.Hash{}, fmt.Errorf("%d %s", response.Error.Code, response.Error.Message)
101+
}
102+
103+
var result types.ArgHash
104+
err = json.Unmarshal(response.Result, &result)
105+
if err != nil {
106+
return common.Hash{}, err
107+
}
108+
109+
return result.Hash(), nil
110+
}
111+
112+
// GetCertificateHeader returns the certificate header associated to the hash
113+
func (c *AggLayerClient) GetCertificateHeader(certificateHash common.Hash) (*CertificateHeader, error) {
114+
response, err := rpc.JSONRPCCall(c.url, "interop_getCertificateHeader", certificateHash)
115+
if err != nil {
116+
return nil, err
117+
}
118+
119+
if response.Error != nil {
120+
return nil, fmt.Errorf("%d %s", response.Error.Code, response.Error.Message)
121+
}
122+
123+
var result *CertificateHeader
124+
err = json.Unmarshal(response.Result, &result)
125+
if err != nil {
126+
return nil, err
127+
}
128+
129+
return result, nil
130+
}

agglayer/mock_agglayer_client.go

Lines changed: 138 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

0 commit comments

Comments
 (0)