Skip to content

Duplicate beacon entries in devnet #13349

@LesnyRumcajs

Description

@LesnyRumcajs

Checklist

  • This is not a security-related bug/issue. If it is, please follow please follow the security policy.
  • I have searched on the issue tracker and the lotus forum, and there is no existing related issue or discussion.
  • I am running the Latest release, the most recent RC(release canadiate) for the upcoming release or the dev branch(master), or have an issue updating to any of these.
  • I did not make any code changes to lotus.

Lotus component

  • lotus daemon - chain sync
  • lotus fvm/fevm - Lotus FVM and FEVM interactions
  • lotus miner/worker - sealing
  • lotus miner - proving(WindowPoSt/WinningPoSt)
  • lotus JSON-RPC API
  • lotus message management (mpool)
  • Other

Lotus Version

Daemon:  1.33.0+2k+git.7bdccad3d.dirty+api1.5.0
Local: lotus version 1.33.0+2k+git.7bdccad3d.dirty

Repro Steps

Setup steps are outlined in Antithesis repo. Note that this won't reproduce 100% of times on a new network; more like 5-10% based on my checks.

Describe the Bug

Periodically, the Antithesis setup runs into issues with drand, namely producing a block with two identical beacon entries. As suggested by @Kubuxu, there might be some issue around timestamp->drand epoch and having two entries being a chained randomness leftover.

Ideally, there would be a single, unique entry in all blocks. Or, at least, no duplicates.

This causes an issue in Forest due to aggregated verification and a check for duplicate messages here. As confirmed by @Kubuxu , the rogue key attack is not applicable here as an adversary does not control the public key.

I guess tackling this is not a huge priority; in Forest, we'll simply dedup the entries before vefication.

Logging Information

Output of `lotus chain getblock <block>`

{
  "Miner": "t01000",
  "Ticket": {
    "VRFProof": "pI3l8Q3zOOUKx76GloQfCuUs3pznO7HDDqnV9IcS9ywRNvCU0lHvxTWWqHK825ZzEJ+pxXmHRhPahEYXUffvifjqDdPI2dXk8PfrMuf7cXB/EOcnNedJD/Hvy8/lLJif"
  },
  "ElectionProof": {
    "WinCount": 6,
    "VRFProof": "uZ1tezAAuXB/uvgilwYRmuikuf83ObvfL4oJD7LlqMcjq44p+76399JIIbGmbo8nB9y4WPt/EBzjiS/zfMRzGvOF+XW7aqhl4fVjgf1uI9MSopkCNaY0rqWUQAOmqRxo"
  },
  "BeaconEntries": [
    {
      "Round": 1,
      "Data": "sVs2XmFw429FhOZ4nNp7OsQz76Qa5+65X7FBROoRs5TQ9iUqVB7RBjniPjGcowLo"
    },
    {
      "Round": 1,
      "Data": "sVs2XmFw429FhOZ4nNp7OsQz76Qa5+65X7FBROoRs5TQ9iUqVB7RBjniPjGcowLo"
    }
  ],
  "WinPoStProof": [
    {
      "PoStProof": 0,
      "ProofBytes": "isZQYMT0nEMH7o1esCCmLZ1PMNUA1yuwSDdvbPORoswKRCaE3TJC0FNaBiXwm13VkcPfXSVNhro7JbbpkKSnPjCpnoSnnqQlBJf3DBn/I8/xjVpi7cdBAQqixi2uLX18Cm8RJcNd3e/gU4LvHO65pAgcNvTPJ0znAOLZduSp8pArXGbBnkXcUyWf2N+XJgsOkJasCJTHS0n3UI7BuWGf74Ng86KjYYITzur4WawlFOvfU8zfw78RDAVlXYOBkGgu"
    }
  ],
  "Parents": [
    {
      "/": "bafy2bzacebelhgtxixh5siuq47ks6dz7wauqy2sodubjtq4nxl6jpwh7rbnfm"
    }
  ],
  "ParentWeight": "4096",
  "Height": 2,
  "ParentStateRoot": {
    "/": "bafy2bzaced2fmsdhsyiqci37erzccbmxcmcy5gt7h4h5o6b7mysyybzv3mwbw"
  },
  "ParentMessageReceipts": {
    "/": "bafy2bzacedswlcz5ddgqnyo3sak3jmhmkxashisnlpq6ujgyhe4mlobzpnhs6"
  },
  "Messages": {
    "/": "bafy2bzacec2znsgoah2bglpslwiyxswb65nz2xzmulz2kzmgerjzjveu3gba4"
  },
  "BLSAggregate": {
    "Type": 2,
    "Data": "rsvhxUMZjAzJDJUuwSbTHpF8+r7XwfoFqENGFW+cBPN4XhO1fOE2eeCmYGtHzVm2AuqQzQUVes6t5p94CqCaqkCJ/fJAdu/Vuv1LTZCWjA/tB9NCgXolCSdzDqXW2VV4"
  },
  "Timestamp": 1758275669,
  "BlockSig": {
    "Type": 2,
    "Data": "prH8cHKxYty50wIcLPRmQ4qqIOOejqLO+0zEKPc+NZp86IjoxGgtUrRQuh1QGiFHAP0xUaNga/jMPdhGx8LrNlpfpz/KdzyyAmkhKBcJ7CynjZei8m73r2FrAZyBl/nD"
  },
  "ForkSignaling": 0,
  "ParentBaseFee": "87500000",
  "BlsMessages": [
    {
      "Version": 0,
      "To": "t01001",
      "From": "t3rllgkmql5ihmgkpjku6uhayj3gfdh3ewjdw2sel5sydd4juj3cdmslt4wc6hta2s524yvmmf4fzytwetvdmq",
      "Nonce": 0,
      "Value": "0",
      "GasLimit": 6020875,
      "GasFeeCap": "1054396712",
      "GasPremium": "99837",
      "Method": 4,
      "Params": "gVgmACQIARIgWQBrw5YocHJthHo8yh26UGg2KJhnHaIyi+4ATLaXtGc=",
      "CID": {
        "/": "bafy2bzacebygvhzxvbytagoywobagxfg2jmvhsbyiwro5pv4idm35jf42blxu"
      }
    },
    {
      "Version": 0,
      "To": "t01000",
      "From": "t3skhkabw5yldqzgzs7spsxwxqkrrovxtofnom7yvo4aais6c7rehagwohfidhrbos2awqe52zsie7y6jbbblq",
      "Nonce": 0,
      "Value": "0",
      "GasLimit": 6020875,
      "GasFeeCap": "1054396558",
      "GasPremium": "99683",
      "Method": 4,
      "Params": "gVgmACQIARIgLqMEbufKb9biLeKNQVbf6NL/aWdRfKmcIW9ZpMrRZFg=",
      "CID": {
        "/": "bafy2bzaced6k6b4mf64ifqh5rg7embq6a2jyzvgomhslclihnncn3hqgxd6oc"
      }
    }
  ],
  "SecpkMessages": [],
  "ParentReceipts": [],
  "ParentMessages": []
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    📌 Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions