Solidity Version and EVM Assumptions
The execution environment follows standard EVM semantics and supports modern Solidity versions. You can assume:- Deterministic EVM execution
- Standard storage, memory, and calldata behavior
- ABI encoding and decoding identical to Ethereum
- Ethereum-style externally owned accounts
- A gas price market
- A synchronous transaction lifecycle
What Breaks
Certain patterns common in Ethereum contracts are incompatible or unsafe in this environment.- ecrecoverEVM addresses do not have private keys (as they are generated using Bitcoin pkscripts). Any authentication logic relying on ecrecover will fail or be meaningless. Use BIP-322 verification via the provided precompile instead.
- tx.origin Assumptions There is no concept of a user-controlled EOA originating a call chain. Relying on tx.origin for authorization or security checks is unsafe.
Gas-Price-Based Logic
There is no dynamic gas price, base fee, or priority fee. Contracts that rely on gas price for:- Anti-front-running logic
- Fee estimation
- Dynamic pricing
What Works Well
Several common contract patterns translate cleanly and predictably. ERC-20 / ERC-721 Logic - Token standards, balances, allowances, and transfers behave as expected. These patterns are well-suited for managing assets within the execution environment. Bonding Curves and AMM-Style Math - Purely deterministic pricing logic works well, especially when combined with Bitcoin transaction introspection for BTC-denominated flows. Vaults and Escrows - Contracts that custody assets under explicit rules, timelocks, or conditional releases are a strong fit, particularly when exits are settled back to base BRC-20 balances. Bitcoin-Aware Contracts via Precompiles Precompiled contracts enable direct interaction with Bitcoin data, including:- Transaction inspection
- Satoshi location tracking
- Timelock script generation