You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gas costs are injected into the wasm when it is installed. So an old contract locks in costs. to get the new costs, an author needs to do an upgrade.
wasm isn't mutable once its installed, so cannot be altered to inject different costs
better thing to have done would have been to store the raw wasm and inject costs everytime its loaded up. but that would incur a perf hit and could be attacked there's a couple of different options as well, all with trade offs.
Maybe move the wasm out of global state, into a separate wasm store, and just store the content addressed hash of the wasm in global state. Doesn't change the issue that already installed contracts are baked.
DEpreprocessor: its technically possible to undo gas injector, and stack limit. Both processing steps add easily detectable patterns to the wasm that could be removed to arrive at the original wasm (or a wasm that behaves exacly same way as original but without processing). every time that legacy contract is used, its attackable
other option is to do a forced upgrade to a new contract version and a forced disable of the old and currently, contract owners can reenable disabled versions. so we would potentially need to block that for contract versions from no longer supported protocol versions.
No description provided.
The text was updated successfully, but these errors were encountered: