Skip to content

Conversation

@ogabrielides
Copy link

Description

Integration of pod network

Changes

  • Added pod network API for bid submission, bids fetching and wait for past perfection time
  • Configured to connect to our pod subnet

This PR adds pod integration allowing solver to determine auction winner in a decentrilized shadow way.
When a solver has computed a solution, it also submits it to pod network.
Asynchronously it then waits for the auction to end, fetches all the bids from pod network and compute winner selection in the same way the autopilot does.
No existing functionality was replaced/updated. This PR only integrates the pod network in shadow mode.

How to test

A second baseline was added in playground. All tracing logs related to pod have the prefix [pod]

@ogabrielides ogabrielides requested a review from a team as a code owner November 19, 2025 12:05
@github-actions
Copy link


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

@socket-security
Copy link

socket-security bot commented Nov 19, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedfutures@​0.3.30 ⏵ 0.3.3110010093100100
Updatedhumantime@​2.1.0 ⏵ 2.3.010010093100100
Updatedhyper@​1.6.0 ⏵ 0.14.3299 -110093100100

View full report

@github-actions
Copy link

github-actions bot commented Dec 5, 2025

This pull request has been marked as stale because it has been inactive a while. Please update this pull request or it will be automatically closed.

@github-actions github-actions bot added the stale label Dec 5, 2025
@github-actions github-actions bot removed the stale label Dec 11, 2025
Copy link
Contributor

@MartinquaXD MartinquaXD left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the late review. 🙇

}
};

let solve_response = dto::SolveResponse::new(score.clone(), solver);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to myself: we need to think about an upgrade path in case we have to change the response format in the future. Likely the same way ethereum handles hardforks (pick some auction_id at which all nodes should use the new format).

Comment on lines 313 to 316
self.config
.pod
.as_ref()
.map(|pod| pod.auction_contract_address)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this equivalent?

Suggested change
self.config
.pod
.as_ref()
.map(|pod| pod.auction_contract_address)
self.config.pod?.auction_contract_address

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, but I refactored to this one:

Some(self.config.pod.as_ref()?.auction_contract_address)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good to separate out the playground changes into a separate PR.

@github-actions
Copy link

This pull request has been marked as stale because it has been inactive a while. Please update this pull request or it will be automatically closed.

@github-actions github-actions bot added the stale label Dec 24, 2025
@squadgazzz squadgazzz mentioned this pull request Dec 26, 2025
4 tasks
@github-actions github-actions bot closed this Dec 31, 2025
github-merge-queue bot pushed a commit that referenced this pull request Jan 6, 2026
# Description
One of the prerequisites for integrating the Pod network[[more
details](#3910)] is to
extract the winner selection logic into a separate crate since the
following flow is expected in the future: autopilot sends an auction to
all the drivers to solve -> drivers send their solutions to the pod
network -> once competition deadline is reached, each driver fetches all
submitted solutions from the pod network -> each driver decides whether
its solutions are among winning ones. Both driver and autopilot should
use the same logic, so a separate crate is introduced in this PR.

# Changes
The PR is huge since it mostly moves the code. In any case, I made it as
a POC before trying to split it into smaller parts, since this turned
out to be non-trivial. I am open to any ideas on how to do this, if ever
needed.

- [ ] All the winning selection logic is now extracted to a separate
crate, which tries to operate with minimal required data. That is useful
for the future integration into the driver. The driver crate should
already contain all the required competition data previously sent from
autopilot to assess the solutions.
- [ ] Autopilot now uses the new create. I tried to avoid many
back-and-forth type conversions, but still, autopilot requires different
extended data structures.
- [ ] Winning selection includes a lot of stuff, such as protocol fees
computation. Probably, in the future, it will make sense to create a
separate crate for protocol fees.
- [ ] The ranking traits are generalized, so the winner-selection crate
uses its implementation with its own types, while autopilot continues
using the Participant crate.

## How to test
Existing tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants