356 Commits

Author SHA1 Message Date
Mark Spanbroek
450e5308d9 vault: split flow into incoming and outgoing
- no need to deal with signed integers anymore
- allows flow to self to designate tokens over time
2025-03-04 09:36:00 +01:00
Mark Spanbroek
297ec7f6b3 vault: cleanup 2025-03-04 09:36:00 +01:00
Mark Spanbroek
f9464f9118 vault: combine Account and Flow structs 2025-03-04 09:36:00 +01:00
Mark Spanbroek
5d3683383d vault: do not delete lock when burning 2025-03-04 09:36:00 +01:00
Mark Spanbroek
2600578b48 vault: formatting 2025-03-04 09:36:00 +01:00
Mark Spanbroek
ee6d56a54b vault: reordering 2025-03-04 09:36:00 +01:00
Mark Spanbroek
16f853b5d8 vault: simplify _getAccount() 2025-03-04 09:36:00 +01:00
Mark Spanbroek
bdc721bfaa vault: _getAccount updates to the latest timestamp 2025-03-04 09:36:00 +01:00
Mark Spanbroek
2108f1265a vault: combine account and flow mappings 2025-03-04 09:36:00 +01:00
Mark Spanbroek
68d93fa5b5 vault: rename balance -> account 2025-03-04 09:36:00 +01:00
Mark Spanbroek
fdc642b1df vault: rename context -> fund 2025-03-04 09:36:00 +01:00
Mark Spanbroek
f64c373e8f vault: reorder functions
in roughly chronological order
2025-03-04 09:36:00 +01:00
Mark Spanbroek
6e531f2087 vault: only allow deposit, transfer, etc when locked 2025-03-04 09:36:00 +01:00
Mark Spanbroek
f26cb9c04d vault: delete lock all tokens are withdrawn or burned 2025-03-04 09:36:00 +01:00
Mark Spanbroek
d0b8f961b2 vault: disallow designating of flowing tokens 2025-03-04 09:36:00 +01:00
Mark Spanbroek
c1031d3b07 vault: delete flow when burning or withdrawing 2025-03-04 09:36:00 +01:00
Mark Spanbroek
a0e3a51b37 vault: cannot burn flowing tokens 2025-03-04 09:36:00 +01:00
Mark Spanbroek
82d490c8d0 vault: disallow transfer of flowing tokens 2025-03-04 09:36:00 +01:00
Mark Spanbroek
f0da7cd918 vault: check Lock invariant before writing 2025-03-04 09:36:00 +01:00
Mark Spanbroek
220b648758 vault: change flows over time 2025-03-04 09:36:00 +01:00
Mark Spanbroek
db8b06a51b vault: flow to multiple recipients
- changes balance from uint256 -> uint128
  so that entire Balance can be read or written
  with a single operation
- moves Lock to library
- simplifies lock checks
2025-03-04 09:36:00 +01:00
Mark Spanbroek
4f880bb08a vault: improve naming of public functions 2025-03-04 09:36:00 +01:00
Mark Spanbroek
dc4e277a20 vault: do not allow flow when lock already expired 2025-03-04 09:36:00 +01:00
Mark Spanbroek
b270a0355f vault: reject flow when insufficient tokens available 2025-03-04 09:36:00 +01:00
Mark Spanbroek
f8fb23a8dd vault: stop flowing when lock expires 2025-03-04 09:36:00 +01:00
Mark Spanbroek
b3964cd1f0 vault: use custom operators to improve readability 2025-03-04 09:36:00 +01:00
Mark Spanbroek
1d3e2fd4a3 vault: move flow accumulation calculation into VaultBase 2025-03-04 09:36:00 +01:00
Mark Spanbroek
40e6f1cdcc vault: designate tokens that flow 2025-03-04 09:36:00 +01:00
Mark Spanbroek
7403886283 vault: flow tokens from one recipient to the other 2025-03-04 09:36:00 +01:00
Mark Spanbroek
606cfc4c1e vault: allow recipient to withdraw 2025-03-04 09:36:00 +01:00
Mark Spanbroek
16a8b020bc vault: lock is deleted upon withdrawal 2025-03-04 09:36:00 +01:00
Mark Spanbroek
caf86d184e vault: lock up tokens until expiry time 2025-03-04 09:36:00 +01:00
Mark Spanbroek
e1f914726b vault: designate tokens for a single recipient 2025-03-04 09:36:00 +01:00
Mark Spanbroek
7018f9ef22 vault: transfer tokens from one recipient to the other 2025-03-04 09:36:00 +01:00
Mark Spanbroek
eb1b821346 vault: burning funds 2025-03-04 09:36:00 +01:00
Mark Spanbroek
230e2140eb vault: change data structure to be recipient oriented 2025-03-04 09:36:00 +01:00
Mark Spanbroek
d8049faf22 vault: deposit and withdraw 2025-03-04 09:36:00 +01:00
Mark Spanbroek
9826f31788 update solidity to version 0.8.28 2025-03-04 09:33:20 +01:00
Mark Spanbroek
e31e39f22c 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-03-04 08:58:10 +01:00
Adam Uhlíř
c00152e621
perf: optimizing parameters sizing (#207)
* perf: optimizing parameters sizing

* chore: feedback

Co-authored-by: markspanbroek <mark@spanbroek.net>

* style: formatting

* perf: more optimizations

* chore: fixes

* chore: fix certora spec

* chore: more fixes for certora spec

* chore: more and more fixes for certora spec

* fix: ends type

* test(certora): timestamp conversion

* test(certora): timestamp conversion again

* test(certora): timestamp conversion revert to assert_uint64

* test(certora): timestamp with mathint

* test(certora): timestamp back with uint64 with require

* Add missing configuration

* Fix previous merge

* Update StorageRequested to use int64 for expiry

* requestDurationLimit => uint64

---------

Co-authored-by: markspanbroek <mark@spanbroek.net>
Co-authored-by: Arnaud <arnaud@status.im>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
2025-02-20 16:54:41 +11:00
Adam Uhlíř
ff82c26b36
feat: request duration limit (#206)
* feat: request duration limit

* Merge master and use custom error

* Remove slashCriterion

---------

Co-authored-by: Arnaud <arnaud@status.im>
2025-02-18 15:27:47 +01:00
Arnaud
0f2012b144
Change the cid from string to bytes (#214)
* Change the cid from string to bytes

* Fix content definition

* Fix cid invalid test
2025-02-13 13:03:45 +00:00
Mark Spanbroek
875e4d53ec change constructor param to config
Changes the Marketplace constructor parameter `configuration` to `config` to prevent overshadowing the `configuration()` method.
2025-02-13 10:44:14 +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