EOSIO / eos

An open source smart contract platform
https://developers.eos.io/manuals/eos
MIT License
11.27k stars 3.6k forks source link

Consensus problems with initial eosio ABI #7794

Closed tbfleming closed 4 years ago

tbfleming commented 5 years ago

controller_impl::create_native_account uses this to set an initial ABI on the eosio account:

https://github.com/EOSIO/eos/blob/1418543149b7caf8fc69a23621e3db7f3c6d18ad/libraries/chain/controller.cpp#L870

There are several problems with this approach which may lead to consensus issues. The foundational problem is that this ABI isn't a version-independent constant:

By itself, this wouldn't create a consensus problem since ABIs aren't currently available to contracts. However:

Speaking of RAM charges: this code fails to charge RAM for the ABI. This creates an inconsistency in RAM billing.

We do not believe this issue causes production networks which run 1.7.x or 1.8.x to be vulnerable to attack:

Mitigation:

Potential fixes:

aclark-b1 commented 4 years ago

In order to focus our efforts on issues that are currently creating difficulty for the community we are closing tickets that were created prior to the EOSIO 2.0 release. If you believe this issue is still relevant please feel free to reopen it or create a new one. Thank you for your continued support of EOSIO!