Skip to content
Arnaud Bailly edited this page Sep 14, 2021 · 1 revision

ACE: Asynchronous and Concurrent Execution of Complex Smart Contracts

Reading ACE Paper which proposes a new protocol to offload smart contracts execution from the main (Ethereum) chain to dedicated service providers. It's apparently quite similar to Arbitrum: Separate execution from verification and build consensus over results using some quorum of executors then commit it on-chain.

  • The mainchain's blocks are used to serialise, eg. provide a total ordering of, smart contracts execution and result, using 2 additional (?) sections
  • Service providers communicate with verifiers and other providers through the P2P network:
    • They observe new blocks to find new contract calls to execute
    • They post signed execution results which are then included in new blocks iff some quorum q over n service providers designated at contract deployment time agrees on the result
  • Each contract is assigned a set and a quorum at deployment time, thus different contract can be executed by different service providers
  • When a contract depends on other contracts' results, the client is responsible for posting the list of contracts to execute as part of its initial call transaction.
    • Then each contract's execution set independently produces the results, signing them and posting them over the P2P network
    • Dependent contracts then consume validly signed (but not posted on-chain) results as they become available
    • Signed results are put in a block's result section whenever they are valid, like before
  • Posted results include a hash of the previous state (state is global in ETH and is the distribution of values across all accounts) which allows verifier to ensure the results apply to the latest valid state. They are also responsible for checking the validity of the quorum
  • The last section of the paper is about simulations, matching duration of calls against target tps, showing that ACE enables running complex contracts while keeping throughput of network stable (ETH runs at 10tps currently so ACE could support contracts running for several minutes...)
  • There's a discussion about enhancements and various topics like incentive to service providers or key aggregation

Key takeaways:

  • Seems like a Hydra Head could provide the same kind of service to users, but the economics and incentives might be different on Cardano, as it's not the full contract that runs on chain but only the verifier. However we can imagine that large transactions (eg. a DEX) with many UTXOs all requiring validation would benefit from offloading computation into a Head
  • It's also an interesting use case for Mithril multi-signatures, perhaps combining a PoS over PoW mechanism for service providers?
Clone this wiki locally