Closed soc1c closed 5 years ago
Q to EIP161: What will happen if someone, who created an address X years ago, which wasn’t used a long time, and now after implenting EIP161, there will be a transfer to it? I assume that one will be rejected!? Are then his/her ETC got lost?
Thx for the answers.
I'm copying over the answer from @pyskell :
My opposition is the following:
These rules can simply be applied to transaction validation rather than block validation, making it a soft fork rather than a hard fork.
In practical terms this will make no difference, miners will download one of the clients that has these types of transactions excluded by default and future blocks will not contain any such transactions.
It's vitally important to stick to pre-agreed rules when they're defined. In this case gas limit is a rule that governs computational size of transactions and there was no bound on physical data/contract size.
There's precedent for these types of things in other cryptocurrencies, example: https://github.com/bitcoin/bitcoin/commit/6a4c196dd64da2fd33dc7ae77a8cdd3e4cf0eff1
Whether this is a contract creation call or an internal contract call shouldn't matter, both types of transactions can simply be rejected from inclusion in a block if their
data
is greater thanmaxCodeSize
(per geth's implementation). As per point 2 I believe most clients will update and enforce the soft fork.Regardless I don't want to delay the Atlantis hard fork and apologize for the late comment.
What are your thoughts regarding this? As I mentioned in the previous thread, I'm still slightly more in favor for a hard cap, but we could try the soft fork solution to see if it catches on and we could do a hard cap later on if needed. Assuming @pyskell solution has no attack vectors and that the miners do adopt it, how much harder does this make it for devs?
cc: @tzdybal @meowsbits @shanejonas @BelfordZ ,...
Thank you for deciding to rescheduling the meeting. Its now clear that was the right choice. Thoughts on EIP 170:
First, unfortunately we cannot really solve this so easily with @pyskell's proposed soft fork. The problem is that some transactions can result in the creation of a contract (when a function call does a CREATE operation). This can happen at any point during execution (for example at the very end of a large amount of computation). In such a case, it would break the ethics of our gas-mechanism to simple throw away the transaction without charging the sender. If we charge the sender, it's a hard-fork (because it's a new, previously invalid, on-chain behavior). (description of a similar issue)
My second observation is that the real problem is not CREATE
ing, but CALL
ing. Calling apparently costs only (originally 40) now 700 gas (according to yellow paper update from oct 2016)
The constant gas cost does not properly reflect the variable required work of loading a contract from disk to memory
Here is a more direct proposal that came after EIP-170: https://github.com/ethereum/EIPs/issues/1662
It simply makes the gas-cost of loading the contract dependent on size, by caching the size data in a new field on the account. Actually I'm wondering if the caching is even necessary (should be able to just load the contract and determine size at that point?). I'll bring it up in that thread.
There is at least 1 way to achieve mitigation of the attack vector as a soft. One roundabout way would be to simply set the block-gas-limit to a lower amount like 1 or 2 million. This can be hardcoded (as a soft fork), or even be done simple by having all client developers change the default setting, and asking miners and mining pools to use that number. Many of us have advocated this on other grounds
Although there are more direct and/or less authoritative ways to fix this issue, I support moving forward with EIP-170 in its current form. I don't believe there are any significant mutability concerns with EIP-170
The current code architecture (using a fork of geth) I think is the most reasonable option for ETC given our limited developers and resources. Nearly all client devs have said the tests are easier to run if we keep everything eth-compatible (for now). We only have a handful of client devs supposedly attempting to support 4(?) client implementations. Compare that to ethereum's 100+ devs contributing to Geth alone. I think that's a huge problem but I digress.
Under this architecture, EIP-170 is the least complex solution. It also keeps us on track with the greater Atlantis ECIP.
@TheEnthusiasticAs
I assume that one will be rejected!? Are then his/her ETC got lost?
No, the transaction will not be rejected and the value will not be lost. The transaction will operate normally.
Closing in favour of #80
Reopening after #80
starting on time in 15 minutes on discord https://discord.gg/HJfne6e
join the meeting audio channel
Rough outcome:
k
ref https://github.com/etclabscore/ECIPs/issues/25
ETC Core Devs Call - Atlantis Finalization
When: Thursday, June 13, 2019, 3pm UTC, 60 minutes max.
Where: Ethereum Classic Discord
#ecips
channel. Will use/create a voice channel ad hoc. Ask for invite here if you are not on that discord.Agenda