Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions infrastructure/docker/Dockerfile.bidderemulator
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# 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/bidder-emulator-entrypoint.sh entrypoint.sh
COPY --from=builder_ctx /go/bin/bidder-emulator /usr/local/bin/bidder-emulator

EXPOSE 8080

ENTRYPOINT ["./entrypoint.sh"]
ENTRYPOINT ["bidder-emulator"]
4 changes: 1 addition & 3 deletions infrastructure/docker/Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ COPY bridge/standard/go.mod bridge/standard/go.sum ./bridge/standard/
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/real-bidder/entrypoint.sh /scripts/bidder-emulator-entrypoint.sh
COPY p2p/integrationtest/provider/entrypoint.sh /scripts/provider-emulator-entrypoint.sh

RUN --mount=type=cache,target=/root/.cache/go-build \
Expand All @@ -35,11 +34,10 @@ ARG TARGETS="./oracle/cmd \
./tools/dashboard \
./tools/bidder-cli \
./tools/bls-signer \
./tools/l1-transaction-emulator \
./tools/bidder-emulator \
./tools/relay-emulator \
./tools/validators-monitor \
./tools/points-service \
./p2p/integrationtest/real-bidder \
./p2p/integrationtest/provider"

RUN --mount=type=cache,target=/root/.cache/go-build \
Expand Down
6 changes: 0 additions & 6 deletions infrastructure/docker/Dockerfile.l1transactor

This file was deleted.

11 changes: 1 addition & 10 deletions infrastructure/docker/docker-bake.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,7 @@ target "relay-emulator" {
tags = ["ghcr.io/primev/relay-emulator:${TAG}"]
}

target "l1-transactor" {
context = "./"
dockerfile = "Dockerfile.l1transactor"
contexts = {
builder_ctx = "target:mev-commit-builder"
}
tags = ["ghcr.io/primev/l1-transactor:${TAG}"]
}

group "default" {
targets = ["mev-commit-builder", "mev-commit-oracle", "mev-commit", "mev-commit-bridge", "mev-commit-dashboard", "preconf-rpc", "bidder-emulator", "provider-emulator", "relay-emulator", "l1-transactor"]
targets = ["mev-commit-builder", "mev-commit-oracle", "mev-commit", "mev-commit-bridge", "mev-commit-dashboard", "preconf-rpc", "bidder-emulator", "provider-emulator", "relay-emulator"]
}

106 changes: 106 additions & 0 deletions tools/bidder-emulator/bidder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package main

import (
"context"
"crypto/tls"
"encoding/hex"
"errors"
"fmt"
"io"
"math/big"
"time"

"github.com/ethereum/go-ethereum/core/types"
pb "github.com/primev/mev-commit/p2p/gen/go/bidderapi/v1"
"golang.org/x/exp/rand"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)

type bidder struct {
client pb.BidderClient
}

type result struct {
txn *types.Transaction
bid *pb.Bid
preconfs []*pb.Commitment
}

func newBidder(rpcURL string, depositAmount string) (*bidder, error) {
conn, err := grpc.NewClient(
rpcURL,
grpc.WithTransportCredentials(credentials.NewTLS(
&tls.Config{InsecureSkipVerify: true},
)),
)
if err != nil {
return nil, err
}

client := pb.NewBidderClient(conn)
b := &bidder{
client: client,
}

return b, b.setup(depositAmount)
}

func (b *bidder) setup(depositAmount string) error {
status, err := b.client.AutoDepositStatus(context.Background(), &pb.EmptyMessage{})
if err != nil {
return fmt.Errorf("failed to get auto deposit status: %w", err)
}

if !status.IsAutodepositEnabled {
_, err := b.client.AutoDeposit(context.Background(), &pb.DepositRequest{
Amount: depositAmount,
})
if err != nil {
return fmt.Errorf("failed to auto deposit: %w", err)
}
}
return nil
}

func (b *bidder) SendBid(ctx context.Context, txn *types.Transaction, blockNumber int64) (*result, error) {
txBytes, err := txn.MarshalBinary()
if err != nil {
return nil, fmt.Errorf("failed to marshal transaction: %w", err)
}

// Choose a random bid amount between 1 and 2 gwei
n := rand.Intn(1_000_000_000)
bidAmount := new(big.Int).Add(big.NewInt(int64(n)), big.NewInt(1_000_000_000))

req := &pb.Bid{
RawTransactions: []string{hex.EncodeToString(txBytes)},
BlockNumber: blockNumber,
Amount: bidAmount.String(),
DecayStartTimestamp: time.Now().Add(100 * time.Millisecond).UnixMilli(),
DecayEndTimestamp: time.Now().Add(12 * time.Second).UnixMilli(),
}

resp, err := b.client.SendBid(ctx, req)
if err != nil {
return nil, fmt.Errorf("failed to send bid: %w", err)
}

res := &result{
txn: txn,
bid: req,
}

for {
preconf, err := resp.Recv()
if err != nil {
if errors.Is(err, io.EOF) {
break
}
return nil, fmt.Errorf("failed to receive preconf: %w", err)
}
res.preconfs = append(res.preconfs, preconf)
}

return res, nil
}
Loading
Loading