Luke Parker
ea00ba9ff8
Clarified usage of CREATE
...
CREATE was originally intended for gas savings. While one sketch did move to
CREATE2, the security concerns around address collisions (requiring all init
codes not be malleable to achieve security) continue to justify this.
To resolve the gas estimation concerns raised in the prior commit, the
createAddress function has been made constant-gas.
2025-01-27 07:36:13 -05:00
Luke Parker
a9625364df
Test createAddress
...
Benchmarks gas usage
Note the estimator needs to be updated as this is now variable-gas to the
state.
2025-01-27 05:37:56 -05:00
Luke Parker
75c6427d7c
CREATE uses RLP, not ABI-encoding
2025-01-27 04:24:25 -05:00
Luke Parker
e742a6b0ec
Test ERC20 OutInstructions
2025-01-27 02:08:01 -05:00
Luke Parker
5164a710a2
Redo gas estimation via revm
...
Adds a minimal amount of packages. Does add decent complexity. Avoids having
constants which aren't exact, due to things like the quadratic memory cost, and
the issues with such estimates accordingly.
2025-01-26 22:42:50 -05:00
Luke Parker
27c1dc4646
Test ETH address/code OutInstructions
2025-01-24 18:46:17 -05:00
Luke Parker
3892fa30b7
Test an empty execute
2025-01-24 17:13:36 -05:00
Luke Parker
ed599c8ab5
Have the Batch event encode the amount of results
...
Necessary to distinguish a bitvec with 1 results from a bitvec with 7 results.
2025-01-24 17:04:25 -05:00
Luke Parker
29bb5e21ab
Take advantage of RangeInclusive for specifying filters' blocks
2025-01-24 07:44:47 -05:00
Luke Parker
604a4b2442
Add execute_tx to fill in missing test cases reliant on it
2025-01-24 07:33:36 -05:00
Luke Parker
977dcad86d
Test the Router rejects invalid signatures
2025-01-24 07:22:43 -05:00
Luke Parker
cefc542744
Test SeraiKeyWasNone
2025-01-24 06:58:54 -05:00
Luke Parker
164fe9a14f
Test Router's InvalidSeraiKey error
2025-01-24 06:41:24 -05:00
Luke Parker
f948881eba
Simplify async code in in_instructions_unordered
...
Outsources fetching the ERC20 events to top_level_transfers_unordered.
2025-01-24 05:43:04 -05:00
Luke Parker
201b675031
Test ERC20 InInstructions
2025-01-24 03:45:04 -05:00
Luke Parker
3d44766eff
Add ERC20 InInstruction test
2025-01-24 03:23:58 -05:00
Luke Parker
a63a86ba79
Test Ether InInstructions
2025-01-23 09:30:54 -05:00
Luke Parker
e922264ebf
Add selector collisions to the IERC20 lib
2025-01-23 08:25:59 -05:00
Luke Parker
7e53eff642
Fix the async flow with the Router
...
It had sequential async calls with complexity O(n), with a variety of redundant
calls. There was also a constant of... 4? 5? for each item. Now, the total
sequence depth is just 3-4.
2025-01-23 06:16:58 -05:00
Luke Parker
669b8b776b
Work on testing the Router
...
Completes the `Executed` enum in the router. Adds an `Escape` struct. Both are
needed for testing purposes.
Documents the gas constants in intent and reasoning.
Adds modernized tests around key rotation and the escape hatch.
Also updates the rest of the codebase which had accumulated errors.
2025-01-23 02:06:06 -05:00
Luke Parker
6508957cbc
Make a proper nonReentrant modifier
...
A transaction couldn't call execute twice within a single TX prior. Now, it
can.
Also adds a bit more context to the escape hatch events/errors.
2025-01-23 00:04:44 -05:00
Luke Parker
373e794d2c
Check the escaped to address has code set
...
Document choice not to use a confirmation flow there as well.
2025-01-22 22:45:51 -05:00
Luke Parker
c8f3a32fdf
Replace custom read/write impls in router with borsh
2025-01-21 03:49:29 -05:00
Luke Parker
f690bf831f
Remove old code still marked TODO
2025-01-19 02:36:34 -05:00
Luke Parker
47560fa9a9
Test manually implemented serializations in the Router lib
2025-01-19 00:45:26 -05:00
Luke Parker
9d57c4eb4d
Downscope dependencies in serai-processor-ethereum-primitives, const-hex decode bytecode in ethereum-schnorr-contract
2025-01-19 00:16:50 -05:00
Luke Parker
642ba00952
Update Deployer README, 80-character line length
2025-01-19 00:03:56 -05:00
Luke Parker
3c9c12d320
Test the Deployer contract
2025-01-18 23:58:38 -05:00
Luke Parker
f6b52b3fd3
Maximum line length of 80 in Deployer.sol
2025-01-18 15:22:58 -05:00
Luke Parker
0d906363a0
Simplify and test deterministically_sign
2025-01-18 15:13:39 -05:00
Luke Parker
5a42f66dc2
alloy 0.9
2024-12-30 11:09:09 -05:00
Luke Parker
9593a428e3
alloy 0.8
2024-12-11 01:02:58 -05:00
Luke Parker
5b3c5ec02b
Basic Ethereum escapeHatch test
2024-12-09 02:00:17 -05:00
Luke Parker
3192370484
Add Serai key confirmation to prevent rotating to an unusable key
...
Also updates alloy to the latest version
2024-12-08 20:42:37 -05:00
Luke Parker
834c16930b
Add a bitmask of OutInstruction events to Executed
...
Allows explorers to provide clarity on what occurred.
2024-11-02 21:00:01 -04:00
Luke Parker
2920987173
Add a re-entrancy guard to Router.execute
2024-11-02 20:12:48 -04:00
Luke Parker
26230377b0
Define IRouterWithoutCollisions which Router inherits from
...
This ensures Router implements most of IRouterWithoutCollisions. It solely
leaves us to confirm Router implements the extensions defined in IRouter.
2024-11-02 19:10:39 -04:00
Luke Parker
2f5c0c68d0
Add selector collisions to Router to make it IRouter compatible
2024-11-02 18:13:02 -04:00
Luke Parker
8de42cc2d4
Add IRouter
2024-11-02 13:19:07 -04:00
Luke Parker
cf4123b0f8
Update how signatures are handled by the Router
2024-11-02 10:47:09 -04:00
Luke Parker
6a520a7412
Work on testing the Router
2024-10-31 02:23:59 -04:00
Luke Parker
b2ec58a445
Update serai-ethereum-processor to compile
2024-10-30 21:48:40 -04:00
Luke Parker
8e800885fb
Simplify deterministic signing process in serai-processor-ethereum-primitives
...
This should be easier to specify/do an alternative implementation of.
2024-10-30 21:36:31 -04:00
Luke Parker
2a427382f1
Natspec, slither Deployer, Router
2024-10-30 21:35:43 -04:00
Luke Parker
ce1689b325
Expand tests for ethereum-schnorr-contract
2024-10-28 18:08:31 -04:00
Luke Parker
2c8af04781
machete, drain > mem::swap for clarity reasons
2024-09-19 23:36:32 -07:00
Luke Parker
2984d2f8cf
Misc comments
2024-09-19 23:36:32 -07:00
Luke Parker
554c5778e4
Don't track deployment block in the Router
...
This technically has a TOCTOU where we sync an Epoch's metadata (signifying we
did sync to that point), then check if the Router was deployed, yet at that
very moment the node resets to genesis. By ensuring the Router is deployed, we
avoid this (and don't need to track the deployment block in-contract).
Also uses a JoinSet to sync the 32 blocks in parallel.
2024-09-19 23:36:32 -07:00
Luke Parker
7e4c59a0a3
Have the Router track its deployment block
...
Prevents a consensus split where some nodes would drop transfers if their node
didn't think the Router was deployed, and some would handle them.
2024-09-19 23:36:32 -07:00
Luke Parker
294462641e
Don't have the ERC20 collapse the top-level transfer ID to the transaction ID
...
Uses the ID of the transfer event associated with the top-level transfer.
2024-09-19 23:36:32 -07:00