Closed vorot93 closed 4 years ago
Thank you @vorot93 :pray: . Indeed, far better than the hack. And fast! :racing_car:
Great work guys!
I understand the issue, but curious @vorot93 what exactly is going on under the hood here?
@GregTheGreek Clients using eth/64
protocol and higher send a FORK_ID
which is a hash of all fork heights. It is used to aggressively cut off incompatible clients. Unfortunately, not all heights were included for Classic which made OpenEthereum's ForkId incompatible on a network protocol (not consensus) layer.
Fortunately, the clients have not yet removed support for eth/63 protocol, with Parity Ethereum 2.7.2 serving as an eth/63 bridge between Core-Geth and OpenEthereum 3.0. After we mandate FORK_ID
any bug in its generation would instantly lead to a complete network partition.
not all heights were included for Classic which made OpenEthereum's ForkId incompatible
Which ones weren't included? (And why wasn't the incompatibility happening before?)
The reason I ask is the changes include new fork features as follows, and I don't see any that look as though they were introduced to the Classic config with the latest fork (Phoenix)
ethash.params.difficulty_hardfork_transition,
ethash.params.bomb_defuse_transition,
ethash.params.eip100b_transition,
ethash.params.ecip1010_pause_transition,
ethash.params.ecip1010_continue_transition,
ethash.params.ecip1017_era_rounds,
ethash.params.expip2_transition,
(Althought I don't know what expip2_transition
is...)
Right on - I understand that side of it, im actually curious at the changs you made and how that solves it
@GregTheGreek I just added the transitions that were overlooked, along with a test for Classic. I admit that it should have been caught before, but we only had the test vectors for Foundation, Ropsten, Rinkeby and Goerli to check against.
Does the test show that the the ForkID for Classic at and beyond 10500839 is hash=9007bfcc next=0
?
Also, don't worry about expip2_transition
- it's not defined in any chain specification except Expanse's one, and thus will not affect FORK_ID
generation for Classic in any way.
Thanks for the speedy fix, @vorot93!
Fixes #11744