akildemir
11d48d0685
add Serai JSON-RPC methods ( #627 )
...
* add serai rpc methods
* fix machete & dex quote price api
* fix validators api
---------
Co-authored-by: Luke Parker <lukeparker5132@gmail.com >
2025-01-30 04:23:03 -05:00
akildemir
e4cc23b72d
add economic security pallet tests ( #623 )
2025-01-30 04:19:12 -05:00
akildemir
52d853c8ba
add validator sets pallet tests ( #614 )
...
* add validator sets pallet tests
* update tests with new types
---------
Co-authored-by: Luke Parker <lukeparker5132@gmail.com >
2025-01-30 04:16:19 -05:00
akildemir
9c33a711d7
add in instructions pallet tests ( #608 )
...
* add pallet tests
* set mock runtime AllowMint to correct type
2025-01-30 04:13:21 -05:00
Luke Parker
a275023cfc
Finish merging in the develop branch
2025-01-30 03:14:24 -05:00
Luke Parker
258c02ff39
Merge branch 'develop' into next
...
This is an initial resolution of conflicts which does not work.
2025-01-30 00:56:29 -05:00
Luke Parker
3655dc723f
Use clearer identity check in equality
2025-01-30 00:13:55 -05:00
Luke Parker
315d4fb356
Correct decoding identity for embedwards25519/secq256k1
2025-01-29 23:01:45 -05:00
Luke Parker
2bc880e372
Downstream the eVRF libraries from FCMP++
...
Also adds no-std support to secq256k1 and embedwards25519.
2025-01-29 22:29:40 -05:00
Luke Parker
19422de231
Ensure a non-zero fee in the Router OutInstruction gas fuzz test
2025-01-27 15:39:55 -05:00
Luke Parker
fa0dadc9bd
Rename Deployer bytecode to initcode
2025-01-27 15:39:06 -05:00
Luke Parker
f004c8726f
Remove unused library bytecode from ethereum-schnorr-contract
2025-01-27 15:38:44 -05:00
Luke Parker
835b5bb06f
Split tests across a few files, fuzz generate OutInstructions
...
Tests successful gas estimation even with more complex behaviors.
2025-01-27 13:59:11 -05:00
Luke Parker
0484113254
Fix the ability for a malicious adversary to snipe ERC20s out via re-entrancy from the ERC20 contract
2025-01-27 13:07:35 -05:00
Luke Parker
17cc10b3f7
Test Execute result decoding, reentrancy
2025-01-27 13:01:52 -05:00
Luke Parker
7e01589fba
Erc20::approve for DestinationType::Contract
...
This allows the CREATE code to bork without the Serai router losing access to
the coins in question. It does incur overhead on the deployed contract, which
now no longer just has to query its balance but also has to call the
transferFrom, but its a safer pattern and not a UX detriment.
This also improves documentation.
2025-01-27 11:58:39 -05:00
Luke Parker
f8c3acae7b
Check the Router-deployed contracts' code
2025-01-27 07:48:37 -05:00
Luke Parker
0957460f27
Add supporting security commentary to Router.sol
2025-01-27 07:36:23 -05:00
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
0b30ac175e
Restore workspace-wide clippy
...
Fixes accumulated errors in the Substrate code. Modifies the runtime build to
work with a modern clippy. Removes e2e tests from the workspace.
2025-01-19 02:27:35 -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
8222ce78d8
Correct accumulated errors in the processor
2025-01-18 12:41:57 -05:00