I am attempting to count the number of DepositEvents in the Medalla Beacon Contract. At first, I attempted to do this by counting the number of Deposit Events, however, I noticed a Deposit Event that was triggered even though Etherscan suggests it failed.

Why is there a red x on Beacon Chain Deposit even though a deposit event was logged?

enter image description here

1 Answer 1


It's an invalid deposit.

The deposit contract cannot verify the deposit signatures yet. This might change with the Berlin hardfork though if we can get a BLS precompile. But that's not set in stone yet.

Currently, the EVM is unable to process the BLS signature of the deposit data. This has the (im)practical consequences that Ethereum 2.0 clients (and other tooling such as your script) not only need to catch the deposit events, but also verify the BLS signatures manually in the post-processing.

Reasons for invalid signatures can be outdated or misconfigured tooling/clients to generate the deposits. In most cases, wrong fork versions are used.

Edit 0: EIP-2357: Precompile for BLS12-381 curve operations

Edit 1: Also check the deposit contract emit DepositEvent() happening only after some sanity checks. It even fires if the deposit would fail on the data root and merkle tree checks further down.

  • Thanks Afr. What javascript library do you recommend that I use in order to check BLS signatures? Commented Oct 1, 2020 at 22:32
  • 1
    ChainSafe's BLS libraries npmjs.com/package/@chainsafe/bls
    – q9f
    Commented Oct 8, 2020 at 7:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.