-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Phoenix Hard-fork to occur at the same block as Aztlan - to "fix it" #262
Comments
Just a note that EIP1283 ( + EIP1884) + EIP1706 =~ EIP2200. Aztlan does not enable 1884. |
I would lable this as "Aztlán Hardfork" project. |
Rel ECIP1086.So as I understand it, this spec "allows" the incorrect EIP2200 specification as-is (SLOAD.constantGas=200), and will effectively do so on the Mordor and Kotti testnets for the span between the respective Aztlan and Phoenix activations. This prevents the EIP2200 fix (EIP2200.constantGas=800, eg. etclabscore/core-geth#144) from breaking the testnets by changing (actually correcting) the gas price without doing so in a hard fork. (Kind of a weird concept: the correction would break the incorrect network implementations; this proposal effectively delays the correction indefinitely on these affected networks). |
Rel ECIP1086.What if we were to also provide an activation number for the disabling of this allowance, especially with a value below the Phoenix-Fix (ECIP-1078) activation. Pros:
Cons:
|
Exactly. Fun fact, such a thing used to happen on Ethereum Foundation mainnet and it was decided to rather specify the bug than rolling back the network. |
For the papertrail, some discussion from ETC Discord ... Bob: ECIP-1086 makes a lot of sense to me and has my support. soc1c: besu and geth already have PRs Bob: @soc1c So that would likely have to be ChainSafe. I am happy for ETC Cooperative to pay for that work, if there is engineering capacity available for that, @GregTheGreek? GregTheGreek: @bobsummerwill We can definitely do it Donald: seems the name should be changed to "ChainSave" Cody: We control the validators on kotti seems straight forward. There shouldn't be any expectations that testnets wont be reset periodically. Bob: And that is the plan, right, @DontPanicBurns? Cody: That is not the plan as proposed in 1086 Bob: Right. Cody: It needs to be a clean test that mirrors exactly what will happen on mainnet when aztlan happens Bob: So that test is not possible on Mordor and Kotti anymore. To do what you are suggesting would need additional new testnets to be created. Cody: Why is it not possible Bob: And maybe that should happen too, yes. Not possible without resetting which might screw end-users up in a way which we cannot quantify. Cody: It is a testnet Bob: But "we" (ie. the group talking here) are not all the users of Kotti. Cody: Expectation set Bob: You are describing a desirable world, but that world is not the world we are currently living in. We do not and cannot know the consequences onto end users of resetting the testnets. There was no clear expectation set that testnets may be reset at will. "We dont know what happens when all the eips/ecips are activated at the same time" Sounds like we need some more (temporary) testnets as well as Kotti and Mordor. Cody: No we need to reset the screed up fork in the yestnet Bob: Which would do the atomic Aztlan+Phoenix activation at the same block. Same as for the Keccak256 tests. That Ethash to Keccak256 transition is something which you want to dry-run (for all of the stack including clients, mining software, exchanges, wallets) multiple times. Cody: Kotti is that testnet that should be restarted frequently. Bob: Maybe. But that is a change of expectations which would need to be worked through the ECIP process itself, build human consensus, etc. Cody: Or make an un fork block Bob: "Is there an ecip creating the kotti network? Or anything stating a general view of "why testnets exist" There should be. There was an ECIP for defining Clique, but the creation of Gorli and Kotti happened outside of the ECIP process. @soc1c would be more aware of that history than me. Even if we have not explicitly specified it as a requirement, I think it exceedingly unlikely that any HF would be Accepted if it did not include activation blocks for both Mordor and Kotti, with the expectation that the ECIPs included in that HF would be tested on both testnets prior to mainnet activation. Greg: Theres honestly too much noise at this point In blockchain world how isee it: Husain: only 4 different people other than you (Bob/Tala/Cody/Donald ) have been contributing since the 6th of Feb... Cody: Traditionally speaking, if you broke staging and had to revert, its a failure. Staging was broke it revealed the error, we need to revert |
My Tldr of above is we have ill defined, at least imho, whom the testnet is designed to test for. If it is for mainet hf deployment testing, reset it. If it is a platform for app developers to run production parallel, revert the bad fork, then implement as you would on mainnet. For me, I care more about publicly proving that hard fork features are non breaking than supporting an app graveyard |
I think the essential problem, @realcodywburns, is that these public, well-known, hopefully fairly reliable testnets are used for both purposes. There is a general expectation of decent availability for Mordor and Kotti, and there is an expectation of continuity. If you have something deployed on these testnets and it gets nuked, that is really rather inconvenient. I think that perhaps what the universe is telling us is that we need more public networks than we have. There is no need whatsoever for a long-running public testnet for transition testing. I would propose that, like Nazgul, new ad-hoc, single-purpose testnets would better serve that need, and indeed Whiteblock Genesis might be a good host environment for such. Those would reboot on some fixed cadence - starting with the current protocol, and then upgrading at some fairly early block. So we could dry-run the transition many, many times. |
Having said that, such a plan for "parallel testnets which are PURELY for testing protocol transitions" sound like a new thing to me, which needs a new ECIP, and coordination in the coming months. For the here and now, we need to get Mordor and Kotti back in consensus, and given that we have merged fixes for all clients which get back to consensus at SLOAD=800, please could we focus on the matter in hand there. What is needed to roll that out? @soc1c? @meowsbits? @GregTheGreek? |
It would be nice to unfuck everything and get closer to what a mainnet hf might look like for kotti & mordor #293 achieves that - IMO. I think it would be nice to do another temporary testnet like we did for Atlantis @soc1c, so we can actually test the double activation that mainnet would experience. |
Not ideal but I see the point. |
testnets shall be considered public good for application developers. not breaking them should be our primary goal. not reverting them should be our secondary. the fix proposed in ecip 1086 is of low impact and just validates the status quo. once the draft is accepted, we can move it straight to final as it's already live on testnets. |
I disagree here; I see them as a tool, not a service. I also see breaking them as our primary goal (along with incidental confidence when we fail to), and have no feelings of passion when I imaging running |
IMO:
Having separate ECIP and separate fork, and separate configuration in clients (for forks), just to "fix" testnets seems not practical. Resetting seems way more pragmatic. KISS. |
Just an update from the development side at ETC Core. We've just renamed and migrated etclabscore/multi-geth to etclabscore/core-geth, and now we want to make a first release which'll include the rename for network client advertisements. To that end, we're also needing to manage which ECIPs we include. I'm going to merge the patch for ECIP1086 which will prevent the testnets from breaking with a fixed EIP2200 implementation. This isn't because I'm trying to strongarm the "Patch it" side of the "Patch it" vs. "Roll it back" debate; but, instead because these approaches are not incompatible from the perspective of the protocol provider (despite having patched the testnets to not be broken, we can still roll them back to whatever, whenever... if that's what we wind up wanting to do -- and then if rollback is decided on, we can simply unplug the ECIP1086 spec from the client as "useless code"). Stay tuned. |
From @sorpaas on OpenEthereum Discord: By the way I’m considering clarifying this in EIP-2200 — ethereum/EIPs#2514 That will mean reverting #11474. That won’t affect Ethereum at all so shouldn’t be a big deal. So my read on this (and please do confirm, Wei), is that EIP-2200 reused a variable in a way which worked "by mistake" for ETH, but caused the confusion which is at the root of the consensus split on Mordor and Kotti. Though that consensus split is only currently manifesting for Hyperledger Besu clients. If the confusion was all just caused by the reused variable in EIP-2200 then the resolution is simple - making Hyperledger Besu match the Parity-Ethereum and Geth/Multi-Geth behaviours and doing a release. The patches to Parity-Ethereum, Geth and Multi-Geth would be reverted, your errata to EIP-2200 merged, and matching code changes to clarify made to each of the clients (though these could not affect consensus - just clarity of implementation of the specification). |
OK - chatted with @GregTheGreek. So his understanding is that while the EIP-2200 naming was confusing, this rewording on the EIP would not affect consensus, so we still need the fixes. And so, my understanding of next steps here, as communicated to Greg and he confirmed his agreement were ... So we proceed with Afri's ECIP which clarifies the testnet consensus. |
perfect. |
I have a proposal for what to do with the testnets. It's a compromise. #295 |
Here's a doc I drafted trying to make sense of things. Please feel welcome to comment and fork -- would like to make sure the story is represented at least approaching correctly. https://gist.github.com/meowsbits/ddf54e7cb225e7f89b3ed0b7d92b8a37 |
let's activate 1884+2200 with phoenix. |
lol |
"let's activate 1884+2200 with phoenix." Yeah-no, @soc1c. Thanks so much for write-up, @meowsbits. That is very helpful. |
From Discord ... Bob: My brain has been stewing and I think I have a better and simpler plan. In the last 24 hours it has become evident that 2200 is utterly broken. That is fine. It is only ever going to be deployed on the Kotti and Mordor testnets. Geth and Parity are in consensus. Besu is the only one out of consensus. So we:
Yaz: does that mean 1884 is included? Bob: No The only downside I see to my plan is that we never rectify 2200 in the spec. But that makes no practical difference. The EIPs/ECIPs exist to coordinate and keep the clients in consensus, but they are not mandatory. If we can stay in consensus even if the spec is broken then that is fine anyway. Maybe ETH Core Devs care and some wording will go through, but we do not need to be gated on that. And we do not NEED to change the Final text. Clarifying would be good for other future client implementations, but is not urgent. EIP-2200 can be cleaned up at our leisure. The clients can be cleaned up to make that flow clearer at our leisure. But the existing consensus would be “blessed”. And most importantly we are not waiting on anybody. Greg: so playing around with 1884 & 2200 are a double edged sword Bob: “so playing around with 1884 & 2200 are a double edged sword” Yeah. I think Phoenix scope is honestly fine. We know we have that TODO to we do it carefully within EVM versioning at the next HF. Or maybe even unconditionally at that point. But we do it intentionally, and in a data driven way. |
Issue tracking remaining potential state trie DOS vector to resolve next fork: |
@bobsummerwill "no" or "over my dead body"? There are quite a couple voices calling for 1884... |
I think that we would need another Core Developers call if we wanted to reintroduce 1884, because that is a substantial change in plan. We very intentionally rejected it in November. I understand that it would be simple to include 1884, but I think it would also be ideologically weak and I don't think it is necessary. All the pain is coming from 2200 and if we just stick with existing consensus then all that pain goes away too. |
Agreed. |
Also, I think there is real merit in avoiding testnet resets. |
let's finally pull aztlan #297 |
The ECIP-1088 review period ends tomorrow. Please raise your voice now if there is anything we would need to address. Thanks. |
@q9f Can you give use a reminder summary of the current state of review, like original concerns - if any - and their resolution, the state of the testnets, which tests and/or heuristics are passing, and what will/would happen tomorrow? |
ConcernsThey are very well summed up by Wei here. State of the TestnetsMordor activated Phoenix on March 9th, 2020, block At this point, I even used old Classic Geth instances to stabilize the network because they had a much better discovery and they didn't crash during mining on low memory machines. Once everything was stable and the Phoenix chain had the higher total difficulty, I used ChainSafe's Anemone to test all opcodes live on the Mordor Phoenix testnet. As expected, the Classic Geth client is now forked off and I started forgetting that it even exists. All other clients, namely Besu, Geth, and Parity are in consensus: Mordor Besu Phoenix:
Mordor Geth Phoenix:
Mordor Parity Phoenix:
I encourage everyone to use Mordor, send transactions, deploy and execute contracts. Or just mine it to keep the chain running for others. Kotti is lagging a bit behind for various reasons. Firstly, it required more coordination in the community to align all the authorities. While I was able to mainly recover Mordor on my own with a miner and a special phoenix config, we were basically waiting for client releases of Geth and Parity to happen to have a stable upgrade path for the authorities. This, however, never happened as Parity didn't do any release in the last three months. So at some point, we were just handing out chain configurations to clients or encouraging Geth validators to switch from Multi Geth to Core Geth which had a release tagged already. This went well as all validators were very responsive and we had the recovered chain going soon after a couple of days. However, there was this sync-loop bug in Geth that kept these nodes trying to reorganize to the old Agharta/Aztlan chain, see etclabscore/core-geth#75 This was a pain for Kotti validators because if more than three validators ended up in this sync loop at the same time, the network was stuck and this happened quite a couple of times. There are patches in place now to stabilize the authorities and for a couple of days, this network is running fairly stable. It's not on Phoenix yet, still on Agharta. ETA: April 13, 2020, if the validators do their job correctly ;) Kotti sees much more activity in general, the state is much bigger and the chain is much busier. I'm looking forward to seeing Phoenix activated on Kotti and run additional tests on that network, too. Morden finally died. |
From ETC Discord: @gitr0n1n asked "What is the thought/logic behind using the same gas metrics as the ETH network?" That is something which ETC has always done. I don't think it is really a valid criticism. Prior to the launch of the Ethereum network, the gas pricings were "best guesses". Some of those guesses were really bad, to the degree where they become DOS vectors or serious performance imbalances and were changed in hard-forks. That is exactly what is happening here for 1884. Are the costs perfectly tuned for ETC? Probably not. Would it be worthwhile doing a deep analysis of ETC transactions and coming up with an ETC-tuned set of gas prices? Probably, yes. But the repricings in 1884 are part of a set of consistent prices within ETH. "Doing the same as ETH" has always been the starting point for ETC. This is a "Whataboutism". When we start intentionally pulling away from ETH it would be entirely sensible (within versioning discipline) to have an ETC-specific gas schedule based on some expensive and deep research into the ETC chain distinct from the ETH chain. That is not now. |
Michael Joseph: Do we have any progress on a solution to the potential CHAINID issue for ECIP-1088? If I understand correctly, the Phoenix fork will prevent backward compatibility for the loser of the prospective battle that ensues if we have another dramatic fork (to the tune of the DAO attack) which divides the community. Not that we won't be able to make it through, somehow, but if we are anticipating this issue already, is there no way to be proactive? @bobsummerwill: This ECIP is specifically just exposing that existing information as an opcode, because it is useful. If we want a more robust scheme for replay protection than that is something different again. |
Discussion for ECIP-1078 and ECIP-1086.
The text was updated successfully, but these errors were encountered: