Design Considerations
Last updated
Last updated
The Brollup Virtual Machine aligns more heavily on p2p use-cases such as atomic trades between two parties. Smart contracts in this context act as facilitators of these interactions.
While it’s also feasible to construct more complex contracts such as AMMs for token-to-token swaps that operate out-of-band and aren’t atomic, BVM transactions are deterministic, meaning the transaction outcome is determined upon creation. In contrast, EVM transactions rely on their ordering, which exposes them to risks like MEV.
Even operators themselves cannot modify transaction ordering through additional fees; Brollup is designed with a rank-based ordering system where higher-ranked accounts are given priority. Every entry in a payload pays an equal fee for the same execution.
Although higher-ranked accounts are prioritized in the ordering, front-running is not feasible for them either, since there is no mempool to track transactions; operators gather and aggregate transactions themselves.
Given the deterministic nature of transaction outcomes, the msg.sender knows in advance whether the transaction will succeed or fail before entering the forfeiting session where fees are paid. Likewise, the msg.sender is aware in advance of the exact amount of transaction fees to be paid.
Given the inherent design of operators chaining Bitcoin transactions together, each state-transition is interconnected. A msg.sender knows in advance the specific Brollup payload height at which their transaction will be included, eliminating the need for tracking internal state. Consequently, a nonce field is not required in the entry encoding.
A msg.sender can interrupt a covenant signing session or a forfeiting session, resulting in a redo of the affected sessions. Their behaviors can be further analyzed, and they may be temporarily or permanently blacklisted by the operator. A blacklisted account might be required by the operator to place a refundable collateral bond in advance of participating in further sessions. The required bond amount varies according to the rank of the account.
A permanently blacklisted account can still transact without needing permission from the operator. This is because an account does not require an operator to transact on the Brollup; they can execute transactions by incorporating their own version of the on-chain transaction and placing calldata in the respective fields. A Brollup operator acts solely as an aggregator and liquidity provider, facilitating efficient transactions at scale.