Luke Parker
1de8136739
Remove Session from VariantSignId::SlashReport
...
It's only there to make the VariantSignid unique across Sessions. By localizing
the VariantSignid to a Session, we avoid this, and can better ensure we don't
queue work for historic sessions.
2024-12-30 06:16:03 -05:00
Luke Parker
445c49f030
Have the scanner's report task ensure handovers only occur if Batchs are valid
...
This is incomplete at this time. The logic is fine, but needs to be moved to a
distinct location to handle singular blocks which produce multiple Batches.
2024-12-30 06:11:47 -05:00
Luke Parker
5b74fc8ac1
Merge ExternalKeyForSessionToSignBatch into InfoForBatch
2024-12-30 05:34:13 -05:00
Luke Parker
e67e301fc2
Have the processor verify the published Batches match expectations
2024-12-30 05:21:26 -05:00
Luke Parker
147a6e43d0
Split task from serai-processor-primitives into serai-task
2024-12-19 10:08:13 -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
8013c56195
Add/correct msrv labels
2024-12-08 18:27:15 -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
a0ed043372
Move old processor/src directory to processor/TODO
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
Luke Parker
ae76749513
Transfer ETH with CREATE, not prior to CREATE
...
Saves a few thousand gas.
2024-09-19 23:36:32 -07:00
Luke Parker
1e1b821d34
Report a Change Output with every Eventuality to ensure we don't fall out of synchrony
2024-09-19 23:36:32 -07:00
Luke Parker
702b4c860c
Add dummy fee values to the scheduler
2024-09-19 23:36:32 -07:00
Luke Parker
bc1bbf9951
Set a fixed fee transferred to the caller for publication
...
Avoids the risk of the gas used by the contract exceeding the gas presumed to
be used (causing an insolvency).
2024-09-19 23:36:32 -07:00
Luke Parker
ec9211fd84
Remove accidentally included bitcoin feature from processor-bin
2024-09-19 23:36:32 -07:00
Luke Parker
4292660eda
Have the Ethereum scheduler create Batches as necessary
...
Also introduces the fee logic, despite it being stubbed.
2024-09-19 23:36:32 -07:00
Luke Parker
8ea5acbacb
Update the Router smart contract to pay fees to the caller
...
The caller is paid a fixed fee per unit of gas spent. That arguably
incentivizes the publisher to raise the gas used by internal calls, yet this
doesn't effect the user UX as they'll have flatly paid the worst-case fee
already. It does pose a risk where callers are arguably incentivized to cause
transaction failures which consume all the gas, not just increased gas, yet:
1) Modern smart contracts don't error by consuming all the gas
2) This is presumably infeasible
3) Even if it was feasible, the gas fees gained presumably exceed the gas fees
spent causing the failure
The benefit to only paying the callers for the gas used, not the gas alotted,
is it allows Serai to build up a buffer. While this should be minor, a few
cents on every transaction at best, if we ever do have any costs slip through
the cracks, it ideally is sufficient to handle those.
2024-09-19 23:36:32 -07:00
Luke Parker
861a8352e5
Update to the latest bitcoin-serai
2024-09-19 23:36:32 -07:00
Luke Parker
e64827b6d7
Mark files in TODO/ with "TODO" to ensure it pops up on search
2024-09-19 23:36:32 -07:00
Luke Parker
c27aaf8658
Merge BlockWithAcknowledgedBatch and BatchWithoutAcknowledgeBatch
...
Offers a simpler API to the coordinator.
2024-09-19 23:36:32 -07:00
Luke Parker
53567e91c8
Read NetworkId from ScannerFeed trait, not env
2024-09-19 23:36:32 -07:00
Luke Parker
1a08d50e16
Remove unused code in the Ethereum processor
2024-09-19 23:36:32 -07:00
Luke Parker
855e53164e
Finish Ethereum ScannerFeed
2024-09-19 23:36:32 -07:00
Luke Parker
1367e41510
Add hooks to the main loop
...
Lets the Ethereum processor track the first key set as soon as it's set.
2024-09-19 23:36:32 -07:00
Luke Parker
a691be21c8
Call tidy_keys upon queue_key
...
Prevents the potential case of the substrate task and the scan task writing to
the same storage slot at once.
2024-09-19 23:36:32 -07:00
Luke Parker
673cf8fd47
Pass the latest active key to the Block's scan function
...
Effectively necessary for networks on which we utilize account abstraction in
order to know what key to associate the received coins with.
2024-09-19 23:36:32 -07:00
Luke Parker
118d81bc90
Finish the Ethereum TX publishing code
2024-09-19 23:36:32 -07:00
Luke Parker
e75c4ec6ed
Explicitly add an unspendable script path to the processor's generated keys
2024-09-19 23:36:32 -07:00
Luke Parker
9e628d217f
cargo fmt, move ScannerFeed from String to the RPC error
2024-09-19 23:36:32 -07:00
Luke Parker
a717ae9ea7
Have the TransactionPublisher build a TxLegacy from Transaction
2024-09-19 23:36:32 -07:00
Luke Parker
98c3f75fa2
Move the Ethereum Action machine to its own file
2024-09-19 23:36:32 -07:00
Luke Parker
18178f3764
Add note on the returned top-level transfers being unordered
2024-09-19 23:36:32 -07:00
Luke Parker
bdc3bda04a
Remove ethereum-serai/serai-processor-ethereum-contracts
...
contracts was smashed out of ethereum-serai. Both have now been smashed into
individual crates.
Creates a TODO directory with left-over test code yet to be moved.
2024-09-19 23:36:32 -07:00
Luke Parker
433beac93a
Ethereum SignableTransaction, Eventuality
2024-09-19 23:36:32 -07:00