Skip to content

Commit

Permalink
feat: add event NewBatchV3
Browse files Browse the repository at this point in the history
  • Loading branch information
uri-99 committed Sep 5, 2024
1 parent dbcfadc commit 4baa525
Show file tree
Hide file tree
Showing 9 changed files with 189 additions and 30 deletions.
4 changes: 2 additions & 2 deletions aggregator/internal/pkg/aggregator.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ type BatchData struct {

type Aggregator struct {
AggregatorConfig *config.AggregatorConfig
NewBatchChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2
NewBatchChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3
avsReader *chainio.AvsReader
avsSubscriber *chainio.AvsSubscriber
avsWriter *chainio.AvsWriter
Expand Down Expand Up @@ -91,7 +91,7 @@ type Aggregator struct {
}

func NewAggregator(aggregatorConfig config.AggregatorConfig) (*Aggregator, error) {
newBatchChan := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2)
newBatchChan := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3)

avsReader, err := chainio.NewAvsReaderFromConfig(aggregatorConfig.BaseConfig, aggregatorConfig.EcdsaConfig)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion batcher/aligned-sdk/abi/AlignedLayerServiceManager.json

Large diffs are not rendered by default.

175 changes: 161 additions & 14 deletions contracts/bindings/AlignedLayerServiceManager/binding.go

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions contracts/src/core/AlignedLayerServiceManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ contract AlignedLayerServiceManager is
batchesState[batchIdentifier] = batchState;

emit NewBatchV2(
batchMerkleRoot,
msg.sender,
uint32(block.number),
batchDataPointer
);
emit NewBatchV3(
batchMerkleRoot,
msg.sender,
uint32(block.number),
Expand Down
6 changes: 6 additions & 0 deletions contracts/src/core/IAlignedLayerServiceManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ import {IBLSSignatureChecker} from "eigenlayer-middleware/interfaces/IBLSSignatu
interface IAlignedLayerServiceManager {
// EVENTS
event NewBatchV2(
bytes32 indexed batchMerkleRoot,
address senderAddress,
uint32 taskCreatedBlock,
string batchDataPointer
);
event NewBatchV3(
bytes32 indexed batchMerkleRoot,
address senderAddress,
uint32 taskCreatedBlock,
Expand Down
14 changes: 7 additions & 7 deletions core/chainio/avs_subscriber.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ func NewAvsSubscriberFromConfig(baseConfig *config.BaseConfig) (*AvsSubscriber,
}, nil
}

func (s *AvsSubscriber) SubscribeToNewTasks(newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) (chan error, error) {
func (s *AvsSubscriber) SubscribeToNewTasks(newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) (chan error, error) {
// Create a new channel to receive new tasks
internalChannel := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2)
internalChannel := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3)

// Subscribe to new tasks
sub, err := subscribeToNewTasks(s.AvsContractBindings.ServiceManager, internalChannel, s.logger)
Expand Down Expand Up @@ -135,11 +135,11 @@ func (s *AvsSubscriber) SubscribeToNewTasks(newTaskCreatedChan chan *servicemana

func subscribeToNewTasks(
serviceManager *servicemanager.ContractAlignedLayerServiceManager,
newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2,
newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3,
logger sdklogging.Logger,
) (event.Subscription, error) {
for i := 0; i < MaxRetries; i++ {
sub, err := serviceManager.WatchNewBatchV2(
sub, err := serviceManager.WatchNewBatchV3(
&bind.WatchOpts{}, newTaskCreatedChan, nil,
)
if err != nil {
Expand All @@ -155,7 +155,7 @@ func subscribeToNewTasks(
return nil, fmt.Errorf("failed to subscribe to new AlignedLayer tasks after %d retries", MaxRetries)
}

func (s *AvsSubscriber) processNewBatch(batch *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, batchesSet map[[32]byte]struct{}, newBatchMutex *sync.Mutex, newTaskCreatedChan chan<- *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) {
func (s *AvsSubscriber) processNewBatch(batch *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, batchesSet map[[32]byte]struct{}, newBatchMutex *sync.Mutex, newTaskCreatedChan chan<- *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) {
newBatchMutex.Lock()
defer newBatchMutex.Unlock()

Expand Down Expand Up @@ -184,7 +184,7 @@ func (s *AvsSubscriber) processNewBatch(batch *servicemanager.ContractAlignedLay
// getLatestTaskFromEthereum queries the blockchain for the latest task using the FilterLogs method.
// The alternative to this is using the FilterNewBatch method from the contract's filterer, but it requires
// to iterate over all the logs, which is not efficient and not needed since we only need the latest task.
func (s *AvsSubscriber) getLatestTaskFromEthereum() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, error) {
func (s *AvsSubscriber) getLatestTaskFromEthereum() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, error) {
latestBlock, err := s.AvsContractBindings.ethClient.BlockNumber(context.Background())
if err != nil {
latestBlock, err = s.AvsContractBindings.ethClientFallback.BlockNumber(context.Background())
Expand Down Expand Up @@ -233,7 +233,7 @@ func (s *AvsSubscriber) getLatestTaskFromEthereum() (*servicemanager.ContractAli

lastLog := logs[len(logs)-1]

var latestTask servicemanager.ContractAlignedLayerServiceManagerNewBatchV2
var latestTask servicemanager.ContractAlignedLayerServiceManagerNewBatchV3
err = alignedLayerServiceManagerABI.UnpackIntoInterface(&latestTask, "NewBatch", lastLog.Data)
if err != nil {
return nil, fmt.Errorf("failed to unpack log data: %w", err)
Expand Down
2 changes: 1 addition & 1 deletion explorer/lib/abi/AlignedLayerServiceManager.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ defmodule AlignedLayerServiceManager do

def get_new_batch_events(%{fromBlock: fromBlock, toBlock: toBlock}) do
events =
AlignedLayerServiceManager.EventFilters.new_batch_v2(nil)
AlignedLayerServiceManager.EventFilters.new_batch_v3(nil)
|> Ethers.get_logs(fromBlock: fromBlock, toBlock: toBlock)

case events do
Expand Down
8 changes: 4 additions & 4 deletions operator/pkg/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ type Operator struct {
KeyPair *bls.KeyPair
OperatorId eigentypes.OperatorId
avsSubscriber chainio.AvsSubscriber
NewTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2
NewTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3
Logger logging.Logger
aggRpcClient AggregatorRpcClient
metricsReg *prometheus.Registry
Expand Down Expand Up @@ -91,7 +91,7 @@ func NewOperatorFromConfig(configuration config.OperatorConfig) (*Operator, erro
if err != nil {
log.Fatalf("Could not create AVS subscriber")
}
newTaskCreatedChan := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2)
newTaskCreatedChan := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3)

rpcClient, err := NewAggregatorRpcClient(configuration.Operator.AggregatorServerIpPortAddress, logger)
if err != nil {
Expand Down Expand Up @@ -158,7 +158,7 @@ func (o *Operator) Start(ctx context.Context) error {
}
}

func (o *Operator) handleNewBatchLog(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) {
func (o *Operator) handleNewBatchLog(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) {
o.Logger.Infof("Received new batch log")
err := o.ProcessNewBatchLog(newBatchLog)
if err != nil {
Expand Down Expand Up @@ -189,7 +189,7 @@ func (o *Operator) handleNewBatchLog(newBatchLog *servicemanager.ContractAligned

// Takes a NewTaskCreatedLog struct as input and returns a TaskResponseHeader struct.
// The TaskResponseHeader struct is the struct that is signed and sent to the contract as a task response.
func (o *Operator) ProcessNewBatchLog(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) error {
func (o *Operator) ProcessNewBatchLog(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) error {

o.Logger.Info("Received new batch with proofs to verify",
"batch merkle root", "0x"+hex.EncodeToString(newBatchLog.BatchMerkleRoot[:]),
Expand Down

0 comments on commit 4baa525

Please sign in to comment.