Skip to content

Commit

Permalink
revert changes to the gas kvstore
Browse files Browse the repository at this point in the history
  • Loading branch information
pythonberg1997 committed Jan 3, 2023
1 parent bfc717e commit ba37304
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 51 deletions.
50 changes: 25 additions & 25 deletions store/gaskv/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ func (gs *Store) GetStoreType() types.StoreType {

// Implements KVStore.
func (gs *Store) Get(key []byte) (value []byte) {
// gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostFlat, types.GasReadCostFlatDesc)
gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostFlat, types.GasReadCostFlatDesc)
value = gs.parent.Get(key)

// // TODO overflow-safe math?
// gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostPerByte*types.Gas(len(key)), types.GasReadPerByteDesc)
// gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostPerByte*types.Gas(len(value)), types.GasReadPerByteDesc)
// TODO overflow-safe math?
gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostPerByte*types.Gas(len(key)), types.GasReadPerByteDesc)
gs.gasMeter.ConsumeGas(gs.gasConfig.ReadCostPerByte*types.Gas(len(value)), types.GasReadPerByteDesc)

return value
}
Expand All @@ -47,23 +47,23 @@ func (gs *Store) Get(key []byte) (value []byte) {
func (gs *Store) Set(key []byte, value []byte) {
types.AssertValidKey(key)
types.AssertValidValue(value)
// gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostFlat, types.GasWriteCostFlatDesc)
// // TODO overflow-safe math?
// gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostPerByte*types.Gas(len(key)), types.GasWritePerByteDesc)
// gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostPerByte*types.Gas(len(value)), types.GasWritePerByteDesc)
gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostFlat, types.GasWriteCostFlatDesc)
// TODO overflow-safe math?
gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostPerByte*types.Gas(len(key)), types.GasWritePerByteDesc)
gs.gasMeter.ConsumeGas(gs.gasConfig.WriteCostPerByte*types.Gas(len(value)), types.GasWritePerByteDesc)
gs.parent.Set(key, value)
}

// Implements KVStore.
func (gs *Store) Has(key []byte) bool {
// gs.gasMeter.ConsumeGas(gs.gasConfig.HasCost, types.GasHasDesc)
gs.gasMeter.ConsumeGas(gs.gasConfig.HasCost, types.GasHasDesc)
return gs.parent.Has(key)
}

// Implements KVStore.
func (gs *Store) Delete(key []byte) {
// // charge gas to prevent certain attack vectors even though space is being freed
// gs.gasMeter.ConsumeGas(gs.gasConfig.DeleteCost, types.GasDeleteDesc)
// charge gas to prevent certain attack vectors even though space is being freed
gs.gasMeter.ConsumeGas(gs.gasConfig.DeleteCost, types.GasDeleteDesc)
gs.parent.Delete(key)
}

Expand Down Expand Up @@ -106,7 +106,7 @@ func (gs *Store) iterator(start, end []byte, ascending bool) types.Iterator {
}

gi := newGasIterator(gs.gasMeter, gs.gasConfig, parent)
// gi.(*gasIterator).consumeSeekGas()
gi.(*gasIterator).consumeSeekGas()

return gi
}
Expand Down Expand Up @@ -139,7 +139,7 @@ func (gi *gasIterator) Valid() bool {
// in the iterator. It incurs a flat gas cost for seeking and a variable gas
// cost based on the current value's length if the iterator is valid.
func (gi *gasIterator) Next() {
// gi.consumeSeekGas()
gi.consumeSeekGas()
gi.parent.Next()
}

Expand Down Expand Up @@ -167,15 +167,15 @@ func (gi *gasIterator) Error() error {
return gi.parent.Error()
}

// // consumeSeekGas consumes on each iteration step a flat gas cost and a variable gas cost
// // based on the current value's length.
// func (gi *gasIterator) consumeSeekGas() {
// if gi.Valid() {
// key := gi.Key()
// value := gi.Value()
//
// gi.gasMeter.ConsumeGas(gi.gasConfig.ReadCostPerByte*types.Gas(len(key)), types.GasValuePerByteDesc)
// gi.gasMeter.ConsumeGas(gi.gasConfig.ReadCostPerByte*types.Gas(len(value)), types.GasValuePerByteDesc)
// }
// gi.gasMeter.ConsumeGas(gi.gasConfig.IterNextCostFlat, types.GasIterNextCostFlatDesc)
// }
// consumeSeekGas consumes on each iteration step a flat gas cost and a variable gas cost
// based on the current value's length.
func (gi *gasIterator) consumeSeekGas() {
if gi.Valid() {
key := gi.Key()
value := gi.Value()

gi.gasMeter.ConsumeGas(gi.gasConfig.ReadCostPerByte*types.Gas(len(key)), types.GasValuePerByteDesc)
gi.gasMeter.ConsumeGas(gi.gasConfig.ReadCostPerByte*types.Gas(len(value)), types.GasValuePerByteDesc)
}
gi.gasMeter.ConsumeGas(gi.gasConfig.IterNextCostFlat, types.GasIterNextCostFlatDesc)
}
42 changes: 21 additions & 21 deletions store/gaskv/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestGasKVStoreBasic(t *testing.T) {
require.Equal(t, valFmt(1), st.Get(keyFmt(1)))
st.Delete(keyFmt(1))
require.Empty(t, st.Get(keyFmt(1)), "Expected `key1` to be empty")
// require.Equal(t, meter.GasConsumed(), types.Gas(6858))
require.Equal(t, meter.GasConsumed(), types.Gas(6858))
}

func TestGasKVStoreIterator(t *testing.T) {
Expand Down Expand Up @@ -74,16 +74,16 @@ func TestGasKVStoreIterator(t *testing.T) {
vb := iterator.Value()
require.Equal(t, vb, valFmt(2))
iterator.Next()
// require.Equal(t, types.Gas(14565), meter.GasConsumed())
require.Equal(t, types.Gas(14565), meter.GasConsumed())
kc := iterator.Key()
require.Equal(t, kc, keyFmt(3))
vc := iterator.Value()
require.Equal(t, vc, valFmt(0))
iterator.Next()
// require.Equal(t, types.Gas(14667), meter.GasConsumed())
require.Equal(t, types.Gas(14667), meter.GasConsumed())
require.False(t, iterator.Valid())
require.Panics(t, iterator.Next)
// require.Equal(t, types.Gas(14697), meter.GasConsumed())
require.Equal(t, types.Gas(14697), meter.GasConsumed())
require.NoError(t, iterator.Error())

reverseIterator := st.ReverseIterator(nil, nil)
Expand All @@ -100,22 +100,22 @@ func TestGasKVStoreIterator(t *testing.T) {
reverseIterator.Next()
require.False(t, reverseIterator.Valid())
require.Panics(t, reverseIterator.Next)
// require.Equal(t, types.Gas(15135), meter.GasConsumed())
require.Equal(t, types.Gas(15135), meter.GasConsumed())
}

// func TestGasKVStoreOutOfGasSet(t *testing.T) {
// mem := dbadapter.Store{DB: dbm.NewMemDB()}
// meter := types.NewGasMeter(0)
// st := gaskv.NewStore(mem, meter, types.KVGasConfig())
// require.Panics(t, func() { st.Set(keyFmt(1), valFmt(1)) }, "Expected out-of-gas")
// }
//
// func TestGasKVStoreOutOfGasIterator(t *testing.T) {
// mem := dbadapter.Store{DB: dbm.NewMemDB()}
// meter := types.NewGasMeter(20000)
// st := gaskv.NewStore(mem, meter, types.KVGasConfig())
// st.Set(keyFmt(1), valFmt(1))
// iterator := st.Iterator(nil, nil)
// iterator.Next()
// require.Panics(t, func() { iterator.Value() }, "Expected out-of-gas")
// }
func TestGasKVStoreOutOfGasSet(t *testing.T) {
mem := dbadapter.Store{DB: dbm.NewMemDB()}
meter := types.NewGasMeter(0)
st := gaskv.NewStore(mem, meter, types.KVGasConfig())
require.Panics(t, func() { st.Set(keyFmt(1), valFmt(1)) }, "Expected out-of-gas")
}

func TestGasKVStoreOutOfGasIterator(t *testing.T) {
mem := dbadapter.Store{DB: dbm.NewMemDB()}
meter := types.NewGasMeter(20000)
st := gaskv.NewStore(mem, meter, types.KVGasConfig())
st.Set(keyFmt(1), valFmt(1))
iterator := st.Iterator(nil, nil)
iterator.Next()
require.Panics(t, func() { iterator.Value() }, "Expected out-of-gas")
}
7 changes: 4 additions & 3 deletions types/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"github.com/tendermint/tendermint/libs/log"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"

"github.com/cosmos/cosmos-sdk/store/gaskv"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
)

Expand Down Expand Up @@ -266,12 +265,14 @@ func (c Context) Value(key interface{}) interface{} {

// KVStore fetches a KVStore from the MultiStore.
func (c Context) KVStore(key storetypes.StoreKey) KVStore {
return gaskv.NewStore(c.MultiStore().GetKVStore(key), c.GasMeter(), storetypes.KVGasConfig())
// return gaskv.NewStore(c.MultiStore().GetKVStore(key), c.GasMeter(), storetypes.KVGasConfig())
return c.MultiStore().GetKVStore(key)
}

// TransientStore fetches a TransientStore from the MultiStore.
func (c Context) TransientStore(key storetypes.StoreKey) KVStore {
return gaskv.NewStore(c.MultiStore().GetKVStore(key), c.GasMeter(), storetypes.TransientGasConfig())
// return gaskv.NewStore(c.MultiStore().GetKVStore(key), c.GasMeter(), storetypes.TransientGasConfig())
return c.MultiStore().GetKVStore(key)
}

// CacheContext returns a new Context with the multi-store cached and a new
Expand Down
4 changes: 2 additions & 2 deletions x/group/internal/orm/testsupport.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"

"github.com/cosmos/cosmos-sdk/store"
"github.com/cosmos/cosmos-sdk/store/gaskv"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
dbm "github.com/tendermint/tm-db"
Expand Down Expand Up @@ -86,7 +85,8 @@ func NewGasCountingMockContext() *GasCountingMockContext {
}

func (g GasCountingMockContext) KVStore(store sdk.KVStore) sdk.KVStore {
return gaskv.NewStore(store, g.GasMeter, storetypes.KVGasConfig())
// return gaskv.NewStore(store, g.GasMeter, storetypes.KVGasConfig())
return store
}

func (g GasCountingMockContext) GasConsumed() storetypes.Gas {
Expand Down

0 comments on commit ba37304

Please sign in to comment.