[#110] netmap: Store block number of last epoch

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2021-07-21 14:45:32 +03:00 committed by Alex Vanin
parent 5a95c8e3cf
commit 787bd3b63c

View file

@ -5,6 +5,7 @@ import (
"github.com/nspcc-dev/neo-go/pkg/interop/contract" "github.com/nspcc-dev/neo-go/pkg/interop/contract"
"github.com/nspcc-dev/neo-go/pkg/interop/iterator" "github.com/nspcc-dev/neo-go/pkg/interop/iterator"
"github.com/nspcc-dev/neo-go/pkg/interop/native/crypto" "github.com/nspcc-dev/neo-go/pkg/interop/native/crypto"
"github.com/nspcc-dev/neo-go/pkg/interop/native/ledger"
"github.com/nspcc-dev/neo-go/pkg/interop/native/management" "github.com/nspcc-dev/neo-go/pkg/interop/native/management"
"github.com/nspcc-dev/neo-go/pkg/interop/native/std" "github.com/nspcc-dev/neo-go/pkg/interop/native/std"
"github.com/nspcc-dev/neo-go/pkg/interop/runtime" "github.com/nspcc-dev/neo-go/pkg/interop/runtime"
@ -40,6 +41,7 @@ const (
snapshot0Key = "snapshotCurrent" snapshot0Key = "snapshotCurrent"
snapshot1Key = "snapshotPrevious" snapshot1Key = "snapshotPrevious"
snapshotEpoch = "snapshotEpoch" snapshotEpoch = "snapshotEpoch"
snapshotBlockKey = "snapshotBlock"
containerContractKey = "containerScriptHash" containerContractKey = "containerScriptHash"
balanceContractKey = "balanceScriptHash" balanceContractKey = "balanceScriptHash"
@ -86,6 +88,7 @@ func _deploy(data interface{}, isUpdate bool) {
// epoch number is a little endian int, it doesn't need to be serialized // epoch number is a little endian int, it doesn't need to be serialized
storage.Put(ctx, snapshotEpoch, 0) storage.Put(ctx, snapshotEpoch, 0)
storage.Put(ctx, snapshotBlockKey, 0)
common.SetSerialized(ctx, snapshot0Key, []netmapNode{}) common.SetSerialized(ctx, snapshot0Key, []netmapNode{})
common.SetSerialized(ctx, snapshot1Key, []netmapNode{}) common.SetSerialized(ctx, snapshot1Key, []netmapNode{})
@ -341,6 +344,7 @@ func NewEpoch(epochNum int) {
// todo: check if provided epoch number is bigger than current // todo: check if provided epoch number is bigger than current
storage.Put(ctx, snapshotEpoch, epochNum) storage.Put(ctx, snapshotEpoch, epochNum)
storage.Put(ctx, snapshotBlockKey, ledger.CurrentIndex())
// put actual snapshot into previous snapshot // put actual snapshot into previous snapshot
common.SetSerialized(ctx, snapshot1Key, data0snapshot) common.SetSerialized(ctx, snapshot1Key, data0snapshot)
@ -359,6 +363,11 @@ func Epoch() int {
return storage.Get(ctx, snapshotEpoch).(int) return storage.Get(ctx, snapshotEpoch).(int)
} }
func LastEpochBlock() int {
ctx := storage.GetReadOnlyContext()
return storage.Get(ctx, snapshotBlockKey).(int)
}
func Netmap() []storageNode { func Netmap() []storageNode {
ctx := storage.GetReadOnlyContext() ctx := storage.GetReadOnlyContext()
return getSnapshot(ctx, snapshot0Key) return getSnapshot(ctx, snapshot0Key)