479 Commits

Author SHA1 Message Date
Mark Spanbroek
c6ea2b6bd7 vault: reject flow when insufficient tokens available 2025-02-06 16:33:03 +01:00
Mark Spanbroek
27c7ee32c0 vault: stop flowing when lock expires 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2831546544 vault: use custom operators to improve readability 2025-02-06 16:33:03 +01:00
Mark Spanbroek
be59d77a5f vault: move flow accumulation calculation into VaultBase 2025-02-06 16:33:03 +01:00
Mark Spanbroek
cf750b032c vault: designate tokens that flow 2025-02-06 16:33:03 +01:00
Mark Spanbroek
cf30fa35d6 vault: flow tokens from one recipient to the other 2025-02-06 16:33:03 +01:00
Mark Spanbroek
bfc7a8bb19 vault: allow recipient to withdraw 2025-02-06 16:33:03 +01:00
Mark Spanbroek
0afc5bf19e vault: further test for locks 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2eaec23b41 vault: remove duplication in tests 2025-02-06 16:33:03 +01:00
Mark Spanbroek
fbfe599241 vault: simplify test setup 2025-02-06 16:33:03 +01:00
Mark Spanbroek
84c31418b3 vault: lock is deleted upon withdrawal 2025-02-06 16:33:03 +01:00
Mark Spanbroek
a29778de61 vault: lock up tokens until expiry time 2025-02-06 16:33:03 +01:00
Mark Spanbroek
0dfe60dab9 vault: designate tokens for a single recipient 2025-02-06 16:33:03 +01:00
Mark Spanbroek
3a23ab7a40 vault: transfer tokens from one recipient to the other 2025-02-06 16:33:03 +01:00
Mark Spanbroek
bff9a05e4f vault: burning funds 2025-02-06 16:33:03 +01:00
Mark Spanbroek
1a7b0b5c17 vault: change data structure to be recipient oriented 2025-02-06 16:33:03 +01:00
Mark Spanbroek
2d469dc6d1 vault: deposit and withdraw 2025-02-06 16:33:03 +01:00
Mark Spanbroek
20a32c1d90 update prettier-plugin-solidity to 1.4.2 2025-02-06 16:31:36 +01:00
Mark Spanbroek
f060529519 update solhint to 5.0.5 2025-02-06 16:31:36 +01:00
Mark Spanbroek
cf96d1a79d update solidity to version 0.8.28 2025-02-06 15:54:41 +01:00
Mark Spanbroek
bc934ba970 simplify time-based logic in tests, and fix requestEnd()
- use the `allowBlocksWithSameTimestamp` hardhat option
- remove block time gymnastics from marketplace tests
- fix erroneous implementation of requestEnd() which
  surfaced because of the the improved tests
2025-02-06 15:51:07 +01:00
Arnaud
51bae145fc
Reward validator when marking missing proof (#209) 2025-01-27 11:33:23 +01:00
Arnaud
6753d20b17
Remove missing proof leniency (#210) 2025-01-27 10:14:53 +00:00
Arnaud
78c15710f3
Remove the mapping _probabilities (#215)
* Remove the mapping _probabilities
* Fix the slot propability calculation test by filling slot only instead of requiring proofs
* Remove custom errorr Proofs_InvalidProbability not used anymore
2025-01-27 10:02:27 +00:00
Marcin Czenko
e74d3397a1
Feat: price per byte (#208)
* changes reward => pricePerByte

* collateral => collateralPerByte

* updates tests

* introduces AskHelpers to compute price and collateral per slot

* adds public view function returning currentCollateral for the slot

* updates names for price and collateral

* uses pricePerSlotPerSecond in maxPriceHelper

* adds collateralPerSlot helper

* makes sure that the intended use of the <<currentCollateral>> view function is demonstrated in tests

* formatting

* fix comment

* mints more tokens so that it can be used with contracts tests in nim-codex

* Renaming <<collateral>> and <<reward>> to <<collateralPerByte>> and <<pricePerBytePerSecond>> respectively (merged in the meantime to the master)
2025-01-24 15:28:29 +01:00
Arnaud
d04acafde2
Add request validations (#213)
* Add request validations
* Apply custom errors
2025-01-24 12:49:06 +01:00
Arnaud
500498f8bc
Replace assert by revert (#216)
* Replace assert with revert
2025-01-24 11:07:55 +01:00
Arnaud
604d4c87eb
Reject when probability is 0 (#212)
* Reject when probability is 0
* Apply custom error
2025-01-24 10:13:45 +01:00
Arnaud
bfa5a78b4f
Verify than secondsPerPeriod cannot be zero (#211)
* Assert than secondsPerPeriod cannot be zero
* Apply custom error
2025-01-24 09:22:21 +01:00
r4bbit
02e3b8d22b
refactor(Marketplace): Use custom errors instead of string messages (#141)
Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
2025-01-15 14:11:40 +01:00
Adam Uhlíř
dfab6102e7
feat: repair reward (#193) 2024-12-12 18:39:42 +01:00
Adam Uhlíř
06f9f56cd2
ci: tweaks run triggers and checkout hash (#205) 2024-12-05 11:10:29 +01:00
Slava
b181639bb6
Add codex_testnet deployment artifacts (#204)
https://github.com/codex-storage/nim-codex/issues/1000
2024-11-26 11:43:22 +02:00
Slava
c970c632b8
Add codex_testnet deployment artifacts (#199)
https://github.com/codex-storage/nim-codex/issues/983
2024-11-25 20:27:00 +02:00
Mark Spanbroek
945f6008c8 Increase proof period to 90 seconds on hardhat network
reason: on windows, integration tests run so slow that
they cannot fill a slot within 60 seconds
2024-11-14 14:53:37 +01:00
Mark Spanbroek
11ccefd720 Different configurations for different networks
By default we have a proof period of 2 minutes,
but on hardhat it's 1 minute.
2024-11-08 06:36:31 +01:00
Eric
1ce3d10fa2
fix(slot-reservations): ensure slot is free (#196)
Ensure that the slot state is free before allowing reservations
2024-10-30 15:48:37 +11:00
Eric
7645df19ab
renames config to configuration (#198)
This is not the right reason to be making this kind of change, but a very hard to debug symbol clash in codex for `config`. Changing this to `configuration` is the easiest way to fix the issue.
2024-10-29 19:02:42 +11:00
r4bbit
0b39274ed5 refactor(certora): extract allowedRequestStateChanges rule into own
file

Closes #192
2024-10-21 15:36:29 +02:00
Slava
c3e4fdd321
Add codex_testnet deployment artifacts (#197)
https://github.com/codex-storage/infra-codex/issues/248
2024-10-21 10:00:46 +02:00
Andrea Franz
2a1bef5255 chore(certora): verify slots transitions and that a slot can be paid only once 2024-10-15 11:06:46 +02:00
Slava
997696a20e
Add codex_testnet deployment artifacts (#190) 2024-10-08 14:27:06 +02:00
Adam Uhlíř
7e6187d4b1
feat: hosts payed by actual time hosting a slot (#160)
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
Co-authored-by: r4bbit <445106+0x-r4bbit@users.noreply.github.com>
2024-10-08 09:38:19 +02:00
Eric
f5a54c7ed4
feat(slot-reservations): require slots to be reserved before filling slot (#185)
* Require slots to be reserved before filling slot

* Add test that checks filling slot fails without reservation
2024-10-08 15:55:17 +11:00
Eric
807fc973c8
feat(slot-reservations): Add SlotReservationsFull event (#183)
`SlotReservationsFull` event is emitted once a slot has reached its capacity for slot reservations (3 reservations at this time).

`SlotReservationsFull` event emists `requestId` and `slotIndex`.
2024-10-04 13:28:39 +10:00
Eric
33010bd20c
feat(slot-reservations): Allow slots to be reserved (#177)
* feat(slot-reservations): Allow slots to be reserved

Closes #175.

Allows reservation of slots, without an implementation of the expanding window.

- Add a function called `reserveSlot(address, SlotId)`, that allows three unique addresses per slot to be reserved, that returns bool if successful.
       - Use `mapping(SlotId => EnumerableSet.AddressSet)`
       - Return false if the address could not be added to the set (if `EnumerableSet.add` returns false)
- Add `canReserveSlot(address, SlotId)`
        - Return `true` if set of reservations is less than 3 and the set doesn't already contain the address
        - Return `true` otherwise (for now, later add in logic for checking the address is inside the expanding window)
        - Call `canReserveSlot` from `reserveSlot` as a `require` or invariant
- Add `SlotReservations` configuration struct to the network-level config, with `maxReservations`
2024-10-03 11:01:21 +10:00
Andrea Franz
3a074abd20 chore(certora): verify possible slot state transitions 2024-09-30 12:53:06 +02:00
Slava
a5aa19453e
Add codex_testnet deployment artifacts (#181)
https://github.com/codex-storage/infra-codex/issues/223
2024-09-24 13:31:07 +03:00
Slava
9722753e54
Update circuit files for codex_testnet (#180) 2024-09-23 18:30:02 +03:00
Ben Bierens
558bf645c3
Updates circuit file hash (#178)
* wasm and r1cs files appear to be unchanged

* Updates example proof
2024-09-20 11:08:23 +02:00