Skip to content

Commit 4cf7d2c

Browse files
committed
fix: rm v1 payment api, add paymentState to v2
1 parent 89cc3d0 commit 4cf7d2c

File tree

11 files changed

+883
-1162
lines changed

11 files changed

+883
-1162
lines changed

api/clients/accountant.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"time"
1010

1111
commonpb "github.com/Layr-Labs/eigenda/api/grpc/common"
12-
disperser_rpc "github.com/Layr-Labs/eigenda/api/grpc/disperser"
12+
disperser_v2_rpc "github.com/Layr-Labs/eigenda/api/grpc/disperser/v2"
1313
"github.com/Layr-Labs/eigenda/core"
1414
"github.com/Layr-Labs/eigenda/core/meterer"
1515
)
@@ -19,8 +19,8 @@ var requiredQuorums = []uint8{0, 1}
1919

2020
type Accountant interface {
2121
AccountBlob(ctx context.Context, numSymbols uint64, quorums []uint8) (*commonpb.PaymentHeader, []byte, error)
22-
AuthenticatePaymentStateRequest() (*disperser_rpc.GetPaymentStateRequest, error)
23-
SetPaymentState(paymentState *disperser_rpc.GetPaymentStateReply)
22+
AuthenticatePaymentStateRequest() (*disperser_v2_rpc.GetPaymentStateRequest, error)
23+
SetPaymentState(paymentState *disperser_v2_rpc.GetPaymentStateReply)
2424
}
2525

2626
var _ Accountant = &accountant{}
@@ -182,7 +182,7 @@ func QuorumCheck(quorumNumbers []uint8, allowedNumbers []uint8) error {
182182
return nil
183183
}
184184

185-
func (a *accountant) SetPaymentState(paymentState *disperser_rpc.GetPaymentStateReply) {
185+
func (a *accountant) SetPaymentState(paymentState *disperser_v2_rpc.GetPaymentStateReply) {
186186
quorumNumbers := make([]uint8, len(paymentState.Reservation.QuorumNumbers))
187187
for i, quorum := range paymentState.Reservation.QuorumNumbers {
188188
quorumNumbers[i] = uint8(quorum)
@@ -213,15 +213,15 @@ func (a *accountant) SetPaymentState(paymentState *disperser_rpc.GetPaymentState
213213
a.reservation.EndTimestamp = uint64(paymentState.Reservation.EndTimestamp)
214214
}
215215

216-
func (a *accountant) AuthenticatePaymentStateRequest() (*disperser_rpc.GetPaymentStateRequest, error) {
216+
func (a *accountant) AuthenticatePaymentStateRequest() (*disperser_v2_rpc.GetPaymentStateRequest, error) {
217217
accountID := a.paymentSigner.GetAccountID()
218218

219219
signature, err := a.paymentSigner.SignAccountID(accountID)
220220
if err != nil {
221221
return nil, err
222222
}
223223

224-
request := &disperser_rpc.GetPaymentStateRequest{
224+
request := &disperser_v2_rpc.GetPaymentStateRequest{
225225
AccountId: accountID,
226226
Signature: signature,
227227
}

api/clients/disperser_client.go

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package clients
33
import (
44
"context"
55
"crypto/tls"
6-
"errors"
76
"fmt"
87
"sync"
98
"time"
@@ -55,10 +54,8 @@ type DisperserClient interface {
5554
// DisperseBlobAuthenticated disperses a blob with an authenticated request.
5655
// The BlobStatus returned will always be PROCESSSING if error is nil.
5756
DisperseBlobAuthenticated(ctx context.Context, data []byte, customQuorums []uint8) (*disperser.BlobStatus, []byte, error)
58-
DispersePaidBlob(ctx context.Context, data []byte, customQuorums []uint8) (*disperser.BlobStatus, []byte, error)
5957
GetBlobStatus(ctx context.Context, key []byte) (*disperser_rpc.BlobStatusReply, error)
6058
RetrieveBlob(ctx context.Context, batchHeaderHash []byte, blobIndex uint32) ([]byte, error)
61-
InitializePaymentState(ctx context.Context) error
6259
}
6360

6461
// See the NewDisperserClient constructor's documentation for details and usage examples.
@@ -190,59 +187,6 @@ func (c *disperserClient) DisperseBlob(ctx context.Context, data []byte, quorums
190187
return blobStatus, reply.GetRequestId(), nil
191188
}
192189

193-
// DispersePaidBlob disperses a blob with a payment header and signature. Similar to DisperseBlob but with signed payment header.
194-
func (c *disperserClient) DispersePaidBlob(ctx context.Context, data []byte, quorums []uint8) (*disperser.BlobStatus, []byte, error) {
195-
if c.accountant == nil {
196-
return nil, nil, api.NewErrorInternal("not implemented")
197-
}
198-
199-
err := c.initOnceGrpcConnection()
200-
if err != nil {
201-
return nil, nil, fmt.Errorf("error initializing connection: %w", err)
202-
}
203-
204-
ctxTimeout, cancel := context.WithTimeout(ctx, c.config.Timeout)
205-
defer cancel()
206-
207-
quorumNumbers := make([]uint32, len(quorums))
208-
for i, q := range quorums {
209-
quorumNumbers[i] = uint32(q)
210-
}
211-
212-
// check every 32 bytes of data are within the valid range for a bn254 field element
213-
_, err = rs.ToFrArray(data)
214-
if err != nil {
215-
return nil, nil, fmt.Errorf("encountered an error to convert a 32-bytes into a valid field element, please use the correct format where every 32bytes(big-endian) is less than 21888242871839275222246405745257275088548364400416034343698204186575808495617 %w", err)
216-
}
217-
218-
header, signature, err := c.accountant.AccountBlob(ctx, uint64(encoding.GetBlobLength(uint(len(data)))), quorums)
219-
if header == nil {
220-
return nil, nil, errors.New("accountant returned nil pointer to header")
221-
}
222-
if err != nil {
223-
return nil, nil, err
224-
}
225-
226-
request := &disperser_rpc.DispersePaidBlobRequest{
227-
Data: data,
228-
QuorumNumbers: quorumNumbers,
229-
PaymentHeader: header,
230-
PaymentSignature: signature,
231-
}
232-
233-
reply, err := c.client.DispersePaidBlob(ctxTimeout, request)
234-
if err != nil {
235-
return nil, nil, err
236-
}
237-
238-
blobStatus, err := disperser.FromBlobStatusProto(reply.GetResult())
239-
if err != nil {
240-
return nil, nil, err
241-
}
242-
243-
return blobStatus, reply.GetRequestId(), nil
244-
}
245-
246190
func (c *disperserClient) DisperseBlobAuthenticated(ctx context.Context, data []byte, quorums []uint8) (*disperser.BlobStatus, []byte, error) {
247191
err := c.initOnceGrpcConnection()
248192
if err != nil {
@@ -384,54 +328,6 @@ func (c *disperserClient) RetrieveBlob(ctx context.Context, batchHeaderHash []by
384328
return reply.Data, nil
385329
}
386330

387-
func (c *disperserClient) getPaymentState(ctx context.Context) (*disperser_rpc.GetPaymentStateReply, error) {
388-
err := c.initOnceGrpcConnection()
389-
if err != nil {
390-
return nil, fmt.Errorf("error initializing connection: %w", err)
391-
}
392-
393-
ctxTimeout, cancel := context.WithTimeout(ctx, time.Second*60)
394-
defer cancel()
395-
396-
request, err := c.accountant.AuthenticatePaymentStateRequest()
397-
if err != nil {
398-
return nil, err
399-
}
400-
reply, err := c.client.GetPaymentState(ctxTimeout, request)
401-
if err != nil {
402-
return nil, err
403-
}
404-
405-
return reply, nil
406-
}
407-
408-
func (c *disperserClient) InitializePaymentState(ctx context.Context) error {
409-
paymentState, err := c.getPaymentState(ctx)
410-
if err != nil {
411-
return fmt.Errorf("error getting payment state from disperser: %w", err)
412-
}
413-
c.accountant.SetPaymentState(paymentState)
414-
// c.accountant.binUsages = []uint64{uint64(paymentState.CurrentBinUsage), uint64(paymentState.NextBinUsage), uint64(paymentState.OverflowBinUsage)}
415-
// c.accountant.cumulativePayment = new(big.Int).SetBytes(paymentState.CumulativePayment)
416-
// quorumNumbers := make([]uint8, len(paymentState.Reservation.QuorumNumbers))
417-
// for i, q := range paymentState.Reservation.QuorumNumbers {
418-
// quorumNumbers[i] = uint8(q)
419-
// }
420-
// c.accountant.reservation = core.ActiveReservation{
421-
// StartTimestamp: uint64(paymentState.Reservation.StartTimestamp),
422-
// EndTimestamp: uint64(paymentState.Reservation.EndTimestamp),
423-
// SymbolsPerSec: paymentState.Reservation.SymbolsPerSecond,
424-
// QuorumNumbers: quorumNumbers,
425-
// }
426-
// c.accountant.onDemand = core.OnDemandPayment{
427-
// CumulativePayment: new(big.Int).SetBytes(paymentState.OnChainCumulativePayment),
428-
// }
429-
// c.accountant.reservationWindow = paymentState.PaymentGlobalParams.ReservationWindow
430-
// c.accountant.pricePerSymbol = paymentState.PaymentGlobalParams.PricePerSymbol
431-
// c.accountant.minNumSymbols = paymentState.PaymentGlobalParams.MinNumSymbols
432-
return nil
433-
}
434-
435331
// initOnceGrpcConnection initializes the grpc connection and client if they are not already initialized.
436332
// If initialization fails, it caches the error and will return it on every subsequent call.
437333
func (c *disperserClient) initOnceGrpcConnection() error {

api/clients/eigenda_client.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,11 @@ func NewEigenDAClient(log log.Logger, config EigenDAClientConfig) (*EigenDAClien
120120
if err != nil {
121121
return nil, fmt.Errorf("new disperser-client: %w", err)
122122
}
123-
err = disperserClient.InitializePaymentState(context.Background())
124-
if err != nil {
125-
return nil, fmt.Errorf("error setting payment state: %w", err)
126-
}
123+
// TODO: uncomment this when we are using disperser client v2
124+
// err = disperserClient.InitializePaymentState(context.Background())
125+
// if err != nil {
126+
// return nil, fmt.Errorf("error setting payment state: %w", err)
127+
// }
127128

128129
lowLevelCodec, err := codecs.BlobEncodingVersionToCodec(config.PutBlobEncodingVersion)
129130
if err != nil {

0 commit comments

Comments
 (0)