@@ -8,86 +8,99 @@ import (
88 "context"
99 "fmt"
1010 "net"
11+ "net/http"
12+
13+ "github.com/ethereum/go-ethereum/common/hexutil"
14+
15+ "github.com/ethereum/go-ethereum/rpc"
1116
1217 "github.com/offchainlabs/nitro/arbstate"
1318 "github.com/offchainlabs/nitro/blsSignatures"
1419 "github.com/offchainlabs/nitro/das"
15- "google.golang.org/grpc"
1620)
1721
1822type DASRPCServer struct {
19- UnimplementedDASServiceImplServer // this allows grpc to verify its version invariant
20- grpcServer * grpc.Server
21- localDAS das.DataAvailabilityService
23+ localDAS das.DataAvailabilityService
2224}
2325
24- func StartDASRPCServer (ctx context.Context , addr string , portNum uint64 , localDAS das.DataAvailabilityService ) (* DASRPCServer , error ) {
26+ func StartDASRPCServer (ctx context.Context , addr string , portNum uint64 , localDAS das.DataAvailabilityService ) (* http. Server , error ) {
2527 listener , err := net .Listen ("tcp" , fmt .Sprintf ("%s:%d" , addr , portNum ))
2628 if err != nil {
2729 return nil , err
2830 }
2931 return StartDASRPCServerOnListener (ctx , listener , localDAS )
3032}
3133
32- func StartDASRPCServerOnListener (ctx context.Context , listener net.Listener , localDAS das.DataAvailabilityService ) (* DASRPCServer , error ) {
33- grpcServer := grpc .NewServer ()
34- dasServer := & DASRPCServer {grpcServer : grpcServer , localDAS : localDAS }
35- RegisterDASServiceImplServer (grpcServer , dasServer )
34+ func StartDASRPCServerOnListener (ctx context.Context , listener net.Listener , localDAS das.DataAvailabilityService ) (* http.Server , error ) {
35+ rpcServer := rpc .NewServer ()
36+ err := rpcServer .RegisterName ("das" , & DASRPCServer {localDAS : localDAS })
37+ if err != nil {
38+ return nil , err
39+ }
40+
41+ srv := & http.Server {
42+ Handler : rpcServer ,
43+ }
44+
3645 go func () {
37- err := grpcServer .Serve (listener )
46+ err := srv .Serve (listener )
3847 if err != nil {
3948 return
4049 }
4150 }()
4251 go func () {
4352 <- ctx .Done ()
44- grpcServer . GracefulStop ( )
53+ _ = srv . Shutdown ( context . Background () )
4554 }()
46- return dasServer , nil
55+ return srv , nil
4756}
4857
49- func (serv * DASRPCServer ) Stop () {
50- serv .grpcServer .GracefulStop ()
58+ type StoreResult struct {
59+ DataHash hexutil.Bytes `json:"dataHash,omitempty"`
60+ Timeout hexutil.Uint64 `json:"timeout,omitempty"`
61+ SignersMask hexutil.Uint64 `json:"signersMask,omitempty"`
62+ KeysetHash hexutil.Bytes `json:"keysetHash,omitempty"`
63+ Sig hexutil.Bytes `json:"sig,omitempty"`
5164}
5265
53- func (serv * DASRPCServer ) Store (ctx context.Context , req * StoreRequest ) (* StoreResponse , error ) {
54- cert , err := serv .localDAS .Store (ctx , req . Message , req . Timeout , req . Sig )
66+ func (serv * DASRPCServer ) Store (ctx context.Context , message hexutil. Bytes , timeout hexutil. Uint64 , sig hexutil. Bytes ) (* StoreResult , error ) {
67+ cert , err := serv .localDAS .Store (ctx , message , uint64 ( timeout ), sig )
5568 if err != nil {
5669 return nil , err
5770 }
58- return & StoreResponse {
71+ return & StoreResult {
5972 KeysetHash : cert .KeysetHash [:],
6073 DataHash : cert .DataHash [:],
61- Timeout : cert .Timeout ,
62- SignersMask : cert .SignersMask ,
74+ Timeout : hexutil . Uint64 ( cert .Timeout ) ,
75+ SignersMask : hexutil . Uint64 ( cert .SignersMask ) ,
6376 Sig : blsSignatures .SignatureToBytes (cert .Sig ),
6477 }, nil
6578}
6679
67- func (serv * DASRPCServer ) Retrieve (ctx context.Context , req * RetrieveRequest ) (* RetrieveResponse , error ) {
68- cert , err := arbstate .DeserializeDASCertFrom (bytes .NewReader (req . CertBytes ))
80+ func (serv * DASRPCServer ) Retrieve (ctx context.Context , certBytes hexutil. Bytes ) (hexutil. Bytes , error ) {
81+ cert , err := arbstate .DeserializeDASCertFrom (bytes .NewReader (certBytes ))
6982 if err != nil {
7083 return nil , err
7184 }
7285 result , err := serv .localDAS .Retrieve (ctx , cert )
7386 if err != nil {
7487 return nil , err
7588 }
76- return & RetrieveResponse { Result : result } , nil
89+ return result , nil
7790}
7891
79- func (serv * DASRPCServer ) KeysetFromHash (ctx context.Context , req * KeysetFromHashRequest ) (* KeysetFromHashResponse , error ) {
80- resp , err := serv .localDAS .KeysetFromHash (ctx , req . KsHash )
92+ func (serv * DASRPCServer ) KeysetFromHash (ctx context.Context , ksHash hexutil. Bytes ) (hexutil. Bytes , error ) {
93+ resp , err := serv .localDAS .KeysetFromHash (ctx , ksHash )
8194 if err != nil {
8295 return nil , err
8396 }
84- return & KeysetFromHashResponse { Result : resp } , nil
97+ return resp , nil
8598}
8699
87- func (serv * DASRPCServer ) CurrentKeysetBytes (ctx context.Context , req * CurrentKeysetBytesRequest ) (* CurrentKeysetBytesResponse , error ) {
100+ func (serv * DASRPCServer ) CurrentKeysetBytes (ctx context.Context ) (hexutil. Bytes , error ) {
88101 resp , err := serv .localDAS .CurrentKeysetBytes (ctx )
89102 if err != nil {
90103 return nil , err
91104 }
92- return & CurrentKeysetBytesResponse { Result : resp } , nil
105+ return resp , nil
93106}
0 commit comments