Skip to content

Commit a8c9fa1

Browse files
authored
[v2] integrate with new payments contract (#995)
1 parent 72a3ee3 commit a8c9fa1

File tree

9 files changed

+343
-301
lines changed

9 files changed

+343
-301
lines changed

contracts/bindings/EigenDAServiceManager/binding.go

Lines changed: 35 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/bindings/MockRollup/binding.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/bindings/PaymentVault/binding.go

Lines changed: 262 additions & 262 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/eth/reader.go

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,21 @@ func (t *Reader) updateContractBindings(blsOperatorStateRetrieverAddr, eigenDASe
210210
}
211211
}
212212

213+
var contractPaymentVault *paymentvault.ContractPaymentVault
214+
paymentVaultAddr, err := contractEigenDAServiceManager.PaymentVault(&bind.CallOpts{})
215+
if err != nil {
216+
t.logger.Error("Failed to fetch PaymentVault address", "err", err)
217+
//TODO(hopeyen): return err when the contract is deployed
218+
// return err
219+
} else {
220+
contractPaymentVault, err = paymentvault.NewContractPaymentVault(paymentVaultAddr, t.ethClient)
221+
if err != nil {
222+
t.logger.Error("Failed to fetch PaymentVault contract", "err", err)
223+
return err
224+
}
225+
226+
}
227+
213228
t.bindings = &ContractBindings{
214229
ServiceManagerAddr: eigenDAServiceManagerAddr,
215230
RegCoordinatorAddr: registryCoordinatorAddr,
@@ -224,8 +239,8 @@ func (t *Reader) updateContractBindings(blsOperatorStateRetrieverAddr, eigenDASe
224239
EigenDAServiceManager: contractEigenDAServiceManager,
225240
DelegationManager: contractDelegationManager,
226241
RelayRegistry: contractRelayRegistry,
227-
// PaymentVault: contractPaymentVault,
228-
ThresholdRegistry: contractThresholdRegistry,
242+
PaymentVault: contractPaymentVault,
243+
ThresholdRegistry: contractThresholdRegistry,
229244
}
230245
return nil
231246
}
@@ -734,9 +749,8 @@ func (t *Reader) GetOnDemandPayments(ctx context.Context, accountIDs []gethcommo
734749
return nil, errors.New("payment vault not deployed")
735750
}
736751
paymentsMap := make(map[gethcommon.Address]*core.OnDemandPayment)
737-
payments, err := t.bindings.PaymentVault.GetOnDemandAmounts(&bind.CallOpts{
738-
Context: ctx,
739-
}, accountIDs)
752+
payments, err := t.bindings.PaymentVault.GetOnDemandTotalDeposits(&bind.CallOpts{
753+
Context: ctx}, accountIDs)
740754
if err != nil {
741755
return nil, err
742756
}
@@ -759,7 +773,7 @@ func (t *Reader) GetOnDemandPaymentByAccount(ctx context.Context, accountID geth
759773
if t.bindings.PaymentVault == nil {
760774
return nil, errors.New("payment vault not deployed")
761775
}
762-
onDemandPayment, err := t.bindings.PaymentVault.GetOnDemandAmount(&bind.CallOpts{
776+
onDemandPayment, err := t.bindings.PaymentVault.GetOnDemandTotalDeposit(&bind.CallOpts{
763777
Context: ctx,
764778
}, accountID)
765779
if err != nil {
@@ -777,28 +791,27 @@ func (t *Reader) GetGlobalSymbolsPerSecond(ctx context.Context) (uint64, error)
777791
if t.bindings.PaymentVault == nil {
778792
return 0, errors.New("payment vault not deployed")
779793
}
780-
globalSymbolsPerSecond, err := t.bindings.PaymentVault.GlobalRateBinInterval(&bind.CallOpts{
794+
globalSymbolsPerSecond, err := t.bindings.PaymentVault.GlobalRatePeriodInterval(&bind.CallOpts{
781795
Context: ctx,
782796
})
783797
if err != nil {
784798
return 0, err
785799
}
786-
return globalSymbolsPerSecond.Uint64(), nil
800+
return globalSymbolsPerSecond, nil
787801
}
788802

789-
func (t *Reader) GetGlobalRateBinInterval(ctx context.Context) (uint32, error) {
803+
func (t *Reader) GetGlobalRatePeriodInterval(ctx context.Context) (uint32, error) {
790804
if t.bindings.PaymentVault == nil {
791805
return 0, errors.New("payment vault not deployed")
792806
}
793-
globalRateBinInterval, err := t.bindings.PaymentVault.GlobalRateBinInterval(&bind.CallOpts{
807+
globalRateBinInterval, err := t.bindings.PaymentVault.GlobalRatePeriodInterval(&bind.CallOpts{
794808
Context: ctx,
795809
})
796810
if err != nil {
797811
return 0, err
798812
}
799-
return uint32(globalRateBinInterval.Uint64()), nil
813+
return uint32(globalRateBinInterval), nil
800814
}
801-
802815
func (t *Reader) GetMinNumSymbols(ctx context.Context) (uint32, error) {
803816
if t.bindings.PaymentVault == nil {
804817
return 0, errors.New("payment vault not deployed")
@@ -809,7 +822,7 @@ func (t *Reader) GetMinNumSymbols(ctx context.Context) (uint32, error) {
809822
if err != nil {
810823
return 0, err
811824
}
812-
return uint32(minNumSymbols.Uint64()), nil
825+
return uint32(minNumSymbols), nil
813826
}
814827

815828
func (t *Reader) GetPricePerSymbol(ctx context.Context) (uint32, error) {
@@ -822,29 +835,27 @@ func (t *Reader) GetPricePerSymbol(ctx context.Context) (uint32, error) {
822835
if err != nil {
823836
return 0, err
824837
}
825-
return uint32(pricePerSymbol.Uint64()), nil
838+
return uint32(pricePerSymbol), nil
826839
}
827840

828841
func (t *Reader) GetReservationWindow(ctx context.Context) (uint32, error) {
829842
if t.bindings.PaymentVault == nil {
830843
return 0, errors.New("payment vault not deployed")
831844
}
832-
reservationWindow, err := t.bindings.PaymentVault.ReservationBinInterval(&bind.CallOpts{
833-
Context: ctx,
834-
})
845+
reservationWindow, err := t.bindings.PaymentVault.ReservationPeriodInterval(&bind.CallOpts{
846+
Context: ctx})
835847
if err != nil {
836848
return 0, err
837849
}
838-
return uint32(reservationWindow.Uint64()), nil
850+
return uint32(reservationWindow), nil
839851
}
840852

841853
func (t *Reader) GetOperatorSocket(ctx context.Context, operatorId core.OperatorID) (string, error) {
842854
if t.bindings.SocketRegistry == nil {
843855
return "", errors.New("socket registry not enabled")
844856
}
845857
socket, err := t.bindings.SocketRegistry.GetOperatorSocket(&bind.CallOpts{
846-
Context: ctx,
847-
}, [32]byte(operatorId))
858+
Context: ctx}, [32]byte(operatorId))
848859
if err != nil {
849860
return "", err
850861
}

core/meterer/meterer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,13 +264,13 @@ func (m *Meterer) SymbolsCharged(numSymbols uint) uint32 {
264264

265265
// IncrementBinUsage increments the bin usage atomically and checks for overflow
266266
func (m *Meterer) IncrementGlobalBinUsage(ctx context.Context, symbolsCharged uint64) error {
267-
globalPeriod := GetReservationPeriod(uint64(time.Now().Unix()), m.ChainPaymentState.GetGlobalRateBinInterval())
267+
globalPeriod := GetReservationPeriod(uint64(time.Now().Unix()), m.ChainPaymentState.GetGlobalRatePeriodInterval())
268268

269269
newUsage, err := m.OffchainStore.UpdateGlobalBin(ctx, globalPeriod, symbolsCharged)
270270
if err != nil {
271271
return fmt.Errorf("failed to increment global bin usage: %w", err)
272272
}
273-
if newUsage > m.ChainPaymentState.GetGlobalSymbolsPerSecond() {
273+
if newUsage > m.ChainPaymentState.GetGlobalSymbolsPerSecond()*uint64(m.ChainPaymentState.GetGlobalRatePeriodInterval()) {
274274
return fmt.Errorf("global bin usage overflows")
275275
}
276276
return nil

core/meterer/meterer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ func TestMetererReservations(t *testing.T) {
180180
ctx := context.Background()
181181
paymentChainState.On("GetReservationWindow", testifymock.Anything).Return(uint32(1), nil)
182182
paymentChainState.On("GetGlobalSymbolsPerSecond", testifymock.Anything).Return(uint64(1009), nil)
183-
paymentChainState.On("GetGlobalRateBinInterval", testifymock.Anything).Return(uint32(1), nil)
183+
paymentChainState.On("GetGlobalRatePeriodInterval", testifymock.Anything).Return(uint32(1), nil)
184184
paymentChainState.On("GetMinNumSymbols", testifymock.Anything).Return(uint32(3), nil)
185185

186186
reservationPeriod := meterer.GetReservationPeriod(uint64(time.Now().Unix()), mt.ChainPaymentState.GetReservationWindow())

core/meterer/onchain_state.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ type OnchainPayment interface {
1919
GetOnDemandPaymentByAccount(ctx context.Context, accountID gethcommon.Address) (*core.OnDemandPayment, error)
2020
GetOnDemandQuorumNumbers(ctx context.Context) ([]uint8, error)
2121
GetGlobalSymbolsPerSecond() uint64
22-
GetGlobalRateBinInterval() uint32
22+
GetGlobalRatePeriodInterval() uint32
2323
GetMinNumSymbols() uint32
2424
GetPricePerSymbol() uint32
2525
GetReservationWindow() uint32
@@ -40,12 +40,12 @@ type OnchainPaymentState struct {
4040
}
4141

4242
type PaymentVaultParams struct {
43-
GlobalSymbolsPerSecond uint64
44-
GlobalRateBinInterval uint32
45-
MinNumSymbols uint32
46-
PricePerSymbol uint32
47-
ReservationWindow uint32
48-
OnDemandQuorumNumbers []uint8
43+
GlobalSymbolsPerSecond uint64
44+
GlobalRatePeriodInterval uint32
45+
MinNumSymbols uint32
46+
PricePerSymbol uint32
47+
ReservationWindow uint32
48+
OnDemandQuorumNumbers []uint8
4949
}
5050

5151
func NewOnchainPaymentState(ctx context.Context, tx *eth.Reader) (*OnchainPaymentState, error) {
@@ -194,8 +194,8 @@ func (pcs *OnchainPaymentState) GetGlobalSymbolsPerSecond() uint64 {
194194
return pcs.PaymentVaultParams.Load().GlobalSymbolsPerSecond
195195
}
196196

197-
func (pcs *OnchainPaymentState) GetGlobalRateBinInterval() uint32 {
198-
return pcs.PaymentVaultParams.Load().GlobalRateBinInterval
197+
func (pcs *OnchainPaymentState) GetGlobalRatePeriodInterval() uint32 {
198+
return pcs.PaymentVaultParams.Load().GlobalRatePeriodInterval
199199
}
200200

201201
func (pcs *OnchainPaymentState) GetMinNumSymbols() uint32 {

core/mock/payment_state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (m *MockOnchainPaymentState) GetGlobalSymbolsPerSecond() uint64 {
6262
return args.Get(0).(uint64)
6363
}
6464

65-
func (m *MockOnchainPaymentState) GetGlobalRateBinInterval() uint32 {
65+
func (m *MockOnchainPaymentState) GetGlobalRatePeriodInterval() uint32 {
6666
args := m.Called()
6767
return args.Get(0).(uint32)
6868
}

disperser/apiserver/server_v2_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ func newTestServerV2(t *testing.T) *testComponents {
443443
mockState.On("GetReservationWindow", tmock.Anything).Return(uint32(1), nil)
444444
mockState.On("GetPricePerSymbol", tmock.Anything).Return(uint32(2), nil)
445445
mockState.On("GetGlobalSymbolsPerSecond", tmock.Anything).Return(uint64(1009), nil)
446-
mockState.On("GetGlobalRateBinInterval", tmock.Anything).Return(uint32(1), nil)
446+
mockState.On("GetGlobalRatePeriodInterval", tmock.Anything).Return(uint32(1), nil)
447447
mockState.On("GetMinNumSymbols", tmock.Anything).Return(uint32(3), nil)
448448

449449
now := uint64(time.Now().Unix())

0 commit comments

Comments
 (0)