Mark Spanbroek
81032965f4
vault: update documentation
2025-03-04 09:36:00 +01:00
Mark Spanbroek
473a5fec19
vault: fix accounting of locked value when burning designated tokens
2025-03-04 09:36:00 +01:00
Mark Spanbroek
43cd44330b
vault: add documentation
2025-03-04 09:36:00 +01:00
Mark Spanbroek
439d3772db
vault: remove dead code
2025-03-04 09:36:00 +01:00
Mark Spanbroek
b7b1e8c25b
vault: cleanup
2025-03-04 09:36:00 +01:00
Mark Spanbroek
dc3084836f
vault: prefix errors with 'Vault'
2025-03-04 09:36:00 +01:00
Mark Spanbroek
ad6df66768
vault: burn part of designated tokens
2025-03-04 09:36:00 +01:00
Mark Spanbroek
3ff331b883
vault: rename burn -> burnAccount, burnAll -> burnFund
2025-03-04 09:36:00 +01:00
Mark Spanbroek
62eb07e640
vault: clean up errors
2025-03-04 09:36:00 +01:00
Mark Spanbroek
e3291ed82e
vault: formatting
2025-03-04 09:36:00 +01:00
Mark Spanbroek
13d590d67b
vault: do not expose Lock internals on public api
2025-03-04 09:36:00 +01:00
Mark Spanbroek
6877078f4c
vault: transfer tokens to 0xdead when fund is burned
2025-03-04 09:36:00 +01:00
Mark Spanbroek
bbdd614579
vault: burn entire fund
2025-03-04 09:36:00 +01:00
Mark Spanbroek
4533c82011
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-03-04 09:36:00 +01:00
Mark Spanbroek
b076528e1a
vault: reduce size of timestamp further
2025-03-04 09:36:00 +01:00
Mark Spanbroek
6980acd59b
vault: rename error
2025-03-04 09:36:00 +01:00
Mark Spanbroek
026609e3c7
vault: remove _getAccount()
...
- no longer calculate flow updates when not needed
- use account.update(timestamp) where needed
- use _getBalance() to view current balance
2025-03-04 09:36:00 +01:00
Mark Spanbroek
a83a6f4cad
vault: fix transfer to self
2025-03-04 09:36:00 +01:00
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