Update von BC wie von Mole angekündigt. Immerhin sehr ausführlich...
The Event
The BC multichain relies on rovers to connect to the blockchains it consumes to build the multichain. Each rover only sends it’s block to the BC miner if the rover itself believes it is a valid and unique block. On Friday, September 18, 2020 7:16:11 AM GMT-04:00 the Ethereum Rover stopped transmitting blocks after Ethereum block #10860843 last seen in the multichain at multichain height 1771220
http://multiverse.blockcollider.org/#/block/ed0e95c8175035d15088ae2679f09f82d7b50477ad13d71d417563a5472cd150.
In addition to network and consensus checks the Ethereum rover for the BC multichain run three stages of validation on all inbound blocks. These stages are in addition to the validation requirements of the Ethereum foundation to assert the validity of blocks.
Is the block constructed correctly?
Is the block referencing it’s chain (uncles) correctly?
Is the block generate a valid trie?
A block that fails any one of these it is rejected by the Ethereum rover and never ends up being sent to the miner. It is an invalid block and therefore cannot be a part of the BC multichain.
At 7:21 AM GMT-04:00 (5 minutes following Ethereum #10860843) a monitoring system run by core sending alerts that the Ethereum blockchain was no longer iterating on the multichain. This does not mean the BC multichain was down, it means that the new blocks being created only reference THE SAME Ethereum block. Essentially BC was no longer added Ethereum blocks. This is a critical issue as Ethereum and Bitcoin are the most widely representative of blockchain technology.
The Cause
Exactly 10 seconds after 10860843, #10860844 was accepted by the Ethereum network and REJECTED by BC Rovers. It is unclear why the Ethereum network accepted this block as after several days of debugging it was determined the Patricia Merkle Trie (PMT) test fails on block #10860844.
The PMT test was tracked to an NPM popular package downloaded 100k per week and used by Metamask and most in-browser Ethereum clients. After rewriting the PMT test manually, it was confirmed that as stated in the Ethereum documentation of the block the library was in fact CORRECT and the block itself does not pass. The PMT in reference can be found here:
GitHub
ethereumjs/merkle-patricia-tree
This is an implementation of the modified merkle patricia tree as specified in the Ethereum yellow paper. - ethereumjs/merkle-patricia-tree
The BC multichain continued as expected but without Ethereum block BC chain difficulty greatly. The Ethereum rover began to consume enormous amounts of memory as it searched the Ethereal network for thousands and then tens of thousands of blocks. The way the Rover was designed (fixed in 0.9.63) had all blocks stored in RAM until a correct block was found which ultimately lead to BC miners crashing, restarting, and then never syncing with the Ethereum network.
The Solution
The solution was deployed in two stages, the first stage had to do with fixing the Ethereum Rover to after a period of time accept block as long as no valid alternative was discovered. Essentially PMT test failed on the block, the Ethereum network move on and built on this block. The Ethereum rover needs to adapt to this behavior–both in memory management and in adopting the edge of the network. In addition, the newest Ethereum rover can now support both ETH1 and ETH2. The second stage implemented this functionality on all other BC rovers (BTC, LSK, WAV, NEO).
Finally, as most of the miners were unable to every sync with Ethereum due to memory constraints engineering took this opportunity to add low level performance upgrades to UTXO evaluation, syncing, peer evaluation and edge cases to P2P reported by miners and the community.
All of this has now been rolled into 0.9.63. And the final testing can continue for Borderless. It is highly encouraged to download the Borderless Client now and test very small trades or amounts.
Windows:
https://www.blockcollider.org/borderless/Borderless.exeMac:
https://www.blockcollider.org/borderless/Borderless.dmgLinux:
https://www.blockcollider.org/borderless/Borderless.AppImageFreedom through cryptography.
BC CORE