1 unstable release
new 0.0.1 | Nov 13, 2024 |
---|
#12 in #bn254
39KB
776 lines
cerberus-api
This is the API spec of remote signer. The spec currently only support BLS on bn254 signing.
Supported Bindings
Go
The go bindings resides in pkg/api/vi directory.
Rust
The rust bindings resides in src directory.
Signing Quirks
If you are implementing a version of this, please make sure to check this code
for implementation of sign and verify. If you use any other implementation, the signatures will not be compatible with EigenLayer contracts.
Eventually we will support more HashToCurve
algorithms.
Implementation
Usage
Signing Client
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/Layr-Labs/cerberus-api/pkg/api/v1"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func main() {
conn, err := grpc.NewClient(
"localhost:50051",
grpc.WithTransportCredentials(insecure.NewCredentials()),
)
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
c := v1.NewSignerClient(conn)
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
req := &v1.SignGenericRequest{
PublicKey: "0xabcd",
Password: "p@$$w0rd",
Data: []byte{0x01, 0x02, 0x03},
}
resp, err := c.SignGeneric(ctx, req)
if err != nil {
log.Fatalf("could not sign: %v", err)
}
fmt.Printf("Signature: %v\n", resp.Signature)
}
Security Bugs
Please report security vulnerabilities to security@eigenlabs.org. Do NOT report security bugs via Github Issues.
Dependencies
~8–14MB
~177K SLoC