Mark Spanbroek
8b2d726a2f
vault: prevent approval hijacking
...
- transfer ERC20 funds into the vault from the
controller, not from the user
- prevents an attacker from hijacking a user's
ERC20 approval to move tokens into a part of
the vault that is controlled by the attacker
2025-02-06 16:33:03 +01:00
Mark Spanbroek
3064b1468c
vault: reduce size of timestamp further
2025-02-06 16:33:03 +01:00
Mark Spanbroek
0237b640e7
vault: rename error
2025-02-06 16:33:03 +01:00
Mark Spanbroek
a2af8c0512
vault: remove _getAccount()
...
- no longer calculate flow updates when not needed
- use account.update(timestamp) where needed
- use _getBalance() to view current balance
2025-02-06 16:33:03 +01:00
Mark Spanbroek
f6fb441dec
vault: fix transfer to self
2025-02-06 16:33:03 +01:00
Mark Spanbroek
523544a4e8
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-02-06 16:33:03 +01:00
Mark Spanbroek
f4cfcd3767
vault: cleanup
2025-02-06 16:33:03 +01:00
Mark Spanbroek
8f5e0f14f8
vault: combine Account and Flow structs
2025-02-06 16:33:03 +01:00
Mark Spanbroek
25d9c15ca7
vault: do not delete lock when burning
2025-02-06 16:33:03 +01:00
Mark Spanbroek
b09f742944
vault: formatting
2025-02-06 16:33:03 +01:00
Mark Spanbroek
95b9ca6fc6
vault: reordering
2025-02-06 16:33:03 +01:00
Mark Spanbroek
8f6190b371
vault: simplify _getAccount()
2025-02-06 16:33:03 +01:00
Mark Spanbroek
374bced5f5
vault: _getAccount updates to the latest timestamp
2025-02-06 16:33:03 +01:00
Mark Spanbroek
c8704cc3af
vault: combine account and flow mappings
2025-02-06 16:33:03 +01:00
Mark Spanbroek
56cd4bcfc5
vault: rename balance -> account
2025-02-06 16:33:03 +01:00
Mark Spanbroek
707ec5f55c
vault: rename context -> fund
2025-02-06 16:33:03 +01:00
Mark Spanbroek
10839ce532
vault: reorder functions
...
in roughly chronological order
2025-02-06 16:33:03 +01:00
Mark Spanbroek
2fecf2e741
vault: only allow deposit, transfer, etc when locked
2025-02-06 16:33:03 +01:00
Mark Spanbroek
de3a847d7b
vault: delete lock all tokens are withdrawn or burned
2025-02-06 16:33:03 +01:00
Mark Spanbroek
9aecbd54d9
vault: disallow designating of flowing tokens
2025-02-06 16:33:03 +01:00
Mark Spanbroek
63109b813b
vault: delete flow when burning or withdrawing
2025-02-06 16:33:03 +01:00
Mark Spanbroek
85537cdb49
vault: cannot burn flowing tokens
2025-02-06 16:33:03 +01:00
Mark Spanbroek
a120cdf2ab
vault: disallow transfer of flowing tokens
2025-02-06 16:33:03 +01:00
Mark Spanbroek
d35cc00841
vault: check Lock invariant before writing
2025-02-06 16:33:03 +01:00
Mark Spanbroek
421a1eb5ba
vault: change flows over time
2025-02-06 16:33:03 +01:00
Mark Spanbroek
8ee4512080
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-02-06 16:33:03 +01:00
Mark Spanbroek
9d213993e8
vault: improve naming of public functions
2025-02-06 16:33:03 +01:00
Mark Spanbroek
482ff9a57a
vault: do not allow flow when lock already expired
2025-02-06 16:33:03 +01:00
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
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
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