Luke Parker
21ce50ecf7
Revert "Forward docker stderr to stdout in case stderr is being dropped for some reason"
...
This was intended for the monero-audit branch.
2025-08-10 20:53:09 -04:00
Luke Parker
a4ceb2e756
Forward docker stderr to stdout in case stderr is being dropped for some reason
2025-08-10 20:50:12 -04:00
Luke Parker
b59b1f59dd
Remove ToB report PDF by request
2025-07-18 03:19:10 -04:00
Luke Parker
cc4a65e82a
Add Trail of Bits audit of our Ethereum code
2025-07-12 03:29:56 -04:00
Luke Parker
eab5d9e64f
Remove Mastodon link from README
...
Closes #662 .
2025-07-12 03:29:21 -04:00
Luke Parker
4e0c58464f
Update Router documentarion after following B2 (B1 redux)
2025-04-12 10:04:10 -04:00
Luke Parker
205da3fd38
Update the Ethereum processor to the Router messages including their on-chain address
...
This only updates the syntax. It does not yet actually route the address as
necessary.
2025-04-12 09:57:29 -04:00
Luke Parker
f7e63d4944
Have Router signatures additionally sign the Router's address (B2)
...
This slightly modifies the gas usage of the contract in a way breaking the
existing vector. A new, much simpler, vector has been provided instead.
2025-04-12 09:55:40 -04:00
Luke Parker
b5608fc3d2
Update dated documentation for verifySignature (B1)
2025-04-12 08:42:45 -04:00
Luke Parker
33018bf6da
Explicitly ban the identity point as an Ethereum Schnorr public key (002)
...
This doesn't have a well-defined affine representation. k256's behavior,
mapping it to (0, 0), means this would've been rejected anyways (so this isn't
a change of any current behavior), but it's best not to rely on such an
implementation detail.
2025-04-12 08:38:06 -04:00
Luke Parker
bef90b2f1a
Fix gas estimation discrepancy when gas isn't monotonic
2025-04-12 08:32:11 -04:00
Luke Parker
184c02714a
alloy-core 1.0, alloy 0.14, revm 0.22 (001)
...
This moves to Rust 1.86 as were prior on Rust 1.81, and the new alloy
dependencies require 1.82.
The revm API changes were notable for us. Instead of relying on a modified call
instruction (with deep introspection into the EVM design), we now use the more
recent and now more prominent Inspector API. This:
1) Lets us perform far less introspection
2) Forces us to rewrite the gas estimation code we just had audited
Thankfully, it itself should be much easier to read/review, and our existing
test suite has extensively validated it.
This resolves 001 which was a concern for if/when this upgrade occurs. By doing
it now, with a dedicated test case ensuring the issue we would have had with
alloy-core 0.8 and `validate=false` isn't actively an issue, we resolve it.
2025-04-12 08:09:09 -04:00
Luke Parker
5a7b815e2e
Update nightly version
2025-02-04 07:57:04 -05:00
Luke Parker
22e411981a
Resolve clippy errors from recent merges
2025-01-30 05:04:28 -05:00
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