Their presentation was thorough and accessible - recommend the livestream if you want to get the full picture 😄
@ethereum@dedaub At a high level, they were tasked with determining what would break if SELFDESTRUCT semantics changed, and whether trying to accommodate certain breaking cases would be worthwhile.
@ethereum@dedaub First, they clearly explained how SELFDESTRUCT works today, and then contrasted this with what EIPs 4758 and 6780 propose.
@ethereum@dedaub TL;DR SELFDESTRUCT currently sends ETH in a contract to the beneficiary address, then clears the runtime bytecode, nonce and storage of the contract where it is called.
@ethereum@dedaub As previously discussed, the problems with this are (1) unbounded execution time (SELFDESTRUCTING a big contract requires much more computation than a small ones (2) the incompatibility with Verkle Tries & stateless and (3) whether we want mutable contracts at all 😅
@ethereum@dedaub EIP-4758 proposes to aggressively remove SELFDESTRUCT, converting it to SENDALL, and having it only send funds back to the beneficiary address, but not clear any bytecode/storage/nonce.
@ethereum@dedaub EIP-6780 does the same, with an exception: contracts which are created and destroyed within a single transaction. This was previously identified as a large usage pattern for the opcode. The Dedaub analysis looked at the "reduced + remaining breakage" from this.
@ethereum@dedaub Assuming we went the more aggressive way of 4758, here's the projects which would be affected.
@ethereum@dedaub But, if we do 6780, we greatly reduce the impact: we go from 400k transactions over the past 2.5m blocks that would have been impacted to ~700!
@ethereum@dedaub Here is some more context on these from the audit:
@ethereum@dedaub@willmorriss4 In short, his proposal is to add another opcode, SETCODE, alongside the removal of SELFDESTRUCT to allow for programmatic accounts to still be updated:
In short, it introduces some new mutability risks related to DELEGATECALL.
@ethereum@dedaub@willmorriss4 There were some more questions about SETCODE on the call, and some concerns about the implications of the feature. After some back and forth, client teams agreed to still move forward with EIP-6780, independently of making a decision on SETCODE.
@ethereum@dedaub@willmorriss4 Next up, we discussed EIP-4844! There were a bunch of spec issues on the agenda. I won't go over all of them here - you can watch the livestream for the full overview, or wait for @terencechain's recap of Monday's 4844 call 😄
The PR would align 4844 with 1559 in terms of what information is needed to derive a block's excess_data_gas
@ethereum@dedaub@willmorriss4@terencechain Aside from this, we reviewed PRs confirming two changes we had agreed to: moving the precompile to use big endian (like the rest of the EL), and removing SSZ from 4844.
@ethereum@dedaub@willmorriss4@terencechain The SSZ -> RLP change also implied that the two SSZ EIPs for Cancun are no longer required: EIPs 6475 and 6493 are therefore being respectively removed from the Included & CFI lists
@ethereum@dedaub@willmorriss4@terencechain Then, @BarnabasBusa gave an update on 4844 devnet-5: in the past two weeks, we had a non-finalization event on it which forcefully exited 900 validation. The devnet then finalized, and new validators are being activated. New nodes can sync to it successfully!
@ethereum@dedaub@willmorriss4@terencechain@BarnabasBusa@shemnon Lastly, we briefly discussed a set of proposed Cancun EIPs. @ralexstokes shared some updates on the 4788 design, modifying it to use a stateful precompile over an opcode, and we briefly discussed the MCOPY, PAY and "revamped CALL" opcode proposals
@Etherum On the 4844 front, we first discussed some issues with the input format to the precompile. They use little-endian, which isn't used on the EL (but is the default on the CL), while the output is big endian, the default for the EL.
@Etherum@yperbasis asked if we could harmonize this, ideally using big endian to match the rest of the EL. After some discussion, we agreed to move forward with this! We'll open a PR to the spec and merge it if no objections come up ✅
Not sure how explicit badge holders where about these splits, but it seems reasonable? Could argue that individuals vs. teams should be closer to 50-50, or maybe flip to 2/3rd towards individuals (idk what's best!), but it's encouraging to not see a 10x skew either way!
The results of this round have made me more optimistic about public goods "interop": it feels more like "legos" than "competition", and I think it's worthwhile to keep going that route to allow capital allocators to mix & match as they please 🧱
@optimismFND I also like that both @ProtocolGuild and client teams can get allocations: PG goes directly to individuals, and some of them who fall between clearly delineated teams, and most teams' funding go back to the "org", which helps pay for both the engineers, but also everyone else!
@optimismFND@ProtocolGuild We started PG in part because ~every funding system in the space is biased towards orgs vs. individuals, and so it's great to see something like RPGF allocating to both ends of the spectrum 😄
If you're a validator, you should check out our Withdrawals FAQ to make sure you are ready for the upgrade 🤖notes.ethereum.org/@launchpad/wit…
For the security/vulnerability-minded folks, note that from now until April 5th, the Ethereum Bug Bounty rewards have been doubled for Shapella vulnerabilities 🐞