From 83ff71b89595bbc72fa3e835e09d2e18c74a2384 Mon Sep 17 00:00:00 2001 From: Valery Litvin Date: Thu, 19 Mar 2020 16:54:23 +0300 Subject: [PATCH] Removed graph merkling --- app/app.go | 11 +---------- x/link/exported/exported.go | 5 ++--- x/link/internal/keeper/index.go | 19 +------------------ x/link/internal/keeper/keeper.go | 22 ++++++++-------------- 4 files changed, 12 insertions(+), 45 deletions(-) diff --git a/app/app.go b/app/app.go index f15810e1..e487b841 100644 --- a/app/app.go +++ b/app/app.go @@ -573,16 +573,7 @@ func (app *CyberdApp) appHash() []byte { return make([]byte, 0) } - linkHash := app.linkIndexedKeeper.GetNetworkLinkHash() - rankHash := app.rankStateKeeper.GetNetworkRankHash() - - result := make([]byte, len(linkHash)) - - for i := 0; i < len(linkHash); i++ { - result[i] = linkHash[i] ^ rankHash[i] - } - - return result + return app.rankStateKeeper.GetNetworkRankHash() } func (app *CyberdApp) LoadHeight(height int64) error { diff --git a/x/link/exported/exported.go b/x/link/exported/exported.go index 096aae00..69b9c704 100644 --- a/x/link/exported/exported.go +++ b/x/link/exported/exported.go @@ -13,7 +13,8 @@ type KeeperI interface { GetAllLinksFiltered(sdk.Context, types.LinkFilter) (types.Links, types.Links, error) GetLinksCount(sdk.Context) uint64 - Iterate(sdk.Context, func(types.CompactLink)) + IterateLinks(sdk.Context, func(types.CompactLink)) + IterateBinaryLinks(sdk.Context, func([]byte)) PutLink(sdk.Context, types.CompactLink) WriteLinks(sdk.Context, io.Writer) error @@ -38,8 +39,6 @@ type IndexedKeeperI interface { GetCurrentBlockLinks() []types.CompactLink GetCurrentBlockNewLinks() []types.CompactLink - GetNetworkLinkHash() []byte - IsAnyLinkExist(from types.CidNumber, to types.CidNumber) bool IsLinkExist(types.CompactLink) bool diff --git a/x/link/internal/keeper/index.go b/x/link/internal/keeper/index.go index 75bb2a22..85fc1cd2 100644 --- a/x/link/internal/keeper/index.go +++ b/x/link/internal/keeper/index.go @@ -1,14 +1,12 @@ package keeper import ( - "github.com/cybercongress/go-cyber/merkle" "github.com/cybercongress/go-cyber/util" "github.com/cybercongress/go-cyber/x/link/internal/types" sdk "github.com/cosmos/cosmos-sdk/types" tmos "github.com/tendermint/tendermint/libs/os" - "crypto/sha256" "encoding/binary" "io" ) @@ -25,13 +23,10 @@ type IndexedKeeper struct { nextRankOutLinks types.Links currentBlockLinks []types.CompactLink - MerkleTree *merkle.Tree } func NewIndexedKeeper(keeper *Keeper) *IndexedKeeper { - merkleTree := merkle.NewTree(sha256.New(), true) - - return &IndexedKeeper{Keeper: keeper, MerkleTree: merkleTree} + return &IndexedKeeper{Keeper: keeper} } func (i *IndexedKeeper) Load(rankCtx sdk.Context, freshCtx sdk.Context) { @@ -53,11 +48,6 @@ func (i *IndexedKeeper) Load(rankCtx sdk.Context, freshCtx sdk.Context) { i.nextRankInLinks = newInLinks i.nextRankOutLinks = newOutLinks - - i.Iterate(freshCtx, func(link types.CompactLink) { - linkAsBytes := link.MarshalBinary() - i.MerkleTree.Push(linkAsBytes) - }) } func (i *IndexedKeeper) FixLinks() { @@ -87,9 +77,6 @@ func (i *IndexedKeeper) PutLink(ctx sdk.Context, link types.CompactLink) { i.currentBlockLinks = append(i.currentBlockLinks, link) } - linkAsBytes := link.MarshalBinary() - i.MerkleTree.Push(linkAsBytes) - i.Keeper.PutLink(ctx, link) } @@ -119,10 +106,6 @@ func (i *IndexedKeeper) GetCurrentBlockNewLinks() []types.CompactLink { return result } -func (i *IndexedKeeper) GetNetworkLinkHash() []byte { - return i.MerkleTree.RootHash() -} - func (i *IndexedKeeper) IsAnyLinkExist(from types.CidNumber, to types.CidNumber) bool { return i.currentRankOutLinks.IsAnyLinkExist(from, to) || i.nextRankOutLinks.IsAnyLinkExist(from, to) } diff --git a/x/link/internal/keeper/keeper.go b/x/link/internal/keeper/keeper.go index 5da1244c..0e9fd6fb 100644 --- a/x/link/internal/keeper/keeper.go +++ b/x/link/internal/keeper/keeper.go @@ -59,7 +59,7 @@ func (lk Keeper) GetAllLinksFiltered(ctx sdk.Context, filter types.LinkFilter) ( inLinks := make(map[types.CidNumber]types.CidLinks) outLinks := make(map[types.CidNumber]types.CidLinks) - lk.Iterate(ctx, func(link types.CompactLink) { + lk.IterateLinks(ctx, func(link types.CompactLink) { if filter(link) { types.Links(outLinks).Put(link.From(), link.To(), link.Acc()) types.Links(inLinks).Put(link.To(), link.From(), link.Acc()) @@ -73,22 +73,16 @@ func (lk Keeper) GetLinksCount(ctx sdk.Context) uint64 { return lk.ms.GetLinksCount(ctx) } -func (lk Keeper) Iterate(ctx sdk.Context, process func(link types.CompactLink)) { - lk.IterateTillVersion(ctx, func(bytes []byte) { +func (lk Keeper) IterateLinks(ctx sdk.Context, process func(link types.CompactLink)) { + lk.IterateBinaryLinks(ctx, func(bytes []byte) { process(types.UnmarshalBinaryLink(bytes)) - }, ctx.BlockHeight()) + }) } -func (lk Keeper) IterateTillVersion(ctx sdk.Context, process func(bytes []byte), ver int64) { +func (lk Keeper) IterateBinaryLinks(ctx sdk.Context, process func(bytes []byte)) { store := ctx.KVStore(lk.storeKey) - startAsBytes := make([]byte, 8) - binary.LittleEndian.PutUint64(startAsBytes, uint64(1)) - - endAsBytes := make([]byte, 8) - binary.LittleEndian.PutUint64(endAsBytes, uint64(ver+1)) // Iterator end is exclusive. - - iterator := store.Iterator(startAsBytes, endAsBytes) + iterator := store.Iterator(nil, nil) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -115,12 +109,12 @@ func (lk Keeper) WriteLinks(ctx sdk.Context, writer io.Writer) (err error) { return } - lk.IterateTillVersion(ctx, func(bytes []byte) { + lk.IterateBinaryLinks(ctx, func(bytes []byte) { _, err = writer.Write(bytes) if err != nil { return } - }, ctx.BlockHeight()) + }) return nil }