evm: use clean context for GetCommittedState (#383)

* keep the original context for GetCommittedState api

* fix method mutation

* keep estimateGas consistant

* added test after the original context is recovered

* add integration test for the gas consumption of sstore

* test the committed case

* move methods to keeper module

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
yihuang
2021-08-04 07:49:02 +00:00
committed by GitHub
co-authored by Federico Kunze Küllmer
parent f7bcc8d12e
commit 9bf3659718
7 changed files with 112 additions and 15 deletions
@@ -0,0 +1,22 @@
const Storage = artifacts.require("Storage")
contract('Storage', (accounts) => {
let storage
beforeEach(async () => {
storage = await Storage.new()
})
it('estimated gas should match', async () => {
// set new value
let gasUsage = await storage.store.estimateGas(10);
expect(gasUsage.toString()).to.equal('43754');
await storage.store(10);
// set existing value
gasUsage = await storage.store.estimateGas(10);
expect(gasUsage.toString()).to.equal('28754');
})
})