Resonance is a state-of-the-art transaction fee mechanism to efficiently match supply and demand, offering users optimally priced transaction execution.
valuation
gas
for inclusion into a block.
After EIP-1559, gas
fees are split into two parameters: a baseFee
and a
priorityFee
. The baseFee
is a minimum inclusion fee that modulates based on
blockspace demand and is burnt. The priorityFee
is a user-specified tip to
block proposers to prioritize inclusion of their transaction relative to others.
Resonance operates in a surplus-maximizing setting. Rather than transactions
specifying baseFee
or priorityFee
, users instead assign a valuation
to
their transactions, which represents the maximum amount of money a user
submitting a transaction is willing to pay for its execution.
priorityFee
in EIP-1559, a valuation
in Resonance must stay private
to the network until a successful transaction ↔︎ node match is found. For this
reason, valuation
is encrypted to the Auctioneer (described below).cost function
sum(priorityFee)
of
included transactions and an inflationary block reward (currently, 2 ETH) when
they are the elected block proposer, and passively from ETH supply reduction via
the baseFee
burn.
Irrespective of whether a node is specialized to execute certain types of
compute, it is rewarded congruently to any other, and forced to execute all
transactions.
In Ritual, via Resonance and Symphony, we enable
selective execution and node specialization, reducing redundant re-execution and
enabling nodes to make explicit their unique execution costs.
Akin to users specifying a true valuation
for their transactions, each node
also specifies a cost function
which dictates their true cost to executing a
set of transactions.
Formally, this can be defined as each node, ( is an element in the
set of nodes, ), specifies a cost function
,
, denoting the amount of money the node,
, must be paid to execute a bundle of transactions, , where
( is a subset of all valid transactions, ).
cost function
must stay private to the network at the risk of
exposing true execution costs, and hence node margins, to informed
participants. It is also encrypted to the Auctioneer (described below).valuation
and
node execution cost
in the process.
allocation
,
routing
, , to the Auctioneer via APIAuctioneer.sol
, has four core functions:
publicKey
to which users and nodes encrypt datacost function
updatescost function
updatesrouting
, , submissions, per batchrouting
, , submissionsvaluation
or node cost function
submissionsvaluation
, decrypted node
cost function
, or broker routing
submissions publiclycost function
updates on-chain, we explicitly introduce a
one block best-case E2E delay (of four total induced), but in doing so, ensure
that node registration and cost function
updates benefit from the same
censorship-resistant guarantees of any other blockchain transaction.valuation
as a transaction parametervaluation
must remain private except to the Auctioneer, only the
Auctioneer can validate and deduct balances for transaction executionvalue
parameter (publicly enforced), nodes
cannot deduct any ETH balances at allAuctioneerWallet.sol
AuctioneerWallet.sol
permissions the on-chain Auctioneer.sol
contract to
manage EOA ETH balances through an auctioneer-permissioned withdraw()
functionAuctioneerWallet.sol::execute()
entrypoint conforms to similar parameters
as a regular transactionEnable Resonance
AuctioneerWallet.sol
reference implementation. This is an opt-in
upgrade, and can be reversed by users at any time.For most users, this step will be abstracted by their wallets or the decentralized applications (dApps) they interface with.For power users, enabling Resonance is as simple as sending a SetCodeTx
transaction. Example via Foundry’s Cast:Authenticate with dApps
Users select valuation
priorityFee
, with Resonance, users simply input their valuation
.Users sign transaction payloads
Nodes receive transactions via RPC
Nodes gossip transactions to other nodes
Auctioneer executes batch
cost function
submissionsvaluation
submissionsrouting
submissionsrouting
Assigned nodes execute transaction
routing
has been posted on-chain, nodes execute their assigned transaction payloads, gossiping outputs and optional proofs to the rest of the network.Block-building nodes collect transactions and propose blocks
Blocks are gossiped and validated
Users see executed state
valuation