Writing Contracts Safely

Written By zbam

Last updated 12 days ago

Most Solidity contracts can be deployed and executed without modification. However, some common Ethereum assumptions do not hold and should be addressed explicitly.

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

You should not assume:

  • Ethereum-style externally owned accounts

  • A gas price market

  • A synchronous transaction lifecycle

Contracts should be written as if execution is deterministic and replayable, with all user intent explicitly provided as input.

What Breaks

Certain patterns common in Ethereum contracts are incompatible or unsafe in this environment.

  • ecrecover
    EVM 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

will not behave as intended. Execution limits are determined by inscription size, not by runtime bidding.

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

These capabilities allow contracts to enforce Bitcoin-native constraints that are not possible on Ethereum.

As a general rule: If your contract logic is explicit, deterministic, and does not rely on Ethereum-specific account or fee assumptions, it will behave predictably and safely in this environment.