Skip to content

Deploys on Bradbury Phase 2 finalize as accepted but every validator returns FINISHED_WITH_ERROR (studio storage example too) #433

Closed

Description

@whiteknightonhorse

Every deploy we send to Bradbury Phase 2 reaches consensus and finalizes as accepted, but all five validators vote FINISHED_WITH_ERROR and no contract exists afterwards. The unmodified storage.py example from genlayer-studio fails the same way, so we think the cause sits outside our contract.

Environment

  • genlayer CLI 0.40.0-rc.5, network testnet-bradbury (chain 4221)
  • sender funded with test GEN on Phase 2
  • reads go to https://rpc-bradbury.genlayer.com; https://rpc.testnet-chain.genlayer.com answers gen_call with "method does not exist"

Steps

  1. genlayer estimate-fees --json --args <address> fails on Bradbury: the fee policy read is sent without a sender, so the node charges the zero address ("insufficient funds ... address 0x0000000000000000000000000000000000000000 have 0").
  2. Without --fees, genlayer deploy gets an eth_estimateGas revert (data 0x632be5a1 followed by uint 1), falls back to 200000 gas and the node answers "intrinsic gas too low".
  3. With an explicit fee object (the same values the CLI estimate returns once the read carries a sender: execution budget 0.025 GEN, deposit 0.1 GEN), the deploy reaches consensus:
    • storage example, header # { "Depends": "py-genlayer:9b8kjyda2ycxyq4ea6g4yfpnydxhd52gqba5rb8dw7krkh5mn9p0" }, one argument "hello": deployment 0xbad277be11c75f37d36e742b0f15a7181667913fa40929b2253a4aaf80a58a05, accepted, leader result FINISHED_WITH_ERROR
    • the same example with its # v0.3.0 line: 0x40699721c8cbacac2d4aa491d92b6b2df8acd82b90e2da89975607eb6162c5a4, same result
    • our own contract (deploys on studio-next today, deployed on Bradbury before the reset): 0x1e0fd5e97cb60179a3c53ef36a5cfb3608aab240204568298188acf768dcaa04, status Finalized · Accepted, recipient 0x37dC02b26bbF96F9be3A01B128dB58fF79436526, validator votes FINISHED_WITH_ERROR x5, txExecutionResult: 2
  4. gen_call to the recipient answers "contract not found at address".

Questions

We can rerun any of these with a different version or flag if that helps.

Activity

  1. whiteknightonhorse commented on Oct 28, 2026

    @whiteknightonhorse
    Author

    Update from 2026-10-28 on Bradbury Phase 2 (chain 4221). We think the cause is the runner id, not our contract.

    The unmodified Hello example from the current docs, with runner py-genlayer:1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6, finalizes as Accepted but every validator returns FINISHED_WITH_ERROR and no contract exists (tx 0xc26cb04c7ef37932c478a04281692041082c0d3dec8f5ca22f4f9d2d5637e68f). The public explorer shows the same result for every deploy with that runner id over the last four days.

    Deploys that use py-genlayer:babwp9t37jw9g4j2bccgn14g6x7x9s1f7dsmh7emvz735pz4zxa0 with a # v0.3.0 first line and the import genlayer as gl style work. We redeployed one of them byte for byte from our own wallet and it finished with FINISHED_WITH_RETURN and reads back correctly (tx 0x6d95083c6877059f68bd30a1401355439851fd4945b6787df2f40272ae943deb). Putting only the babwp header on the docs Hello still fails (tx 0x28b91e99521e28ffcf5cb8c230990f4eafecaeb464673eea4352deab9b2a513b).

    So the runner id and API in the docs seem out of sync with what Bradbury Phase 2 executes. Which runner should new contracts target today, and where is the matching SDK published?

  2. whiteknightonhorse commented on Oct 29, 2026

    @whiteknightonhorse
    Author

    Resolved on our side on 2026-10-28. The cause was the runner id, as suspected above.

    With the runner from the current docs (py-genlayer:1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6) every deploy finalizes but the contract never exists. With py-genlayer:babwp9t37jw9g4j2bccgn14g6x7x9s1f7dsmh7emvz735pz4zxa0 and the header line # v0.3.0, both of our contracts deployed on Bradbury Phase 2 (chain 4221) and their writes finalize:

    Contract source: https://github.com/whiteknightonhorse/provek-genlayer-witness/blob/main/contracts/provek_evidence_witness.py

    The docs may still point new builders to the old runner id. Closing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions