Plume
  • Introduction
    • Overview
  • Official Tokens
    • PLUME ($PLUME) Token
    • Plume USD (pUSD)
  • Plume Security
    • AML Screening
    • Compliance at Plume
    • Audits and Security
  • Developers
    • Plume Testnet
    • Smart Contracts
    • How-to Guides
      • How to Connect to Testnet
        • Install and Configure Wallet
        • Claim test tokens
      • How to Deploy Smart Contracts
        • Deploy using Remix IDE
        • Deploy using Foundry
        • Deploy using Hardhat
      • How to Verify Smart Contracts
        • Verify using Foundry
        • Verify using Hardhat
      • How to Run a Node
    • Plume vs. Ethereum
    • Gas and Fees
    • Finality
  • Community and Support
    • Community Channels
    • Brand Assets
    • Terms of Service
    • Privacy Policy
  • MORE
    • Glossary
    • FAQ
Powered by GitBook
On this page
  • Gas and Fees
  • Block gas limit, numbers, and time
  • RPC methods​
  • Solidity Support
  • Cross-chain messaging​
  • Precompiles​
  • NodeInterface​
  1. Developers

Plume vs. Ethereum

PreviousHow to Run a NodeNextGas and Fees

Last updated 2 months ago

Plume is an EVM-compatible blockchain, and most smart contract developers will not notice any differences with Ethereum. This page outlines some of the differences between Plume and Ethereum, which are similar to the .

Gas and Fees

There is a fee for executing a transaction on Plume, just like on Ethereum. The difference is that Plume transactions must pay an extra fee to cover the cost of batch posting to Ethereum. More details are available in Gas and Fees.

Block gas limit, numbers, and time

Block gas limit

When submitting a transaction to Plume, users pay for both execution on Plume and the cost of posting calldata to Ethereum. This dual cost structure results in a higher gas limit than pure execution alone. The total gas limit of an Plume block includes all transaction gas limits, accounting for Ethereum data costs. To manage potential cost variations, Ethereum assigns a much larger artificial gas limit, but the actual execution gas limit is capped at 32 million. This discrepancy explains why a block’s reported gas limit may appear inflated despite the effective execution costs.

Block numbers

Plume assigns its own block numbers, distinct from Ethereum’s, with multiple Plume blocks potentially fitting within a single Ethereum block. However, each Plume block is always associated with exactly one Ethereum block. In Plume smart contracts, querying block.number returns a value close to the L1 Ethereum block number when the sequencer received the transaction, though it may not be exact. Timing assumptions based on block numbers are reliable over several hours but not within minutes, similar to Ethereum.

Plume blocks start at 0 from genesis and increase sequentially, with the sequencer determining block transitions based on transaction activity. Blocks are produced as needed, meaning block production may be sporadic during hours of low activity. When querying a Plume node’s RPC, transaction receipts return the Plume block number, with the corresponding Ethereum block number available in the l1BlockNumber field.

Block timestamps

Block timestamps on Plume are determined by the sequencer’s clock and are independent of the timestamp of the Ethereum block. Each Plume block timestamp must be equal to or greater than the previous one and must fall within set boundaries—no more than 24 hours in the past or one hour in the future. Since the sequencer may experience delays in posting batches to Ethereum, it has limited flexibility to adjust timestamps within the defined boundaries to maintain chain stability and prevent reorganization.

RPC methods

Most of the RPC methods available on Plume behave exactly the same as the methods do on Ethereum. However, some methods may result in a different output or add more information on Plume. These methods behave the same as they do on Arbitrum, so information about the exact differences is available on .

Solidity Support

Smart contracts on Plume mostly behave the same as they do on Ethereum. However, some properties and functions on Solidity smart contracts return a different result on Plume. The operations that return a different result are the same as Arbitrum's, so more information is available on .

Cross-chain messaging

Arbitrary messages can be passed from Ethereum to Plume. These are commonly known as "parent chain to child chain messages". Developers using this functionality should familiarize themselves with how they work. Find more information about it in .

Similarly, Plume can also send messages to Ethereum. Find more information about them in .

Precompiles

Plume supports all precompiles available in both Ethereum and Arbitrum, with methods smart contracts can call the same way they can Solidity functions. You can find a full reference of them in .

NodeInterface

Plume includes a special NodeInterface contract available at address 0xc8 that is only accessible via RPCs (it's not actually deployed on-chain, and thus can't be called by smart contracts). Find more information about this interface in .

differences between Arbitrum and Ethereum
​
Arbitrum's documentation of RPC methods
Arbitrum's documentation of Solidity support
​
Parent chain to child chain messaging
Child chain to parent chain messaging and the outbox
​
Precompiles
​
NodeInterface