533 Commits

Author SHA1 Message Date
Mark Spanbroek
ad991304b1 certora: cleanup 2025-06-12 17:14:49 +02:00
Mark Spanbroek
0305965bd5 certora: update certora-cli to 7.29.3
Reason: Vault.conf parsing errors with old certora-cli
2025-06-12 17:03:00 +02:00
Mark Spanbroek
6d16b0c613 certora: run vault rules as part of the CI 2025-06-12 16:58:58 +02:00
Mark Spanbroek
cbe52b4934 certora: remove configuration that fixes solidity to solc8.28
Reason: makes certoraRun in the CI fail
2025-06-12 16:55:53 +02:00
Aleksander Kryukov
26e8fce9bb finished Codex's invariants and more spec cleaning 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
1742b1dae5 spec cleaning 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
d0e4208854 tmp save 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
25c8f11a06 bug finding invariants 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
73ac5820a6 started implementing solvency 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
3cda5a0ce0 adding CVLStatus to use in quantifiers 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
c35b8b6d74 attempt to use sum ghost 2025-06-12 15:59:40 +02:00
Aleksander Kryukov
ae94d1ebf3 try to hook on _funds. fixed required 2025-06-12 15:59:40 +02:00
Mark Spanbroek
b5ab3869b9 marketplace: better tests for repair
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-12 15:50:09 +02:00
Mark Spanbroek
d7554ce0d2 marketplace: improve withdraw test
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-12 08:05:24 +02:00
Mark Spanbroek
4410941061 marketplace: add test for hosts that makes request fail
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 17:00:52 +02:00
Mark Spanbroek
cd8b6572f3 marketplace: fix test
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 17:00:24 +02:00
Mark Spanbroek
075d97e5da marketplace: clarify why we flow & transfer funds before burning
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 16:31:58 +02:00
Mark Spanbroek
895e36fbba marketplace: clarify why we flow funds from client to itself
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 16:31:58 +02:00
Mark Spanbroek
bdee8de9cc marketplace: move collateralPerSlot() to Requests.sol
reason: the function only depends on the request, and it is similar
to the pricePerSlotPerSecond function

Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 16:31:58 +02:00
Mark Spanbroek
1fb3d2130b marketplace: cleanup
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 16:31:58 +02:00
Mark Spanbroek
724344cb5e marketplace: allow slot payout for failed requests
reason: hosts are paid for the time that they hosted
the slot up until the time that the request failed

Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>
2025-06-11 16:31:58 +02:00
Mark Spanbroek
2cd45214cf marketplace: no longer expose forciblyFreeSlot in tests
reason: freeSlot() will call forciblyFreeSlot when contract is not
finished, so we can use that instead
2025-06-11 16:31:58 +02:00
Mark Spanbroek
47f3c1e36d marketplace: keep request in myRequests when freeing slot
Because a client might still need to call withdraw()
2025-06-11 16:31:58 +02:00
Mark Spanbroek
9603025202 marketplace: simplify requestEnd() 2025-06-11 16:31:58 +02:00
Mark Spanbroek
7a566182d5 marketplace: re-instate currentCollateral()
So that a storage provider can know how much collateral is
returned when it calls freeSlot()
2025-06-11 16:31:58 +02:00
Mark Spanbroek
6971766b62 marketplace: cleanup tests 2025-06-11 16:31:58 +02:00
Mark Spanbroek
6bd4144714 marketplace: repair reward is paid out at the end
It is no longer a discount on the collateral, to
simplify reasoning about collateral in the sales
module of the codex node
2025-06-11 16:31:58 +02:00
Mark Spanbroek
e4348de891 certora: update state changes spec now that we have vault 2025-06-11 16:31:58 +02:00
Mark Spanbroek
51862f67e9 certora: remove check on ERC20 token
No need to test the token itself
2025-06-11 16:31:58 +02:00
Mark Spanbroek
2d21d65624 certora: update marketplace spec now that we have vault
- changes to marketplace constructor
- we no longer have _marketplaceTotals
- timestamps have their own type now
- freeSlot no longer takes payout addresses
- slot state 'Paid' no longer exists
- freeSlot can be invoked more than once now
- a failed request no longer ends immediately
2025-06-11 16:31:58 +02:00
Mark Spanbroek
52cf22789c proofs: use Timestamp instead of uint64 2025-06-11 16:31:56 +02:00
Mark Spanbroek
468bc2e833 marketplace: remove 'Paid' state
This state is no longer necessary, vault ensures
that payouts happen only once. Hosts could bypass
this state anyway by withdrawing from the vault
directly.
2025-06-11 16:29:21 +02:00
Mark Spanbroek
5fb63c4939 marketplace: cleanup 2025-06-11 16:29:21 +02:00
Mark Spanbroek
06a9e417b2 marketplace: remove accounting that is now done by vault 2025-06-11 16:29:21 +02:00
Mark Spanbroek
e60ff36202 marketplace: formatting 2025-06-11 16:29:21 +02:00
Mark Spanbroek
17646f15b9 marketplace: designate validator rewards
so that they can no longer be transfered
within the vault
2025-06-11 16:29:21 +02:00
Mark Spanbroek
b6f5d65630 marketplace: transfer repair reward in vault 2025-06-11 16:29:21 +02:00
Mark Spanbroek
5c9910d29d marketplace: optimize storage reads and writes 2025-06-11 16:29:21 +02:00
Mark Spanbroek
5e8031eda5 marketplace: remove accounting that is now done by vault 2025-06-11 16:29:21 +02:00
Mark Spanbroek
c626372d55 marketplace: burn tokens in vault when slashing
- move all collateral calculatons to separate library
2025-06-11 16:29:21 +02:00
Mark Spanbroek
3ea02914fa marketplace: simplify withdrawing by client
- removes RequestCancelled event, which was not great anyway
  because it is not emitted at the moment that the request is
  cancelled
2025-06-11 16:29:21 +02:00
Mark Spanbroek
9570404fba marketplace: remove accounting that is now done by vault 2025-06-11 16:29:21 +02:00
Mark Spanbroek
15c58e1a81 marketplace: remove fuzzing
replaced by formal verification with certora
2025-06-11 16:29:21 +02:00
Mark Spanbroek
761fbd4f84 marketplace: collateral is uint128
Vault stores balances as uint128
2025-06-11 16:29:21 +02:00
Mark Spanbroek
4f45856a5e marketplace: use Timestamp, Duration and TokensPerSecond types 2025-06-11 16:29:19 +02:00
Mark Spanbroek
ccf91075bf vault: move Timestamp and TokensPerSecond libraries one level up 2025-06-11 16:29:13 +02:00
Mark Spanbroek
0910c83428 marketplace: use vault in marketplace 2025-06-11 16:29:13 +02:00
Mark Spanbroek
6ebed47327 marketplace: remove support for changing payout addresses 2025-06-11 16:29:13 +02:00
Mark Spanbroek
aee61bdb45 marketplace: deploy vault and set it in the marketplace 2025-06-11 16:29:13 +02:00
Mark Spanbroek
341b303789 marketplace: use SafeERC20 for transfers 2025-06-11 16:29:11 +02:00