From 17c367bb1762ef9fbfa8df7f1317895cdd7ccede Mon Sep 17 00:00:00 2001 From: Alok Nerurkar Date: Wed, 24 Sep 2025 23:42:48 +0530 Subject: [PATCH 1/6] fix: add real bidder for hoodi stressnet --- infrastructure/docker/Dockerfile.builder | 2 ++ infrastructure/docker/Dockerfile.realbidder | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 infrastructure/docker/Dockerfile.realbidder diff --git a/infrastructure/docker/Dockerfile.builder b/infrastructure/docker/Dockerfile.builder index 02c0928ba..a5dd444ff 100644 --- a/infrastructure/docker/Dockerfile.builder +++ b/infrastructure/docker/Dockerfile.builder @@ -15,6 +15,7 @@ COPY cl/go.mod cl/go.sum ./cl/ COPY infrastructure/tools/keystore-generator/go.mod infrastructure/tools/keystore-generator/go.sum ./infrastructure/tools/keystore-generator/ COPY p2p/integrationtest/provider/entrypoint.sh /scripts/provider-emulator-entrypoint.sh +COPY p2p/integrationtest/real-bidder/entrypoint.sh /scripts/realbidder-emulator-entrypoint.sh RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ @@ -39,6 +40,7 @@ ARG TARGETS="./oracle/cmd \ ./tools/validators-monitor \ ./tools/points-service \ ./p2p/integrationtest/provider \ + ./p2p/integrationtest/real-bidder \ ./cl/cmd/singlenode" RUN --mount=type=cache,target=/root/.cache/go-build \ diff --git a/infrastructure/docker/Dockerfile.realbidder b/infrastructure/docker/Dockerfile.realbidder new file mode 100644 index 000000000..1ef331733 --- /dev/null +++ b/infrastructure/docker/Dockerfile.realbidder @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1.4 +FROM alpine:3.10 + +COPY --from=builder_ctx /go/bin/real-bidder /usr/local/bin/bidder-emulator +COPY --from=builder_ctx /scripts/realbidder-emulator-entrypoint.sh entrypoint.sh + +EXPOSE 8080 + +ENTRYPOINT ["./entrypoint.sh"] From 139f31390da6ec8eb87618f812e574ad657174ff Mon Sep 17 00:00:00 2001 From: Alok Date: Thu, 25 Sep 2025 16:02:02 +0530 Subject: [PATCH 2/6] feat: simplify bidder for more txns --- p2p/integrationtest/real-bidder/main.go | 86 +++++++++---------------- 1 file changed, 30 insertions(+), 56 deletions(-) diff --git a/p2p/integrationtest/real-bidder/main.go b/p2p/integrationtest/real-bidder/main.go index 1c97daa9a..87098b6f2 100644 --- a/p2p/integrationtest/real-bidder/main.go +++ b/p2p/integrationtest/real-bidder/main.go @@ -68,7 +68,7 @@ var ( ) bidWorkers = flag.Int( "bid-workers", - 2, + 10, "Number of workers to send bids", ) ) @@ -250,10 +250,7 @@ func main() { txns []string } - blockChans := make([]chan *blockWithTxns, *bidWorkers) - for i := 0; i < *bidWorkers; i++ { - blockChans[i] = make(chan *blockWithTxns, 1) - } + blockChan := make(chan *blockWithTxns, 1) wg.Add(1) go func(logger *slog.Logger) { @@ -279,63 +276,40 @@ func main() { } currentBlkNum = blkNum - for _, ch := range blockChans { - txns := make([]string, len(block)) - copy(txns, block) - - ch <- &blockWithTxns{ - blockNum: int64(blkNum), - txns: txns, - } + blockChan <- &blockWithTxns{ + blockNum: int64(blkNum), + txns: block, } } }(logger) - for i := 0; i < *bidWorkers; i++ { - wg.Add(1) - go func(logger *slog.Logger, newBlockChan <-chan *blockWithTxns) { - defer wg.Done() - ticker := time.NewTicker(200 * time.Millisecond) - currentBlock := &blockWithTxns{} - for { - select { - case block := <-newBlockChan: - if block.blockNum <= currentBlock.blockNum { - continue + workerSem := make(chan struct{}, *bidWorkers) + + wg.Add(1) + go func(logger *slog.Logger) { + defer wg.Done() + + for blockWithTxn := range blockChan { + logger.Info("new block received", "blockNum", blockWithTxn.blockNum, "numTxns", len(blockWithTxn.txns)) + for _, txn := range blockWithTxn.txns { + workerSem <- struct{}{} + go func(txn string) { + defer func() { <-workerSem }() + err := sendBid( + bidderClient, + logger, + []string{txn}, + blockWithTxn.blockNum, + time.Now().Add(200*time.Millisecond).UnixMilli(), + time.Now().Add(2*time.Second).UnixMilli(), + ) + if err != nil { + logger.Error("failed to send bid", "err", err) } - currentBlock = block - case <-ticker.C: - } - - if len(currentBlock.txns) == 0 { - continue - } - - bundleLen := rand.Intn(10) + 1 - bundleStart := rand.Intn(len(currentBlock.txns)) - bundleEnd := bundleStart + bundleLen - if bundleEnd >= len(currentBlock.txns) { - bundleEnd = len(currentBlock.txns) - } - - min := 5000 - max := 10000 - startTimeDiff := rand.Intn(max-min+1) + min - endTimeDiff := rand.Intn(max-min+1) + min - err = sendBid( - bidderClient, - logger, - currentBlock.txns[bundleStart:bundleEnd], - currentBlock.blockNum, - (time.Now().UnixMilli())-int64(startTimeDiff), - (time.Now().UnixMilli())+int64(endTimeDiff), - ) - if err != nil { - logger.Error("failed to send bid", "err", err) - } + }(txn) } - }(logger, blockChans[i]) - } + } + }(logger) wg.Wait() } From a825488cfeac1b435de2df0613a88b20337c1175 Mon Sep 17 00:00:00 2001 From: Harsh pratap Singh Date: Thu, 25 Sep 2025 22:00:23 +0530 Subject: [PATCH 3/6] feat: add realbidder to docker bake --- infrastructure/docker/docker-bake.hcl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/infrastructure/docker/docker-bake.hcl b/infrastructure/docker/docker-bake.hcl index 7a15467c5..6b12f1919 100644 --- a/infrastructure/docker/docker-bake.hcl +++ b/infrastructure/docker/docker-bake.hcl @@ -140,6 +140,17 @@ target "snode" { labels = get_labels("snode") } +target "realbidder-emulator" { + inherits = ["_common"] + context = "./" + dockerfile = "Dockerfile.realbidder" + contexts = { + builder_ctx = "target:mev-commit-builder" + } + tags = [REPO_NAME != "" ? "${REGISTRY}/${REPO_NAME}:${TAG}-realbidder-emulator" : "${REGISTRY}/realbidder-emulator:${TAG}"] + labels = get_labels("realbidder-emulator") +} + group "all" { targets = [ "mev-commit-builder", @@ -150,6 +161,7 @@ group "all" { "preconf-rpc", "bidder-emulator", "provider-emulator", + "realbidder-emulator", "relay-emulator", "snode" ] From 43f917361ae6f9a87e48c29e6430bcb5d2b06e7a Mon Sep 17 00:00:00 2001 From: Alok Nerurkar Date: Fri, 26 Sep 2025 02:20:00 +0530 Subject: [PATCH 4/6] fix: deposits --- p2p/integrationtest/real-bidder/main.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/p2p/integrationtest/real-bidder/main.go b/p2p/integrationtest/real-bidder/main.go index 87098b6f2..407b6348f 100644 --- a/p2p/integrationtest/real-bidder/main.go +++ b/p2p/integrationtest/real-bidder/main.go @@ -206,7 +206,7 @@ func main() { } logger.Info("deposit manager enabled") - var providerAddress string + var providerAddresses []string retries := 10 for range retries { resp, err := bidderClient.GetValidProviders(context.Background(), &pb.GetValidProvidersRequest{}) @@ -215,24 +215,27 @@ func main() { continue } if len(resp.ValidProviders) > 0 { - providerAddress = resp.ValidProviders[0] + providerAddresses = resp.ValidProviders break } time.Sleep(time.Second) } - if providerAddress == "" { + if len(providerAddresses) == 0 { logger.Error("no connected and valid provider found") return } + targetDeposits := make([]*pb.TargetDeposit, len(providerAddresses)) + for i, addr := range providerAddresses { + targetDeposits[i] = &pb.TargetDeposit{ + TargetDeposit: minDeposit.String(), + Provider: addr, + } + } + resp, err := bidderClient.SetTargetDeposits(context.Background(), &pb.SetTargetDepositsRequest{ - TargetDeposits: []*pb.TargetDeposit{ - { - TargetDeposit: minDeposit.String(), - Provider: providerAddress, - }, - }, + TargetDeposits: targetDeposits, }) if err != nil { logger.Error("failed to set target deposits", "err", err) From 9c6d29c08b3109df091fa71e8dfab0f7f42cf9e8 Mon Sep 17 00:00:00 2001 From: Alok Date: Fri, 26 Sep 2025 19:00:23 +0530 Subject: [PATCH 5/6] fix: allow more txns from mev-commit nodes --- oracle/pkg/node/node.go | 2 +- p2p/pkg/node/node.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/oracle/pkg/node/node.go b/oracle/pkg/node/node.go index 88c7db1f9..b60531391 100644 --- a/oracle/pkg/node/node.go +++ b/oracle/pkg/node/node.go @@ -114,7 +114,7 @@ func NewNode(opts *Options) (*Node, error) { txmonitor.NewEVMHelperWithLogger(settlementClient, nd.logger, contracts), st, nd.logger.With("component", "tx_monitor"), - 1024, + 2048, ) ctx, cancel := context.WithCancel(context.Background()) diff --git a/p2p/pkg/node/node.go b/p2p/pkg/node/node.go index 2da591e6c..8f9d287ae 100644 --- a/p2p/pkg/node/node.go +++ b/p2p/pkg/node/node.go @@ -276,7 +276,7 @@ func NewNode(opts *Options) (*Node, error) { txmonitor.NewEVMHelperWithLogger(contractRPC, opts.Logger.With("component", "txmonitor"), contracts), txnStore, opts.Logger.With("component", "txmonitor"), - 1024, + 2048, ) startables = append( startables, From 90e0bd30b03e435c049a8216730d7b104efc99a3 Mon Sep 17 00:00:00 2001 From: Alok Nerurkar Date: Sat, 27 Sep 2025 01:00:01 +0530 Subject: [PATCH 6/6] fix: emulator timestamps --- p2p/integrationtest/provider/main.go | 2 +- p2p/integrationtest/real-bidder/main.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/p2p/integrationtest/provider/main.go b/p2p/integrationtest/provider/main.go index 53226bc67..05b5944aa 100644 --- a/p2p/integrationtest/provider/main.go +++ b/p2p/integrationtest/provider/main.go @@ -225,7 +225,7 @@ func main() { err = providerClient.SendBidResponse(context.Background(), &providerapiv1.BidResponse{ BidDigest: bid.BidDigest, Status: status, - DispatchTimestamp: time.Now().UnixMilli(), + DispatchTimestamp: time.Now().Add(2 * time.Second).UnixMilli(), }) if err != nil { logger.Error("failed to send bid response", "error", err) diff --git a/p2p/integrationtest/real-bidder/main.go b/p2p/integrationtest/real-bidder/main.go index 407b6348f..34c09a69a 100644 --- a/p2p/integrationtest/real-bidder/main.go +++ b/p2p/integrationtest/real-bidder/main.go @@ -303,8 +303,8 @@ func main() { logger, []string{txn}, blockWithTxn.blockNum, - time.Now().Add(200*time.Millisecond).UnixMilli(), - time.Now().Add(2*time.Second).UnixMilli(), + time.Now().Add(500*time.Millisecond).UnixMilli(), + time.Now().Add(6*time.Second).UnixMilli(), ) if err != nil { logger.Error("failed to send bid", "err", err) @@ -347,8 +347,8 @@ func sendBid( if len(txnHashes) == 0 { return errors.New("no txns to send") } - amount := rand.Intn(200000) - amount += 100000 + amount := rand.Intn(2000000000) + amount += 1000000000 hashesToSend := make([]string, len(txnHashes)) copy(hashesToSend, txnHashes)