We have identified the root cause of the BPX Chain outage that occurred last Saturday, taking down all Windows-based Beacon Chain nodes. A fix has been implemented and a patched release 1.0.1 is now available for download. Please install the hotfix on all Windows-based nodes as soon as possible.
đź’ľ Download Beacon Client:
https://github.com/bpx-chain/bpx-beacon-client/releases
The fixed release works for nodes that were restored using the temporary solution of replacing the database file, as well as for nodes that haven’t followed these steps and remain non-operational. Installing the hotfix immediately restores node functionality without the need to replace the database.
The issue was traced to a bug in the external library chiavdf
used by the Beacon Client. The problem occurred in the function verify_n_wesolowski
, responsible for validating Proof of Time. Under specific conditions, which unfortunately occurred in the BPX Beacon Chain block 412027, this function entered an infinite loop, preventing any return value that the rest of the Beacon Client logic was expecting, causing the node to hang. The bug has been fixed in the latest version of the package (commit).
For educational purposes, we are publishing a code snippet that confirms the nature of the bug. The code includes parameters extracted directly from block 412027 of the BPX Beacon Chain. Running it on the latest version of the chiavdf
library returns True
, while with older versions, the program never completes its execution.
Updating the Beacon Client dependency to the latest, bug-free version of chiavdf
ensures that such an issue will not occur again in the future.
Doesn’t work for me .
The Beacon client is synced but the Execution client shows “Syncing”.
INFO [12-20|06:45:53.927] Forkchoice requested sync to new head number=140,044 hash=4071f0..69d834 finalized=unknown
INFO [12-20|06:46:02.606] Looking for peers peercount=0 tried=48 static=0
INFO [12-20|06:46:04.875] Forkchoice requested sync to new head number=140,045 hash=d3e5ab..4630e2 finalized=unknown
After a while, the Execution Client should connect to peers and complete synchronization. If it doesn’t, you can manually connect it to the official bootnode. Use the “Attach” shortcut in the Start menu or run the command
bpx-geth attach
. Then, paste the following command into the Geth console:admin.addPeer("enode://218aa67fa58287049e6856380e910bdf7d5f3aec6e1384ae53d473745a49aecef7e73eff371fe487aa6dab8185f938a1d294fe94c8027537da8d59b8875359b2@45.90.57.29:30303")
This method can be used. According to the manager, if it still doesn’t work, it is recommended to update the node again. In addition, the exchange can also trade.
Alternatively, you can try opening Execution first and wait for it to prompt you to open a BPX Beacon Client before opening it. Alternatively, we can communicate through other means as I already have some experience.
Thanks for the reply, didn’t work for me.
Still the Execution client shows “Syncing”
INFO [12-21|06:34:02.684] Forkchoice requested sync to new head number=142,484 hash=9ddec3..6097f0 finalized=142,432
ERROR[12-21|06:34:03.955] Beacon backfilling failed err=”retrieved hash chain is invalid: missing parent”
INFO [12-21|06:34:05.085] Looking for peers peercount=1 tried=14 static=1
INFO [12-21|06:34:15.107] Looking for peers peercount=2 tried=30 static=1
INFO [12-21|06:34:17.975] Forkchoice requested sync to new head number=142,485 hash=4b9e9f..18c726 finalized=142,432
ERROR[12-21|06:34:20.031] Beacon backfilling failed err=”retrieved hash chain is invalid: missing parent”