518 Commits

Author SHA1 Message Date
Arnaud
36a5d02fee
Add guard to check that configs has tags 2025-06-20 08:24:33 +02:00
Arnaud
28cf61f45e
Use HARDHAT_NETWORK env variable to deploy marketplace contract 2025-06-20 08:24:33 +02:00
Arnaud
a11f756f1a
Fix build-info ignore 2025-06-20 08:24:33 +02:00
Arnaud
b5368a1286
Add deployments artifacts 2025-06-20 08:24:33 +02:00
Arnaud
2e8efb05ab
Apply prettier formatting and bug test with ignition syntax 2025-06-20 08:24:32 +02:00
Arnaud
8aeaf52ff1
Set hardhat gas limit to auto and restore manual mining for Vault tests 2025-06-20 08:24:32 +02:00
Arnaud
cbe1992a25
Put back the comment related to hardhat automine 2025-06-20 08:24:32 +02:00
Arnaud
184355e338
Remove deployments folder and add README for previous files references 2025-06-20 08:24:31 +02:00
Arnaud
6d732b7e6c
Fix formatting 2025-06-20 08:24:31 +02:00
Arnaud
3e34117422
Remove old .tool-versions 2025-06-20 08:24:31 +02:00
Arnaud
959364a385
Add vault ignition module 2025-06-20 08:24:30 +02:00
Arnaud
4690c6373a
Update token description 2025-06-20 08:24:30 +02:00
Arnaud
0807f7d52c
Update Vault tests for ignition 2025-06-20 08:24:30 +02:00
Arnaud
110ac8197a
Update dependencies 2025-06-20 08:24:30 +02:00
Arnaud
d3207ed068
Remove conditional allowBlocksWithSameTimestamp, set true everytime 2025-06-20 08:24:29 +02:00
Arnaud
3614bfe7ed
Add process names when running concurrently 2025-06-20 08:24:29 +02:00
Arnaud
ca9d8bb31e
Remove old deployments folder 2025-06-20 08:24:29 +02:00
Arnaud
5d632cd070
Refactoring 2025-06-20 08:24:28 +02:00
Arnaud
f2757067f6
Export contract deployment custom error assert into a function 2025-06-20 08:24:28 +02:00
Arnaud
ec47be2685
Remove unused function 2025-06-20 08:24:28 +02:00
Arnaud
fc2c710377
Fix deployment modules for local env 2025-06-20 08:24:28 +02:00
Arnaud
f5b9ded909
Update dependencies and use extract mining to a script in order to use hardhat ignition deploy command 2025-06-20 08:24:27 +02:00
Arnaud
eb6cbfc86d
Use contract initial balance instead of const value 2025-06-20 08:24:27 +02:00
Arnaud
8f25aafc6b
Add localhost configuration for hardhat ignition 2025-06-20 08:24:26 +02:00
Arnaud
784fa5584f
Remove useless comment 2025-06-20 08:24:26 +02:00
Arnaud
6994dea0e5
Remove npx call in package.json 2025-06-20 08:24:25 +02:00
Arnaud
74411ebf7c
Remove comment 2025-06-20 08:24:25 +02:00
Arnaud
7f42ec577c
Update prettier to the last version 2025-06-20 08:24:25 +02:00
Arnaud
de58989edf
Move to ethers 6 and use hardhat ignition for deployments 2025-06-20 08:24:24 +02:00
Arnaud
2dddc26015
chore: status L2 Linea test deployment (#226)
* Statis L2 Linea test deployment

* Fix config when private key is empty

* Remove circuit files
2025-06-20 08:14:39 +02:00
Slava
449d64ffc0
chore: codex_testnet deployment artifacts (#254)
https://github.com/codex-storage/nim-codex/issues/1282
2025-06-19 17:51:36 +03:00
Slava
a4ca4f9cb6
chore(codex-devnet): update verifier artifacts (#253)
* chore(codex-devnet): remove binary artifacts

* chore(codex-devnet): update verifier artifacts
2025-06-19 14:26:15 +02:00
Slava
886e8c5b0f
chore: codex_testnet deployment artifacts (#247)
https://github.com/codex-storage/nim-codex/issues/1269
2025-06-17 12:56:22 +00:00
Ben Bierens
ce15c6af45
Updates verifier network artifacts (#252) 2025-06-17 12:16:00 +00:00
Ben Bierens
2e7f81da9a
Use codex_testnet verifier artifact for dist-tests (#251)
* Removes artifacts

* Creates symlink to codex_testnet
2025-06-17 14:08:09 +02:00
Dmitriy Ryajov
08e91c2443
chore(hardhat): bumping hardhat to v2.24.2 (#245)
* bumping hardhat to v2.24.2

* Ensure to get the next block timestamp

---------

Co-authored-by: Arnaud <arnaud@status.im>
2025-06-09 11:25:00 -07:00
Ben Bierens
4b2fc07ca9
chore: Updates zkey archive to include graph file (#246) 2025-06-09 09:45:19 +02:00
Eric
3661376327
fix(integration): fixes hardhat not recognising custom error (#243)
Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com>
2025-06-05 12:42:01 -07:00
Adam Uhlíř
06c76e59b5
build: docker uses npm ci (#244) 2025-06-05 10:25:12 +02:00
Arnaud
aee91f1ac4
chore: add a new canMarkProofAsMissing function (#229)
* Add a new canProofBeMarkedAsMissing function

* Rename modifier

* Rename canProofBeMarkedAsMissing to canMarkProofAsMissing
2025-06-03 09:06:57 +02:00
Slava
b5ca8a61db
chore: codex_testnet deployment artifacts (#241)
https://github.com/codex-storage/nim-codex/issues/1241
2025-05-30 12:30:12 +03:00
markspanbroek
470a4df415
fix(vault): do no allow reuse of fund ids (#238)
* fix(vault): do no allow reuse of fund ids

Fixes an attack where all tokens can be drained from
the Vault by allowing a token flow to persist after
a Fund is deleted.

* chore(vault): update state diagram
2025-05-19 10:23:01 +00:00
Adam Uhlíř
a1680df42e
fix: avoid redeploying token contract (#236) 2025-05-15 09:49:38 +00:00
Slava
8d19f7650b
chore: codex_testnet deployment artifacts (#237)
https://github.com/codex-storage/nim-codex/issues/1203
2025-05-15 04:24:53 +00:00
Eric
92537a5120
fix(slot reservations): clear AddressSet instead of delete (#235)
* fix(slot-reservations): Allows slot to be reserved when in repair

Previous to when SlotState.Repair was implemented, slots in repair would be considered free and the slots could be reserved in this state. Now that SlotState.Repair has been implemented, the `canReserveSlot` needs to check that the SlotState is in Repair or is Free before allowing reservation.

* fix(slot reservations): clear AddressSet instead of delete

Deleting an AddressSet causes corrupted memory. Each address must be removed individually, which is OK to do since there is a maxReservations parameter that keeps this number small.

https://docs.openzeppelin.com/contracts/5.x/api/utils#EnumerableSet

* Switch to EnumerableSet clear function provided by openzeppelin

---------

Co-authored-by: Arnaud <arnaud@status.im>
2025-05-15 11:40:14 +10:00
Eric
baded845f3
fix(slot-reservations): Allows slot to be reserved when in repair (#234)
Previous to when SlotState.Repair was implemented, slots in repair would be considered free and the slots could be reserved in this state. Now that SlotState.Repair has been implemented, the `canReserveSlot` needs to check that the SlotState is in Repair or is Free before allowing reservation.
2025-05-15 11:37:50 +10:00
markspanbroek
e49abc4104
Vault (#220)
* vault: deposit and withdraw

* vault: change data structure to be recipient oriented

* vault: burning funds

* vault: transfer tokens from one recipient to the other

* vault: designate tokens for a single recipient

* vault: lock up tokens until expiry time

* vault: lock is deleted upon withdrawal

* vault: simplify test setup

* vault: remove duplication in tests

* vault: further test for locks

* vault: allow recipient to withdraw

* vault: flow tokens from one recipient to the other

* vault: designate tokens that flow

* vault: move flow accumulation calculation into VaultBase

* vault: use custom operators to improve readability

* vault: stop flowing when lock expires

* vault: reject flow when insufficient tokens available

* vault: do not allow flow when lock already expired

* vault: allow automine to be disabled in time sensitive tests

* vault: improve naming of public functions

* 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

* vault: reject negative flows

* vault: make tests a bit more robust

* vault: change flows over time

* vault: check Lock invariant before writing

* vault: allow flows to be diverted to others

* vault: simplify example flow rates in test

* vault: disallow transfer of flowing tokens

* vault: cannot burn flowing tokens

* vault: delete flow when burning or withdrawing

* vault: fix flaky time sensitive tests

Ensures that setting of lock and starting of
flow happen in the same block.
Therefore hardhat cannot occasionally increase
the timestamp between the two operations.
This makes predicting the balances over time
much easier.

* vault: disallow designating of flowing tokens

* vault: document setAutomine()

* vault: delete lock all tokens are withdrawn or burned

* vault: cleanup

* vault: reorder tests

* vault: only allow deposit, transfer, etc when locked

* vault: reorder functions

in roughly chronological order

* vault: rename context -> fund

* vault: rename balance -> account

* vault: combine account and flow mappings

* vault: _getAccount updates to the latest timestamp

* vault: simplify _getAccount()

* vault: reordering

* vault: formatting

* vault: do not delete lock when burning

* vault: combine Account and Flow structs

* vault: cleanup

* vault: split flow into incoming and outgoing

- no need to deal with signed integers anymore
- allows flow to self to designate tokens over time

* vault: fix transfer to self

* vault: remove _getAccount()

- no longer calculate flow updates when not needed
- use account.update(timestamp) where needed
- use _getBalance() to view current balance

* vault: rename error

* vault: reduce size of timestamp further

* 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

* vault: extract common tests for unlocked funds

* vault: burn entire fund

* vault: transfer tokens to 0xdead when fund is burned

* vault: do not expose Lock internals on public api

* vault: formatting

* vault: test lock state transitions

* vault: clean up errors

* vault: rename burn -> burnAccount, burnAll -> burnFund

* vault: burn part of designated tokens

* vault: burn designated/fund allowed when flowing

* vault: prefix errors with 'Vault'

* vault: cleanup

* vault: remove dead code

* vault: add documentation

* vault: fix accounting of locked value when burning designated tokens

* vault: update documentation

* update openzeppelin contracts to 5.2.0

* vault: format all solidity files

* vault: cleanup tests

* vault: pausing and unpausing

* vault: rename account->holder in tests

* vault: allow for multiple accounts for one account holder

* vault: only allow account holder to withdraw for itself

* vault: freezeFund() instead of burnFund()

* vault: rename Fund -> FundId

* vault: rename lock states

- NoLock -> Inactive
- Unlocked -> Withdrawing

* vault: rename Lock -> Fund

* vault: clarification

Co-Authored-by: Adam Uhlíř <adam@uhlir.dev>

* vault: rename update() -> accumulateFlows()

Reason: update() is too generic, and can easily be
interpreted as changing the on-chain state, whereas
it actually updates the in-memory struct.

Co-Authored-By: Eric <5089238+emizzle@users.noreply.github.com>
Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>

* vault: rephrase

Co-Authored-By: Adam Uhlíř <adam@uhlir.dev>

---------

Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
2025-04-16 11:57:07 +02:00
Adam Uhlíř
0bf138512b
fix: only slots host should be able to submit proof (#227)
* fix: only slots host should be able to submit proof

* chore: formatting
2025-03-26 11:05:21 +01:00
Mark Spanbroek
1982e71d52 update prettier-plugin-solidity to 1.4.2 2025-03-04 09:33:20 +01:00
Mark Spanbroek
441d96bb08 update solhint to 5.0.5 2025-03-04 09:33:20 +01:00